feat(phase-26): func_80182268 family banked x3 — the lazy jr pipeline proven end-to-end

Sibling sweep via jtbl_family_bank: ov_SC02_000 + ov_SC02_003 (cross-address, the
fn lives at 0x8017FCB0 in both) BANKED byte-identical. With the exemplar that is the
complete family (3/3).

This closes the de-risk: the lazy jr bank composition now runs end-to-end on a real
cracked core — lazy isolate -> jtbl_carve into the isolated subseg -> cross-address
remap -> raw-first two-stage gate -> whole-binary byte-gate -> x-members.

R22 clean-fleet 136/136 byte-identical; 0 NON_MATCHING (G4).
This commit is contained in:
Drew T
2026-07-13 14:43:36 -06:00
parent c66b530f71
commit 258f10c048
7 changed files with 7991 additions and 2233 deletions
+2 -2
View File
@@ -153,7 +153,7 @@ ov_SC02_000_ELF := $(ov_SC02_000_OUT).elf
ov_SC02_000_MAPFILE := $(ov_SC02_000_OUT).map
ov_SC02_000_LD_SCRIPT := $(ov_SC02_000_OUT).ld
ov_SC02_000_SPLAT_YAML := config/splat.ov_SC02_000.yaml
ov_SC02_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_000.o,tail2.data.o,ov_SC02_000_after.o,tail3.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
ov_SC02_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_000.o,tail2.data.o,ov_SC02_000_after.o,tail3.data.o,ov_SC02_000_jr_8017FCB0.o,tail4.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
ov_SC02_000_CHECK_SHA := config/check.ov_SC02_000.sha
ov_SC02_000_SYMBOLS := config/symbols.ov_SC02_000.txt
ov_SC02_000_SIG := .run/sig.ov_SC02_000.jsonl
@@ -175,7 +175,7 @@ ov_SC02_003_ELF := $(ov_SC02_003_OUT).elf
ov_SC02_003_MAPFILE := $(ov_SC02_003_OUT).map
ov_SC02_003_LD_SCRIPT := $(ov_SC02_003_OUT).ld
ov_SC02_003_SPLAT_YAML := config/splat.ov_SC02_003.yaml
ov_SC02_003_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_003.o,tail2.data.o,ov_SC02_003_after.o,tail3.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
ov_SC02_003_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_003.o,tail2.data.o,ov_SC02_003_after.o,tail3.data.o,ov_SC02_003_jr_8017FCB0.o,tail4.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
ov_SC02_003_CHECK_SHA := config/check.ov_SC02_003.sha
ov_SC02_003_SYMBOLS := config/symbols.ov_SC02_003.txt
ov_SC02_003_SIG := .run/sig.ov_SC02_003.jsonl
+4 -1
View File
@@ -95,12 +95,15 @@ segments:
# - [0x0, rodata, head]
- [0x0, c, ov_SC02_000] # -O2 before whale (file 0x0..0x1CA44)
- [0x1CA44, c, ov_SC02_000_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C)
- [0x1D64C, c, ov_SC02_000_after] # -O2 after whale (0x1D64C..data tail)
- [0x1d64c, c, ov_SC02_000_after]
- [0x57b58, c, ov_SC02_000_jr_8017FCB0]
- [0x62a58, data, tail]
- [0xbd724, .rodata, ov_SC02_000] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0xbd7f0, data, tail2]
- [0xbe314, .rodata, ov_SC02_000_after] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0xbe328, data, tail3]
- [0xbe944, .rodata, ov_SC02_000_jr_8017FCB0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0xbe964, data, tail4]
- [0xC070C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word)
- [0xC070F] # 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
+4 -1
View File
@@ -95,12 +95,15 @@ segments:
# - [0x0, rodata, head]
- [0x0, c, ov_SC02_003] # -O2 before whale (file 0x0..0x1CA44)
- [0x1CA44, c, ov_SC02_003_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C)
- [0x1D64C, c, ov_SC02_003_after] # -O2 after whale (0x1D64C..data tail)
- [0x1d64c, c, ov_SC02_003_after]
- [0x57b58, c, ov_SC02_003_jr_8017FCB0]
- [0x62a58, data, tail]
- [0xbd724, .rodata, ov_SC02_003] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0xbd7f0, data, tail2]
- [0xbe314, .rodata, ov_SC02_003_after] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0xbe328, data, tail3]
- [0xbe944, .rodata, ov_SC02_003_jr_8017FCB0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0xbe964, data, tail4]
- [0xC070C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word)
- [0xC070F] # 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
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff