feat(phase-30 S48-0b): jtbl family func_80159C84 — 3/3 blocked-binary siblings banked

This commit is contained in:
Drew T
2026-08-11 15:39:11 -06:00
parent 782186e598
commit 7e9c6d53a4
10 changed files with 7426 additions and 234 deletions
+6 -3
View File
@@ -4915,8 +4915,9 @@ ov_MAIN_012_ELF := $(ov_MAIN_012_OUT).elf
ov_MAIN_012_MAPFILE := $(ov_MAIN_012_OUT).map
ov_MAIN_012_LD_SCRIPT := $(ov_MAIN_012_OUT).ld
ov_MAIN_012_SPLAT_YAML := config/splat.ov_MAIN_012.yaml
ov_MAIN_012_JTBL_INTERLEAVE := --order tail.data.o,ov_MAIN_012_jr_80131340.o,tail2.data.o,ov_MAIN_012_jr_801380E0.o,tail3.data.o,ov_MAIN_012_jr_8013F350.o,tail4.data.o,ov_MAIN_012_jr_8015A3C8.o,tail5.data.o,ov_MAIN_012_jr_801789AC.o,tail6.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
ov_MAIN_012_JTBL_INTERLEAVE := --order tail.data.o,ov_MAIN_012_jr_80131340.o,tail2.data.o,ov_MAIN_012_jr_801380E0.o,tail3.data.o,ov_MAIN_012_jr_8013F350.o,tail4.data.o,ov_MAIN_012_jr_80159C84.o,tail5.data.o,ov_MAIN_012_jr_8015A3C8.o,tail6.data.o,ov_MAIN_012_jr_801789AC.o,tail7.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
build/src/ov_MAIN_012/ov_MAIN_012_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
build/src/ov_MAIN_012/ov_MAIN_012_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
build/src/ov_MAIN_012/ov_MAIN_012_jr_801789AC.o: JTBL_PADS := 0,0,0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18,+0x190,+0x220
ov_MAIN_012_CHECK_SHA := config/check.ov_MAIN_012.sha
ov_MAIN_012_SYMBOLS := config/symbols.ov_MAIN_012.txt
@@ -4939,8 +4940,9 @@ ov_SC02_037_ELF := $(ov_SC02_037_OUT).elf
ov_SC02_037_MAPFILE := $(ov_SC02_037_OUT).map
ov_SC02_037_LD_SCRIPT := $(ov_SC02_037_OUT).ld
ov_SC02_037_SPLAT_YAML := config/splat.ov_SC02_037.yaml
ov_SC02_037_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_037_jr_80131340.o,tail2.data.o,ov_SC02_037_jr_801380E0.o,tail3.data.o,ov_SC02_037_jr_8013F350.o,tail4.data.o,ov_SC02_037_jr_8015A3C8.o,tail5.data.o,ov_SC02_037_jr_801789AC.o,tail6.data.o,ov_SC02_037_jr_8017AE2C.o,tail7.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
ov_SC02_037_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_037_jr_80131340.o,tail2.data.o,ov_SC02_037_jr_801380E0.o,tail3.data.o,ov_SC02_037_jr_8013F350.o,tail4.data.o,ov_SC02_037_jr_80159C84.o,tail5.data.o,ov_SC02_037_jr_8015A3C8.o,tail6.data.o,ov_SC02_037_jr_801789AC.o,tail7.data.o,ov_SC02_037_jr_8017AE2C.o,tail8.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
build/src/ov_SC02_037/ov_SC02_037_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
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 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
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
@@ -4964,8 +4966,9 @@ ov_SC03_107_ELF := $(ov_SC03_107_OUT).elf
ov_SC03_107_MAPFILE := $(ov_SC03_107_OUT).map
ov_SC03_107_LD_SCRIPT := $(ov_SC03_107_OUT).ld
ov_SC03_107_SPLAT_YAML := config/splat.ov_SC03_107.yaml
ov_SC03_107_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_107_jr_80131340.o,tail2.data.o,ov_SC03_107_jr_801380E0.o,tail3.data.o,ov_SC03_107_jr_8013F350.o,tail4.data.o,ov_SC03_107_jr_8015A3C8.o,tail5.data.o,ov_SC03_107_jr_801789AC.o,tail6.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
ov_SC03_107_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_107_jr_80131340.o,tail2.data.o,ov_SC03_107_jr_801380E0.o,tail3.data.o,ov_SC03_107_jr_8013F350.o,tail4.data.o,ov_SC03_107_jr_80159C84.o,tail5.data.o,ov_SC03_107_jr_8015A3C8.o,tail6.data.o,ov_SC03_107_jr_801789AC.o,tail7.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
build/src/ov_SC03_107/ov_SC03_107_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
build/src/ov_SC03_107/ov_SC03_107_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
build/src/ov_SC03_107/ov_SC03_107_jr_801789AC.o: JTBL_PADS := 0,0,0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18,+0x190,+0x220
ov_SC03_107_CHECK_SHA := config/check.ov_SC03_107.sha
ov_SC03_107_SYMBOLS := config/symbols.ov_SC03_107.txt
+5 -2
View File
@@ -97,6 +97,7 @@ segments:
- [0x91e8, c, ov_MAIN_012_jr_80131340]
- [0xff88, c, ov_MAIN_012_jr_801380E0]
- [0x171f8, c, ov_MAIN_012_jr_8013F350]
- [0x31b2c, c, ov_MAIN_012_jr_80159C84]
- [0x32270, c, ov_MAIN_012_jr_8015A3C8]
- [0x50854, c, ov_MAIN_012_jr_801789AC]
- [0x561e0, data, tail]
@@ -106,10 +107,12 @@ segments:
- [0x5ae88, data, tail3]
- [0x5b494, .rodata, ov_MAIN_012_jr_8013F350] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0x5b4c8, data, tail4]
- [0x5b730, .rodata, ov_MAIN_012_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0x5b764, data, tail5]
- [0x5b768, .rodata, ov_MAIN_012_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0x5b784, data, tail5]
- [0x5b784, data, tail6]
- [0x5ba40, .rodata, ov_MAIN_012_jr_801789AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0x5bcec, data, tail6]
- [0x5bcec, data, tail7]
- [0x5DB24, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word)
- [0x5DB27] # 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
+6 -3
View File
@@ -97,6 +97,7 @@ segments:
- [0x91e8, c, ov_SC02_037_jr_80131340]
- [0xff88, c, ov_SC02_037_jr_801380E0]
- [0x171f8, c, ov_SC02_037_jr_8013F350]
- [0x31b2c, c, ov_SC02_037_jr_80159C84]
- [0x32270, c, ov_SC02_037_jr_8015A3C8]
- [0x50854, c, ov_SC02_037_jr_801789AC]
- [0x52cd4, c, ov_SC02_037_jr_8017AE2C]
@@ -107,12 +108,14 @@ segments:
- [0x9f36c, data, tail3]
- [0x9f978, .rodata, ov_SC02_037_jr_8013F350] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0x9f9ac, data, tail4]
- [0x9fc14, .rodata, ov_SC02_037_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0x9fc48, data, tail5]
- [0x9fc4c, .rodata, ov_SC02_037_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0x9fc88, data, tail5]
- [0x9fc88, data, tail6]
- [0x9ff24, .rodata, ov_SC02_037_jr_801789AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0x9ff3c, data, tail6]
- [0x9ff3c, data, tail7]
- [0xa01d4, .rodata, ov_SC02_037_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0xa0238, data, tail7]
- [0xa0238, data, tail8]
- [0xA198C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word)
- [0xA198F] # 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
+5 -2
View File
@@ -97,6 +97,7 @@ segments:
- [0x91e8, c, ov_SC03_107_jr_80131340]
- [0xff88, c, ov_SC03_107_jr_801380E0]
- [0x171f8, c, ov_SC03_107_jr_8013F350]
- [0x31b2c, c, ov_SC03_107_jr_80159C84]
- [0x32270, c, ov_SC03_107_jr_8015A3C8]
- [0x50854, c, ov_SC03_107_jr_801789AC]
- [0x5a304, data, tail]
@@ -106,10 +107,12 @@ segments:
- [0x716a0, data, tail3]
- [0x71cac, .rodata, ov_SC03_107_jr_8013F350] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0x71ce0, data, tail4]
- [0x71f48, .rodata, ov_SC03_107_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0x71f7c, data, tail5]
- [0x71f80, .rodata, ov_SC03_107_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0x71f9c, data, tail5]
- [0x71f9c, data, tail6]
- [0x72258, .rodata, ov_SC03_107_jr_801789AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0x72504, data, tail6]
- [0x72504, data, tail7]
- [0x73BE4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word)
- [0x73BE7] # 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
-75
View File
@@ -7733,78 +7733,3 @@ void func_80159BE4(s32 arg0)
((void (*)(int))func_80172590)(arg0);
((void (*)(int))func_80146CA0)(arg0);
}
INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_8013F350", func_80159C84);
DEFINE_func_8015A1C8() /* dedup: shared engine-core @0x8015a1c8 (src/shared) */
DEFINE_func_8015A1FC() /* dedup: shared engine-core @0x8015a1fc (src/shared) */
DEFINE_func_8015A230() /* dedup: shared engine-core @0x8015a230 (src/shared) */
void func_8015A264(void *a0) {
extern void (*D_80180B6C[])(void);
D_80180B6C[*(u16 *)((s32)a0 + 0x2)]();
}
DEFINE_func_8015A2A0() /* dedup: shared engine-core @0x8015a2a0 (src/shared) */
// @class: other
// @stuck: none — MATCH (60 ins). switch() gives signed slti pivot; per-case duplicated call gives per-case a0 setup + nop jal delay
extern void func_80146DB8(s32 *a0, s32 *a1);
extern void func_80154150(s32 a0, s32 a1);
extern void func_80154A74(s32 a0, s32 a1);
extern void func_8014C010(s32 a0, s32 a1);
extern void func_801553A8(s32 *a0);
extern s32 func_80172608(u8 *a0);
extern void func_80146CA0(void *a0);
void func_8015A2D8(s32 param_1)
{
extern int D_80180990;
unsigned char bVar1;
((void (*)(int, int *))func_80146DB8)(param_1, &D_80180990);
if ((*(unsigned int *)(param_1 + 0x44) & 0x200) != 0) {
func_80154150(param_1, 10);
func_80154A74(param_1, 0x1c);
*(int *)(param_1 + 0x2c) = 0xfffc0000;
goto LAB_8015a38c;
}
bVar1 = *(unsigned char *)(param_1 + 0xa9);
switch (bVar1) {
case 0x41:
func_80154150(param_1, 7);
break;
case 0x53:
case 0x73:
func_80154150(param_1, 6);
break;
default:
*(int *)(param_1 + 0x23c) = 0;
goto LAB_8015a390;
}
func_80154A74(param_1, 0x21);
LAB_8015a38c:
*(int *)(param_1 + 0x23c) = 0;
LAB_8015a390:
func_8014C010(param_1, 2);
((void (*)(int))func_801553A8)(param_1);
((void (*)(int))func_80172608)(param_1);
((void (*)(int))func_80146CA0)(param_1);
return;
}
File diff suppressed because it is too large Load Diff
-74
View File
@@ -7926,77 +7926,3 @@ void func_80159BE4(s32 arg0)
((void (*)(int))func_80172590)(arg0);
((void (*)(int))func_80146CA0)(arg0);
}
INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037_jr_8013F350", func_80159C84);
DEFINE_func_8015A1C8() /* dedup: shared engine-core @0x8015a1c8 (src/shared) */
DEFINE_func_8015A1FC() /* dedup: shared engine-core @0x8015a1fc (src/shared) */
DEFINE_func_8015A230() /* dedup: shared engine-core @0x8015a230 (src/shared) */
void func_8015A264(void *a0) {
extern void (*D_801863F8[])(void);
D_801863F8[*(u16 *)((s32)a0 + 0x2)]();
}
DEFINE_func_8015A2A0() /* dedup: shared engine-core @0x8015a2a0 (src/shared) */
// @class: other
// @stuck: none — MATCH (60 ins). switch() gives signed slti pivot; per-case duplicated call gives per-case a0 setup + nop jal delay
extern void func_80146DB8(s32 *a0, s32 *a1);
extern void func_80154150(s32 a0, s32 a1);
extern void func_80154A74(s32 a0, s32 a1);
extern void func_8014C010(s32 a0, s32 a1);
extern void func_801553A8(s32 *a0);
extern s32 func_80172608(u8 *a0);
extern void func_80146CA0(void *a0);
void func_8015A2D8(s32 param_1)
{
extern int D_8018621C;
unsigned char bVar1;
((void (*)(int, int *))func_80146DB8)(param_1, &D_8018621C);
if ((*(unsigned int *)(param_1 + 0x44) & 0x200) != 0) {
func_80154150(param_1, 10);
func_80154A74(param_1, 0x1c);
*(int *)(param_1 + 0x2c) = 0xfffc0000;
goto LAB_8015a38c;
}
bVar1 = *(unsigned char *)(param_1 + 0xa9);
switch (bVar1) {
case 0x41:
func_80154150(param_1, 7);
break;
case 0x53:
case 0x73:
func_80154150(param_1, 6);
break;
default:
*(int *)(param_1 + 0x23c) = 0;
goto LAB_8015a390;
}
func_80154A74(param_1, 0x21);
LAB_8015a38c:
*(int *)(param_1 + 0x23c) = 0;
LAB_8015a390:
func_8014C010(param_1, 2);
((void (*)(int))func_801553A8)(param_1);
((void (*)(int))func_80172608)(param_1);
((void (*)(int))func_80146CA0)(param_1);
return;
}
File diff suppressed because it is too large Load Diff
-75
View File
@@ -7741,78 +7741,3 @@ void func_80159BE4(s32 arg0)
((void (*)(int))func_80172590)(arg0);
((void (*)(int))func_80146CA0)(arg0);
}
INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107_jr_8013F350", func_80159C84);
DEFINE_func_8015A1C8() /* dedup: shared engine-core @0x8015a1c8 (src/shared) */
DEFINE_func_8015A1FC() /* dedup: shared engine-core @0x8015a1fc (src/shared) */
DEFINE_func_8015A230() /* dedup: shared engine-core @0x8015a230 (src/shared) */
void func_8015A264(void *a0) {
extern void (*D_80184C94[])(void);
D_80184C94[*(u16 *)((s32)a0 + 0x2)]();
}
DEFINE_func_8015A2A0() /* dedup: shared engine-core @0x8015a2a0 (src/shared) */
// @class: other
// @stuck: none — MATCH (60 ins). switch() gives signed slti pivot; per-case duplicated call gives per-case a0 setup + nop jal delay
extern void func_80146DB8(s32 *a0, s32 *a1);
extern void func_80154150(s32 a0, s32 a1);
extern void func_80154A74(s32 a0, s32 a1);
extern void func_8014C010(s32 a0, s32 a1);
extern void func_801553A8(s32 *a0);
extern s32 func_80172608(u8 *a0);
extern void func_80146CA0(void *a0);
void func_8015A2D8(s32 param_1)
{
extern int D_80184AB8;
unsigned char bVar1;
((void (*)(int, int *))func_80146DB8)(param_1, &D_80184AB8);
if ((*(unsigned int *)(param_1 + 0x44) & 0x200) != 0) {
func_80154150(param_1, 10);
func_80154A74(param_1, 0x1c);
*(int *)(param_1 + 0x2c) = 0xfffc0000;
goto LAB_8015a38c;
}
bVar1 = *(unsigned char *)(param_1 + 0xa9);
switch (bVar1) {
case 0x41:
func_80154150(param_1, 7);
break;
case 0x53:
case 0x73:
func_80154150(param_1, 6);
break;
default:
*(int *)(param_1 + 0x23c) = 0;
goto LAB_8015a390;
}
func_80154A74(param_1, 0x21);
LAB_8015a38c:
*(int *)(param_1 + 0x23c) = 0;
LAB_8015a390:
func_8014C010(param_1, 2);
((void (*)(int))func_801553A8)(param_1);
((void (*)(int))func_80172608)(param_1);
((void (*)(int))func_80146CA0)(param_1);
return;
}
File diff suppressed because it is too large Load Diff