mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-02 07:59:52 -04:00
feat(decomp): parallel gate — 9 fns across 8 binaries (12 workers)
ov_SC03_089 func_80181F9C ov_SC05_001 func_801809B8 ov_SC05_008 func_80180E84 ov_SC03_094 func_801814F4 ov_SC03_118 func_801832E0 ov_SC06_025 func_80182170 ov_SC03_105 func_8017FAE8 func_80185680 ov_SC07_002 func_80185FB0
This commit is contained in:
+1
-1
@@ -4513,7 +4513,7 @@ build/src/ov_SC06_025/ov_SC06_025_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (
|
||||
build/src/ov_SC06_025/ov_SC06_025_jr_8015AE2C.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC06_025/ov_SC06_025_jr_8016AB6C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC06_025/ov_SC06_025_jr_80178D40.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x178
|
||||
build/src/ov_SC06_025/ov_SC06_025_jr_8017EEC4.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC06_025/ov_SC06_025_jr_8017EEC4.o: JTBL_PADS := 0,0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20,+0x38
|
||||
build/src/ov_SC06_025/ov_SC06_025_o0c.o: JTBL_PADS := 0,4,4,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x38,+0xa8,+0x118
|
||||
ov_SC06_025_CHECK_SHA := config/check.ov_SC06_025.sha
|
||||
ov_SC06_025_SYMBOLS := config/symbols.ov_SC06_025.txt
|
||||
|
||||
@@ -166,7 +166,7 @@ segments:
|
||||
- [0x87dc4, .rodata, ov_SC06_025_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0x87de4, data, tail18]
|
||||
- [0x87dec, .rodata, ov_SC06_025_jr_8017EEC4] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0x87e20, data, tail19]
|
||||
- [0x87e48, data, tail19]
|
||||
- [0x8A12C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word)
|
||||
- [0x8A12F] # EOF marker = the 0.4.dec byte length
|
||||
# @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes
|
||||
|
||||
@@ -4640,7 +4640,59 @@ void func_80181F60(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017CA80", func_80181F9C);
|
||||
extern u8 D_801202A0[];
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
|
||||
void func_80181F9C(s32 a0)
|
||||
{
|
||||
s32 a3;
|
||||
u8 *a2;
|
||||
s32 t0;
|
||||
s32 t1;
|
||||
s32 v1p;
|
||||
s32 va;
|
||||
|
||||
if (*(s16 *)(a0 + 0xFE) != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
a3 = 0;
|
||||
a2 = D_801202A0;
|
||||
t1 = 0x12C;
|
||||
t0 = 1;
|
||||
for (; a3 < 0x60; a3++, a2 += 0x10C) {
|
||||
if (*(u16 *)a2 == t1) {
|
||||
va = *(s16 *)(a2 + 0xA);
|
||||
if ((u32)(va - *(s16 *)(a0 + 0xA) + 0x30) < 0x51) {
|
||||
va = *(s16 *)(a2 + 0x6);
|
||||
if ((u32)(va - *(s16 *)(a0 + 0x6) + 0x80) < 0x101) {
|
||||
va = *(s16 *)(a2 + 0xE);
|
||||
if ((u32)(va - *(s16 *)(a0 + 0xE) + 0x80) < 0x101) {
|
||||
goto found;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
t0 = 0;
|
||||
|
||||
found:
|
||||
if (t0 != 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
v1p = *(s32 *)(a0 + 0xCC);
|
||||
if (v1p != 0) {
|
||||
*(s16 *)(v1p + 0xFC) = 0xC;
|
||||
}
|
||||
v1p = *(s32 *)(a0 + 0xD0);
|
||||
if (v1p != 0) {
|
||||
*(s16 *)(v1p + 0xFC) = 0xC;
|
||||
}
|
||||
*(s16 *)(a0 + 0xFE) = 1;
|
||||
func_8002D4C8(0x6EB, 0);
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_8012C354(s32 a0, s32 a1);
|
||||
extern void func_8012A828(s32 a0, s32 a1);
|
||||
|
||||
@@ -5984,7 +5984,35 @@ void func_80181448(s32 arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094_jr_8017BEBC", func_801814F4);
|
||||
#include "common.h"
|
||||
|
||||
extern void func_8012F14C(s32 a0, s32 a1, s32 a2);
|
||||
extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5);
|
||||
extern u8 D_801152A8[];
|
||||
|
||||
s32 aF801814F4(s32 arg0, s32 arg1) __asm__("func_801814F4");
|
||||
s32 aF801814F4(s32 arg0, s32 arg1)
|
||||
{
|
||||
extern s32 *D_80126B78;
|
||||
extern u8 D_801A8D8C[];
|
||||
s32 buf1[2];
|
||||
s32 buf2[2];
|
||||
s32 flag;
|
||||
|
||||
((void (*)(s32, s32, s32))func_8012F14C)((s32)D_80126B78 + 0x34, (s32)D_801A8D8C, (s32)buf1);
|
||||
((void (*)(s32, s32, s32))func_8012F14C)((s32)D_80126B78 + 0x34, (s32)(D_801A8D8C + 8), (s32)buf2);
|
||||
if (func_80135888(*(s32 *)(arg0 + 0x20), *(s32 *)(arg0 + 0x58), (s32)buf1, (s32)buf2) != 0) {
|
||||
flag = 1;
|
||||
if ((*(u16 *)(arg0 + 0x70) & 0xF) != 0) {
|
||||
flag = 0x2001;
|
||||
}
|
||||
func_8012F568(1, flag, *(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12), arg1, (s32)buf2, (s32)D_801152A8);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2);
|
||||
typedef struct {
|
||||
|
||||
@@ -4260,7 +4260,7 @@ extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3);
|
||||
extern void func_8012F14C(s32 a0, s32 a1, s32 a2);
|
||||
extern s32 func_80047948(s32 a0);
|
||||
extern s32 func_8017FA90(s32 a0, s16 a1, s32 a2);
|
||||
extern void func_8017FAE8(void *a0);
|
||||
extern void func_8017FAE8();
|
||||
|
||||
typedef struct { u16 vx, vy, vz, pad; } UVEC_8017F55C;
|
||||
|
||||
@@ -4472,7 +4472,53 @@ s32 func_8017FA90(s32 a0, s16 a1, s32 a2) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_8017FAE8);
|
||||
#include "common.h"
|
||||
|
||||
extern void func_8012EFB8(s32 a0);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
|
||||
typedef struct { s16 vx, vy, vz, pad; } SVec_8017FAE8;
|
||||
|
||||
void func_8017FAE8(s32 a0) {
|
||||
SVec_8017FAE8 pos;
|
||||
SVec_8017FAE8 out;
|
||||
register s32 base __asm__("$16");
|
||||
s32 q;
|
||||
|
||||
pos.vx = *(s16 *)(a0 + 0x6);
|
||||
pos.vy = *(s16 *)(a0 + 0xA);
|
||||
pos.vz = *(s16 *)(a0 + 0xE);
|
||||
((void (*)(void *, void *))func_8012EFB8)(&pos, &out);
|
||||
|
||||
base = 0x40;
|
||||
|
||||
if (out.vx < 0) {
|
||||
if (-out.vx >= 0xA1) {
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
if (out.vx >= 0xA1) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (out.vy < 0) {
|
||||
if (-out.vy >= 0x79) {
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
if (out.vy >= 0x79) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
q = out.vx * 63 / 160;
|
||||
{
|
||||
register s32 r __asm__("$5") = base + q;
|
||||
func_8002D4C8(0x72B, ((r | 0x2000) & 0xFFFF));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_8018E270[])(void);
|
||||
@@ -6537,7 +6583,47 @@ void func_80185660(s32 *a0, s32 *a1, s32 a2) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_80185680);
|
||||
s32 func_80185680(void *a0, void *a1) {
|
||||
s32 frame_pad[1];
|
||||
s32 base;
|
||||
s16 cnt;
|
||||
s32 ret;
|
||||
register s32 idx __asm__("$2");
|
||||
register s32 idc __asm__("$6");
|
||||
u8 val;
|
||||
(void)&frame_pad;
|
||||
|
||||
cnt = *(s16 *)((u8 *)a1 + 6);
|
||||
base = *(s32 *)a1;
|
||||
if (cnt == 0) {
|
||||
return 1;
|
||||
}
|
||||
cnt = cnt - 1;
|
||||
*(s16 *)((u8 *)a1 + 6) = cnt;
|
||||
ret = 0;
|
||||
if (cnt <= 0) {
|
||||
idx = *(s16 *)((u8 *)a1 + 4);
|
||||
val = *(u8 *)(base + idx * 12);
|
||||
idc = idx;
|
||||
if ((val & 0x40) != 0) {
|
||||
*(s16 *)((u8 *)a1 + 6) = 0;
|
||||
return 1;
|
||||
}
|
||||
if ((val & 0x80) != 0) {
|
||||
*(s16 *)((u8 *)a1 + 4) = 0;
|
||||
ret = 1;
|
||||
} else {
|
||||
idx = idc + 1;
|
||||
*(s16 *)((u8 *)a1 + 4) = idx;
|
||||
}
|
||||
*(s16 *)((u8 *)a1 + 6) =
|
||||
*(u8 *)(base + (*(s16 *)((u8 *)a1 + 4)) * 12) & 0x3F;
|
||||
*(s32 *)((u8 *)a0 + 0x24) =
|
||||
base + (*(s16 *)((u8 *)a1 + 4)) * 12;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
extern s32 rand(void);
|
||||
extern void func_8012F214(s32 a0, s32 a1, s32 a2);
|
||||
|
||||
@@ -2889,7 +2889,45 @@ void func_80183280(Ent_80183280 *arg) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_o0d", func_801832E0);
|
||||
extern void func_8013C0F8(s32 arg0);
|
||||
extern s32 func_80029178(s32 arg0);
|
||||
extern void func_8013373C(s32 a0);
|
||||
|
||||
typedef struct {
|
||||
u8 pad0[2];
|
||||
u16 f002;
|
||||
u8 pad1[0xD8];
|
||||
struct {
|
||||
s16 f0DC;
|
||||
u16 f0DE;
|
||||
union {
|
||||
struct { s32 f0E0; s32 f0E4; } l;
|
||||
struct { u8 p[2]; s16 f0E2; u8 q[2]; s16 f0E6; } h;
|
||||
} u;
|
||||
u16 f0E8;
|
||||
} f;
|
||||
} Work_801832E0;
|
||||
|
||||
void func_801832E0(Work_801832E0 *work)
|
||||
{
|
||||
|
||||
extern s32 D_801B5D38;
|
||||
extern s32 D_801B86B4;
|
||||
func_8013C0F8((s32)&D_801B5D38);
|
||||
func_8013C0F8((s32)&D_801B86B4);
|
||||
work->f.f0DC = 0;
|
||||
work->f.u.l.f0E0 = 0;
|
||||
work->f.u.l.f0E4 = 0;
|
||||
work->f.f0E8 = 0;
|
||||
if ((func_80029178(0xB8) & 0xFF) == 0) {
|
||||
work->f002++;
|
||||
} else {
|
||||
func_8013373C(0);
|
||||
work->f.u.h.f0E2 = -0xF7;
|
||||
work->f002 = 4;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void func_801833C4(s32 arg0)
|
||||
|
||||
@@ -5888,7 +5888,37 @@ extern s32 D_80126CD4;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_8017BEBC", func_801809B8);
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern u16 D_80126B62;
|
||||
extern void func_80180304(s32 param_1);
|
||||
|
||||
void func_801809B8(s32 param_1) {
|
||||
s32 v1;
|
||||
s32 q;
|
||||
s16 t;
|
||||
|
||||
if (func_8012BEE8(param_1) != 0) {
|
||||
*(s32 *)(param_1 + 0x1C) = 2;
|
||||
*(u16 *)(param_1 + 0xA) += 8;
|
||||
D_80126B62 += 8;
|
||||
v1 = *(s32 *)(param_1 + 0x6C);
|
||||
if (v1 != 0) {
|
||||
*(u16 *)(v1 + 0xA) -= 8;
|
||||
}
|
||||
*(u16 *)(*(s32 *)(*(s32 *)(param_1 + 0x64) + 0x20) + 0x14) -= 0x60;
|
||||
q = *(s32 *)(*(s32 *)(param_1 + 0x64) + 0x6C);
|
||||
if (q != 0) {
|
||||
*(u16 *)(*(s32 *)(q + 0x20) + 0x14) -= 0x60;
|
||||
}
|
||||
t = *(u16 *)(param_1 + 0xFE) - 1;
|
||||
*(u16 *)(param_1 + 0xFE) = t;
|
||||
if (t != 0) {
|
||||
return;
|
||||
}
|
||||
func_80180304(param_1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_80180AA4(void) {
|
||||
}
|
||||
|
||||
@@ -6038,7 +6038,42 @@ void *arg0;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80180E84);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2);
|
||||
|
||||
void func_80180E84(s32 a0)
|
||||
{
|
||||
extern s32 func_801823B8(void*, s32, void*);
|
||||
extern s32 func_80182334(void);
|
||||
extern void func_8012C098(void);
|
||||
|
||||
s32 s1 = a0;
|
||||
s32 s0;
|
||||
s32 pad[1];
|
||||
u16 u0;
|
||||
|
||||
u0 = *(u16 *)((s32)s1 + 0x6);
|
||||
u0 = (u16)(u0 - 0x50);
|
||||
*(u16 *)((s32)s1 + 0x6) = u0;
|
||||
if ((s16)u0 < *(s16 *)((s32)s1 + 0x88)) {
|
||||
if (*(s16 *)((s32)s1 + 0xFE) == 0) {
|
||||
*(s16 *)((s32)s1 + 0xFE) += 1;
|
||||
func_8002D4C8(0x892, 0);
|
||||
}
|
||||
*(u16 *)((s32)s1 + 0x6) = *(u16 *)((s32)s1 + 0x88);
|
||||
}
|
||||
s0 = ((s32 (*)(s32, s32, s32))func_801823B8)(s1, 1, 0) |
|
||||
((s32 (*)(s32, s32, s32))func_801823B8)(s1, 1, -1);
|
||||
s0 |= ((s32 (*)(s32, s32, s32))func_801823B8)(s1, 1, -2);
|
||||
if (s0 != 0) {
|
||||
func_8012C658(0x209, 4, s1);
|
||||
*(s32 *)(*(s32 *)((s32)s1 + 0x20) + 4) |= 0x80000000;
|
||||
}
|
||||
if (((s32 (*)(s32))func_80182334)(s1) == 0) {
|
||||
((void (*)(s32))func_8012C098)(s1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern s32 func_80013328(s32 a0, s32 a1);
|
||||
|
||||
@@ -5053,7 +5053,54 @@ void func_80182148(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8017EEC4", func_80182170);
|
||||
extern void func_8017DB6C(s32 a0);
|
||||
extern void func_80182268(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
|
||||
void func_80182170(void *a0)
|
||||
{
|
||||
void *s0;
|
||||
s32 v1;
|
||||
|
||||
s0 = a0;
|
||||
v1 = *(u16 *)((u8 *)s0 + 0x2);
|
||||
|
||||
switch (v1) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
return;
|
||||
|
||||
case 3:
|
||||
func_8017DB6C(0);
|
||||
if (*(u16 *)((u8 *)s0 + 0x34) < 2) {
|
||||
func_80182268(-0x7000, 0x7000, -0x39, 0x230);
|
||||
} else {
|
||||
func_80182268(-0x10, 0x10, 0x1B0, 0x1CA);
|
||||
}
|
||||
return;
|
||||
|
||||
case 4:
|
||||
func_80182268(-0x7000, 0x7000, 0x140, 0x230);
|
||||
return;
|
||||
|
||||
case 5:
|
||||
func_80182268(-0x7000, 0x7000, 0x140, 0x230);
|
||||
return;
|
||||
|
||||
case 6:
|
||||
func_80182268(-0x7000, 0x7000, -0x39, 0x230);
|
||||
return;
|
||||
|
||||
case 7:
|
||||
func_80182268(-0x7000, 0x7000, -0x39, 0x230);
|
||||
return;
|
||||
|
||||
case 8:
|
||||
func_80182268(-0x7000, 0x7000, -0x39, 0x3D0);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
@@ -8723,7 +8723,50 @@ void func_80185F4C(s32 a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80185FB0);
|
||||
extern s16 D_8011DB1A;
|
||||
extern s16 D_8011DB18;
|
||||
extern s16 D_8011DB0C;
|
||||
extern u16 D_8011DB0C_r __asm__("D_8011DB0C");
|
||||
extern s32 func_80029D3C(void);
|
||||
extern int func_80151204(int arg, int a1);
|
||||
extern void func_8014BC44(s32 a0, s32 a1);
|
||||
extern void func_801542A4(s32 *a0, s32 a1);
|
||||
extern void func_8001382C(s32 a0, void *a1, void *a2);
|
||||
extern void func_80146DB8(s32 *a0, s32 *a1);
|
||||
extern void func_801477E8(s32 *a0, s32 a1);
|
||||
extern void func_80146E90(s32 *a0, s32 a1);
|
||||
extern void func_80146CA0(void *a0);
|
||||
extern void func_80149020(s32 *a0);
|
||||
extern u8 D_801988FC[];
|
||||
extern u8 D_801989A0[];
|
||||
|
||||
void func_80185FB0(s32 param_1) {
|
||||
s32 s0;
|
||||
s32 sp10[4];
|
||||
|
||||
func_80149020((s32 *)param_1);
|
||||
if (D_8011DB0C_r == 0) {
|
||||
return;
|
||||
}
|
||||
{
|
||||
register s32 arg4 __asm__("$4");
|
||||
arg4 = D_8011DB1A;
|
||||
__asm__ __volatile__("" : "=r"(arg4) : "0"(arg4));
|
||||
s0 = func_80029D3C();
|
||||
}
|
||||
func_8014BC44(param_1, s0);
|
||||
func_80151204(param_1, s0);
|
||||
*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x10) = 0xC00;
|
||||
func_801542A4((s32 *)param_1, (s32)&D_801988FC);
|
||||
func_8001382C(D_8011DB18, (void *)&D_801989A0, (void *)sp10);
|
||||
func_80146DB8((s32 *)param_1, sp10);
|
||||
func_801477E8((s32 *)param_1, 0x100000);
|
||||
D_8011DB0C = 0;
|
||||
*(u8 *)(param_1 + 0xDE) = 3;
|
||||
func_80146E90((s32 *)param_1, 0x20);
|
||||
func_80146CA0((void *)param_1);
|
||||
}
|
||||
|
||||
|
||||
void func_80186090(s32 param_1)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user