feat(phase-29 §8e): func_80159C84 diagnostic — clean (canonical-decl) draft banks the gate-fail class (ov_SC01_004 BANKED)

This commit is contained in:
Drew T
2026-07-18 03:01:01 -06:00
parent a11e4d9d85
commit c9499fbef8
4 changed files with 1497 additions and 77 deletions
+3 -2
View File
@@ -394,8 +394,9 @@ ov_SC01_004_ELF := $(ov_SC01_004_OUT).elf
ov_SC01_004_MAPFILE := $(ov_SC01_004_OUT).map
ov_SC01_004_LD_SCRIPT := $(ov_SC01_004_OUT).ld
ov_SC01_004_SPLAT_YAML := config/splat.ov_SC01_004.yaml
ov_SC01_004_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_004_jr_8012ACE0.o,tail2.data.o,ov_SC01_004_jr_801380E0.o,tail3.data.o,ov_SC01_004_jr_8013FFD8.o,tail4.data.o,ov_SC01_004_jr_8015444C.o,tail5.data.o,ov_SC01_004_jr_8015A3C8.o,tail6.data.o,ov_SC01_004_jr_8015AE2C.o,tail7.data.o,ov_SC01_004_jr_8016AB6C.o,tail8.data.o,ov_SC01_004_jr_801734BC.o,tail9.data.o,ov_SC01_004_jr_80178D40.o,tail10.data.o,ov_SC01_004_jr_8017A4AC.o,tail11.data.o,ov_SC01_004_jr_8017BE9C.o,tail12.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
build/src/ov_SC01_004/ov_SC01_004_jr_8012ACE0.o: JTBL_PADS := 0,0 # Phase-29 §8e jtbl pad spec (jtbl_carve.py)
ov_SC01_004_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_004_jr_8012ACE0.o,tail2.data.o,ov_SC01_004_jr_801380E0.o,tail3.data.o,ov_SC01_004_jr_8013FFD8.o,tail4.data.o,ov_SC01_004_jr_8015444C.o,tail5.data.o,ov_SC01_004_jr_80159C84.o,tail6.data.o,ov_SC01_004_jr_8015A3C8.o,tail7.data.o,ov_SC01_004_jr_8015AE2C.o,tail8.data.o,ov_SC01_004_jr_8016AB6C.o,tail9.data.o,ov_SC01_004_jr_801734BC.o,tail10.data.o,ov_SC01_004_jr_80178D40.o,tail11.data.o,ov_SC01_004_jr_8017A4AC.o,tail12.data.o,ov_SC01_004_jr_8017BE9C.o,tail13.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
build/src/ov_SC01_004/ov_SC01_004_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py)
build/src/ov_SC01_004/ov_SC01_004_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
ov_SC01_004_CHECK_SHA := config/check.ov_SC01_004.sha
ov_SC01_004_SYMBOLS := config/symbols.ov_SC01_004.txt
ov_SC01_004_SIG := .run/sig.ov_SC01_004.jsonl
+10 -7
View File
@@ -100,6 +100,7 @@ segments:
- [0x1CA44, c, ov_SC01_004_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C)
- [0x1d64c, c, ov_SC01_004_after]
- [0x2c2f4, c, ov_SC01_004_jr_8015444C]
- [0x31b2c, c, ov_SC01_004_jr_80159C84]
- [0x32270, c, ov_SC01_004_jr_8015A3C8]
- [0x32cd4, c, ov_SC01_004_jr_8015AE2C]
- [0x42a14, c, ov_SC01_004_jr_8016AB6C]
@@ -116,20 +117,22 @@ segments:
- [0x65ed0, data, tail4]
- [0x65f38, .rodata, ov_SC01_004_jr_8015444C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0x65fa4, data, tail5]
- [0x66100, .rodata, ov_SC01_004_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0x66134, data, tail6]
- [0x66138, .rodata, ov_SC01_004_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0x66154, data, tail6]
- [0x66154, data, tail7]
- [0x66158, .rodata, ov_SC01_004_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0x66174, data, tail7]
- [0x66174, data, tail8]
- [0x661cc, .rodata, ov_SC01_004_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0x661ec, data, tail8]
- [0x661ec, data, tail9]
- [0x6626c, .rodata, ov_SC01_004_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0x66280, data, tail9]
- [0x66280, data, tail10]
- [0x66428, .rodata, ov_SC01_004_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0x665a0, data, tail10]
- [0x665a0, data, tail11]
- [0x66630, .rodata, ov_SC01_004_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0x666bc, data, tail11]
- [0x666bc, data, tail12]
- [0x666d4, .rodata, ov_SC01_004_jr_8017BE9C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0x666f4, data, tail12]
- [0x666f4, data, tail13]
- [0x68274, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word)
- [0x68277] # 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
-68
View File
@@ -2218,71 +2218,3 @@ void func_80159BE4(s32 arg0)
((void (*)(int))func_80172590)(arg0);
((void (*)(int))func_80146CA0)(arg0);
}
INCLUDE_ASM("asm/ov_SC01_004/nonmatchings/ov_SC01_004_jr_8015444C", 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) */
extern void (*D_80181A08[])(void);
void func_8015A264(void *a0) {
D_80181A08[*(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 int D_8018182C;
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)
{
unsigned char bVar1;
((void (*)(int, int *))func_80146DB8)(param_1, &D_8018182C);
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