mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-07 09:27:55 -04:00
feat(decomp): parallel gate — 2 fns across 2 binaries (10 workers)
ov_SC03_092 func_8017FA74 ov_SC03_028 func_80181000
This commit is contained in:
+2
-2
@@ -1704,7 +1704,7 @@ build/src/ov_SC03_028/ov_SC03_028_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (
|
||||
build/src/ov_SC03_028/ov_SC03_028_jr_8015AE2C.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC03_028/ov_SC03_028_jr_8016AB6C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC03_028/ov_SC03_028_jr_80178D40.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x178
|
||||
build/src/ov_SC03_028/ov_SC03_028_jr_8017DF98.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC03_028/ov_SC03_028_jr_8017DF98.o: JTBL_PADS := 0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20,+0x40
|
||||
build/src/ov_SC03_028/ov_SC03_028_jr_80184914.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x30
|
||||
build/src/ov_SC03_028/ov_SC03_028_jr_80185864.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x28
|
||||
build/src/ov_SC03_028/ov_SC03_028_o0c.o: JTBL_PADS := 0,4,4,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x38,+0xa8,+0x118
|
||||
@@ -1957,7 +1957,7 @@ build/src/ov_SC03_092/ov_SC03_092_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (
|
||||
build/src/ov_SC03_092/ov_SC03_092_jr_8015AE2C.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC03_092/ov_SC03_092_jr_8016AB6C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC03_092/ov_SC03_092_jr_80178D40.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x178
|
||||
build/src/ov_SC03_092/ov_SC03_092_jr_8017AE2C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x14
|
||||
build/src/ov_SC03_092/ov_SC03_092_jr_8017AE2C.o: JTBL_PADS := 0,0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x14,+0x2c
|
||||
build/src/ov_SC03_092/ov_SC03_092_jr_80181694.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18
|
||||
build/src/ov_SC03_092/ov_SC03_092_o0c.o: JTBL_PADS := 0,4,4,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x38,+0xa8,+0x118
|
||||
ov_SC03_092_CHECK_SHA := config/check.ov_SC03_092.sha
|
||||
|
||||
@@ -170,7 +170,7 @@ segments:
|
||||
- [0xc1d58, .rodata, ov_SC03_028_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xc1d6c, data, tail18]
|
||||
- [0xc1ea4, .rodata, ov_SC03_028_jr_8017DF98] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xc1ee4, data, tail19]
|
||||
- [0xc1f00, data, tail19]
|
||||
- [0xc1f04, .rodata, ov_SC03_028_jr_80183A74] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xc1f1c, .rodata, ov_SC03_028_jr_801847E8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xc1f48, data, tail20]
|
||||
|
||||
@@ -163,7 +163,7 @@ segments:
|
||||
- [0x898c0, .rodata, ov_SC03_092_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0x8994c, data, tail17]
|
||||
- [0x89950, .rodata, ov_SC03_092_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0x89978, data, tail18]
|
||||
- [0x89990, data, tail18]
|
||||
- [0x89994, .rodata, ov_SC03_092_jr_8017FE88] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0x899a8, .rodata, ov_SC03_092_jr_80181694] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0x899d4, data, tail19]
|
||||
|
||||
@@ -4510,7 +4510,115 @@ void func_80180B44(s32 a0, s32 a1) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_80181000);
|
||||
#include "common.h"
|
||||
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern void func_8012B1B4(s32 a0, s32 a1);
|
||||
extern void func_8012B23C(s32 a0);
|
||||
extern void func_8012CBCC(s32 a0);
|
||||
extern s32 func_8012B608(s32 a0, s32 a1, s32 a2);
|
||||
extern s32 func_8012B744(void *a0, void *a1);
|
||||
extern void Square0(s32 *a0, s32 *a1);
|
||||
extern s32 rand(void);
|
||||
|
||||
extern u8 D_80126B5C;
|
||||
extern s32 D_80126B64;
|
||||
extern u8 D_8018F8E4[];
|
||||
extern void (*D_8018F9A8)(void *);
|
||||
extern s16 D_8018FB2C[];
|
||||
extern u8 D_801ADC24[];
|
||||
extern u8 D_801ADD34[];
|
||||
extern u8 D_801AE08C[];
|
||||
extern u8 D_801AE824[];
|
||||
|
||||
typedef struct { s16 vx, vy, vz, pad; } SV_80181000;
|
||||
|
||||
void func_80181000(s32 a0)
|
||||
{
|
||||
s32 vec[4];
|
||||
SV_80181000 sv;
|
||||
s32 d;
|
||||
s32 dy;
|
||||
s32 r;
|
||||
s16 t;
|
||||
|
||||
sv.vx = 0;
|
||||
sv.vz = 0x3C0;
|
||||
d = func_8012B744((void *)(a0 + 4), &sv);
|
||||
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) += func_8012B608(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12), d, 8);
|
||||
func_8012B1B4(a0, (s32)&D_8018F9A8);
|
||||
func_8012CBCC(a0);
|
||||
|
||||
dy = (s16)*(u16 *)(a0 + 6);
|
||||
vec[0] = dy;
|
||||
vec[2] = *(s16 *)(a0 + 0xE) - 0x3C0;
|
||||
vec[1] = 0;
|
||||
*(u16 *)(a0 + 6) -= dy >> 6;
|
||||
*(u16 *)(a0 + 0xE) -= vec[2] >> 6;
|
||||
Square0(vec, vec);
|
||||
|
||||
if (vec[0] + vec[2] < 0x400) {
|
||||
t = *(s16 *)(a0 + 0x76);
|
||||
if (t > 0x50) {
|
||||
r = rand() & 3;
|
||||
} else if (t > 0x28) {
|
||||
r = (rand() & 5) + 3;
|
||||
} else {
|
||||
r = (rand() & 5) + 8;
|
||||
}
|
||||
|
||||
switch (D_8018FB2C[r]) {
|
||||
case 0:
|
||||
*(s16 *)(a0 + 2) = 7;
|
||||
func_8012A828(a0, D_801ADC24);
|
||||
*(s32 *)(a0 + 0x1C) = 0x1E;
|
||||
break;
|
||||
case 1:
|
||||
*(s16 *)(a0 + 2) = 0xC;
|
||||
func_8012A828(a0, D_801ADD34);
|
||||
*(s32 *)(a0 + 0x1C) = 0;
|
||||
*(s16 *)(a0 + 0x84) = 0;
|
||||
*(s16 *)(a0 + 0xDE) = 0;
|
||||
*(s16 *)(a0 + 0x34) = 5;
|
||||
*(s16 *)(a0 + 0xDC) = 0x111 - (*(s16 *)(a0 + 0x76) * 0x88) / 0x78;
|
||||
break;
|
||||
case 2:
|
||||
*(s16 *)(a0 + 2) = 0x16;
|
||||
func_8012A828(a0, D_801AE824);
|
||||
func_8012B23C(a0);
|
||||
*(s16 *)(a0 + 0x16) = -0x1E;
|
||||
*(s32 *)(a0 + 0x10) = (*(s32 *)&D_80126B5C - *(s32 *)(a0 + 4)) >> 5;
|
||||
*(s32 *)(a0 + 0x18) = (D_80126B64 - *(s32 *)(a0 + 0xC)) >> 5;
|
||||
*(s32 *)(a0 + 0x58) = (s32)D_8018F8E4 | 0x40000000 | 0x20000000;
|
||||
break;
|
||||
case 3:
|
||||
*(s16 *)(a0 + 2) = 0xD;
|
||||
func_8012A828(a0, D_801AE08C);
|
||||
*(s32 *)(a0 + 0x1C) = 0;
|
||||
*(s16 *)(a0 + 0x84) = 0;
|
||||
break;
|
||||
case 4:
|
||||
*(s16 *)(a0 + 2) = 0xE;
|
||||
*(s16 *)(a0 + 0xFE) = 0;
|
||||
break;
|
||||
case 5:
|
||||
*(s16 *)(a0 + 2) = 0x19;
|
||||
func_8012A828(a0, D_801ADC24);
|
||||
*(s32 *)(a0 + 0x1C) = 0x1E;
|
||||
break;
|
||||
case 6:
|
||||
*(s16 *)(a0 + 2) = 0xC;
|
||||
func_8012A828(a0, D_801ADD34);
|
||||
*(s32 *)(a0 + 0x1C) = 0;
|
||||
*(s16 *)(a0 + 0x84) = 0;
|
||||
*(s16 *)(a0 + 0xDE) = 0;
|
||||
*(s16 *)(a0 + 0x34) = 0x16;
|
||||
*(s16 *)(a0 + 0xDC) = 0x111 - (*(s16 *)(a0 + 0x76) * 0x88) / 0x78;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern s32 func_8012BA10(s32 a0, s32 a1);
|
||||
|
||||
@@ -5593,7 +5593,98 @@ void func_8017F8D8(s32 arg0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C", func_8017FA74);
|
||||
extern s32 func_8017B368(s32);
|
||||
extern s32 func_80178970();
|
||||
extern void func_80178D18(void);
|
||||
extern s32 func_80029504(void);
|
||||
|
||||
void func_8017FA74(s32 arg0)
|
||||
{
|
||||
/* NOTE: this typedef is deliberately BLOCK scope. The file-scope
|
||||
* `typedef ... Tbl8_8017FC44;` lives a few lines below this function and a
|
||||
* second file-scope copy is a C89 redefinition -- gcc-2.7.2 exits 33
|
||||
* ("conflicting types for `Tbl8_8017FC44'"), which is what the whole-binary
|
||||
* gate kept rejecting even though the body is byte-identical. */
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 unk00;
|
||||
/* 0x04 */ s32 unk04;
|
||||
} Tbl8_8017FC44;
|
||||
|
||||
extern s32 D_801B2E70;
|
||||
extern void func_8017FE04(s32 a0);
|
||||
extern u8 D_80188EF8;
|
||||
extern u8 D_80188F10;
|
||||
extern u8 D_80188F30[];
|
||||
extern u8 D_80188F40[];
|
||||
extern u8 D_80188F50[];
|
||||
extern u8 D_80188F70[];
|
||||
extern Tbl8_8017FC44 D_80189380[];
|
||||
|
||||
s32 a0;
|
||||
s32 v1;
|
||||
s32 idx;
|
||||
Tbl8_8017FC44 *rec;
|
||||
|
||||
switch (D_801B2E70) {
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
((s32 (*)(s32, s32))func_8017B368)(arg0, (s32)D_80188F30);
|
||||
break;
|
||||
case 2:
|
||||
((s32 (*)(s32, s32))func_8017B368)(arg0, (s32)D_80188F40);
|
||||
break;
|
||||
case 3:
|
||||
((s32 (*)(s32, s32))func_8017B368)(arg0, (s32)D_80188F50);
|
||||
break;
|
||||
case 4:
|
||||
((s32 (*)(s32, s32))func_8017B368)(arg0, (s32)D_80188F70);
|
||||
D_801B2E70 = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
if (((s32 (*)(s32))func_80178970)(arg0) != 0) {
|
||||
((void (*)(s32))func_80178D18)(arg0);
|
||||
v1 = func_80029504();
|
||||
a0 = 0;
|
||||
if (v1 >= 0x140) {
|
||||
if (v1 < 0x14A) {
|
||||
a0 = 1;
|
||||
} else if (v1 < 0x172) {
|
||||
a0 = 2;
|
||||
} else if (v1 < 0x17C) {
|
||||
a0 = 3;
|
||||
} else {
|
||||
a0 = 4;
|
||||
}
|
||||
}
|
||||
if (a0 == 4) {
|
||||
func_8017FE04(arg0);
|
||||
} else {
|
||||
*(u16 *)(arg0 + 2) = 1;
|
||||
v1 = func_80029504();
|
||||
idx = 0;
|
||||
if (v1 >= 0x140) {
|
||||
if (v1 < 0x14A) {
|
||||
idx = 1;
|
||||
} else if (v1 < 0x172) {
|
||||
idx = 2;
|
||||
} else if (v1 < 0x17C) {
|
||||
idx = 3;
|
||||
} else {
|
||||
idx = 4;
|
||||
}
|
||||
}
|
||||
rec = &D_80189380[idx];
|
||||
func_8012E8E0(arg0, (s32)&D_80188EF8 + rec->unk00 * 8);
|
||||
func_8012A828(arg0, (void *)rec->unk04);
|
||||
*(s32 *)(arg0 + 0x58) = (s32)&D_80188F10 | 0x40000000;
|
||||
*(u16 *)(arg0 + 0x5C) = 0x800;
|
||||
D_801B2E70 = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 unk00;
|
||||
|
||||
Reference in New Issue
Block a user