mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 21:36:06 -04:00
feat(phase-30 S48-0b): jtbl family func_8017A4AC — 1/1 blocked-binary siblings banked
This commit is contained in:
+1
-1
@@ -4957,7 +4957,7 @@ build/src/ov_SC02_037/ov_SC02_037_jr_801594E8.o: JTBL_PADS := 0,0 # §8e pads (
|
||||
build/src/ov_SC02_037/ov_SC02_037_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC02_037/ov_SC02_037_jr_8015A3C8.o: JTBL_PADS := 0,4,4,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20,+0x40,+0x60
|
||||
build/src/ov_SC02_037/ov_SC02_037_jr_80171B4C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC02_037/ov_SC02_037_jr_801789AC.o: JTBL_PADS := 0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18,+0x190
|
||||
build/src/ov_SC02_037/ov_SC02_037_jr_801789AC.o: JTBL_PADS := 0,0,0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18,+0x190,+0x220
|
||||
build/src/ov_SC02_037/ov_SC02_037_jr_8017AE2C.o: JTBL_PADS := 0,0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x14,+0x34,+0x4c
|
||||
ov_SC02_037_CHECK_SHA := config/check.ov_SC02_037.sha
|
||||
ov_SC02_037_SYMBOLS := config/symbols.ov_SC02_037.txt
|
||||
|
||||
@@ -133,7 +133,7 @@ segments:
|
||||
- [0x9fd60, .rodata, ov_SC02_037_jr_80171B4C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0x9fd94, data, tail11]
|
||||
- [0x9ff24, .rodata, ov_SC02_037_jr_801789AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xa0140, data, tail12]
|
||||
- [0xa01d0, data, tail12]
|
||||
- [0xa01d4, .rodata, ov_SC02_037_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xa0238, data, tail13]
|
||||
- [0xA198C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word)
|
||||
|
||||
@@ -4834,7 +4834,181 @@ int func_8017A3D8(void)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037_jr_801789AC", func_8017A4AC);
|
||||
|
||||
// func_8017A4AC (ov_SC01_077) — 536-ins command/bytecode interpreter, 35-case jtbl switch.
|
||||
|
||||
|
||||
extern s16 D_801C9638;
|
||||
extern s32 D_801C9680;
|
||||
|
||||
|
||||
extern void func_80172310(u8*);
|
||||
extern void func_80172738(void);
|
||||
extern void func_80172780(void*);
|
||||
extern void func_80172894(void*);
|
||||
extern void func_801729B0(s32);
|
||||
extern void func_80172B14(s16);
|
||||
extern void func_80172C50(void*);
|
||||
extern void func_80172D68(s32);
|
||||
extern void func_80172E94(void);
|
||||
extern void func_80172ED4(void);
|
||||
extern void func_80172EFC(void);
|
||||
extern void func_80172F24(void);
|
||||
extern void func_80172F4C(void);
|
||||
extern void func_80172F9C(void);
|
||||
extern void func_80172FEC(void);
|
||||
extern void func_80173174(void);
|
||||
extern void func_8017329C(void);
|
||||
extern void func_8017334C(void);
|
||||
extern void func_801733A4(void);
|
||||
extern void func_801733FC(s32, s32);
|
||||
extern void func_80173460(s32, s32);
|
||||
extern void func_801734BC(s32, s32);
|
||||
extern void func_801736B0(s32, s32);
|
||||
extern void func_801737B8(s16);
|
||||
extern void func_801738DC(s16);
|
||||
extern void func_80173A28(s32, s32, s32, s32, s32, s32);
|
||||
extern void func_8017427C(void);
|
||||
extern void func_80174438(s32);
|
||||
extern void func_8017452C(void);
|
||||
extern void func_80174584(void);
|
||||
extern void func_801745DC(void);
|
||||
extern s32 func_80174754(void);
|
||||
|
||||
void func_8017A4AC(void) {
|
||||
|
||||
extern s16 D_801C9640;
|
||||
extern s32 D_801C965C;
|
||||
extern s32 D_801C9684;
|
||||
u16 sp18[4];
|
||||
u16 sp20[4];
|
||||
u16 sp28[4];
|
||||
u16 sp30[4];
|
||||
struct S126B58 *w = &(*(struct S126B58 *)&D_80126B58);
|
||||
s16 cmd;
|
||||
|
||||
if (D_801C9638 == D_801C963C) {
|
||||
if (func_80174754() != 0) {
|
||||
D_801C9640 = 0;
|
||||
} else {
|
||||
D_801C9640 = 1;
|
||||
}
|
||||
return;
|
||||
}
|
||||
D_801C9640 = 1;
|
||||
if (func_80174754() == 0) {
|
||||
return;
|
||||
}
|
||||
cmd = D_801C9238[D_801C9638];
|
||||
D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
switch (cmd) {
|
||||
case 0:
|
||||
func_80172738();
|
||||
return;
|
||||
case 1:
|
||||
sp18[0] = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
sp18[1] = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
sp18[2] = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
((void (*)(u16 *))func_80172780)(sp18);
|
||||
return;
|
||||
case 28:
|
||||
sp18[0] = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
sp18[1] = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
sp18[2] = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
sp18[3] = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
((void (*)(u16 *))func_80172894)(sp18);
|
||||
return;
|
||||
case 2:
|
||||
{ s16 arg = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
((void (*)(s16))func_801729B0)(arg);
|
||||
return; }
|
||||
case 3:
|
||||
{ s16 arg = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
func_80172B14(arg);
|
||||
return; }
|
||||
case 4:
|
||||
{ s16 arg = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
{ s32 t = w->unk20->unk12 + arg;
|
||||
func_80172B14(t & 0xFFF); }
|
||||
return; }
|
||||
case 5:
|
||||
sp18[0] = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
sp18[1] = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
sp18[2] = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
((void (*)(u16 *))func_80172C50)(sp18);
|
||||
return;
|
||||
case 6:
|
||||
{ s16 arg = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
((void (*)(s16))func_80172D68)(arg);
|
||||
return; }
|
||||
case 7: func_80172E94(); return;
|
||||
case 8: func_80172ED4(); return;
|
||||
case 27: ((void (*)())D_801C9684)(); return;
|
||||
case 9: func_80172EFC(); return;
|
||||
case 10: func_80172F24(); return;
|
||||
case 11: func_80173174(); return;
|
||||
case 12: func_80172F4C(); return;
|
||||
case 33: func_80172F9C(); return;
|
||||
case 34: func_80172FEC(); return;
|
||||
case 13: func_801745DC(); return;
|
||||
case 14:
|
||||
case 15: func_8017329C(); return;
|
||||
case 16: func_8017334C(); return;
|
||||
case 17: func_801733A4(); return;
|
||||
case 18:
|
||||
{ s16 arg = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
func_801738DC(arg);
|
||||
return; }
|
||||
case 19: {
|
||||
s16 a, b;
|
||||
s32 ea, eb;
|
||||
a = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF; ea = a;
|
||||
b = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF; eb = b;
|
||||
func_801736B0(ea, eb);
|
||||
return;
|
||||
}
|
||||
case 20:
|
||||
{ s16 arg = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
((void (*)(s16))func_801734BC)(arg);
|
||||
return; }
|
||||
case 23:
|
||||
sp20[0] = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
sp20[1] = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
sp20[2] = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
{ s16 arg = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
((void (*)(s16, u16 *))func_80173460)(arg, sp20);
|
||||
return; }
|
||||
case 29:
|
||||
sp28[0] = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
sp28[1] = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
sp28[2] = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
{ s16 arg = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
((void (*)(s16, u16 *))func_801733FC)(arg, sp28);
|
||||
return; }
|
||||
case 32:
|
||||
sp30[0] = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
sp30[1] = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
sp30[2] = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
sp30[3] = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
((void (*)(u16 *))func_80172310)(sp30);
|
||||
return;
|
||||
case 25: func_8017452C(); return;
|
||||
case 30: func_80174584(); return;
|
||||
case 26: func_8017427C(); return;
|
||||
case 24: func_80174438(D_801C9680); return;
|
||||
case 21:
|
||||
((void (*)(s32, s32, s32, s32, void *, s32))func_80173A28)((*(struct S734 * *)&D_801C965C)->unk0, (*(struct S734 * *)&D_801C965C)->unk4, (*(struct S734 * *)&D_801C965C)->unk8,
|
||||
(*(struct S734 * *)&D_801C965C)->unkC, (*(struct S734 * *)&D_801C965C)->unk10, (*(struct S734 * *)&D_801C965C)->unk18);
|
||||
return;
|
||||
case 22:
|
||||
(*(struct S734 * *)&D_801C965C)->unk1C((*(struct S734 * *)&D_801C965C)->unk4, (*(struct S734 * *)&D_801C965C)->unk10, (*(struct S734 * *)&D_801C965C)->unk18);
|
||||
return;
|
||||
case 31:
|
||||
{ s16 arg = D_801C9238[D_801C9638]; D_801C9638 = (D_801C9638 + 1) & 0x1FF;
|
||||
func_801737B8(arg);
|
||||
return; }
|
||||
}
|
||||
}
|
||||
|
||||
DEFINE_func_8017AD0C() /* dedup: shared engine-core @0x8017ad0c (src/shared) */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user