From 5a081806177ebaf06fe9994b5f7cc7c53e8d899b Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Sun, 12 Jul 2026 19:02:25 -0600 Subject: [PATCH] =?UTF-8?q?feat(phase-26):=20=C2=A78=20=C3=97134=20automat?= =?UTF-8?q?ion=20=E2=80=94=20func=5F8012ACE0=20banked=20fleet-wide=20(133/?= =?UTF-8?q?133,=20R22=20136/136)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - the jr-function ×134 harvest pipeline, proven end-to-end: per family sibling, jtbl_carve (per-sibling jtbl-rodata carve, computed from THAT sibling's own jtbl address — the fn is at the same vram across overlays but its jtbl floats) -> make extract (auto ld_interleave) -> remap_hseq + canon_sig_reconcile -> whole-binary gate - tools/jtbl_carve.py: per-overlay §8 carve generator (config data-tail split + _JTBL_INTERLEAVE var) - tools/jtbl_family_bank.py: the sibling sweep driver (idempotent, revert-on-fail, byte-gated) - tools/family_remap.py: extract_unit now carries single-line typedefs (jr-function bodies define local `typedef struct{} Foo_;` that must template with the body — the propagation cap for these; additive, byte-gate-protected) - func_8012ACE0 family: 133/133 siblings BANKED, 0 failures; R22 clean-fleet 136/136 byte-identical; 0 NON_MATCHING (G4) - metrics: distinct-code 39.1% (50,698 unique fns), instr-weighted 63.0% - opportunity (has_mid_jr families): 237 total (5,805 members) = 46 small mid/tiny (771 members, same mechanical pipeline) + 191 substantial (the Fable5 cores, Task 7 paused) - NEXT: R22 profiling/parallelization; then the other 45 small jr families --- config/overlays.mk | 133 ++++++++++++++++ config/splat.ov_SC01_000.yaml | 4 +- config/splat.ov_SC01_001.yaml | 4 +- config/splat.ov_SC01_004.yaml | 4 +- config/splat.ov_SC01_005.yaml | 4 +- config/splat.ov_SC01_006.yaml | 4 +- config/splat.ov_SC01_008.yaml | 4 +- config/splat.ov_SC01_009.yaml | 4 +- config/splat.ov_SC01_074.yaml | 4 +- config/splat.ov_SC01_080.yaml | 4 +- config/splat.ov_SC01_084.yaml | 4 +- config/splat.ov_SC02_000.yaml | 4 +- config/splat.ov_SC02_003.yaml | 4 +- config/splat.ov_SC02_004.yaml | 4 +- config/splat.ov_SC02_005.yaml | 4 +- config/splat.ov_SC02_011.yaml | 4 +- config/splat.ov_SC02_015.yaml | 4 +- config/splat.ov_SC02_016.yaml | 4 +- config/splat.ov_SC02_017.yaml | 4 +- config/splat.ov_SC02_021.yaml | 4 +- config/splat.ov_SC02_026.yaml | 4 +- config/splat.ov_SC02_027.yaml | 4 +- config/splat.ov_SC02_028.yaml | 4 +- config/splat.ov_SC02_031.yaml | 4 +- config/splat.ov_SC02_035.yaml | 4 +- config/splat.ov_SC02_039.yaml | 4 +- config/splat.ov_SC02_041.yaml | 4 +- config/splat.ov_SC03_001.yaml | 4 +- config/splat.ov_SC03_002.yaml | 4 +- config/splat.ov_SC03_003.yaml | 4 +- config/splat.ov_SC03_006.yaml | 4 +- config/splat.ov_SC03_007.yaml | 4 +- config/splat.ov_SC03_010.yaml | 4 +- config/splat.ov_SC03_011.yaml | 4 +- config/splat.ov_SC03_012.yaml | 4 +- config/splat.ov_SC03_013.yaml | 4 +- config/splat.ov_SC03_014.yaml | 4 +- config/splat.ov_SC03_015.yaml | 4 +- config/splat.ov_SC03_023.yaml | 4 +- config/splat.ov_SC03_024.yaml | 4 +- config/splat.ov_SC03_028.yaml | 4 +- config/splat.ov_SC03_029.yaml | 4 +- config/splat.ov_SC03_030.yaml | 4 +- config/splat.ov_SC03_031.yaml | 4 +- config/splat.ov_SC03_089.yaml | 4 +- config/splat.ov_SC03_090.yaml | 4 +- config/splat.ov_SC03_091.yaml | 4 +- config/splat.ov_SC03_092.yaml | 4 +- config/splat.ov_SC03_093.yaml | 4 +- config/splat.ov_SC03_094.yaml | 4 +- config/splat.ov_SC03_095.yaml | 4 +- config/splat.ov_SC03_096.yaml | 4 +- config/splat.ov_SC03_097.yaml | 4 +- config/splat.ov_SC03_098.yaml | 4 +- config/splat.ov_SC03_099.yaml | 4 +- config/splat.ov_SC03_100.yaml | 4 +- config/splat.ov_SC03_101.yaml | 4 +- config/splat.ov_SC03_102.yaml | 4 +- config/splat.ov_SC03_103.yaml | 4 +- config/splat.ov_SC03_104.yaml | 4 +- config/splat.ov_SC03_105.yaml | 4 +- config/splat.ov_SC03_108.yaml | 4 +- config/splat.ov_SC03_109.yaml | 4 +- config/splat.ov_SC03_110.yaml | 4 +- config/splat.ov_SC03_111.yaml | 4 +- config/splat.ov_SC03_112.yaml | 4 +- config/splat.ov_SC03_113.yaml | 4 +- config/splat.ov_SC03_114.yaml | 4 +- config/splat.ov_SC03_115.yaml | 4 +- config/splat.ov_SC03_116.yaml | 4 +- config/splat.ov_SC03_117.yaml | 4 +- config/splat.ov_SC03_118.yaml | 4 +- config/splat.ov_SC03_119.yaml | 4 +- config/splat.ov_SC03_121.yaml | 4 +- config/splat.ov_SC03_124.yaml | 4 +- config/splat.ov_SC03_125.yaml | 4 +- config/splat.ov_SC03_126.yaml | 4 +- config/splat.ov_SC04_000.yaml | 4 +- config/splat.ov_SC04_002.yaml | 4 +- config/splat.ov_SC04_003.yaml | 4 +- config/splat.ov_SC04_004.yaml | 4 +- config/splat.ov_SC04_005.yaml | 4 +- config/splat.ov_SC04_006.yaml | 4 +- config/splat.ov_SC04_007.yaml | 4 +- config/splat.ov_SC04_008.yaml | 4 +- config/splat.ov_SC04_009.yaml | 4 +- config/splat.ov_SC04_010.yaml | 4 +- config/splat.ov_SC04_011.yaml | 4 +- config/splat.ov_SC04_012.yaml | 4 +- config/splat.ov_SC04_015.yaml | 4 +- config/splat.ov_SC04_016.yaml | 4 +- config/splat.ov_SC04_018.yaml | 4 +- config/splat.ov_SC04_019.yaml | 4 +- config/splat.ov_SC04_020.yaml | 4 +- config/splat.ov_SC04_021.yaml | 4 +- config/splat.ov_SC05_000.yaml | 4 +- config/splat.ov_SC05_001.yaml | 4 +- config/splat.ov_SC05_002.yaml | 4 +- config/splat.ov_SC05_003.yaml | 4 +- config/splat.ov_SC05_004.yaml | 4 +- config/splat.ov_SC05_005.yaml | 4 +- config/splat.ov_SC05_006.yaml | 4 +- config/splat.ov_SC05_007.yaml | 4 +- config/splat.ov_SC05_008.yaml | 4 +- config/splat.ov_SC05_009.yaml | 4 +- config/splat.ov_SC05_010.yaml | 4 +- config/splat.ov_SC05_011.yaml | 4 +- config/splat.ov_SC05_017.yaml | 4 +- config/splat.ov_SC05_018.yaml | 4 +- config/splat.ov_SC05_019.yaml | 4 +- config/splat.ov_SC06_000.yaml | 4 +- config/splat.ov_SC06_006.yaml | 4 +- config/splat.ov_SC06_008.yaml | 4 +- config/splat.ov_SC06_010.yaml | 4 +- config/splat.ov_SC06_011.yaml | 4 +- config/splat.ov_SC06_013.yaml | 4 +- config/splat.ov_SC06_014.yaml | 4 +- config/splat.ov_SC06_015.yaml | 4 +- config/splat.ov_SC06_016.yaml | 4 +- config/splat.ov_SC06_018.yaml | 4 +- config/splat.ov_SC06_020.yaml | 4 +- config/splat.ov_SC06_022.yaml | 4 +- config/splat.ov_SC06_024.yaml | 4 +- config/splat.ov_SC06_025.yaml | 4 +- config/splat.ov_SC06_027.yaml | 4 +- config/splat.ov_SC06_029.yaml | 4 +- config/splat.ov_SC06_030.yaml | 4 +- config/splat.ov_SC06_032.yaml | 4 +- config/splat.ov_SC06_033.yaml | 4 +- config/splat.ov_SC07_000.yaml | 4 +- config/splat.ov_SC07_001.yaml | 4 +- config/splat.ov_SC07_002.yaml | 4 +- config/splat.ov_SC07_008.yaml | 4 +- config/splat.ov_SC07_009.yaml | 4 +- docs/family-hseq.md | 4 +- docs/progress.fleet.md | 276 +++++++++++++++++----------------- phase-ends/CURRENT_PHASE.md | 1 + src/ov_SC01_000/ov_SC01_000.c | 22 ++- src/ov_SC01_001/ov_SC01_001.c | 22 ++- src/ov_SC01_004/ov_SC01_004.c | 22 ++- src/ov_SC01_005/ov_SC01_005.c | 22 ++- src/ov_SC01_006/ov_SC01_006.c | 22 ++- src/ov_SC01_008/ov_SC01_008.c | 22 ++- src/ov_SC01_009/ov_SC01_009.c | 22 ++- src/ov_SC01_074/ov_SC01_074.c | 22 ++- src/ov_SC01_080/ov_SC01_080.c | 22 ++- src/ov_SC01_084/ov_SC01_084.c | 22 ++- src/ov_SC02_000/ov_SC02_000.c | 22 ++- src/ov_SC02_003/ov_SC02_003.c | 22 ++- src/ov_SC02_004/ov_SC02_004.c | 22 ++- src/ov_SC02_005/ov_SC02_005.c | 22 ++- src/ov_SC02_011/ov_SC02_011.c | 22 ++- src/ov_SC02_015/ov_SC02_015.c | 22 ++- src/ov_SC02_016/ov_SC02_016.c | 22 ++- src/ov_SC02_017/ov_SC02_017.c | 22 ++- src/ov_SC02_021/ov_SC02_021.c | 22 ++- src/ov_SC02_026/ov_SC02_026.c | 22 ++- src/ov_SC02_027/ov_SC02_027.c | 22 ++- src/ov_SC02_028/ov_SC02_028.c | 22 ++- src/ov_SC02_031/ov_SC02_031.c | 22 ++- src/ov_SC02_035/ov_SC02_035.c | 22 ++- src/ov_SC02_039/ov_SC02_039.c | 22 ++- src/ov_SC02_041/ov_SC02_041.c | 22 ++- src/ov_SC03_001/ov_SC03_001.c | 22 ++- src/ov_SC03_002/ov_SC03_002.c | 22 ++- src/ov_SC03_003/ov_SC03_003.c | 22 ++- src/ov_SC03_006/ov_SC03_006.c | 22 ++- src/ov_SC03_007/ov_SC03_007.c | 22 ++- src/ov_SC03_010/ov_SC03_010.c | 22 ++- src/ov_SC03_011/ov_SC03_011.c | 22 ++- src/ov_SC03_012/ov_SC03_012.c | 22 ++- src/ov_SC03_013/ov_SC03_013.c | 22 ++- src/ov_SC03_014/ov_SC03_014.c | 22 ++- src/ov_SC03_015/ov_SC03_015.c | 22 ++- src/ov_SC03_023/ov_SC03_023.c | 22 ++- src/ov_SC03_024/ov_SC03_024.c | 22 ++- src/ov_SC03_028/ov_SC03_028.c | 22 ++- src/ov_SC03_029/ov_SC03_029.c | 22 ++- src/ov_SC03_030/ov_SC03_030.c | 22 ++- src/ov_SC03_031/ov_SC03_031.c | 22 ++- src/ov_SC03_089/ov_SC03_089.c | 22 ++- src/ov_SC03_090/ov_SC03_090.c | 22 ++- src/ov_SC03_091/ov_SC03_091.c | 22 ++- src/ov_SC03_092/ov_SC03_092.c | 22 ++- src/ov_SC03_093/ov_SC03_093.c | 22 ++- src/ov_SC03_094/ov_SC03_094.c | 22 ++- src/ov_SC03_095/ov_SC03_095.c | 22 ++- src/ov_SC03_096/ov_SC03_096.c | 22 ++- src/ov_SC03_097/ov_SC03_097.c | 22 ++- src/ov_SC03_098/ov_SC03_098.c | 22 ++- src/ov_SC03_099/ov_SC03_099.c | 22 ++- src/ov_SC03_100/ov_SC03_100.c | 22 ++- src/ov_SC03_101/ov_SC03_101.c | 22 ++- src/ov_SC03_102/ov_SC03_102.c | 22 ++- src/ov_SC03_103/ov_SC03_103.c | 22 ++- src/ov_SC03_104/ov_SC03_104.c | 22 ++- src/ov_SC03_105/ov_SC03_105.c | 22 ++- src/ov_SC03_108/ov_SC03_108.c | 22 ++- src/ov_SC03_109/ov_SC03_109.c | 22 ++- src/ov_SC03_110/ov_SC03_110.c | 22 ++- src/ov_SC03_111/ov_SC03_111.c | 22 ++- src/ov_SC03_112/ov_SC03_112.c | 22 ++- src/ov_SC03_113/ov_SC03_113.c | 22 ++- src/ov_SC03_114/ov_SC03_114.c | 22 ++- src/ov_SC03_115/ov_SC03_115.c | 22 ++- src/ov_SC03_116/ov_SC03_116.c | 22 ++- src/ov_SC03_117/ov_SC03_117.c | 22 ++- src/ov_SC03_118/ov_SC03_118.c | 22 ++- src/ov_SC03_119/ov_SC03_119.c | 22 ++- src/ov_SC03_121/ov_SC03_121.c | 22 ++- src/ov_SC03_124/ov_SC03_124.c | 22 ++- src/ov_SC03_125/ov_SC03_125.c | 22 ++- src/ov_SC03_126/ov_SC03_126.c | 22 ++- src/ov_SC04_000/ov_SC04_000.c | 22 ++- src/ov_SC04_002/ov_SC04_002.c | 22 ++- src/ov_SC04_003/ov_SC04_003.c | 22 ++- src/ov_SC04_004/ov_SC04_004.c | 22 ++- src/ov_SC04_005/ov_SC04_005.c | 22 ++- src/ov_SC04_006/ov_SC04_006.c | 22 ++- src/ov_SC04_007/ov_SC04_007.c | 22 ++- src/ov_SC04_008/ov_SC04_008.c | 22 ++- src/ov_SC04_009/ov_SC04_009.c | 22 ++- src/ov_SC04_010/ov_SC04_010.c | 22 ++- src/ov_SC04_011/ov_SC04_011.c | 22 ++- src/ov_SC04_012/ov_SC04_012.c | 22 ++- src/ov_SC04_015/ov_SC04_015.c | 22 ++- src/ov_SC04_016/ov_SC04_016.c | 22 ++- src/ov_SC04_018/ov_SC04_018.c | 22 ++- src/ov_SC04_019/ov_SC04_019.c | 22 ++- src/ov_SC04_020/ov_SC04_020.c | 22 ++- src/ov_SC04_021/ov_SC04_021.c | 22 ++- src/ov_SC05_000/ov_SC05_000.c | 22 ++- src/ov_SC05_001/ov_SC05_001.c | 22 ++- src/ov_SC05_002/ov_SC05_002.c | 22 ++- src/ov_SC05_003/ov_SC05_003.c | 22 ++- src/ov_SC05_004/ov_SC05_004.c | 22 ++- src/ov_SC05_005/ov_SC05_005.c | 22 ++- src/ov_SC05_006/ov_SC05_006.c | 22 ++- src/ov_SC05_007/ov_SC05_007.c | 22 ++- src/ov_SC05_008/ov_SC05_008.c | 22 ++- src/ov_SC05_009/ov_SC05_009.c | 22 ++- src/ov_SC05_010/ov_SC05_010.c | 22 ++- src/ov_SC05_011/ov_SC05_011.c | 22 ++- src/ov_SC05_017/ov_SC05_017.c | 22 ++- src/ov_SC05_018/ov_SC05_018.c | 22 ++- src/ov_SC05_019/ov_SC05_019.c | 22 ++- src/ov_SC06_000/ov_SC06_000.c | 22 ++- src/ov_SC06_006/ov_SC06_006.c | 22 ++- src/ov_SC06_008/ov_SC06_008.c | 22 ++- src/ov_SC06_010/ov_SC06_010.c | 22 ++- src/ov_SC06_011/ov_SC06_011.c | 22 ++- src/ov_SC06_013/ov_SC06_013.c | 22 ++- src/ov_SC06_014/ov_SC06_014.c | 22 ++- src/ov_SC06_015/ov_SC06_015.c | 22 ++- src/ov_SC06_016/ov_SC06_016.c | 22 ++- src/ov_SC06_018/ov_SC06_018.c | 22 ++- src/ov_SC06_020/ov_SC06_020.c | 22 ++- src/ov_SC06_022/ov_SC06_022.c | 22 ++- src/ov_SC06_024/ov_SC06_024.c | 22 ++- src/ov_SC06_025/ov_SC06_025.c | 22 ++- src/ov_SC06_027/ov_SC06_027.c | 22 ++- src/ov_SC06_029/ov_SC06_029.c | 22 ++- src/ov_SC06_030/ov_SC06_030.c | 22 ++- src/ov_SC06_032/ov_SC06_032.c | 22 ++- src/ov_SC06_033/ov_SC06_033.c | 22 ++- src/ov_SC07_000/ov_SC07_000.c | 22 ++- src/ov_SC07_001/ov_SC07_001.c | 22 ++- src/ov_SC07_002/ov_SC07_002.c | 22 ++- src/ov_SC07_008/ov_SC07_008.c | 22 ++- src/ov_SC07_009/ov_SC07_009.c | 22 ++- tools/family_remap.py | 6 +- tools/jtbl_carve.py | 180 ++++++++++++++++++++++ tools/jtbl_family_bank.py | 94 ++++++++++++ 273 files changed, 3745 insertions(+), 407 deletions(-) create mode 100644 tools/jtbl_carve.py create mode 100644 tools/jtbl_family_bank.py diff --git a/config/overlays.mk b/config/overlays.mk index f6f17d0597..94332d29c2 100644 --- a/config/overlays.mk +++ b/config/overlays.mk @@ -43,6 +43,7 @@ ov_SC01_005_ELF := $(ov_SC01_005_OUT).elf ov_SC01_005_MAPFILE := $(ov_SC01_005_OUT).map ov_SC01_005_LD_SCRIPT := $(ov_SC01_005_OUT).ld ov_SC01_005_SPLAT_YAML := config/splat.ov_SC01_005.yaml +ov_SC01_005_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC01_005_CHECK_SHA := config/check.ov_SC01_005.sha ov_SC01_005_SYMBOLS := config/symbols.ov_SC01_005.txt ov_SC01_005_SIG := .run/sig.ov_SC01_005.jsonl @@ -64,6 +65,7 @@ ov_SC01_006_ELF := $(ov_SC01_006_OUT).elf ov_SC01_006_MAPFILE := $(ov_SC01_006_OUT).map ov_SC01_006_LD_SCRIPT := $(ov_SC01_006_OUT).ld ov_SC01_006_SPLAT_YAML := config/splat.ov_SC01_006.yaml +ov_SC01_006_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC01_006_CHECK_SHA := config/check.ov_SC01_006.sha ov_SC01_006_SYMBOLS := config/symbols.ov_SC01_006.txt ov_SC01_006_SIG := .run/sig.ov_SC01_006.jsonl @@ -85,6 +87,7 @@ ov_SC03_001_ELF := $(ov_SC03_001_OUT).elf ov_SC03_001_MAPFILE := $(ov_SC03_001_OUT).map ov_SC03_001_LD_SCRIPT := $(ov_SC03_001_OUT).ld ov_SC03_001_SPLAT_YAML := config/splat.ov_SC03_001.yaml +ov_SC03_001_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_001_CHECK_SHA := config/check.ov_SC03_001.sha ov_SC03_001_SYMBOLS := config/symbols.ov_SC03_001.txt ov_SC03_001_SIG := .run/sig.ov_SC03_001.jsonl @@ -106,6 +109,7 @@ ov_SC01_000_ELF := $(ov_SC01_000_OUT).elf ov_SC01_000_MAPFILE := $(ov_SC01_000_OUT).map ov_SC01_000_LD_SCRIPT := $(ov_SC01_000_OUT).ld ov_SC01_000_SPLAT_YAML := config/splat.ov_SC01_000.yaml +ov_SC01_000_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC01_000_CHECK_SHA := config/check.ov_SC01_000.sha ov_SC01_000_SYMBOLS := config/symbols.ov_SC01_000.txt ov_SC01_000_SIG := .run/sig.ov_SC01_000.jsonl @@ -127,6 +131,7 @@ ov_SC01_001_ELF := $(ov_SC01_001_OUT).elf ov_SC01_001_MAPFILE := $(ov_SC01_001_OUT).map ov_SC01_001_LD_SCRIPT := $(ov_SC01_001_OUT).ld ov_SC01_001_SPLAT_YAML := config/splat.ov_SC01_001.yaml +ov_SC01_001_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC01_001_CHECK_SHA := config/check.ov_SC01_001.sha ov_SC01_001_SYMBOLS := config/symbols.ov_SC01_001.txt ov_SC01_001_SIG := .run/sig.ov_SC01_001.jsonl @@ -148,6 +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 := --front tail.data.o --tail tail2.data.o --tail 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 @@ -169,6 +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 := --front tail.data.o --tail tail2.data.o --tail 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 @@ -190,6 +197,7 @@ ov_SC03_002_ELF := $(ov_SC03_002_OUT).elf ov_SC03_002_MAPFILE := $(ov_SC03_002_OUT).map ov_SC03_002_LD_SCRIPT := $(ov_SC03_002_OUT).ld ov_SC03_002_SPLAT_YAML := config/splat.ov_SC03_002.yaml +ov_SC03_002_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_002_CHECK_SHA := config/check.ov_SC03_002.sha ov_SC03_002_SYMBOLS := config/symbols.ov_SC03_002.txt ov_SC03_002_SIG := .run/sig.ov_SC03_002.jsonl @@ -211,6 +219,7 @@ ov_SC03_006_ELF := $(ov_SC03_006_OUT).elf ov_SC03_006_MAPFILE := $(ov_SC03_006_OUT).map ov_SC03_006_LD_SCRIPT := $(ov_SC03_006_OUT).ld ov_SC03_006_SPLAT_YAML := config/splat.ov_SC03_006.yaml +ov_SC03_006_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_006_CHECK_SHA := config/check.ov_SC03_006.sha ov_SC03_006_SYMBOLS := config/symbols.ov_SC03_006.txt ov_SC03_006_SIG := .run/sig.ov_SC03_006.jsonl @@ -232,6 +241,7 @@ ov_SC04_000_ELF := $(ov_SC04_000_OUT).elf ov_SC04_000_MAPFILE := $(ov_SC04_000_OUT).map ov_SC04_000_LD_SCRIPT := $(ov_SC04_000_OUT).ld ov_SC04_000_SPLAT_YAML := config/splat.ov_SC04_000.yaml +ov_SC04_000_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC04_000_CHECK_SHA := config/check.ov_SC04_000.sha ov_SC04_000_SYMBOLS := config/symbols.ov_SC04_000.txt ov_SC04_000_SIG := .run/sig.ov_SC04_000.jsonl @@ -253,6 +263,7 @@ ov_SC04_018_ELF := $(ov_SC04_018_OUT).elf ov_SC04_018_MAPFILE := $(ov_SC04_018_OUT).map ov_SC04_018_LD_SCRIPT := $(ov_SC04_018_OUT).ld ov_SC04_018_SPLAT_YAML := config/splat.ov_SC04_018.yaml +ov_SC04_018_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC04_018_CHECK_SHA := config/check.ov_SC04_018.sha ov_SC04_018_SYMBOLS := config/symbols.ov_SC04_018.txt ov_SC04_018_SIG := .run/sig.ov_SC04_018.jsonl @@ -274,6 +285,7 @@ ov_SC04_019_ELF := $(ov_SC04_019_OUT).elf ov_SC04_019_MAPFILE := $(ov_SC04_019_OUT).map ov_SC04_019_LD_SCRIPT := $(ov_SC04_019_OUT).ld ov_SC04_019_SPLAT_YAML := config/splat.ov_SC04_019.yaml +ov_SC04_019_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC04_019_CHECK_SHA := config/check.ov_SC04_019.sha ov_SC04_019_SYMBOLS := config/symbols.ov_SC04_019.txt ov_SC04_019_SIG := .run/sig.ov_SC04_019.jsonl @@ -295,6 +307,7 @@ ov_SC05_000_ELF := $(ov_SC05_000_OUT).elf ov_SC05_000_MAPFILE := $(ov_SC05_000_OUT).map ov_SC05_000_LD_SCRIPT := $(ov_SC05_000_OUT).ld ov_SC05_000_SPLAT_YAML := config/splat.ov_SC05_000.yaml +ov_SC05_000_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC05_000_CHECK_SHA := config/check.ov_SC05_000.sha ov_SC05_000_SYMBOLS := config/symbols.ov_SC05_000.txt ov_SC05_000_SIG := .run/sig.ov_SC05_000.jsonl @@ -316,6 +329,7 @@ ov_SC06_000_ELF := $(ov_SC06_000_OUT).elf ov_SC06_000_MAPFILE := $(ov_SC06_000_OUT).map ov_SC06_000_LD_SCRIPT := $(ov_SC06_000_OUT).ld ov_SC06_000_SPLAT_YAML := config/splat.ov_SC06_000.yaml +ov_SC06_000_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC06_000_CHECK_SHA := config/check.ov_SC06_000.sha ov_SC06_000_SYMBOLS := config/symbols.ov_SC06_000.txt ov_SC06_000_SIG := .run/sig.ov_SC06_000.jsonl @@ -337,6 +351,7 @@ ov_SC07_000_ELF := $(ov_SC07_000_OUT).elf ov_SC07_000_MAPFILE := $(ov_SC07_000_OUT).map ov_SC07_000_LD_SCRIPT := $(ov_SC07_000_OUT).ld ov_SC07_000_SPLAT_YAML := config/splat.ov_SC07_000.yaml +ov_SC07_000_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC07_000_CHECK_SHA := config/check.ov_SC07_000.sha ov_SC07_000_SYMBOLS := config/symbols.ov_SC07_000.txt ov_SC07_000_SIG := .run/sig.ov_SC07_000.jsonl @@ -358,6 +373,7 @@ 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 := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve 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 @@ -379,6 +395,7 @@ ov_SC01_008_ELF := $(ov_SC01_008_OUT).elf ov_SC01_008_MAPFILE := $(ov_SC01_008_OUT).map ov_SC01_008_LD_SCRIPT := $(ov_SC01_008_OUT).ld ov_SC01_008_SPLAT_YAML := config/splat.ov_SC01_008.yaml +ov_SC01_008_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC01_008_CHECK_SHA := config/check.ov_SC01_008.sha ov_SC01_008_SYMBOLS := config/symbols.ov_SC01_008.txt ov_SC01_008_SIG := .run/sig.ov_SC01_008.jsonl @@ -400,6 +417,7 @@ ov_SC01_009_ELF := $(ov_SC01_009_OUT).elf ov_SC01_009_MAPFILE := $(ov_SC01_009_OUT).map ov_SC01_009_LD_SCRIPT := $(ov_SC01_009_OUT).ld ov_SC01_009_SPLAT_YAML := config/splat.ov_SC01_009.yaml +ov_SC01_009_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC01_009_CHECK_SHA := config/check.ov_SC01_009.sha ov_SC01_009_SYMBOLS := config/symbols.ov_SC01_009.txt ov_SC01_009_SIG := .run/sig.ov_SC01_009.jsonl @@ -421,6 +439,7 @@ ov_SC01_074_ELF := $(ov_SC01_074_OUT).elf ov_SC01_074_MAPFILE := $(ov_SC01_074_OUT).map ov_SC01_074_LD_SCRIPT := $(ov_SC01_074_OUT).ld ov_SC01_074_SPLAT_YAML := config/splat.ov_SC01_074.yaml +ov_SC01_074_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC01_074_CHECK_SHA := config/check.ov_SC01_074.sha ov_SC01_074_SYMBOLS := config/symbols.ov_SC01_074.txt ov_SC01_074_SIG := .run/sig.ov_SC01_074.jsonl @@ -442,6 +461,7 @@ ov_SC01_080_ELF := $(ov_SC01_080_OUT).elf ov_SC01_080_MAPFILE := $(ov_SC01_080_OUT).map ov_SC01_080_LD_SCRIPT := $(ov_SC01_080_OUT).ld ov_SC01_080_SPLAT_YAML := config/splat.ov_SC01_080.yaml +ov_SC01_080_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC01_080_CHECK_SHA := config/check.ov_SC01_080.sha ov_SC01_080_SYMBOLS := config/symbols.ov_SC01_080.txt ov_SC01_080_SIG := .run/sig.ov_SC01_080.jsonl @@ -463,6 +483,7 @@ ov_SC01_084_ELF := $(ov_SC01_084_OUT).elf ov_SC01_084_MAPFILE := $(ov_SC01_084_OUT).map ov_SC01_084_LD_SCRIPT := $(ov_SC01_084_OUT).ld ov_SC01_084_SPLAT_YAML := config/splat.ov_SC01_084.yaml +ov_SC01_084_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC01_084_CHECK_SHA := config/check.ov_SC01_084.sha ov_SC01_084_SYMBOLS := config/symbols.ov_SC01_084.txt ov_SC01_084_SIG := .run/sig.ov_SC01_084.jsonl @@ -484,6 +505,7 @@ ov_SC02_004_ELF := $(ov_SC02_004_OUT).elf ov_SC02_004_MAPFILE := $(ov_SC02_004_OUT).map ov_SC02_004_LD_SCRIPT := $(ov_SC02_004_OUT).ld ov_SC02_004_SPLAT_YAML := config/splat.ov_SC02_004.yaml +ov_SC02_004_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC02_004_CHECK_SHA := config/check.ov_SC02_004.sha ov_SC02_004_SYMBOLS := config/symbols.ov_SC02_004.txt ov_SC02_004_SIG := .run/sig.ov_SC02_004.jsonl @@ -505,6 +527,7 @@ ov_SC02_005_ELF := $(ov_SC02_005_OUT).elf ov_SC02_005_MAPFILE := $(ov_SC02_005_OUT).map ov_SC02_005_LD_SCRIPT := $(ov_SC02_005_OUT).ld ov_SC02_005_SPLAT_YAML := config/splat.ov_SC02_005.yaml +ov_SC02_005_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC02_005_CHECK_SHA := config/check.ov_SC02_005.sha ov_SC02_005_SYMBOLS := config/symbols.ov_SC02_005.txt ov_SC02_005_SIG := .run/sig.ov_SC02_005.jsonl @@ -526,6 +549,7 @@ ov_SC02_011_ELF := $(ov_SC02_011_OUT).elf ov_SC02_011_MAPFILE := $(ov_SC02_011_OUT).map ov_SC02_011_LD_SCRIPT := $(ov_SC02_011_OUT).ld ov_SC02_011_SPLAT_YAML := config/splat.ov_SC02_011.yaml +ov_SC02_011_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC02_011_CHECK_SHA := config/check.ov_SC02_011.sha ov_SC02_011_SYMBOLS := config/symbols.ov_SC02_011.txt ov_SC02_011_SIG := .run/sig.ov_SC02_011.jsonl @@ -547,6 +571,7 @@ ov_SC02_015_ELF := $(ov_SC02_015_OUT).elf ov_SC02_015_MAPFILE := $(ov_SC02_015_OUT).map ov_SC02_015_LD_SCRIPT := $(ov_SC02_015_OUT).ld ov_SC02_015_SPLAT_YAML := config/splat.ov_SC02_015.yaml +ov_SC02_015_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC02_015_CHECK_SHA := config/check.ov_SC02_015.sha ov_SC02_015_SYMBOLS := config/symbols.ov_SC02_015.txt ov_SC02_015_SIG := .run/sig.ov_SC02_015.jsonl @@ -568,6 +593,7 @@ ov_SC02_016_ELF := $(ov_SC02_016_OUT).elf ov_SC02_016_MAPFILE := $(ov_SC02_016_OUT).map ov_SC02_016_LD_SCRIPT := $(ov_SC02_016_OUT).ld ov_SC02_016_SPLAT_YAML := config/splat.ov_SC02_016.yaml +ov_SC02_016_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC02_016_CHECK_SHA := config/check.ov_SC02_016.sha ov_SC02_016_SYMBOLS := config/symbols.ov_SC02_016.txt ov_SC02_016_SIG := .run/sig.ov_SC02_016.jsonl @@ -589,6 +615,7 @@ ov_SC02_017_ELF := $(ov_SC02_017_OUT).elf ov_SC02_017_MAPFILE := $(ov_SC02_017_OUT).map ov_SC02_017_LD_SCRIPT := $(ov_SC02_017_OUT).ld ov_SC02_017_SPLAT_YAML := config/splat.ov_SC02_017.yaml +ov_SC02_017_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC02_017_CHECK_SHA := config/check.ov_SC02_017.sha ov_SC02_017_SYMBOLS := config/symbols.ov_SC02_017.txt ov_SC02_017_SIG := .run/sig.ov_SC02_017.jsonl @@ -610,6 +637,7 @@ ov_SC02_021_ELF := $(ov_SC02_021_OUT).elf ov_SC02_021_MAPFILE := $(ov_SC02_021_OUT).map ov_SC02_021_LD_SCRIPT := $(ov_SC02_021_OUT).ld ov_SC02_021_SPLAT_YAML := config/splat.ov_SC02_021.yaml +ov_SC02_021_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC02_021_CHECK_SHA := config/check.ov_SC02_021.sha ov_SC02_021_SYMBOLS := config/symbols.ov_SC02_021.txt ov_SC02_021_SIG := .run/sig.ov_SC02_021.jsonl @@ -631,6 +659,7 @@ ov_SC02_026_ELF := $(ov_SC02_026_OUT).elf ov_SC02_026_MAPFILE := $(ov_SC02_026_OUT).map ov_SC02_026_LD_SCRIPT := $(ov_SC02_026_OUT).ld ov_SC02_026_SPLAT_YAML := config/splat.ov_SC02_026.yaml +ov_SC02_026_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC02_026_CHECK_SHA := config/check.ov_SC02_026.sha ov_SC02_026_SYMBOLS := config/symbols.ov_SC02_026.txt ov_SC02_026_SIG := .run/sig.ov_SC02_026.jsonl @@ -652,6 +681,7 @@ ov_SC02_027_ELF := $(ov_SC02_027_OUT).elf ov_SC02_027_MAPFILE := $(ov_SC02_027_OUT).map ov_SC02_027_LD_SCRIPT := $(ov_SC02_027_OUT).ld ov_SC02_027_SPLAT_YAML := config/splat.ov_SC02_027.yaml +ov_SC02_027_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC02_027_CHECK_SHA := config/check.ov_SC02_027.sha ov_SC02_027_SYMBOLS := config/symbols.ov_SC02_027.txt ov_SC02_027_SIG := .run/sig.ov_SC02_027.jsonl @@ -673,6 +703,7 @@ ov_SC02_028_ELF := $(ov_SC02_028_OUT).elf ov_SC02_028_MAPFILE := $(ov_SC02_028_OUT).map ov_SC02_028_LD_SCRIPT := $(ov_SC02_028_OUT).ld ov_SC02_028_SPLAT_YAML := config/splat.ov_SC02_028.yaml +ov_SC02_028_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC02_028_CHECK_SHA := config/check.ov_SC02_028.sha ov_SC02_028_SYMBOLS := config/symbols.ov_SC02_028.txt ov_SC02_028_SIG := .run/sig.ov_SC02_028.jsonl @@ -694,6 +725,7 @@ ov_SC02_031_ELF := $(ov_SC02_031_OUT).elf ov_SC02_031_MAPFILE := $(ov_SC02_031_OUT).map ov_SC02_031_LD_SCRIPT := $(ov_SC02_031_OUT).ld ov_SC02_031_SPLAT_YAML := config/splat.ov_SC02_031.yaml +ov_SC02_031_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC02_031_CHECK_SHA := config/check.ov_SC02_031.sha ov_SC02_031_SYMBOLS := config/symbols.ov_SC02_031.txt ov_SC02_031_SIG := .run/sig.ov_SC02_031.jsonl @@ -715,6 +747,7 @@ ov_SC02_035_ELF := $(ov_SC02_035_OUT).elf ov_SC02_035_MAPFILE := $(ov_SC02_035_OUT).map ov_SC02_035_LD_SCRIPT := $(ov_SC02_035_OUT).ld ov_SC02_035_SPLAT_YAML := config/splat.ov_SC02_035.yaml +ov_SC02_035_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC02_035_CHECK_SHA := config/check.ov_SC02_035.sha ov_SC02_035_SYMBOLS := config/symbols.ov_SC02_035.txt ov_SC02_035_SIG := .run/sig.ov_SC02_035.jsonl @@ -736,6 +769,7 @@ ov_SC02_039_ELF := $(ov_SC02_039_OUT).elf ov_SC02_039_MAPFILE := $(ov_SC02_039_OUT).map ov_SC02_039_LD_SCRIPT := $(ov_SC02_039_OUT).ld ov_SC02_039_SPLAT_YAML := config/splat.ov_SC02_039.yaml +ov_SC02_039_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC02_039_CHECK_SHA := config/check.ov_SC02_039.sha ov_SC02_039_SYMBOLS := config/symbols.ov_SC02_039.txt ov_SC02_039_SIG := .run/sig.ov_SC02_039.jsonl @@ -757,6 +791,7 @@ ov_SC02_041_ELF := $(ov_SC02_041_OUT).elf ov_SC02_041_MAPFILE := $(ov_SC02_041_OUT).map ov_SC02_041_LD_SCRIPT := $(ov_SC02_041_OUT).ld ov_SC02_041_SPLAT_YAML := config/splat.ov_SC02_041.yaml +ov_SC02_041_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC02_041_CHECK_SHA := config/check.ov_SC02_041.sha ov_SC02_041_SYMBOLS := config/symbols.ov_SC02_041.txt ov_SC02_041_SIG := .run/sig.ov_SC02_041.jsonl @@ -778,6 +813,7 @@ ov_SC03_003_ELF := $(ov_SC03_003_OUT).elf ov_SC03_003_MAPFILE := $(ov_SC03_003_OUT).map ov_SC03_003_LD_SCRIPT := $(ov_SC03_003_OUT).ld ov_SC03_003_SPLAT_YAML := config/splat.ov_SC03_003.yaml +ov_SC03_003_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_003_CHECK_SHA := config/check.ov_SC03_003.sha ov_SC03_003_SYMBOLS := config/symbols.ov_SC03_003.txt ov_SC03_003_SIG := .run/sig.ov_SC03_003.jsonl @@ -799,6 +835,7 @@ ov_SC03_007_ELF := $(ov_SC03_007_OUT).elf ov_SC03_007_MAPFILE := $(ov_SC03_007_OUT).map ov_SC03_007_LD_SCRIPT := $(ov_SC03_007_OUT).ld ov_SC03_007_SPLAT_YAML := config/splat.ov_SC03_007.yaml +ov_SC03_007_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_007_CHECK_SHA := config/check.ov_SC03_007.sha ov_SC03_007_SYMBOLS := config/symbols.ov_SC03_007.txt ov_SC03_007_SIG := .run/sig.ov_SC03_007.jsonl @@ -820,6 +857,7 @@ ov_SC03_010_ELF := $(ov_SC03_010_OUT).elf ov_SC03_010_MAPFILE := $(ov_SC03_010_OUT).map ov_SC03_010_LD_SCRIPT := $(ov_SC03_010_OUT).ld ov_SC03_010_SPLAT_YAML := config/splat.ov_SC03_010.yaml +ov_SC03_010_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_010_CHECK_SHA := config/check.ov_SC03_010.sha ov_SC03_010_SYMBOLS := config/symbols.ov_SC03_010.txt ov_SC03_010_SIG := .run/sig.ov_SC03_010.jsonl @@ -841,6 +879,7 @@ ov_SC03_011_ELF := $(ov_SC03_011_OUT).elf ov_SC03_011_MAPFILE := $(ov_SC03_011_OUT).map ov_SC03_011_LD_SCRIPT := $(ov_SC03_011_OUT).ld ov_SC03_011_SPLAT_YAML := config/splat.ov_SC03_011.yaml +ov_SC03_011_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_011_CHECK_SHA := config/check.ov_SC03_011.sha ov_SC03_011_SYMBOLS := config/symbols.ov_SC03_011.txt ov_SC03_011_SIG := .run/sig.ov_SC03_011.jsonl @@ -862,6 +901,7 @@ ov_SC03_012_ELF := $(ov_SC03_012_OUT).elf ov_SC03_012_MAPFILE := $(ov_SC03_012_OUT).map ov_SC03_012_LD_SCRIPT := $(ov_SC03_012_OUT).ld ov_SC03_012_SPLAT_YAML := config/splat.ov_SC03_012.yaml +ov_SC03_012_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_012_CHECK_SHA := config/check.ov_SC03_012.sha ov_SC03_012_SYMBOLS := config/symbols.ov_SC03_012.txt ov_SC03_012_SIG := .run/sig.ov_SC03_012.jsonl @@ -883,6 +923,7 @@ ov_SC03_013_ELF := $(ov_SC03_013_OUT).elf ov_SC03_013_MAPFILE := $(ov_SC03_013_OUT).map ov_SC03_013_LD_SCRIPT := $(ov_SC03_013_OUT).ld ov_SC03_013_SPLAT_YAML := config/splat.ov_SC03_013.yaml +ov_SC03_013_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_013_CHECK_SHA := config/check.ov_SC03_013.sha ov_SC03_013_SYMBOLS := config/symbols.ov_SC03_013.txt ov_SC03_013_SIG := .run/sig.ov_SC03_013.jsonl @@ -904,6 +945,7 @@ ov_SC03_014_ELF := $(ov_SC03_014_OUT).elf ov_SC03_014_MAPFILE := $(ov_SC03_014_OUT).map ov_SC03_014_LD_SCRIPT := $(ov_SC03_014_OUT).ld ov_SC03_014_SPLAT_YAML := config/splat.ov_SC03_014.yaml +ov_SC03_014_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_014_CHECK_SHA := config/check.ov_SC03_014.sha ov_SC03_014_SYMBOLS := config/symbols.ov_SC03_014.txt ov_SC03_014_SIG := .run/sig.ov_SC03_014.jsonl @@ -925,6 +967,7 @@ ov_SC03_015_ELF := $(ov_SC03_015_OUT).elf ov_SC03_015_MAPFILE := $(ov_SC03_015_OUT).map ov_SC03_015_LD_SCRIPT := $(ov_SC03_015_OUT).ld ov_SC03_015_SPLAT_YAML := config/splat.ov_SC03_015.yaml +ov_SC03_015_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_015_CHECK_SHA := config/check.ov_SC03_015.sha ov_SC03_015_SYMBOLS := config/symbols.ov_SC03_015.txt ov_SC03_015_SIG := .run/sig.ov_SC03_015.jsonl @@ -946,6 +989,7 @@ ov_SC03_023_ELF := $(ov_SC03_023_OUT).elf ov_SC03_023_MAPFILE := $(ov_SC03_023_OUT).map ov_SC03_023_LD_SCRIPT := $(ov_SC03_023_OUT).ld ov_SC03_023_SPLAT_YAML := config/splat.ov_SC03_023.yaml +ov_SC03_023_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_023_CHECK_SHA := config/check.ov_SC03_023.sha ov_SC03_023_SYMBOLS := config/symbols.ov_SC03_023.txt ov_SC03_023_SIG := .run/sig.ov_SC03_023.jsonl @@ -967,6 +1011,7 @@ ov_SC03_024_ELF := $(ov_SC03_024_OUT).elf ov_SC03_024_MAPFILE := $(ov_SC03_024_OUT).map ov_SC03_024_LD_SCRIPT := $(ov_SC03_024_OUT).ld ov_SC03_024_SPLAT_YAML := config/splat.ov_SC03_024.yaml +ov_SC03_024_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_024_CHECK_SHA := config/check.ov_SC03_024.sha ov_SC03_024_SYMBOLS := config/symbols.ov_SC03_024.txt ov_SC03_024_SIG := .run/sig.ov_SC03_024.jsonl @@ -988,6 +1033,7 @@ ov_SC03_028_ELF := $(ov_SC03_028_OUT).elf ov_SC03_028_MAPFILE := $(ov_SC03_028_OUT).map ov_SC03_028_LD_SCRIPT := $(ov_SC03_028_OUT).ld ov_SC03_028_SPLAT_YAML := config/splat.ov_SC03_028.yaml +ov_SC03_028_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_028_CHECK_SHA := config/check.ov_SC03_028.sha ov_SC03_028_SYMBOLS := config/symbols.ov_SC03_028.txt ov_SC03_028_SIG := .run/sig.ov_SC03_028.jsonl @@ -1009,6 +1055,7 @@ ov_SC03_029_ELF := $(ov_SC03_029_OUT).elf ov_SC03_029_MAPFILE := $(ov_SC03_029_OUT).map ov_SC03_029_LD_SCRIPT := $(ov_SC03_029_OUT).ld ov_SC03_029_SPLAT_YAML := config/splat.ov_SC03_029.yaml +ov_SC03_029_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_029_CHECK_SHA := config/check.ov_SC03_029.sha ov_SC03_029_SYMBOLS := config/symbols.ov_SC03_029.txt ov_SC03_029_SIG := .run/sig.ov_SC03_029.jsonl @@ -1030,6 +1077,7 @@ ov_SC03_030_ELF := $(ov_SC03_030_OUT).elf ov_SC03_030_MAPFILE := $(ov_SC03_030_OUT).map ov_SC03_030_LD_SCRIPT := $(ov_SC03_030_OUT).ld ov_SC03_030_SPLAT_YAML := config/splat.ov_SC03_030.yaml +ov_SC03_030_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o # Phase-26 §8 jtbl-rodata carve ov_SC03_030_CHECK_SHA := config/check.ov_SC03_030.sha ov_SC03_030_SYMBOLS := config/symbols.ov_SC03_030.txt ov_SC03_030_SIG := .run/sig.ov_SC03_030.jsonl @@ -1051,6 +1099,7 @@ ov_SC03_031_ELF := $(ov_SC03_031_OUT).elf ov_SC03_031_MAPFILE := $(ov_SC03_031_OUT).map ov_SC03_031_LD_SCRIPT := $(ov_SC03_031_OUT).ld ov_SC03_031_SPLAT_YAML := config/splat.ov_SC03_031.yaml +ov_SC03_031_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_031_CHECK_SHA := config/check.ov_SC03_031.sha ov_SC03_031_SYMBOLS := config/symbols.ov_SC03_031.txt ov_SC03_031_SIG := .run/sig.ov_SC03_031.jsonl @@ -1072,6 +1121,7 @@ ov_SC03_089_ELF := $(ov_SC03_089_OUT).elf ov_SC03_089_MAPFILE := $(ov_SC03_089_OUT).map ov_SC03_089_LD_SCRIPT := $(ov_SC03_089_OUT).ld ov_SC03_089_SPLAT_YAML := config/splat.ov_SC03_089.yaml +ov_SC03_089_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_089_CHECK_SHA := config/check.ov_SC03_089.sha ov_SC03_089_SYMBOLS := config/symbols.ov_SC03_089.txt ov_SC03_089_SIG := .run/sig.ov_SC03_089.jsonl @@ -1093,6 +1143,7 @@ ov_SC03_090_ELF := $(ov_SC03_090_OUT).elf ov_SC03_090_MAPFILE := $(ov_SC03_090_OUT).map ov_SC03_090_LD_SCRIPT := $(ov_SC03_090_OUT).ld ov_SC03_090_SPLAT_YAML := config/splat.ov_SC03_090.yaml +ov_SC03_090_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_090_CHECK_SHA := config/check.ov_SC03_090.sha ov_SC03_090_SYMBOLS := config/symbols.ov_SC03_090.txt ov_SC03_090_SIG := .run/sig.ov_SC03_090.jsonl @@ -1114,6 +1165,7 @@ ov_SC03_091_ELF := $(ov_SC03_091_OUT).elf ov_SC03_091_MAPFILE := $(ov_SC03_091_OUT).map ov_SC03_091_LD_SCRIPT := $(ov_SC03_091_OUT).ld ov_SC03_091_SPLAT_YAML := config/splat.ov_SC03_091.yaml +ov_SC03_091_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_091_CHECK_SHA := config/check.ov_SC03_091.sha ov_SC03_091_SYMBOLS := config/symbols.ov_SC03_091.txt ov_SC03_091_SIG := .run/sig.ov_SC03_091.jsonl @@ -1135,6 +1187,7 @@ ov_SC03_092_ELF := $(ov_SC03_092_OUT).elf ov_SC03_092_MAPFILE := $(ov_SC03_092_OUT).map ov_SC03_092_LD_SCRIPT := $(ov_SC03_092_OUT).ld ov_SC03_092_SPLAT_YAML := config/splat.ov_SC03_092.yaml +ov_SC03_092_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_092_CHECK_SHA := config/check.ov_SC03_092.sha ov_SC03_092_SYMBOLS := config/symbols.ov_SC03_092.txt ov_SC03_092_SIG := .run/sig.ov_SC03_092.jsonl @@ -1156,6 +1209,7 @@ ov_SC03_093_ELF := $(ov_SC03_093_OUT).elf ov_SC03_093_MAPFILE := $(ov_SC03_093_OUT).map ov_SC03_093_LD_SCRIPT := $(ov_SC03_093_OUT).ld ov_SC03_093_SPLAT_YAML := config/splat.ov_SC03_093.yaml +ov_SC03_093_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_093_CHECK_SHA := config/check.ov_SC03_093.sha ov_SC03_093_SYMBOLS := config/symbols.ov_SC03_093.txt ov_SC03_093_SIG := .run/sig.ov_SC03_093.jsonl @@ -1177,6 +1231,7 @@ ov_SC03_094_ELF := $(ov_SC03_094_OUT).elf ov_SC03_094_MAPFILE := $(ov_SC03_094_OUT).map ov_SC03_094_LD_SCRIPT := $(ov_SC03_094_OUT).ld ov_SC03_094_SPLAT_YAML := config/splat.ov_SC03_094.yaml +ov_SC03_094_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_094_CHECK_SHA := config/check.ov_SC03_094.sha ov_SC03_094_SYMBOLS := config/symbols.ov_SC03_094.txt ov_SC03_094_SIG := .run/sig.ov_SC03_094.jsonl @@ -1198,6 +1253,7 @@ ov_SC03_095_ELF := $(ov_SC03_095_OUT).elf ov_SC03_095_MAPFILE := $(ov_SC03_095_OUT).map ov_SC03_095_LD_SCRIPT := $(ov_SC03_095_OUT).ld ov_SC03_095_SPLAT_YAML := config/splat.ov_SC03_095.yaml +ov_SC03_095_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_095_CHECK_SHA := config/check.ov_SC03_095.sha ov_SC03_095_SYMBOLS := config/symbols.ov_SC03_095.txt ov_SC03_095_SIG := .run/sig.ov_SC03_095.jsonl @@ -1219,6 +1275,7 @@ ov_SC03_096_ELF := $(ov_SC03_096_OUT).elf ov_SC03_096_MAPFILE := $(ov_SC03_096_OUT).map ov_SC03_096_LD_SCRIPT := $(ov_SC03_096_OUT).ld ov_SC03_096_SPLAT_YAML := config/splat.ov_SC03_096.yaml +ov_SC03_096_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_096_CHECK_SHA := config/check.ov_SC03_096.sha ov_SC03_096_SYMBOLS := config/symbols.ov_SC03_096.txt ov_SC03_096_SIG := .run/sig.ov_SC03_096.jsonl @@ -1240,6 +1297,7 @@ ov_SC03_097_ELF := $(ov_SC03_097_OUT).elf ov_SC03_097_MAPFILE := $(ov_SC03_097_OUT).map ov_SC03_097_LD_SCRIPT := $(ov_SC03_097_OUT).ld ov_SC03_097_SPLAT_YAML := config/splat.ov_SC03_097.yaml +ov_SC03_097_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_097_CHECK_SHA := config/check.ov_SC03_097.sha ov_SC03_097_SYMBOLS := config/symbols.ov_SC03_097.txt ov_SC03_097_SIG := .run/sig.ov_SC03_097.jsonl @@ -1261,6 +1319,7 @@ ov_SC03_098_ELF := $(ov_SC03_098_OUT).elf ov_SC03_098_MAPFILE := $(ov_SC03_098_OUT).map ov_SC03_098_LD_SCRIPT := $(ov_SC03_098_OUT).ld ov_SC03_098_SPLAT_YAML := config/splat.ov_SC03_098.yaml +ov_SC03_098_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_098_CHECK_SHA := config/check.ov_SC03_098.sha ov_SC03_098_SYMBOLS := config/symbols.ov_SC03_098.txt ov_SC03_098_SIG := .run/sig.ov_SC03_098.jsonl @@ -1282,6 +1341,7 @@ ov_SC03_099_ELF := $(ov_SC03_099_OUT).elf ov_SC03_099_MAPFILE := $(ov_SC03_099_OUT).map ov_SC03_099_LD_SCRIPT := $(ov_SC03_099_OUT).ld ov_SC03_099_SPLAT_YAML := config/splat.ov_SC03_099.yaml +ov_SC03_099_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_099_CHECK_SHA := config/check.ov_SC03_099.sha ov_SC03_099_SYMBOLS := config/symbols.ov_SC03_099.txt ov_SC03_099_SIG := .run/sig.ov_SC03_099.jsonl @@ -1303,6 +1363,7 @@ ov_SC03_100_ELF := $(ov_SC03_100_OUT).elf ov_SC03_100_MAPFILE := $(ov_SC03_100_OUT).map ov_SC03_100_LD_SCRIPT := $(ov_SC03_100_OUT).ld ov_SC03_100_SPLAT_YAML := config/splat.ov_SC03_100.yaml +ov_SC03_100_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_100_CHECK_SHA := config/check.ov_SC03_100.sha ov_SC03_100_SYMBOLS := config/symbols.ov_SC03_100.txt ov_SC03_100_SIG := .run/sig.ov_SC03_100.jsonl @@ -1324,6 +1385,7 @@ ov_SC03_101_ELF := $(ov_SC03_101_OUT).elf ov_SC03_101_MAPFILE := $(ov_SC03_101_OUT).map ov_SC03_101_LD_SCRIPT := $(ov_SC03_101_OUT).ld ov_SC03_101_SPLAT_YAML := config/splat.ov_SC03_101.yaml +ov_SC03_101_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_101_CHECK_SHA := config/check.ov_SC03_101.sha ov_SC03_101_SYMBOLS := config/symbols.ov_SC03_101.txt ov_SC03_101_SIG := .run/sig.ov_SC03_101.jsonl @@ -1345,6 +1407,7 @@ ov_SC03_102_ELF := $(ov_SC03_102_OUT).elf ov_SC03_102_MAPFILE := $(ov_SC03_102_OUT).map ov_SC03_102_LD_SCRIPT := $(ov_SC03_102_OUT).ld ov_SC03_102_SPLAT_YAML := config/splat.ov_SC03_102.yaml +ov_SC03_102_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_102_CHECK_SHA := config/check.ov_SC03_102.sha ov_SC03_102_SYMBOLS := config/symbols.ov_SC03_102.txt ov_SC03_102_SIG := .run/sig.ov_SC03_102.jsonl @@ -1366,6 +1429,7 @@ ov_SC03_103_ELF := $(ov_SC03_103_OUT).elf ov_SC03_103_MAPFILE := $(ov_SC03_103_OUT).map ov_SC03_103_LD_SCRIPT := $(ov_SC03_103_OUT).ld ov_SC03_103_SPLAT_YAML := config/splat.ov_SC03_103.yaml +ov_SC03_103_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_103_CHECK_SHA := config/check.ov_SC03_103.sha ov_SC03_103_SYMBOLS := config/symbols.ov_SC03_103.txt ov_SC03_103_SIG := .run/sig.ov_SC03_103.jsonl @@ -1387,6 +1451,7 @@ ov_SC03_104_ELF := $(ov_SC03_104_OUT).elf ov_SC03_104_MAPFILE := $(ov_SC03_104_OUT).map ov_SC03_104_LD_SCRIPT := $(ov_SC03_104_OUT).ld ov_SC03_104_SPLAT_YAML := config/splat.ov_SC03_104.yaml +ov_SC03_104_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_104_CHECK_SHA := config/check.ov_SC03_104.sha ov_SC03_104_SYMBOLS := config/symbols.ov_SC03_104.txt ov_SC03_104_SIG := .run/sig.ov_SC03_104.jsonl @@ -1408,6 +1473,7 @@ ov_SC03_105_ELF := $(ov_SC03_105_OUT).elf ov_SC03_105_MAPFILE := $(ov_SC03_105_OUT).map ov_SC03_105_LD_SCRIPT := $(ov_SC03_105_OUT).ld ov_SC03_105_SPLAT_YAML := config/splat.ov_SC03_105.yaml +ov_SC03_105_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_105_CHECK_SHA := config/check.ov_SC03_105.sha ov_SC03_105_SYMBOLS := config/symbols.ov_SC03_105.txt ov_SC03_105_SIG := .run/sig.ov_SC03_105.jsonl @@ -1429,6 +1495,7 @@ ov_SC03_108_ELF := $(ov_SC03_108_OUT).elf ov_SC03_108_MAPFILE := $(ov_SC03_108_OUT).map ov_SC03_108_LD_SCRIPT := $(ov_SC03_108_OUT).ld ov_SC03_108_SPLAT_YAML := config/splat.ov_SC03_108.yaml +ov_SC03_108_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_108_CHECK_SHA := config/check.ov_SC03_108.sha ov_SC03_108_SYMBOLS := config/symbols.ov_SC03_108.txt ov_SC03_108_SIG := .run/sig.ov_SC03_108.jsonl @@ -1450,6 +1517,7 @@ ov_SC03_109_ELF := $(ov_SC03_109_OUT).elf ov_SC03_109_MAPFILE := $(ov_SC03_109_OUT).map ov_SC03_109_LD_SCRIPT := $(ov_SC03_109_OUT).ld ov_SC03_109_SPLAT_YAML := config/splat.ov_SC03_109.yaml +ov_SC03_109_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_109_CHECK_SHA := config/check.ov_SC03_109.sha ov_SC03_109_SYMBOLS := config/symbols.ov_SC03_109.txt ov_SC03_109_SIG := .run/sig.ov_SC03_109.jsonl @@ -1471,6 +1539,7 @@ ov_SC03_110_ELF := $(ov_SC03_110_OUT).elf ov_SC03_110_MAPFILE := $(ov_SC03_110_OUT).map ov_SC03_110_LD_SCRIPT := $(ov_SC03_110_OUT).ld ov_SC03_110_SPLAT_YAML := config/splat.ov_SC03_110.yaml +ov_SC03_110_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_110_CHECK_SHA := config/check.ov_SC03_110.sha ov_SC03_110_SYMBOLS := config/symbols.ov_SC03_110.txt ov_SC03_110_SIG := .run/sig.ov_SC03_110.jsonl @@ -1492,6 +1561,7 @@ ov_SC03_111_ELF := $(ov_SC03_111_OUT).elf ov_SC03_111_MAPFILE := $(ov_SC03_111_OUT).map ov_SC03_111_LD_SCRIPT := $(ov_SC03_111_OUT).ld ov_SC03_111_SPLAT_YAML := config/splat.ov_SC03_111.yaml +ov_SC03_111_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_111_CHECK_SHA := config/check.ov_SC03_111.sha ov_SC03_111_SYMBOLS := config/symbols.ov_SC03_111.txt ov_SC03_111_SIG := .run/sig.ov_SC03_111.jsonl @@ -1513,6 +1583,7 @@ ov_SC03_112_ELF := $(ov_SC03_112_OUT).elf ov_SC03_112_MAPFILE := $(ov_SC03_112_OUT).map ov_SC03_112_LD_SCRIPT := $(ov_SC03_112_OUT).ld ov_SC03_112_SPLAT_YAML := config/splat.ov_SC03_112.yaml +ov_SC03_112_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_112_CHECK_SHA := config/check.ov_SC03_112.sha ov_SC03_112_SYMBOLS := config/symbols.ov_SC03_112.txt ov_SC03_112_SIG := .run/sig.ov_SC03_112.jsonl @@ -1534,6 +1605,7 @@ ov_SC03_113_ELF := $(ov_SC03_113_OUT).elf ov_SC03_113_MAPFILE := $(ov_SC03_113_OUT).map ov_SC03_113_LD_SCRIPT := $(ov_SC03_113_OUT).ld ov_SC03_113_SPLAT_YAML := config/splat.ov_SC03_113.yaml +ov_SC03_113_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_113_CHECK_SHA := config/check.ov_SC03_113.sha ov_SC03_113_SYMBOLS := config/symbols.ov_SC03_113.txt ov_SC03_113_SIG := .run/sig.ov_SC03_113.jsonl @@ -1555,6 +1627,7 @@ ov_SC03_114_ELF := $(ov_SC03_114_OUT).elf ov_SC03_114_MAPFILE := $(ov_SC03_114_OUT).map ov_SC03_114_LD_SCRIPT := $(ov_SC03_114_OUT).ld ov_SC03_114_SPLAT_YAML := config/splat.ov_SC03_114.yaml +ov_SC03_114_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_114_CHECK_SHA := config/check.ov_SC03_114.sha ov_SC03_114_SYMBOLS := config/symbols.ov_SC03_114.txt ov_SC03_114_SIG := .run/sig.ov_SC03_114.jsonl @@ -1576,6 +1649,7 @@ ov_SC03_115_ELF := $(ov_SC03_115_OUT).elf ov_SC03_115_MAPFILE := $(ov_SC03_115_OUT).map ov_SC03_115_LD_SCRIPT := $(ov_SC03_115_OUT).ld ov_SC03_115_SPLAT_YAML := config/splat.ov_SC03_115.yaml +ov_SC03_115_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_115_CHECK_SHA := config/check.ov_SC03_115.sha ov_SC03_115_SYMBOLS := config/symbols.ov_SC03_115.txt ov_SC03_115_SIG := .run/sig.ov_SC03_115.jsonl @@ -1597,6 +1671,7 @@ ov_SC03_116_ELF := $(ov_SC03_116_OUT).elf ov_SC03_116_MAPFILE := $(ov_SC03_116_OUT).map ov_SC03_116_LD_SCRIPT := $(ov_SC03_116_OUT).ld ov_SC03_116_SPLAT_YAML := config/splat.ov_SC03_116.yaml +ov_SC03_116_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_116_CHECK_SHA := config/check.ov_SC03_116.sha ov_SC03_116_SYMBOLS := config/symbols.ov_SC03_116.txt ov_SC03_116_SIG := .run/sig.ov_SC03_116.jsonl @@ -1618,6 +1693,7 @@ ov_SC03_117_ELF := $(ov_SC03_117_OUT).elf ov_SC03_117_MAPFILE := $(ov_SC03_117_OUT).map ov_SC03_117_LD_SCRIPT := $(ov_SC03_117_OUT).ld ov_SC03_117_SPLAT_YAML := config/splat.ov_SC03_117.yaml +ov_SC03_117_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_117_CHECK_SHA := config/check.ov_SC03_117.sha ov_SC03_117_SYMBOLS := config/symbols.ov_SC03_117.txt ov_SC03_117_SIG := .run/sig.ov_SC03_117.jsonl @@ -1639,6 +1715,7 @@ ov_SC03_118_ELF := $(ov_SC03_118_OUT).elf ov_SC03_118_MAPFILE := $(ov_SC03_118_OUT).map ov_SC03_118_LD_SCRIPT := $(ov_SC03_118_OUT).ld ov_SC03_118_SPLAT_YAML := config/splat.ov_SC03_118.yaml +ov_SC03_118_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_118_CHECK_SHA := config/check.ov_SC03_118.sha ov_SC03_118_SYMBOLS := config/symbols.ov_SC03_118.txt ov_SC03_118_SIG := .run/sig.ov_SC03_118.jsonl @@ -1660,6 +1737,7 @@ ov_SC03_119_ELF := $(ov_SC03_119_OUT).elf ov_SC03_119_MAPFILE := $(ov_SC03_119_OUT).map ov_SC03_119_LD_SCRIPT := $(ov_SC03_119_OUT).ld ov_SC03_119_SPLAT_YAML := config/splat.ov_SC03_119.yaml +ov_SC03_119_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_119_CHECK_SHA := config/check.ov_SC03_119.sha ov_SC03_119_SYMBOLS := config/symbols.ov_SC03_119.txt ov_SC03_119_SIG := .run/sig.ov_SC03_119.jsonl @@ -1681,6 +1759,7 @@ ov_SC03_121_ELF := $(ov_SC03_121_OUT).elf ov_SC03_121_MAPFILE := $(ov_SC03_121_OUT).map ov_SC03_121_LD_SCRIPT := $(ov_SC03_121_OUT).ld ov_SC03_121_SPLAT_YAML := config/splat.ov_SC03_121.yaml +ov_SC03_121_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_121_CHECK_SHA := config/check.ov_SC03_121.sha ov_SC03_121_SYMBOLS := config/symbols.ov_SC03_121.txt ov_SC03_121_SIG := .run/sig.ov_SC03_121.jsonl @@ -1702,6 +1781,7 @@ ov_SC03_124_ELF := $(ov_SC03_124_OUT).elf ov_SC03_124_MAPFILE := $(ov_SC03_124_OUT).map ov_SC03_124_LD_SCRIPT := $(ov_SC03_124_OUT).ld ov_SC03_124_SPLAT_YAML := config/splat.ov_SC03_124.yaml +ov_SC03_124_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_124_CHECK_SHA := config/check.ov_SC03_124.sha ov_SC03_124_SYMBOLS := config/symbols.ov_SC03_124.txt ov_SC03_124_SIG := .run/sig.ov_SC03_124.jsonl @@ -1723,6 +1803,7 @@ ov_SC03_125_ELF := $(ov_SC03_125_OUT).elf ov_SC03_125_MAPFILE := $(ov_SC03_125_OUT).map ov_SC03_125_LD_SCRIPT := $(ov_SC03_125_OUT).ld ov_SC03_125_SPLAT_YAML := config/splat.ov_SC03_125.yaml +ov_SC03_125_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_125_CHECK_SHA := config/check.ov_SC03_125.sha ov_SC03_125_SYMBOLS := config/symbols.ov_SC03_125.txt ov_SC03_125_SIG := .run/sig.ov_SC03_125.jsonl @@ -1744,6 +1825,7 @@ ov_SC03_126_ELF := $(ov_SC03_126_OUT).elf ov_SC03_126_MAPFILE := $(ov_SC03_126_OUT).map ov_SC03_126_LD_SCRIPT := $(ov_SC03_126_OUT).ld ov_SC03_126_SPLAT_YAML := config/splat.ov_SC03_126.yaml +ov_SC03_126_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC03_126_CHECK_SHA := config/check.ov_SC03_126.sha ov_SC03_126_SYMBOLS := config/symbols.ov_SC03_126.txt ov_SC03_126_SIG := .run/sig.ov_SC03_126.jsonl @@ -1765,6 +1847,7 @@ ov_SC04_002_ELF := $(ov_SC04_002_OUT).elf ov_SC04_002_MAPFILE := $(ov_SC04_002_OUT).map ov_SC04_002_LD_SCRIPT := $(ov_SC04_002_OUT).ld ov_SC04_002_SPLAT_YAML := config/splat.ov_SC04_002.yaml +ov_SC04_002_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC04_002_CHECK_SHA := config/check.ov_SC04_002.sha ov_SC04_002_SYMBOLS := config/symbols.ov_SC04_002.txt ov_SC04_002_SIG := .run/sig.ov_SC04_002.jsonl @@ -1786,6 +1869,7 @@ ov_SC04_003_ELF := $(ov_SC04_003_OUT).elf ov_SC04_003_MAPFILE := $(ov_SC04_003_OUT).map ov_SC04_003_LD_SCRIPT := $(ov_SC04_003_OUT).ld ov_SC04_003_SPLAT_YAML := config/splat.ov_SC04_003.yaml +ov_SC04_003_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC04_003_CHECK_SHA := config/check.ov_SC04_003.sha ov_SC04_003_SYMBOLS := config/symbols.ov_SC04_003.txt ov_SC04_003_SIG := .run/sig.ov_SC04_003.jsonl @@ -1807,6 +1891,7 @@ ov_SC04_004_ELF := $(ov_SC04_004_OUT).elf ov_SC04_004_MAPFILE := $(ov_SC04_004_OUT).map ov_SC04_004_LD_SCRIPT := $(ov_SC04_004_OUT).ld ov_SC04_004_SPLAT_YAML := config/splat.ov_SC04_004.yaml +ov_SC04_004_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC04_004_CHECK_SHA := config/check.ov_SC04_004.sha ov_SC04_004_SYMBOLS := config/symbols.ov_SC04_004.txt ov_SC04_004_SIG := .run/sig.ov_SC04_004.jsonl @@ -1828,6 +1913,7 @@ ov_SC04_005_ELF := $(ov_SC04_005_OUT).elf ov_SC04_005_MAPFILE := $(ov_SC04_005_OUT).map ov_SC04_005_LD_SCRIPT := $(ov_SC04_005_OUT).ld ov_SC04_005_SPLAT_YAML := config/splat.ov_SC04_005.yaml +ov_SC04_005_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC04_005_CHECK_SHA := config/check.ov_SC04_005.sha ov_SC04_005_SYMBOLS := config/symbols.ov_SC04_005.txt ov_SC04_005_SIG := .run/sig.ov_SC04_005.jsonl @@ -1849,6 +1935,7 @@ ov_SC04_006_ELF := $(ov_SC04_006_OUT).elf ov_SC04_006_MAPFILE := $(ov_SC04_006_OUT).map ov_SC04_006_LD_SCRIPT := $(ov_SC04_006_OUT).ld ov_SC04_006_SPLAT_YAML := config/splat.ov_SC04_006.yaml +ov_SC04_006_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC04_006_CHECK_SHA := config/check.ov_SC04_006.sha ov_SC04_006_SYMBOLS := config/symbols.ov_SC04_006.txt ov_SC04_006_SIG := .run/sig.ov_SC04_006.jsonl @@ -1870,6 +1957,7 @@ ov_SC04_007_ELF := $(ov_SC04_007_OUT).elf ov_SC04_007_MAPFILE := $(ov_SC04_007_OUT).map ov_SC04_007_LD_SCRIPT := $(ov_SC04_007_OUT).ld ov_SC04_007_SPLAT_YAML := config/splat.ov_SC04_007.yaml +ov_SC04_007_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC04_007_CHECK_SHA := config/check.ov_SC04_007.sha ov_SC04_007_SYMBOLS := config/symbols.ov_SC04_007.txt ov_SC04_007_SIG := .run/sig.ov_SC04_007.jsonl @@ -1891,6 +1979,7 @@ ov_SC04_008_ELF := $(ov_SC04_008_OUT).elf ov_SC04_008_MAPFILE := $(ov_SC04_008_OUT).map ov_SC04_008_LD_SCRIPT := $(ov_SC04_008_OUT).ld ov_SC04_008_SPLAT_YAML := config/splat.ov_SC04_008.yaml +ov_SC04_008_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC04_008_CHECK_SHA := config/check.ov_SC04_008.sha ov_SC04_008_SYMBOLS := config/symbols.ov_SC04_008.txt ov_SC04_008_SIG := .run/sig.ov_SC04_008.jsonl @@ -1912,6 +2001,7 @@ ov_SC04_009_ELF := $(ov_SC04_009_OUT).elf ov_SC04_009_MAPFILE := $(ov_SC04_009_OUT).map ov_SC04_009_LD_SCRIPT := $(ov_SC04_009_OUT).ld ov_SC04_009_SPLAT_YAML := config/splat.ov_SC04_009.yaml +ov_SC04_009_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC04_009_CHECK_SHA := config/check.ov_SC04_009.sha ov_SC04_009_SYMBOLS := config/symbols.ov_SC04_009.txt ov_SC04_009_SIG := .run/sig.ov_SC04_009.jsonl @@ -1933,6 +2023,7 @@ ov_SC04_010_ELF := $(ov_SC04_010_OUT).elf ov_SC04_010_MAPFILE := $(ov_SC04_010_OUT).map ov_SC04_010_LD_SCRIPT := $(ov_SC04_010_OUT).ld ov_SC04_010_SPLAT_YAML := config/splat.ov_SC04_010.yaml +ov_SC04_010_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC04_010_CHECK_SHA := config/check.ov_SC04_010.sha ov_SC04_010_SYMBOLS := config/symbols.ov_SC04_010.txt ov_SC04_010_SIG := .run/sig.ov_SC04_010.jsonl @@ -1954,6 +2045,7 @@ ov_SC04_011_ELF := $(ov_SC04_011_OUT).elf ov_SC04_011_MAPFILE := $(ov_SC04_011_OUT).map ov_SC04_011_LD_SCRIPT := $(ov_SC04_011_OUT).ld ov_SC04_011_SPLAT_YAML := config/splat.ov_SC04_011.yaml +ov_SC04_011_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC04_011_CHECK_SHA := config/check.ov_SC04_011.sha ov_SC04_011_SYMBOLS := config/symbols.ov_SC04_011.txt ov_SC04_011_SIG := .run/sig.ov_SC04_011.jsonl @@ -1975,6 +2067,7 @@ ov_SC04_012_ELF := $(ov_SC04_012_OUT).elf ov_SC04_012_MAPFILE := $(ov_SC04_012_OUT).map ov_SC04_012_LD_SCRIPT := $(ov_SC04_012_OUT).ld ov_SC04_012_SPLAT_YAML := config/splat.ov_SC04_012.yaml +ov_SC04_012_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC04_012_CHECK_SHA := config/check.ov_SC04_012.sha ov_SC04_012_SYMBOLS := config/symbols.ov_SC04_012.txt ov_SC04_012_SIG := .run/sig.ov_SC04_012.jsonl @@ -1996,6 +2089,7 @@ ov_SC04_015_ELF := $(ov_SC04_015_OUT).elf ov_SC04_015_MAPFILE := $(ov_SC04_015_OUT).map ov_SC04_015_LD_SCRIPT := $(ov_SC04_015_OUT).ld ov_SC04_015_SPLAT_YAML := config/splat.ov_SC04_015.yaml +ov_SC04_015_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC04_015_CHECK_SHA := config/check.ov_SC04_015.sha ov_SC04_015_SYMBOLS := config/symbols.ov_SC04_015.txt ov_SC04_015_SIG := .run/sig.ov_SC04_015.jsonl @@ -2017,6 +2111,7 @@ ov_SC04_016_ELF := $(ov_SC04_016_OUT).elf ov_SC04_016_MAPFILE := $(ov_SC04_016_OUT).map ov_SC04_016_LD_SCRIPT := $(ov_SC04_016_OUT).ld ov_SC04_016_SPLAT_YAML := config/splat.ov_SC04_016.yaml +ov_SC04_016_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC04_016_CHECK_SHA := config/check.ov_SC04_016.sha ov_SC04_016_SYMBOLS := config/symbols.ov_SC04_016.txt ov_SC04_016_SIG := .run/sig.ov_SC04_016.jsonl @@ -2038,6 +2133,7 @@ ov_SC04_020_ELF := $(ov_SC04_020_OUT).elf ov_SC04_020_MAPFILE := $(ov_SC04_020_OUT).map ov_SC04_020_LD_SCRIPT := $(ov_SC04_020_OUT).ld ov_SC04_020_SPLAT_YAML := config/splat.ov_SC04_020.yaml +ov_SC04_020_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC04_020_CHECK_SHA := config/check.ov_SC04_020.sha ov_SC04_020_SYMBOLS := config/symbols.ov_SC04_020.txt ov_SC04_020_SIG := .run/sig.ov_SC04_020.jsonl @@ -2059,6 +2155,7 @@ ov_SC04_021_ELF := $(ov_SC04_021_OUT).elf ov_SC04_021_MAPFILE := $(ov_SC04_021_OUT).map ov_SC04_021_LD_SCRIPT := $(ov_SC04_021_OUT).ld ov_SC04_021_SPLAT_YAML := config/splat.ov_SC04_021.yaml +ov_SC04_021_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC04_021_CHECK_SHA := config/check.ov_SC04_021.sha ov_SC04_021_SYMBOLS := config/symbols.ov_SC04_021.txt ov_SC04_021_SIG := .run/sig.ov_SC04_021.jsonl @@ -2080,6 +2177,7 @@ ov_SC05_001_ELF := $(ov_SC05_001_OUT).elf ov_SC05_001_MAPFILE := $(ov_SC05_001_OUT).map ov_SC05_001_LD_SCRIPT := $(ov_SC05_001_OUT).ld ov_SC05_001_SPLAT_YAML := config/splat.ov_SC05_001.yaml +ov_SC05_001_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC05_001_CHECK_SHA := config/check.ov_SC05_001.sha ov_SC05_001_SYMBOLS := config/symbols.ov_SC05_001.txt ov_SC05_001_SIG := .run/sig.ov_SC05_001.jsonl @@ -2101,6 +2199,7 @@ ov_SC05_002_ELF := $(ov_SC05_002_OUT).elf ov_SC05_002_MAPFILE := $(ov_SC05_002_OUT).map ov_SC05_002_LD_SCRIPT := $(ov_SC05_002_OUT).ld ov_SC05_002_SPLAT_YAML := config/splat.ov_SC05_002.yaml +ov_SC05_002_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC05_002_CHECK_SHA := config/check.ov_SC05_002.sha ov_SC05_002_SYMBOLS := config/symbols.ov_SC05_002.txt ov_SC05_002_SIG := .run/sig.ov_SC05_002.jsonl @@ -2122,6 +2221,7 @@ ov_SC05_003_ELF := $(ov_SC05_003_OUT).elf ov_SC05_003_MAPFILE := $(ov_SC05_003_OUT).map ov_SC05_003_LD_SCRIPT := $(ov_SC05_003_OUT).ld ov_SC05_003_SPLAT_YAML := config/splat.ov_SC05_003.yaml +ov_SC05_003_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC05_003_CHECK_SHA := config/check.ov_SC05_003.sha ov_SC05_003_SYMBOLS := config/symbols.ov_SC05_003.txt ov_SC05_003_SIG := .run/sig.ov_SC05_003.jsonl @@ -2143,6 +2243,7 @@ ov_SC05_004_ELF := $(ov_SC05_004_OUT).elf ov_SC05_004_MAPFILE := $(ov_SC05_004_OUT).map ov_SC05_004_LD_SCRIPT := $(ov_SC05_004_OUT).ld ov_SC05_004_SPLAT_YAML := config/splat.ov_SC05_004.yaml +ov_SC05_004_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC05_004_CHECK_SHA := config/check.ov_SC05_004.sha ov_SC05_004_SYMBOLS := config/symbols.ov_SC05_004.txt ov_SC05_004_SIG := .run/sig.ov_SC05_004.jsonl @@ -2164,6 +2265,7 @@ ov_SC05_005_ELF := $(ov_SC05_005_OUT).elf ov_SC05_005_MAPFILE := $(ov_SC05_005_OUT).map ov_SC05_005_LD_SCRIPT := $(ov_SC05_005_OUT).ld ov_SC05_005_SPLAT_YAML := config/splat.ov_SC05_005.yaml +ov_SC05_005_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC05_005_CHECK_SHA := config/check.ov_SC05_005.sha ov_SC05_005_SYMBOLS := config/symbols.ov_SC05_005.txt ov_SC05_005_SIG := .run/sig.ov_SC05_005.jsonl @@ -2185,6 +2287,7 @@ ov_SC05_006_ELF := $(ov_SC05_006_OUT).elf ov_SC05_006_MAPFILE := $(ov_SC05_006_OUT).map ov_SC05_006_LD_SCRIPT := $(ov_SC05_006_OUT).ld ov_SC05_006_SPLAT_YAML := config/splat.ov_SC05_006.yaml +ov_SC05_006_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC05_006_CHECK_SHA := config/check.ov_SC05_006.sha ov_SC05_006_SYMBOLS := config/symbols.ov_SC05_006.txt ov_SC05_006_SIG := .run/sig.ov_SC05_006.jsonl @@ -2206,6 +2309,7 @@ ov_SC05_007_ELF := $(ov_SC05_007_OUT).elf ov_SC05_007_MAPFILE := $(ov_SC05_007_OUT).map ov_SC05_007_LD_SCRIPT := $(ov_SC05_007_OUT).ld ov_SC05_007_SPLAT_YAML := config/splat.ov_SC05_007.yaml +ov_SC05_007_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC05_007_CHECK_SHA := config/check.ov_SC05_007.sha ov_SC05_007_SYMBOLS := config/symbols.ov_SC05_007.txt ov_SC05_007_SIG := .run/sig.ov_SC05_007.jsonl @@ -2227,6 +2331,7 @@ ov_SC05_008_ELF := $(ov_SC05_008_OUT).elf ov_SC05_008_MAPFILE := $(ov_SC05_008_OUT).map ov_SC05_008_LD_SCRIPT := $(ov_SC05_008_OUT).ld ov_SC05_008_SPLAT_YAML := config/splat.ov_SC05_008.yaml +ov_SC05_008_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC05_008_CHECK_SHA := config/check.ov_SC05_008.sha ov_SC05_008_SYMBOLS := config/symbols.ov_SC05_008.txt ov_SC05_008_SIG := .run/sig.ov_SC05_008.jsonl @@ -2248,6 +2353,7 @@ ov_SC05_009_ELF := $(ov_SC05_009_OUT).elf ov_SC05_009_MAPFILE := $(ov_SC05_009_OUT).map ov_SC05_009_LD_SCRIPT := $(ov_SC05_009_OUT).ld ov_SC05_009_SPLAT_YAML := config/splat.ov_SC05_009.yaml +ov_SC05_009_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC05_009_CHECK_SHA := config/check.ov_SC05_009.sha ov_SC05_009_SYMBOLS := config/symbols.ov_SC05_009.txt ov_SC05_009_SIG := .run/sig.ov_SC05_009.jsonl @@ -2269,6 +2375,7 @@ ov_SC05_010_ELF := $(ov_SC05_010_OUT).elf ov_SC05_010_MAPFILE := $(ov_SC05_010_OUT).map ov_SC05_010_LD_SCRIPT := $(ov_SC05_010_OUT).ld ov_SC05_010_SPLAT_YAML := config/splat.ov_SC05_010.yaml +ov_SC05_010_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC05_010_CHECK_SHA := config/check.ov_SC05_010.sha ov_SC05_010_SYMBOLS := config/symbols.ov_SC05_010.txt ov_SC05_010_SIG := .run/sig.ov_SC05_010.jsonl @@ -2290,6 +2397,7 @@ ov_SC05_011_ELF := $(ov_SC05_011_OUT).elf ov_SC05_011_MAPFILE := $(ov_SC05_011_OUT).map ov_SC05_011_LD_SCRIPT := $(ov_SC05_011_OUT).ld ov_SC05_011_SPLAT_YAML := config/splat.ov_SC05_011.yaml +ov_SC05_011_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC05_011_CHECK_SHA := config/check.ov_SC05_011.sha ov_SC05_011_SYMBOLS := config/symbols.ov_SC05_011.txt ov_SC05_011_SIG := .run/sig.ov_SC05_011.jsonl @@ -2311,6 +2419,7 @@ ov_SC05_017_ELF := $(ov_SC05_017_OUT).elf ov_SC05_017_MAPFILE := $(ov_SC05_017_OUT).map ov_SC05_017_LD_SCRIPT := $(ov_SC05_017_OUT).ld ov_SC05_017_SPLAT_YAML := config/splat.ov_SC05_017.yaml +ov_SC05_017_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC05_017_CHECK_SHA := config/check.ov_SC05_017.sha ov_SC05_017_SYMBOLS := config/symbols.ov_SC05_017.txt ov_SC05_017_SIG := .run/sig.ov_SC05_017.jsonl @@ -2332,6 +2441,7 @@ ov_SC05_018_ELF := $(ov_SC05_018_OUT).elf ov_SC05_018_MAPFILE := $(ov_SC05_018_OUT).map ov_SC05_018_LD_SCRIPT := $(ov_SC05_018_OUT).ld ov_SC05_018_SPLAT_YAML := config/splat.ov_SC05_018.yaml +ov_SC05_018_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC05_018_CHECK_SHA := config/check.ov_SC05_018.sha ov_SC05_018_SYMBOLS := config/symbols.ov_SC05_018.txt ov_SC05_018_SIG := .run/sig.ov_SC05_018.jsonl @@ -2353,6 +2463,7 @@ ov_SC05_019_ELF := $(ov_SC05_019_OUT).elf ov_SC05_019_MAPFILE := $(ov_SC05_019_OUT).map ov_SC05_019_LD_SCRIPT := $(ov_SC05_019_OUT).ld ov_SC05_019_SPLAT_YAML := config/splat.ov_SC05_019.yaml +ov_SC05_019_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC05_019_CHECK_SHA := config/check.ov_SC05_019.sha ov_SC05_019_SYMBOLS := config/symbols.ov_SC05_019.txt ov_SC05_019_SIG := .run/sig.ov_SC05_019.jsonl @@ -2374,6 +2485,7 @@ ov_SC06_006_ELF := $(ov_SC06_006_OUT).elf ov_SC06_006_MAPFILE := $(ov_SC06_006_OUT).map ov_SC06_006_LD_SCRIPT := $(ov_SC06_006_OUT).ld ov_SC06_006_SPLAT_YAML := config/splat.ov_SC06_006.yaml +ov_SC06_006_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC06_006_CHECK_SHA := config/check.ov_SC06_006.sha ov_SC06_006_SYMBOLS := config/symbols.ov_SC06_006.txt ov_SC06_006_SIG := .run/sig.ov_SC06_006.jsonl @@ -2395,6 +2507,7 @@ ov_SC06_008_ELF := $(ov_SC06_008_OUT).elf ov_SC06_008_MAPFILE := $(ov_SC06_008_OUT).map ov_SC06_008_LD_SCRIPT := $(ov_SC06_008_OUT).ld ov_SC06_008_SPLAT_YAML := config/splat.ov_SC06_008.yaml +ov_SC06_008_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC06_008_CHECK_SHA := config/check.ov_SC06_008.sha ov_SC06_008_SYMBOLS := config/symbols.ov_SC06_008.txt ov_SC06_008_SIG := .run/sig.ov_SC06_008.jsonl @@ -2416,6 +2529,7 @@ ov_SC06_010_ELF := $(ov_SC06_010_OUT).elf ov_SC06_010_MAPFILE := $(ov_SC06_010_OUT).map ov_SC06_010_LD_SCRIPT := $(ov_SC06_010_OUT).ld ov_SC06_010_SPLAT_YAML := config/splat.ov_SC06_010.yaml +ov_SC06_010_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC06_010_CHECK_SHA := config/check.ov_SC06_010.sha ov_SC06_010_SYMBOLS := config/symbols.ov_SC06_010.txt ov_SC06_010_SIG := .run/sig.ov_SC06_010.jsonl @@ -2437,6 +2551,7 @@ ov_SC06_011_ELF := $(ov_SC06_011_OUT).elf ov_SC06_011_MAPFILE := $(ov_SC06_011_OUT).map ov_SC06_011_LD_SCRIPT := $(ov_SC06_011_OUT).ld ov_SC06_011_SPLAT_YAML := config/splat.ov_SC06_011.yaml +ov_SC06_011_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC06_011_CHECK_SHA := config/check.ov_SC06_011.sha ov_SC06_011_SYMBOLS := config/symbols.ov_SC06_011.txt ov_SC06_011_SIG := .run/sig.ov_SC06_011.jsonl @@ -2458,6 +2573,7 @@ ov_SC06_013_ELF := $(ov_SC06_013_OUT).elf ov_SC06_013_MAPFILE := $(ov_SC06_013_OUT).map ov_SC06_013_LD_SCRIPT := $(ov_SC06_013_OUT).ld ov_SC06_013_SPLAT_YAML := config/splat.ov_SC06_013.yaml +ov_SC06_013_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC06_013_CHECK_SHA := config/check.ov_SC06_013.sha ov_SC06_013_SYMBOLS := config/symbols.ov_SC06_013.txt ov_SC06_013_SIG := .run/sig.ov_SC06_013.jsonl @@ -2479,6 +2595,7 @@ ov_SC06_014_ELF := $(ov_SC06_014_OUT).elf ov_SC06_014_MAPFILE := $(ov_SC06_014_OUT).map ov_SC06_014_LD_SCRIPT := $(ov_SC06_014_OUT).ld ov_SC06_014_SPLAT_YAML := config/splat.ov_SC06_014.yaml +ov_SC06_014_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC06_014_CHECK_SHA := config/check.ov_SC06_014.sha ov_SC06_014_SYMBOLS := config/symbols.ov_SC06_014.txt ov_SC06_014_SIG := .run/sig.ov_SC06_014.jsonl @@ -2500,6 +2617,7 @@ ov_SC06_015_ELF := $(ov_SC06_015_OUT).elf ov_SC06_015_MAPFILE := $(ov_SC06_015_OUT).map ov_SC06_015_LD_SCRIPT := $(ov_SC06_015_OUT).ld ov_SC06_015_SPLAT_YAML := config/splat.ov_SC06_015.yaml +ov_SC06_015_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC06_015_CHECK_SHA := config/check.ov_SC06_015.sha ov_SC06_015_SYMBOLS := config/symbols.ov_SC06_015.txt ov_SC06_015_SIG := .run/sig.ov_SC06_015.jsonl @@ -2521,6 +2639,7 @@ ov_SC06_016_ELF := $(ov_SC06_016_OUT).elf ov_SC06_016_MAPFILE := $(ov_SC06_016_OUT).map ov_SC06_016_LD_SCRIPT := $(ov_SC06_016_OUT).ld ov_SC06_016_SPLAT_YAML := config/splat.ov_SC06_016.yaml +ov_SC06_016_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC06_016_CHECK_SHA := config/check.ov_SC06_016.sha ov_SC06_016_SYMBOLS := config/symbols.ov_SC06_016.txt ov_SC06_016_SIG := .run/sig.ov_SC06_016.jsonl @@ -2542,6 +2661,7 @@ ov_SC06_018_ELF := $(ov_SC06_018_OUT).elf ov_SC06_018_MAPFILE := $(ov_SC06_018_OUT).map ov_SC06_018_LD_SCRIPT := $(ov_SC06_018_OUT).ld ov_SC06_018_SPLAT_YAML := config/splat.ov_SC06_018.yaml +ov_SC06_018_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC06_018_CHECK_SHA := config/check.ov_SC06_018.sha ov_SC06_018_SYMBOLS := config/symbols.ov_SC06_018.txt ov_SC06_018_SIG := .run/sig.ov_SC06_018.jsonl @@ -2563,6 +2683,7 @@ ov_SC06_020_ELF := $(ov_SC06_020_OUT).elf ov_SC06_020_MAPFILE := $(ov_SC06_020_OUT).map ov_SC06_020_LD_SCRIPT := $(ov_SC06_020_OUT).ld ov_SC06_020_SPLAT_YAML := config/splat.ov_SC06_020.yaml +ov_SC06_020_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC06_020_CHECK_SHA := config/check.ov_SC06_020.sha ov_SC06_020_SYMBOLS := config/symbols.ov_SC06_020.txt ov_SC06_020_SIG := .run/sig.ov_SC06_020.jsonl @@ -2584,6 +2705,7 @@ ov_SC06_022_ELF := $(ov_SC06_022_OUT).elf ov_SC06_022_MAPFILE := $(ov_SC06_022_OUT).map ov_SC06_022_LD_SCRIPT := $(ov_SC06_022_OUT).ld ov_SC06_022_SPLAT_YAML := config/splat.ov_SC06_022.yaml +ov_SC06_022_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC06_022_CHECK_SHA := config/check.ov_SC06_022.sha ov_SC06_022_SYMBOLS := config/symbols.ov_SC06_022.txt ov_SC06_022_SIG := .run/sig.ov_SC06_022.jsonl @@ -2605,6 +2727,7 @@ ov_SC06_024_ELF := $(ov_SC06_024_OUT).elf ov_SC06_024_MAPFILE := $(ov_SC06_024_OUT).map ov_SC06_024_LD_SCRIPT := $(ov_SC06_024_OUT).ld ov_SC06_024_SPLAT_YAML := config/splat.ov_SC06_024.yaml +ov_SC06_024_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC06_024_CHECK_SHA := config/check.ov_SC06_024.sha ov_SC06_024_SYMBOLS := config/symbols.ov_SC06_024.txt ov_SC06_024_SIG := .run/sig.ov_SC06_024.jsonl @@ -2626,6 +2749,7 @@ ov_SC06_025_ELF := $(ov_SC06_025_OUT).elf ov_SC06_025_MAPFILE := $(ov_SC06_025_OUT).map ov_SC06_025_LD_SCRIPT := $(ov_SC06_025_OUT).ld ov_SC06_025_SPLAT_YAML := config/splat.ov_SC06_025.yaml +ov_SC06_025_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC06_025_CHECK_SHA := config/check.ov_SC06_025.sha ov_SC06_025_SYMBOLS := config/symbols.ov_SC06_025.txt ov_SC06_025_SIG := .run/sig.ov_SC06_025.jsonl @@ -2647,6 +2771,7 @@ ov_SC06_027_ELF := $(ov_SC06_027_OUT).elf ov_SC06_027_MAPFILE := $(ov_SC06_027_OUT).map ov_SC06_027_LD_SCRIPT := $(ov_SC06_027_OUT).ld ov_SC06_027_SPLAT_YAML := config/splat.ov_SC06_027.yaml +ov_SC06_027_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC06_027_CHECK_SHA := config/check.ov_SC06_027.sha ov_SC06_027_SYMBOLS := config/symbols.ov_SC06_027.txt ov_SC06_027_SIG := .run/sig.ov_SC06_027.jsonl @@ -2668,6 +2793,7 @@ ov_SC06_029_ELF := $(ov_SC06_029_OUT).elf ov_SC06_029_MAPFILE := $(ov_SC06_029_OUT).map ov_SC06_029_LD_SCRIPT := $(ov_SC06_029_OUT).ld ov_SC06_029_SPLAT_YAML := config/splat.ov_SC06_029.yaml +ov_SC06_029_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC06_029_CHECK_SHA := config/check.ov_SC06_029.sha ov_SC06_029_SYMBOLS := config/symbols.ov_SC06_029.txt ov_SC06_029_SIG := .run/sig.ov_SC06_029.jsonl @@ -2689,6 +2815,7 @@ ov_SC06_030_ELF := $(ov_SC06_030_OUT).elf ov_SC06_030_MAPFILE := $(ov_SC06_030_OUT).map ov_SC06_030_LD_SCRIPT := $(ov_SC06_030_OUT).ld ov_SC06_030_SPLAT_YAML := config/splat.ov_SC06_030.yaml +ov_SC06_030_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC06_030_CHECK_SHA := config/check.ov_SC06_030.sha ov_SC06_030_SYMBOLS := config/symbols.ov_SC06_030.txt ov_SC06_030_SIG := .run/sig.ov_SC06_030.jsonl @@ -2710,6 +2837,7 @@ ov_SC06_032_ELF := $(ov_SC06_032_OUT).elf ov_SC06_032_MAPFILE := $(ov_SC06_032_OUT).map ov_SC06_032_LD_SCRIPT := $(ov_SC06_032_OUT).ld ov_SC06_032_SPLAT_YAML := config/splat.ov_SC06_032.yaml +ov_SC06_032_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC06_032_CHECK_SHA := config/check.ov_SC06_032.sha ov_SC06_032_SYMBOLS := config/symbols.ov_SC06_032.txt ov_SC06_032_SIG := .run/sig.ov_SC06_032.jsonl @@ -2731,6 +2859,7 @@ ov_SC06_033_ELF := $(ov_SC06_033_OUT).elf ov_SC06_033_MAPFILE := $(ov_SC06_033_OUT).map ov_SC06_033_LD_SCRIPT := $(ov_SC06_033_OUT).ld ov_SC06_033_SPLAT_YAML := config/splat.ov_SC06_033.yaml +ov_SC06_033_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC06_033_CHECK_SHA := config/check.ov_SC06_033.sha ov_SC06_033_SYMBOLS := config/symbols.ov_SC06_033.txt ov_SC06_033_SIG := .run/sig.ov_SC06_033.jsonl @@ -2752,6 +2881,7 @@ ov_SC07_001_ELF := $(ov_SC07_001_OUT).elf ov_SC07_001_MAPFILE := $(ov_SC07_001_OUT).map ov_SC07_001_LD_SCRIPT := $(ov_SC07_001_OUT).ld ov_SC07_001_SPLAT_YAML := config/splat.ov_SC07_001.yaml +ov_SC07_001_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC07_001_CHECK_SHA := config/check.ov_SC07_001.sha ov_SC07_001_SYMBOLS := config/symbols.ov_SC07_001.txt ov_SC07_001_SIG := .run/sig.ov_SC07_001.jsonl @@ -2773,6 +2903,7 @@ ov_SC07_002_ELF := $(ov_SC07_002_OUT).elf ov_SC07_002_MAPFILE := $(ov_SC07_002_OUT).map ov_SC07_002_LD_SCRIPT := $(ov_SC07_002_OUT).ld ov_SC07_002_SPLAT_YAML := config/splat.ov_SC07_002.yaml +ov_SC07_002_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC07_002_CHECK_SHA := config/check.ov_SC07_002.sha ov_SC07_002_SYMBOLS := config/symbols.ov_SC07_002.txt ov_SC07_002_SIG := .run/sig.ov_SC07_002.jsonl @@ -2794,6 +2925,7 @@ ov_SC07_008_ELF := $(ov_SC07_008_OUT).elf ov_SC07_008_MAPFILE := $(ov_SC07_008_OUT).map ov_SC07_008_LD_SCRIPT := $(ov_SC07_008_OUT).ld ov_SC07_008_SPLAT_YAML := config/splat.ov_SC07_008.yaml +ov_SC07_008_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC07_008_CHECK_SHA := config/check.ov_SC07_008.sha ov_SC07_008_SYMBOLS := config/symbols.ov_SC07_008.txt ov_SC07_008_SIG := .run/sig.ov_SC07_008.jsonl @@ -2815,6 +2947,7 @@ ov_SC07_009_ELF := $(ov_SC07_009_OUT).elf ov_SC07_009_MAPFILE := $(ov_SC07_009_OUT).map ov_SC07_009_LD_SCRIPT := $(ov_SC07_009_OUT).ld ov_SC07_009_SPLAT_YAML := config/splat.ov_SC07_009.yaml +ov_SC07_009_JTBL_INTERLEAVE := --front tail.data.o --tail tail2.data.o --tail trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC07_009_CHECK_SHA := config/check.ov_SC07_009.sha ov_SC07_009_SYMBOLS := config/symbols.ov_SC07_009.txt ov_SC07_009_SIG := .run/sig.ov_SC07_009.jsonl diff --git a/config/splat.ov_SC01_000.yaml b/config/splat.ov_SC01_000.yaml index d195b7621f..f5852c01e1 100644 --- a/config/splat.ov_SC01_000.yaml +++ b/config/splat.ov_SC01_000.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC01_000] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC01_000_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC01_000_after] # -O2 after whale (0x1D64C..data tail) - - [0x56A64, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x56a64, data, tail] + - [0x7b1c4, .rodata, ov_SC01_000] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x7b290, data, tail2] - [0x7D78C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x7D78F] # 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 diff --git a/config/splat.ov_SC01_001.yaml b/config/splat.ov_SC01_001.yaml index 24f0067aec..454e832930 100644 --- a/config/splat.ov_SC01_001.yaml +++ b/config/splat.ov_SC01_001.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC01_001] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC01_001_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC01_001_after] # -O2 after whale (0x1D64C..data tail) - - [0x5B6B4, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5b6b4, data, tail] + - [0xc329c, .rodata, ov_SC01_001] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc3368, data, tail2] - [0xCB06C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xCB06F] # 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 diff --git a/config/splat.ov_SC01_004.yaml b/config/splat.ov_SC01_004.yaml index c9f271e26c..ab111dabfd 100644 --- a/config/splat.ov_SC01_004.yaml +++ b/config/splat.ov_SC01_004.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC01_004] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC01_004_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC01_004_after] # -O2 after whale (0x1D64C..data tail) - - [0x57078, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x57078, data, tail] + - [0x6567c, .rodata, ov_SC01_004] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x65748, data, tail2] - [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 diff --git a/config/splat.ov_SC01_005.yaml b/config/splat.ov_SC01_005.yaml index adeb025aa2..33b7b5bf7e 100644 --- a/config/splat.ov_SC01_005.yaml +++ b/config/splat.ov_SC01_005.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC01_005] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC01_005_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC01_005_after] # -O2 after whale (0x1D64C..data tail) - - [0x5A20C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5a20c, data, tail] + - [0xa2ddc, .rodata, ov_SC01_005] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa2ea8, data, tail2] - [0xA5F08, bin, trailing] # final 1 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA5F09] # 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 diff --git a/config/splat.ov_SC01_006.yaml b/config/splat.ov_SC01_006.yaml index 404e5cf0e6..d3c0902f8d 100644 --- a/config/splat.ov_SC01_006.yaml +++ b/config/splat.ov_SC01_006.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC01_006] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC01_006_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC01_006_after] # -O2 after whale (0x1D64C..data tail) - - [0x5A20C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5a20c, data, tail] + - [0xa2ddc, .rodata, ov_SC01_006] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa2ea8, data, tail2] - [0xA5F08, bin, trailing] # final 1 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA5F09] # 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 diff --git a/config/splat.ov_SC01_008.yaml b/config/splat.ov_SC01_008.yaml index 14cc51dc71..0a5d63e68b 100644 --- a/config/splat.ov_SC01_008.yaml +++ b/config/splat.ov_SC01_008.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC01_008] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC01_008_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC01_008_after] # -O2 after whale (0x1D64C..data tail) - - [0x575EC, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x575ec, data, tail] + - [0x7888c, .rodata, ov_SC01_008] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x78958, data, tail2] - [0x7B484, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x7B487] # 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 diff --git a/config/splat.ov_SC01_009.yaml b/config/splat.ov_SC01_009.yaml index cdaf6bbbfe..80b049982b 100644 --- a/config/splat.ov_SC01_009.yaml +++ b/config/splat.ov_SC01_009.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC01_009] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC01_009_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC01_009_after] # -O2 after whale (0x1D64C..data tail) - - [0x5A7D4, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5a7d4, data, tail] + - [0xc8650, .rodata, ov_SC01_009] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc871c, data, tail2] - [0xCB304, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xCB307] # 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 diff --git a/config/splat.ov_SC01_074.yaml b/config/splat.ov_SC01_074.yaml index 09c53bd8c7..4576f41de2 100644 --- a/config/splat.ov_SC01_074.yaml +++ b/config/splat.ov_SC01_074.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC01_074] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC01_074_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC01_074_after] # -O2 after whale (0x1D64C..data tail) - - [0x56454, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x56454, data, tail] + - [0x716e0, .rodata, ov_SC01_074] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x717ac, data, tail2] - [0x73C14, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x73C17] # 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 diff --git a/config/splat.ov_SC01_080.yaml b/config/splat.ov_SC01_080.yaml index ef3cda9a18..621953b0d8 100644 --- a/config/splat.ov_SC01_080.yaml +++ b/config/splat.ov_SC01_080.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC01_080] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC01_080_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC01_080_after] # -O2 after whale (0x1D64C..data tail) - - [0x5B3B4, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5b3b4, data, tail] + - [0x9b500, .rodata, ov_SC01_080] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9b5cc, data, tail2] - [0x9FDF4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9FDF7] # 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 diff --git a/config/splat.ov_SC01_084.yaml b/config/splat.ov_SC01_084.yaml index 29b10feb59..b765b30897 100644 --- a/config/splat.ov_SC01_084.yaml +++ b/config/splat.ov_SC01_084.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC01_084] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC01_084_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC01_084_after] # -O2 after whale (0x1D64C..data tail) - - [0x5E6A8, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5e6a8, data, tail] + - [0x9ced0, .rodata, ov_SC01_084] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9cf9c, data, tail2] - [0x9FA9C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9FA9F] # 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 diff --git a/config/splat.ov_SC02_000.yaml b/config/splat.ov_SC02_000.yaml index 8d60dc42f1..b2f6003a9e 100644 --- a/config/splat.ov_SC02_000.yaml +++ b/config/splat.ov_SC02_000.yaml @@ -96,7 +96,9 @@ segments: - [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) - - [0x62A58, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x62a58, data, tail] + - [0xbd724, .rodata, ov_SC02_000] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xbd7f0, data, tail2] - [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 diff --git a/config/splat.ov_SC02_003.yaml b/config/splat.ov_SC02_003.yaml index 8ff362f30a..c5fae44e49 100644 --- a/config/splat.ov_SC02_003.yaml +++ b/config/splat.ov_SC02_003.yaml @@ -96,7 +96,9 @@ segments: - [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) - - [0x62A58, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x62a58, data, tail] + - [0xbd724, .rodata, ov_SC02_003] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xbd7f0, data, tail2] - [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 diff --git a/config/splat.ov_SC02_004.yaml b/config/splat.ov_SC02_004.yaml index f95e9077c7..57910e2f4b 100644 --- a/config/splat.ov_SC02_004.yaml +++ b/config/splat.ov_SC02_004.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC02_004] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC02_004_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC02_004_after] # -O2 after whale (0x1D64C..data tail) - - [0x55B38, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x55b38, data, tail] + - [0x6bd34, .rodata, ov_SC02_004] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6be00, data, tail2] - [0x6E26C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6E26F] # 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 diff --git a/config/splat.ov_SC02_005.yaml b/config/splat.ov_SC02_005.yaml index 5ebe85cb29..224c2064cf 100644 --- a/config/splat.ov_SC02_005.yaml +++ b/config/splat.ov_SC02_005.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC02_005] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC02_005_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC02_005_after] # -O2 after whale (0x1D64C..data tail) - - [0x6873C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x6873c, data, tail] + - [0xb9a68, .rodata, ov_SC02_005] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xb9b34, data, tail2] - [0xBCB00, bin, trailing] # final 1 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xBCB01] # 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 diff --git a/config/splat.ov_SC02_011.yaml b/config/splat.ov_SC02_011.yaml index 527784be01..7ad265e7f9 100644 --- a/config/splat.ov_SC02_011.yaml +++ b/config/splat.ov_SC02_011.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC02_011] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC02_011_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC02_011_after] # -O2 after whale (0x1D64C..data tail) - - [0x68B8C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x68b8c, data, tail] + - [0xc0bc4, .rodata, ov_SC02_011] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc0c90, data, tail2] - [0xC3924, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC3927] # 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 diff --git a/config/splat.ov_SC02_015.yaml b/config/splat.ov_SC02_015.yaml index 0e386dd1ee..65c7fc73ac 100644 --- a/config/splat.ov_SC02_015.yaml +++ b/config/splat.ov_SC02_015.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC02_015] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC02_015_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC02_015_after] # -O2 after whale (0x1D64C..data tail) - - [0x560A0, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x560a0, data, tail] + - [0x65e1c, .rodata, ov_SC02_015] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x65ee8, data, tail2] - [0x68544, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x68547] # 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 diff --git a/config/splat.ov_SC02_016.yaml b/config/splat.ov_SC02_016.yaml index a83adacb05..d3fe8b427c 100644 --- a/config/splat.ov_SC02_016.yaml +++ b/config/splat.ov_SC02_016.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC02_016] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC02_016_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC02_016_after] # -O2 after whale (0x1D64C..data tail) - - [0x5C2D8, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5c2d8, data, tail] + - [0x899fc, .rodata, ov_SC02_016] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x89ac8, data, tail2] - [0x8C97C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x8C97F] # 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 diff --git a/config/splat.ov_SC02_017.yaml b/config/splat.ov_SC02_017.yaml index 53b577987c..8f4abad86d 100644 --- a/config/splat.ov_SC02_017.yaml +++ b/config/splat.ov_SC02_017.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC02_017] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC02_017_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC02_017_after] # -O2 after whale (0x1D64C..data tail) - - [0x62330, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x62330, data, tail] + - [0xc521c, .rodata, ov_SC02_017] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc52e8, data, tail2] - [0xC7BDC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC7BDF] # 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 diff --git a/config/splat.ov_SC02_021.yaml b/config/splat.ov_SC02_021.yaml index 5a352236b2..85ae91d5e5 100644 --- a/config/splat.ov_SC02_021.yaml +++ b/config/splat.ov_SC02_021.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC02_021] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC02_021_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC02_021_after] # -O2 after whale (0x1D64C..data tail) - - [0x57924, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x57924, data, tail] + - [0x68798, .rodata, ov_SC02_021] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x68864, data, tail2] - [0x6B744, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6B747] # 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 diff --git a/config/splat.ov_SC02_026.yaml b/config/splat.ov_SC02_026.yaml index a479ba5625..c544788cfe 100644 --- a/config/splat.ov_SC02_026.yaml +++ b/config/splat.ov_SC02_026.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC02_026] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC02_026_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC02_026_after] # -O2 after whale (0x1D64C..data tail) - - [0x5DF78, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5df78, data, tail] + - [0xa5bcc, .rodata, ov_SC02_026] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa5c98, data, tail2] - [0xA8164, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA8167] # 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 diff --git a/config/splat.ov_SC02_027.yaml b/config/splat.ov_SC02_027.yaml index fac99de8b3..5daa799b0a 100644 --- a/config/splat.ov_SC02_027.yaml +++ b/config/splat.ov_SC02_027.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC02_027] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC02_027_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC02_027_after] # -O2 after whale (0x1D64C..data tail) - - [0x6309C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x6309c, data, tail] + - [0xaf938, .rodata, ov_SC02_027] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xafa04, data, tail2] - [0xB28E4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xB28E7] # 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 diff --git a/config/splat.ov_SC02_028.yaml b/config/splat.ov_SC02_028.yaml index e14ad6a51d..dabb9029c0 100644 --- a/config/splat.ov_SC02_028.yaml +++ b/config/splat.ov_SC02_028.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC02_028] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC02_028_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC02_028_after] # -O2 after whale (0x1D64C..data tail) - - [0x632A0, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x632a0, data, tail] + - [0xa88bc, .rodata, ov_SC02_028] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa8988, data, tail2] - [0xAB4E4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xAB4E7] # 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 diff --git a/config/splat.ov_SC02_031.yaml b/config/splat.ov_SC02_031.yaml index f1a2c1c41e..645c2a974b 100644 --- a/config/splat.ov_SC02_031.yaml +++ b/config/splat.ov_SC02_031.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC02_031] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC02_031_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC02_031_after] # -O2 after whale (0x1D64C..data tail) - - [0x5CACC, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5cacc, data, tail] + - [0x8d0b8, .rodata, ov_SC02_031] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x8d184, data, tail2] - [0x8F9B4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x8F9B7] # 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 diff --git a/config/splat.ov_SC02_035.yaml b/config/splat.ov_SC02_035.yaml index d84452c8ca..44472fc54b 100644 --- a/config/splat.ov_SC02_035.yaml +++ b/config/splat.ov_SC02_035.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC02_035] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC02_035_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC02_035_after] # -O2 after whale (0x1D64C..data tail) - - [0x5C32C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5c32c, data, tail] + - [0x94380, .rodata, ov_SC02_035] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9444c, data, tail2] - [0x968EC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x968EF] # 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 diff --git a/config/splat.ov_SC02_039.yaml b/config/splat.ov_SC02_039.yaml index 19080c0758..2d09688fde 100644 --- a/config/splat.ov_SC02_039.yaml +++ b/config/splat.ov_SC02_039.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC02_039] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC02_039_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC02_039_after] # -O2 after whale (0x1D64C..data tail) - - [0x56F58, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x56f58, data, tail] + - [0x7676c, .rodata, ov_SC02_039] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x76838, data, tail2] - [0x78CA4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x78CA7] # 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 diff --git a/config/splat.ov_SC02_041.yaml b/config/splat.ov_SC02_041.yaml index 045765b347..6e36fd435d 100644 --- a/config/splat.ov_SC02_041.yaml +++ b/config/splat.ov_SC02_041.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC02_041] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC02_041_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC02_041_after] # -O2 after whale (0x1D64C..data tail) - - [0x5CC28, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5cc28, data, tail] + - [0x8ead8, .rodata, ov_SC02_041] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x8eba4, data, tail2] - [0x9157C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9157F] # 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 diff --git a/config/splat.ov_SC03_001.yaml b/config/splat.ov_SC03_001.yaml index 96f96dcf4e..204edf05dc 100644 --- a/config/splat.ov_SC03_001.yaml +++ b/config/splat.ov_SC03_001.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_001] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_001_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_001_after] # -O2 after whale (0x1D64C..data tail) - - [0x650C8, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x650c8, data, tail] + - [0xc3bf8, .rodata, ov_SC03_001] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc3cc4, data, tail2] - [0xC730C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC730F] # 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 diff --git a/config/splat.ov_SC03_002.yaml b/config/splat.ov_SC03_002.yaml index f92dd1d246..9b737dff2d 100644 --- a/config/splat.ov_SC03_002.yaml +++ b/config/splat.ov_SC03_002.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_002] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_002_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_002_after] # -O2 after whale (0x1D64C..data tail) - - [0x5D358, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5d358, data, tail] + - [0xa1154, .rodata, ov_SC03_002] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa1220, data, tail2] - [0xA39F4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA39F7] # 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 diff --git a/config/splat.ov_SC03_003.yaml b/config/splat.ov_SC03_003.yaml index 90cc03ad29..da490d7cc1 100644 --- a/config/splat.ov_SC03_003.yaml +++ b/config/splat.ov_SC03_003.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_003] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_003_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_003_after] # -O2 after whale (0x1D64C..data tail) - - [0x57120, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x57120, data, tail] + - [0x654d4, .rodata, ov_SC03_003] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x655a0, data, tail2] - [0x67A24, bin, trailing] # final 1 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x67A25] # 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 diff --git a/config/splat.ov_SC03_006.yaml b/config/splat.ov_SC03_006.yaml index 19da306ba1..5724093212 100644 --- a/config/splat.ov_SC03_006.yaml +++ b/config/splat.ov_SC03_006.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_006] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_006_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_006_after] # -O2 after whale (0x1D64C..data tail) - - [0x6443C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x6443c, data, tail] + - [0xccd90, .rodata, ov_SC03_006] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xcce5c, data, tail2] - [0xCF75C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xCF75F] # 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 diff --git a/config/splat.ov_SC03_007.yaml b/config/splat.ov_SC03_007.yaml index 43c5cc86dc..4f27aa8e1d 100644 --- a/config/splat.ov_SC03_007.yaml +++ b/config/splat.ov_SC03_007.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_007] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_007_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_007_after] # -O2 after whale (0x1D64C..data tail) - - [0x5F234, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5f234, data, tail] + - [0xbf718, .rodata, ov_SC03_007] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xbf7e4, data, tail2] - [0xC316C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC316F] # 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 diff --git a/config/splat.ov_SC03_010.yaml b/config/splat.ov_SC03_010.yaml index 334b1be434..7369b860b5 100644 --- a/config/splat.ov_SC03_010.yaml +++ b/config/splat.ov_SC03_010.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_010] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_010_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_010_after] # -O2 after whale (0x1D64C..data tail) - - [0x57D54, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x57d54, data, tail] + - [0x759f4, .rodata, ov_SC03_010] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x75ac0, data, tail2] - [0x78074, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x78077] # 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 diff --git a/config/splat.ov_SC03_011.yaml b/config/splat.ov_SC03_011.yaml index fedb86b512..b17989ee48 100644 --- a/config/splat.ov_SC03_011.yaml +++ b/config/splat.ov_SC03_011.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_011] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_011_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_011_after] # -O2 after whale (0x1D64C..data tail) - - [0x590C4, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x590c4, data, tail] + - [0x77c64, .rodata, ov_SC03_011] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x77d30, data, tail2] - [0x7A2A8, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x7A2AB] # 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 diff --git a/config/splat.ov_SC03_012.yaml b/config/splat.ov_SC03_012.yaml index bac4e38adb..8e500975fd 100644 --- a/config/splat.ov_SC03_012.yaml +++ b/config/splat.ov_SC03_012.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_012] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_012_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_012_after] # -O2 after whale (0x1D64C..data tail) - - [0x55FA4, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x55fa4, data, tail] + - [0x6aac0, .rodata, ov_SC03_012] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6ab8c, data, tail2] - [0x6D004, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6D007] # 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 diff --git a/config/splat.ov_SC03_013.yaml b/config/splat.ov_SC03_013.yaml index af9c010c5d..5e45a53cd2 100644 --- a/config/splat.ov_SC03_013.yaml +++ b/config/splat.ov_SC03_013.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_013] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_013_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_013_after] # -O2 after whale (0x1D64C..data tail) - - [0x58D8C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x58d8c, data, tail] + - [0x82d58, .rodata, ov_SC03_013] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x82e24, data, tail2] - [0x853FC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x853FF] # 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 diff --git a/config/splat.ov_SC03_014.yaml b/config/splat.ov_SC03_014.yaml index 7d13819b7c..cf64a563c2 100644 --- a/config/splat.ov_SC03_014.yaml +++ b/config/splat.ov_SC03_014.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_014] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_014_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_014_after] # -O2 after whale (0x1D64C..data tail) - - [0x633C8, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x633c8, data, tail] + - [0xc012c, .rodata, ov_SC03_014] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc01f8, data, tail2] - [0xC2EE4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC2EE7] # 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 diff --git a/config/splat.ov_SC03_015.yaml b/config/splat.ov_SC03_015.yaml index 1e17f076f4..eef40e52c3 100644 --- a/config/splat.ov_SC03_015.yaml +++ b/config/splat.ov_SC03_015.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_015] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_015_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_015_after] # -O2 after whale (0x1D64C..data tail) - - [0x633C8, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x633c8, data, tail] + - [0xc012c, .rodata, ov_SC03_015] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc01f8, data, tail2] - [0xC2EE4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC2EE7] # 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 diff --git a/config/splat.ov_SC03_023.yaml b/config/splat.ov_SC03_023.yaml index c9248dd9db..dc581a22f6 100644 --- a/config/splat.ov_SC03_023.yaml +++ b/config/splat.ov_SC03_023.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_023] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_023_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_023_after] # -O2 after whale (0x1D64C..data tail) - - [0x56D44, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x56d44, data, tail] + - [0x6e704, .rodata, ov_SC03_023] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6e7d0, data, tail2] - [0x70C2C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x70C2F] # 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 diff --git a/config/splat.ov_SC03_024.yaml b/config/splat.ov_SC03_024.yaml index 8a39920110..510e023ed8 100644 --- a/config/splat.ov_SC03_024.yaml +++ b/config/splat.ov_SC03_024.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_024] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_024_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_024_after] # -O2 after whale (0x1D64C..data tail) - - [0x5ED68, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5ed68, data, tail] + - [0x96b8c, .rodata, ov_SC03_024] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x96c58, data, tail2] - [0x996F4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x996F7] # 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 diff --git a/config/splat.ov_SC03_028.yaml b/config/splat.ov_SC03_028.yaml index 74fc4e54ff..f9457fbc78 100644 --- a/config/splat.ov_SC03_028.yaml +++ b/config/splat.ov_SC03_028.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_028] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_028_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_028_after] # -O2 after whale (0x1D64C..data tail) - - [0x63834, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x63834, data, tail] + - [0xc0d14, .rodata, ov_SC03_028] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc0de0, data, tail2] - [0xC44AC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC44AF] # 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 diff --git a/config/splat.ov_SC03_029.yaml b/config/splat.ov_SC03_029.yaml index 9155754de2..594472a64a 100644 --- a/config/splat.ov_SC03_029.yaml +++ b/config/splat.ov_SC03_029.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_029] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_029_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_029_after] # -O2 after whale (0x1D64C..data tail) - - [0x5F66C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5f66c, data, tail] + - [0xaee48, .rodata, ov_SC03_029] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xaef14, data, tail2] - [0xB18EC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xB18EF] # 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 diff --git a/config/splat.ov_SC03_030.yaml b/config/splat.ov_SC03_030.yaml index 5a54780370..fd25772043 100644 --- a/config/splat.ov_SC03_030.yaml +++ b/config/splat.ov_SC03_030.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_030] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_030_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_030_after] # -O2 after whale (0x1D64C..data tail) - - [0x59CA8, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x59ca8, data, tail] + - [0xb74ec, .rodata, ov_SC03_030] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xb75b8, data, tail2] - [0xB9AF0] # 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 # ` - [0x, bin, trailing]` (the final 1-3 bytes spimdisasm's data path drops); diff --git a/config/splat.ov_SC03_031.yaml b/config/splat.ov_SC03_031.yaml index 4ac2357fac..5a26416471 100644 --- a/config/splat.ov_SC03_031.yaml +++ b/config/splat.ov_SC03_031.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_031] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_031_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_031_after] # -O2 after whale (0x1D64C..data tail) - - [0x5A1C4, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5a1c4, data, tail] + - [0x9b990, .rodata, ov_SC03_031] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9ba5c, data, tail2] - [0x9E14C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9E14F] # 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 diff --git a/config/splat.ov_SC03_089.yaml b/config/splat.ov_SC03_089.yaml index 885cb741f7..b25eee2d83 100644 --- a/config/splat.ov_SC03_089.yaml +++ b/config/splat.ov_SC03_089.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_089] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_089_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_089_after] # -O2 after whale (0x1D64C..data tail) - - [0x614C0, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x614c0, data, tail] + - [0x9c1fc, .rodata, ov_SC03_089] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9c2c8, data, tail2] - [0x9E7C4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9E7C7] # 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 diff --git a/config/splat.ov_SC03_090.yaml b/config/splat.ov_SC03_090.yaml index 3a1abcd312..d282c05a59 100644 --- a/config/splat.ov_SC03_090.yaml +++ b/config/splat.ov_SC03_090.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_090] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_090_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_090_after] # -O2 after whale (0x1D64C..data tail) - - [0x638E4, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x638e4, data, tail] + - [0xa1668, .rodata, ov_SC03_090] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa1734, data, tail2] - [0xA3C34, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA3C37] # 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 diff --git a/config/splat.ov_SC03_091.yaml b/config/splat.ov_SC03_091.yaml index d84804d815..758e80d447 100644 --- a/config/splat.ov_SC03_091.yaml +++ b/config/splat.ov_SC03_091.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_091] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_091_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_091_after] # -O2 after whale (0x1D64C..data tail) - - [0x6478C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x6478c, data, tail] + - [0xa7d34, .rodata, ov_SC03_091] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa7e00, data, tail2] - [0xAA584, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xAA587] # 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 diff --git a/config/splat.ov_SC03_092.yaml b/config/splat.ov_SC03_092.yaml index fcf542edc1..8eda54d07a 100644 --- a/config/splat.ov_SC03_092.yaml +++ b/config/splat.ov_SC03_092.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_092] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_092_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_092_after] # -O2 after whale (0x1D64C..data tail) - - [0x5CB5C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5cb5c, data, tail] + - [0x8890c, .rodata, ov_SC03_092] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x889d8, data, tail2] - [0x8AF2C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x8AF2F] # 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 diff --git a/config/splat.ov_SC03_093.yaml b/config/splat.ov_SC03_093.yaml index 5610778c69..90b0654649 100644 --- a/config/splat.ov_SC03_093.yaml +++ b/config/splat.ov_SC03_093.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_093] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_093_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_093_after] # -O2 after whale (0x1D64C..data tail) - - [0x5DD34, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5dd34, data, tail] + - [0xa1d60, .rodata, ov_SC03_093] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa1e2c, data, tail2] - [0xA4584, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA4587] # 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 diff --git a/config/splat.ov_SC03_094.yaml b/config/splat.ov_SC03_094.yaml index 167d2d9d11..ec63f7a4d2 100644 --- a/config/splat.ov_SC03_094.yaml +++ b/config/splat.ov_SC03_094.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_094] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_094_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_094_after] # -O2 after whale (0x1D64C..data tail) - - [0x5F730, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5f730, data, tail] + - [0xa8b9c, .rodata, ov_SC03_094] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa8c68, data, tail2] - [0xAB13C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xAB13F] # 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 diff --git a/config/splat.ov_SC03_095.yaml b/config/splat.ov_SC03_095.yaml index 31991054e1..29581a7869 100644 --- a/config/splat.ov_SC03_095.yaml +++ b/config/splat.ov_SC03_095.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_095] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_095_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_095_after] # -O2 after whale (0x1D64C..data tail) - - [0x58D90, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x58d90, data, tail] + - [0x717c8, .rodata, ov_SC03_095] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x71894, data, tail2] - [0x73D3C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x73D3F] # 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 diff --git a/config/splat.ov_SC03_096.yaml b/config/splat.ov_SC03_096.yaml index d02deab620..b7eda73c62 100644 --- a/config/splat.ov_SC03_096.yaml +++ b/config/splat.ov_SC03_096.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_096] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_096_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_096_after] # -O2 after whale (0x1D64C..data tail) - - [0x58910, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x58910, data, tail] + - [0x7027c, .rodata, ov_SC03_096] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x70348, data, tail2] - [0x727F4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x727F7] # 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 diff --git a/config/splat.ov_SC03_097.yaml b/config/splat.ov_SC03_097.yaml index e3a81dbfff..3ac57c69c3 100644 --- a/config/splat.ov_SC03_097.yaml +++ b/config/splat.ov_SC03_097.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_097] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_097_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_097_after] # -O2 after whale (0x1D64C..data tail) - - [0x5DCF0, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5dcf0, data, tail] + - [0x802ec, .rodata, ov_SC03_097] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x803b8, data, tail2] - [0x82D74, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x82D77] # 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 diff --git a/config/splat.ov_SC03_098.yaml b/config/splat.ov_SC03_098.yaml index f1be8814d2..204f9634d7 100644 --- a/config/splat.ov_SC03_098.yaml +++ b/config/splat.ov_SC03_098.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_098] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_098_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_098_after] # -O2 after whale (0x1D64C..data tail) - - [0x5D17C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5d17c, data, tail] + - [0x9af70, .rodata, ov_SC03_098] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9b03c, data, tail2] - [0x9D75C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9D75F] # 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 diff --git a/config/splat.ov_SC03_099.yaml b/config/splat.ov_SC03_099.yaml index 47ee0b0974..fb0daced8e 100644 --- a/config/splat.ov_SC03_099.yaml +++ b/config/splat.ov_SC03_099.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_099] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_099_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_099_after] # -O2 after whale (0x1D64C..data tail) - - [0x5B27C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5b27c, data, tail] + - [0x94c44, .rodata, ov_SC03_099] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x94d10, data, tail2] - [0x97304, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x97307] # 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 diff --git a/config/splat.ov_SC03_100.yaml b/config/splat.ov_SC03_100.yaml index 49e92fc6d6..a777e7d035 100644 --- a/config/splat.ov_SC03_100.yaml +++ b/config/splat.ov_SC03_100.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_100] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_100_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_100_after] # -O2 after whale (0x1D64C..data tail) - - [0x5C748, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5c748, data, tail] + - [0x9dec8, .rodata, ov_SC03_100] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9df94, data, tail2] - [0xA080C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA080F] # 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 diff --git a/config/splat.ov_SC03_101.yaml b/config/splat.ov_SC03_101.yaml index 2d53585a4a..3db593369c 100644 --- a/config/splat.ov_SC03_101.yaml +++ b/config/splat.ov_SC03_101.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_101] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_101_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_101_after] # -O2 after whale (0x1D64C..data tail) - - [0x5B724, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5b724, data, tail] + - [0x73790, .rodata, ov_SC03_101] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x7385c, data, tail2] - [0x760CC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x760CF] # 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 diff --git a/config/splat.ov_SC03_102.yaml b/config/splat.ov_SC03_102.yaml index 08f39d80fa..0cfece2bb1 100644 --- a/config/splat.ov_SC03_102.yaml +++ b/config/splat.ov_SC03_102.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_102] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_102_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_102_after] # -O2 after whale (0x1D64C..data tail) - - [0x5DFDC, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5dfdc, data, tail] + - [0x8f40c, .rodata, ov_SC03_102] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x8f4d8, data, tail2] - [0x91ACC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x91ACF] # 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 diff --git a/config/splat.ov_SC03_103.yaml b/config/splat.ov_SC03_103.yaml index b840ee041c..de7f5fa5aa 100644 --- a/config/splat.ov_SC03_103.yaml +++ b/config/splat.ov_SC03_103.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_103] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_103_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_103_after] # -O2 after whale (0x1D64C..data tail) - - [0x5BF8C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5bf8c, data, tail] + - [0x9a5c0, .rodata, ov_SC03_103] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9a68c, data, tail2] - [0x9CC7C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9CC7F] # 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 diff --git a/config/splat.ov_SC03_104.yaml b/config/splat.ov_SC03_104.yaml index 105aee6e9e..04a4b3727c 100644 --- a/config/splat.ov_SC03_104.yaml +++ b/config/splat.ov_SC03_104.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_104] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_104_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_104_after] # -O2 after whale (0x1D64C..data tail) - - [0x62B1C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x62b1c, data, tail] + - [0x95b20, .rodata, ov_SC03_104] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x95bec, data, tail2] - [0x9833C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9833F] # 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 diff --git a/config/splat.ov_SC03_105.yaml b/config/splat.ov_SC03_105.yaml index c7e939995c..814a25e1d5 100644 --- a/config/splat.ov_SC03_105.yaml +++ b/config/splat.ov_SC03_105.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_105] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_105_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_105_after] # -O2 after whale (0x1D64C..data tail) - - [0x621A4, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x621a4, data, tail] + - [0x8ee18, .rodata, ov_SC03_105] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x8eee4, data, tail2] - [0x94BC4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x94BC7] # 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 diff --git a/config/splat.ov_SC03_108.yaml b/config/splat.ov_SC03_108.yaml index f720d1de1c..da1fe999ce 100644 --- a/config/splat.ov_SC03_108.yaml +++ b/config/splat.ov_SC03_108.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_108] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_108_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_108_after] # -O2 after whale (0x1D64C..data tail) - - [0x58AFC, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x58afc, data, tail] + - [0x77320, .rodata, ov_SC03_108] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x773ec, data, tail2] - [0x7994C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x7994F] # 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 diff --git a/config/splat.ov_SC03_109.yaml b/config/splat.ov_SC03_109.yaml index 4ae2753272..1b410b735e 100644 --- a/config/splat.ov_SC03_109.yaml +++ b/config/splat.ov_SC03_109.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_109] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_109_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_109_after] # -O2 after whale (0x1D64C..data tail) - - [0x561A8, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x561a8, data, tail] + - [0x6fe30, .rodata, ov_SC03_109] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6fefc, data, tail2] - [0x72354, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x72357] # 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 diff --git a/config/splat.ov_SC03_110.yaml b/config/splat.ov_SC03_110.yaml index 9f9b2cbf55..2076d73a96 100644 --- a/config/splat.ov_SC03_110.yaml +++ b/config/splat.ov_SC03_110.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_110] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_110_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_110_after] # -O2 after whale (0x1D64C..data tail) - - [0x59BC8, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x59bc8, data, tail] + - [0x77acc, .rodata, ov_SC03_110] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x77b98, data, tail2] - [0x7A384, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x7A387] # 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 diff --git a/config/splat.ov_SC03_111.yaml b/config/splat.ov_SC03_111.yaml index 55b28ea2d2..0b138cd85d 100644 --- a/config/splat.ov_SC03_111.yaml +++ b/config/splat.ov_SC03_111.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_111] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_111_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_111_after] # -O2 after whale (0x1D64C..data tail) - - [0x5C77C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5c77c, data, tail] + - [0x8f04c, .rodata, ov_SC03_111] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x8f118, data, tail2] - [0x91A2C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x91A2F] # 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 diff --git a/config/splat.ov_SC03_112.yaml b/config/splat.ov_SC03_112.yaml index 9c9e2ff1db..9ebd6c10d0 100644 --- a/config/splat.ov_SC03_112.yaml +++ b/config/splat.ov_SC03_112.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_112] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_112_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_112_after] # -O2 after whale (0x1D64C..data tail) - - [0x5D584, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5d584, data, tail] + - [0x827b4, .rodata, ov_SC03_112] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x82880, data, tail2] - [0x84FF4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x84FF7] # 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 diff --git a/config/splat.ov_SC03_113.yaml b/config/splat.ov_SC03_113.yaml index bd615087ae..2259ab8f84 100644 --- a/config/splat.ov_SC03_113.yaml +++ b/config/splat.ov_SC03_113.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_113] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_113_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_113_after] # -O2 after whale (0x1D64C..data tail) - - [0x5AC34, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5ac34, data, tail] + - [0x7b43c, .rodata, ov_SC03_113] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x7b508, data, tail2] - [0x7DB94, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x7DB97] # 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 diff --git a/config/splat.ov_SC03_114.yaml b/config/splat.ov_SC03_114.yaml index e42e238f91..3c0e925da5 100644 --- a/config/splat.ov_SC03_114.yaml +++ b/config/splat.ov_SC03_114.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_114] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_114_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_114_after] # -O2 after whale (0x1D64C..data tail) - - [0x5689C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5689c, data, tail] + - [0x7f148, .rodata, ov_SC03_114] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x7f214, data, tail2] - [0x8170C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x8170F] # 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 diff --git a/config/splat.ov_SC03_115.yaml b/config/splat.ov_SC03_115.yaml index b48c11698e..4ea5c3524d 100644 --- a/config/splat.ov_SC03_115.yaml +++ b/config/splat.ov_SC03_115.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_115] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_115_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_115_after] # -O2 after whale (0x1D64C..data tail) - - [0x58308, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x58308, data, tail] + - [0x6aabc, .rodata, ov_SC03_115] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6ab88, data, tail2] - [0x6CFE4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6CFE7] # 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 diff --git a/config/splat.ov_SC03_116.yaml b/config/splat.ov_SC03_116.yaml index 6b1821b0c9..495d6bf697 100644 --- a/config/splat.ov_SC03_116.yaml +++ b/config/splat.ov_SC03_116.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_116] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_116_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_116_after] # -O2 after whale (0x1D64C..data tail) - - [0x5A70C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5a70c, data, tail] + - [0x6d658, .rodata, ov_SC03_116] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6d724, data, tail2] - [0x6FBF4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6FBF7] # 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 diff --git a/config/splat.ov_SC03_117.yaml b/config/splat.ov_SC03_117.yaml index d078d45393..5043df31bc 100644 --- a/config/splat.ov_SC03_117.yaml +++ b/config/splat.ov_SC03_117.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_117] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_117_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_117_after] # -O2 after whale (0x1D64C..data tail) - - [0x5C718, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5c718, data, tail] + - [0xa3cf8, .rodata, ov_SC03_117] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa3dc4, data, tail2] - [0xA67EC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA67EF] # 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 diff --git a/config/splat.ov_SC03_118.yaml b/config/splat.ov_SC03_118.yaml index 3153cca54a..0b6bd905b9 100644 --- a/config/splat.ov_SC03_118.yaml +++ b/config/splat.ov_SC03_118.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_118] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_118_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_118_after] # -O2 after whale (0x1D64C..data tail) - - [0x617C4, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x617c4, data, tail] + - [0xa9c54, .rodata, ov_SC03_118] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa9d20, data, tail2] - [0xAC6F4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xAC6F7] # 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 diff --git a/config/splat.ov_SC03_119.yaml b/config/splat.ov_SC03_119.yaml index 12e21aca61..d39f8ecd5e 100644 --- a/config/splat.ov_SC03_119.yaml +++ b/config/splat.ov_SC03_119.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_119] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_119_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_119_after] # -O2 after whale (0x1D64C..data tail) - - [0x617C4, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x617c4, data, tail] + - [0xa9c54, .rodata, ov_SC03_119] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa9d20, data, tail2] - [0xAC6F4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xAC6F7] # 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 diff --git a/config/splat.ov_SC03_121.yaml b/config/splat.ov_SC03_121.yaml index cd4d733edb..d5286a9959 100644 --- a/config/splat.ov_SC03_121.yaml +++ b/config/splat.ov_SC03_121.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_121] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_121_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_121_after] # -O2 after whale (0x1D64C..data tail) - - [0x59FE0, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x59fe0, data, tail] + - [0x8475c, .rodata, ov_SC03_121] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x84828, data, tail2] - [0x86E54, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x86E57] # 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 diff --git a/config/splat.ov_SC03_124.yaml b/config/splat.ov_SC03_124.yaml index 2c63022343..e3fdfe6657 100644 --- a/config/splat.ov_SC03_124.yaml +++ b/config/splat.ov_SC03_124.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_124] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_124_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_124_after] # -O2 after whale (0x1D64C..data tail) - - [0x6276C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x6276c, data, tail] + - [0xb6eb0, .rodata, ov_SC03_124] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xb6f7c, data, tail2] - [0xBA48C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xBA48F] # 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 diff --git a/config/splat.ov_SC03_125.yaml b/config/splat.ov_SC03_125.yaml index 10391e0dcb..f9d33b2c6e 100644 --- a/config/splat.ov_SC03_125.yaml +++ b/config/splat.ov_SC03_125.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_125] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_125_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_125_after] # -O2 after whale (0x1D64C..data tail) - - [0x5BBDC, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5bbdc, data, tail] + - [0x99b9c, .rodata, ov_SC03_125] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x99c68, data, tail2] - [0x9C3E4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9C3E7] # 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 diff --git a/config/splat.ov_SC03_126.yaml b/config/splat.ov_SC03_126.yaml index d15d8351e5..447234d91e 100644 --- a/config/splat.ov_SC03_126.yaml +++ b/config/splat.ov_SC03_126.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC03_126] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC03_126_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC03_126_after] # -O2 after whale (0x1D64C..data tail) - - [0x570D4, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x570d4, data, tail] + - [0x65488, .rodata, ov_SC03_126] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x65554, data, tail2] - [0x679D4, bin, trailing] # final 1 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x679D5] # 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 diff --git a/config/splat.ov_SC04_000.yaml b/config/splat.ov_SC04_000.yaml index 1ce273a784..387b0f47d9 100644 --- a/config/splat.ov_SC04_000.yaml +++ b/config/splat.ov_SC04_000.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC04_000] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC04_000_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC04_000_after] # -O2 after whale (0x1D64C..data tail) - - [0x5B0E0, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5b0e0, data, tail] + - [0x7f504, .rodata, ov_SC04_000] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x7f5d0, data, tail2] - [0x82EFC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x82EFF] # 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 diff --git a/config/splat.ov_SC04_002.yaml b/config/splat.ov_SC04_002.yaml index e5af7fc1bb..d352fe195a 100644 --- a/config/splat.ov_SC04_002.yaml +++ b/config/splat.ov_SC04_002.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC04_002] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC04_002_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC04_002_after] # -O2 after whale (0x1D64C..data tail) - - [0x6024C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x6024c, data, tail] + - [0x96854, .rodata, ov_SC04_002] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x96920, data, tail2] - [0x995DC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x995DF] # 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 diff --git a/config/splat.ov_SC04_003.yaml b/config/splat.ov_SC04_003.yaml index 54344aada8..1d0276a094 100644 --- a/config/splat.ov_SC04_003.yaml +++ b/config/splat.ov_SC04_003.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC04_003] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC04_003_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC04_003_after] # -O2 after whale (0x1D64C..data tail) - - [0x59FE8, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x59fe8, data, tail] + - [0x714d0, .rodata, ov_SC04_003] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x7159c, data, tail2] - [0x73A94, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x73A97] # 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 diff --git a/config/splat.ov_SC04_004.yaml b/config/splat.ov_SC04_004.yaml index e9a010efbd..c65ff3a725 100644 --- a/config/splat.ov_SC04_004.yaml +++ b/config/splat.ov_SC04_004.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC04_004] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC04_004_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC04_004_after] # -O2 after whale (0x1D64C..data tail) - - [0x5C51C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5c51c, data, tail] + - [0x892cc, .rodata, ov_SC04_004] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x89398, data, tail2] - [0x8BAFC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x8BAFF] # 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 diff --git a/config/splat.ov_SC04_005.yaml b/config/splat.ov_SC04_005.yaml index 2febafedb5..c0a96c3ecd 100644 --- a/config/splat.ov_SC04_005.yaml +++ b/config/splat.ov_SC04_005.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC04_005] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC04_005_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC04_005_after] # -O2 after whale (0x1D64C..data tail) - - [0x5F950, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5f950, data, tail] + - [0x97490, .rodata, ov_SC04_005] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9755c, data, tail2] - [0x9A1D4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9A1D7] # 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 diff --git a/config/splat.ov_SC04_006.yaml b/config/splat.ov_SC04_006.yaml index d836abc5bb..15fe99e02f 100644 --- a/config/splat.ov_SC04_006.yaml +++ b/config/splat.ov_SC04_006.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC04_006] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC04_006_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC04_006_after] # -O2 after whale (0x1D64C..data tail) - - [0x57A30, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x57a30, data, tail] + - [0x73738, .rodata, ov_SC04_006] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x73804, data, tail2] - [0x75C74, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x75C77] # 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 diff --git a/config/splat.ov_SC04_007.yaml b/config/splat.ov_SC04_007.yaml index c998ff5326..3fc58d28fc 100644 --- a/config/splat.ov_SC04_007.yaml +++ b/config/splat.ov_SC04_007.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC04_007] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC04_007_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC04_007_after] # -O2 after whale (0x1D64C..data tail) - - [0x5D9E8, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5d9e8, data, tail] + - [0x8acf4, .rodata, ov_SC04_007] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x8adc0, data, tail2] - [0x8DA34, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x8DA37] # 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 diff --git a/config/splat.ov_SC04_008.yaml b/config/splat.ov_SC04_008.yaml index 6c3e354161..e75217271b 100644 --- a/config/splat.ov_SC04_008.yaml +++ b/config/splat.ov_SC04_008.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC04_008] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC04_008_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC04_008_after] # -O2 after whale (0x1D64C..data tail) - - [0x56920, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x56920, data, tail] + - [0x679dc, .rodata, ov_SC04_008] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x67aa8, data, tail2] - [0x6B364, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6B367] # 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 diff --git a/config/splat.ov_SC04_009.yaml b/config/splat.ov_SC04_009.yaml index f1c4142801..34bbf608b7 100644 --- a/config/splat.ov_SC04_009.yaml +++ b/config/splat.ov_SC04_009.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC04_009] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC04_009_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC04_009_after] # -O2 after whale (0x1D64C..data tail) - - [0x5694C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5694c, data, tail] + - [0x6dbf0, .rodata, ov_SC04_009] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6dcbc, data, tail2] - [0x70114, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x70117] # 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 diff --git a/config/splat.ov_SC04_010.yaml b/config/splat.ov_SC04_010.yaml index 77f62f3c1e..59b40ac5c7 100644 --- a/config/splat.ov_SC04_010.yaml +++ b/config/splat.ov_SC04_010.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC04_010] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC04_010_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC04_010_after] # -O2 after whale (0x1D64C..data tail) - - [0x55FF8, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x55ff8, data, tail] + - [0x6507c, .rodata, ov_SC04_010] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x65148, data, tail2] - [0x675EC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x675EF] # 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 diff --git a/config/splat.ov_SC04_011.yaml b/config/splat.ov_SC04_011.yaml index c07150c419..0d9e4dc246 100644 --- a/config/splat.ov_SC04_011.yaml +++ b/config/splat.ov_SC04_011.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC04_011] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC04_011_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC04_011_after] # -O2 after whale (0x1D64C..data tail) - - [0x68288, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x68288, data, tail] + - [0xc4618, .rodata, ov_SC04_011] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc46e4, data, tail2] - [0xC9554, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC9557] # 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 diff --git a/config/splat.ov_SC04_012.yaml b/config/splat.ov_SC04_012.yaml index fd39ddd840..ff68ec95ff 100644 --- a/config/splat.ov_SC04_012.yaml +++ b/config/splat.ov_SC04_012.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC04_012] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC04_012_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC04_012_after] # -O2 after whale (0x1D64C..data tail) - - [0x5645C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5645c, data, tail] + - [0x6775c, .rodata, ov_SC04_012] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x67828, data, tail2] - [0x6B0E4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6B0E7] # 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 diff --git a/config/splat.ov_SC04_015.yaml b/config/splat.ov_SC04_015.yaml index 93934c74e6..df986f94fd 100644 --- a/config/splat.ov_SC04_015.yaml +++ b/config/splat.ov_SC04_015.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC04_015] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC04_015_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC04_015_after] # -O2 after whale (0x1D64C..data tail) - - [0x5C38C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5c38c, data, tail] + - [0x9e3f4, .rodata, ov_SC04_015] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9e4c0, data, tail2] - [0xA1284, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA1287] # 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 diff --git a/config/splat.ov_SC04_016.yaml b/config/splat.ov_SC04_016.yaml index b85a2ec4a0..468ff0f4c6 100644 --- a/config/splat.ov_SC04_016.yaml +++ b/config/splat.ov_SC04_016.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC04_016] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC04_016_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC04_016_after] # -O2 after whale (0x1D64C..data tail) - - [0x57E58, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x57e58, data, tail] + - [0x7c5ac, .rodata, ov_SC04_016] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x7c678, data, tail2] - [0x84184, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x84187] # 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 diff --git a/config/splat.ov_SC04_018.yaml b/config/splat.ov_SC04_018.yaml index 05e439dbde..f486bf5117 100644 --- a/config/splat.ov_SC04_018.yaml +++ b/config/splat.ov_SC04_018.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC04_018] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC04_018_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC04_018_after] # -O2 after whale (0x1D64C..data tail) - - [0x64DD0, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x64dd0, data, tail] + - [0xbc3c4, .rodata, ov_SC04_018] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xbc490, data, tail2] - [0xBF9CC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xBF9CF] # 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 diff --git a/config/splat.ov_SC04_019.yaml b/config/splat.ov_SC04_019.yaml index a8b1da298b..b6df16b434 100644 --- a/config/splat.ov_SC04_019.yaml +++ b/config/splat.ov_SC04_019.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC04_019] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC04_019_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC04_019_after] # -O2 after whale (0x1D64C..data tail) - - [0x64DD0, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x64dd0, data, tail] + - [0xbc3c4, .rodata, ov_SC04_019] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xbc490, data, tail2] - [0xBF9CC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xBF9CF] # 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 diff --git a/config/splat.ov_SC04_020.yaml b/config/splat.ov_SC04_020.yaml index 4ee35c08f9..eef833489a 100644 --- a/config/splat.ov_SC04_020.yaml +++ b/config/splat.ov_SC04_020.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC04_020] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC04_020_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC04_020_after] # -O2 after whale (0x1D64C..data tail) - - [0x5B1A8, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5b1a8, data, tail] + - [0x91dec, .rodata, ov_SC04_020] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x91eb8, data, tail2] - [0x94654, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x94657] # 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 diff --git a/config/splat.ov_SC04_021.yaml b/config/splat.ov_SC04_021.yaml index bdd879fac5..5dda9a76af 100644 --- a/config/splat.ov_SC04_021.yaml +++ b/config/splat.ov_SC04_021.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC04_021] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC04_021_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC04_021_after] # -O2 after whale (0x1D64C..data tail) - - [0x570D4, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x570d4, data, tail] + - [0x65488, .rodata, ov_SC04_021] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x65554, data, tail2] - [0x679D4, bin, trailing] # final 1 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x679D5] # 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 diff --git a/config/splat.ov_SC05_000.yaml b/config/splat.ov_SC05_000.yaml index c5f73ca35b..d88d4b18a7 100644 --- a/config/splat.ov_SC05_000.yaml +++ b/config/splat.ov_SC05_000.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC05_000] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC05_000_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC05_000_after] # -O2 after whale (0x1D64C..data tail) - - [0x560E8, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x560e8, data, tail] + - [0x705d8, .rodata, ov_SC05_000] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x706a4, data, tail2] - [0x72AFC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x72AFF] # 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 diff --git a/config/splat.ov_SC05_001.yaml b/config/splat.ov_SC05_001.yaml index 710f592f35..4b4a7d82ce 100644 --- a/config/splat.ov_SC05_001.yaml +++ b/config/splat.ov_SC05_001.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC05_001] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC05_001_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC05_001_after] # -O2 after whale (0x1D64C..data tail) - - [0x5D8C4, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5d8c4, data, tail] + - [0x8b58c, .rodata, ov_SC05_001] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x8b658, data, tail2] - [0x8DEAC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x8DEAF] # 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 diff --git a/config/splat.ov_SC05_002.yaml b/config/splat.ov_SC05_002.yaml index 103dfb1cca..2b30acb9ea 100644 --- a/config/splat.ov_SC05_002.yaml +++ b/config/splat.ov_SC05_002.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC05_002] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC05_002_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC05_002_after] # -O2 after whale (0x1D64C..data tail) - - [0x58084, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x58084, data, tail] + - [0x75938, .rodata, ov_SC05_002] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x75a04, data, tail2] - [0x77E64, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x77E67] # 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 diff --git a/config/splat.ov_SC05_003.yaml b/config/splat.ov_SC05_003.yaml index 91ff768b03..ec4b733100 100644 --- a/config/splat.ov_SC05_003.yaml +++ b/config/splat.ov_SC05_003.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC05_003] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC05_003_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC05_003_after] # -O2 after whale (0x1D64C..data tail) - - [0x5A3BC, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5a3bc, data, tail] + - [0x82434, .rodata, ov_SC05_003] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x82500, data, tail2] - [0x84974, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x84977] # 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 diff --git a/config/splat.ov_SC05_004.yaml b/config/splat.ov_SC05_004.yaml index c502b5b84a..60304a9d93 100644 --- a/config/splat.ov_SC05_004.yaml +++ b/config/splat.ov_SC05_004.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC05_004] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC05_004_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC05_004_after] # -O2 after whale (0x1D64C..data tail) - - [0x594C8, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x594c8, data, tail] + - [0x74a28, .rodata, ov_SC05_004] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x74af4, data, tail2] - [0x771CC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x771CF] # 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 diff --git a/config/splat.ov_SC05_005.yaml b/config/splat.ov_SC05_005.yaml index 34f539530f..ba7fbfb3e2 100644 --- a/config/splat.ov_SC05_005.yaml +++ b/config/splat.ov_SC05_005.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC05_005] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC05_005_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC05_005_after] # -O2 after whale (0x1D64C..data tail) - - [0x5A29C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5a29c, data, tail] + - [0x87710, .rodata, ov_SC05_005] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x877dc, data, tail2] - [0x89ED4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x89ED7] # 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 diff --git a/config/splat.ov_SC05_006.yaml b/config/splat.ov_SC05_006.yaml index f1ecc357bb..0aaafddb77 100644 --- a/config/splat.ov_SC05_006.yaml +++ b/config/splat.ov_SC05_006.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC05_006] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC05_006_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC05_006_after] # -O2 after whale (0x1D64C..data tail) - - [0x572BC, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x572bc, data, tail] + - [0x65860, .rodata, ov_SC05_006] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6592c, data, tail2] - [0x68004, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x68007] # 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 diff --git a/config/splat.ov_SC05_007.yaml b/config/splat.ov_SC05_007.yaml index 28c6da3620..c8dfb66c6c 100644 --- a/config/splat.ov_SC05_007.yaml +++ b/config/splat.ov_SC05_007.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC05_007] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC05_007_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC05_007_after] # -O2 after whale (0x1D64C..data tail) - - [0x588B8, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x588b8, data, tail] + - [0x72838, .rodata, ov_SC05_007] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x72904, data, tail2] - [0x74DA4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x74DA7] # 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 diff --git a/config/splat.ov_SC05_008.yaml b/config/splat.ov_SC05_008.yaml index 17711941be..92fe05444d 100644 --- a/config/splat.ov_SC05_008.yaml +++ b/config/splat.ov_SC05_008.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC05_008] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC05_008_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC05_008_after] # -O2 after whale (0x1D64C..data tail) - - [0x5A810, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5a810, data, tail] + - [0x76b6c, .rodata, ov_SC05_008] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x76c38, data, tail2] - [0x79190, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x79193] # 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 diff --git a/config/splat.ov_SC05_009.yaml b/config/splat.ov_SC05_009.yaml index 8c1db9aab1..ad00cca9e9 100644 --- a/config/splat.ov_SC05_009.yaml +++ b/config/splat.ov_SC05_009.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC05_009] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC05_009_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC05_009_after] # -O2 after whale (0x1D64C..data tail) - - [0x56920, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x56920, data, tail] + - [0x6c580, .rodata, ov_SC05_009] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6c64c, data, tail2] - [0x6EAEC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6EAEF] # 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 diff --git a/config/splat.ov_SC05_010.yaml b/config/splat.ov_SC05_010.yaml index 4a1be6e9b6..7ff7afcad4 100644 --- a/config/splat.ov_SC05_010.yaml +++ b/config/splat.ov_SC05_010.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC05_010] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC05_010_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC05_010_after] # -O2 after whale (0x1D64C..data tail) - - [0x607FC, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x607fc, data, tail] + - [0x9c7b4, .rodata, ov_SC05_010] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9c880, data, tail2] - [0x9FED4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9FED7] # 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 diff --git a/config/splat.ov_SC05_011.yaml b/config/splat.ov_SC05_011.yaml index a701afd7c5..78f095afd7 100644 --- a/config/splat.ov_SC05_011.yaml +++ b/config/splat.ov_SC05_011.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC05_011] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC05_011_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC05_011_after] # -O2 after whale (0x1D64C..data tail) - - [0x55B74, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x55b74, data, tail] + - [0x72b18, .rodata, ov_SC05_011] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x72be4, data, tail2] - [0x75084, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x75087] # 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 diff --git a/config/splat.ov_SC05_017.yaml b/config/splat.ov_SC05_017.yaml index 76ee86392d..67c5ba3b82 100644 --- a/config/splat.ov_SC05_017.yaml +++ b/config/splat.ov_SC05_017.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC05_017] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC05_017_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC05_017_after] # -O2 after whale (0x1D64C..data tail) - - [0x64D94, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x64d94, data, tail] + - [0xc2200, .rodata, ov_SC05_017] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc22cc, data, tail2] - [0xC582C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC582F] # 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 diff --git a/config/splat.ov_SC05_018.yaml b/config/splat.ov_SC05_018.yaml index 38f1280a3e..c6110151e0 100644 --- a/config/splat.ov_SC05_018.yaml +++ b/config/splat.ov_SC05_018.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC05_018] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC05_018_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC05_018_after] # -O2 after whale (0x1D64C..data tail) - - [0x5E790, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5e790, data, tail] + - [0xbbd74, .rodata, ov_SC05_018] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xbbe40, data, tail2] - [0xBE734, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xBE737] # 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 diff --git a/config/splat.ov_SC05_019.yaml b/config/splat.ov_SC05_019.yaml index 5a5ae06276..35b95c799e 100644 --- a/config/splat.ov_SC05_019.yaml +++ b/config/splat.ov_SC05_019.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC05_019] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC05_019_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC05_019_after] # -O2 after whale (0x1D64C..data tail) - - [0x570D4, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x570d4, data, tail] + - [0x65488, .rodata, ov_SC05_019] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x65554, data, tail2] - [0x679D4, bin, trailing] # final 1 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x679D5] # 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 diff --git a/config/splat.ov_SC06_000.yaml b/config/splat.ov_SC06_000.yaml index 37e3274e44..fe361daecc 100644 --- a/config/splat.ov_SC06_000.yaml +++ b/config/splat.ov_SC06_000.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC06_000] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC06_000_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC06_000_after] # -O2 after whale (0x1D64C..data tail) - - [0x600E4, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x600e4, data, tail] + - [0x84100, .rodata, ov_SC06_000] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x841cc, data, tail2] - [0x8A02C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x8A02F] # 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 diff --git a/config/splat.ov_SC06_006.yaml b/config/splat.ov_SC06_006.yaml index b5971b44f7..f93e829a86 100644 --- a/config/splat.ov_SC06_006.yaml +++ b/config/splat.ov_SC06_006.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC06_006] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC06_006_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC06_006_after] # -O2 after whale (0x1D64C..data tail) - - [0x59C08, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x59c08, data, tail] + - [0xcda08, .rodata, ov_SC06_006] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xcdad4, data, tail2] - [0xD0A0C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xD0A0F] # 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 diff --git a/config/splat.ov_SC06_008.yaml b/config/splat.ov_SC06_008.yaml index 9e8f87ed1e..6efee5cf55 100644 --- a/config/splat.ov_SC06_008.yaml +++ b/config/splat.ov_SC06_008.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC06_008] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC06_008_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC06_008_after] # -O2 after whale (0x1D64C..data tail) - - [0x5D670, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5d670, data, tail] + - [0x7fae0, .rodata, ov_SC06_008] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x7fbac, data, tail2] - [0x826DC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x826DF] # 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 diff --git a/config/splat.ov_SC06_010.yaml b/config/splat.ov_SC06_010.yaml index 34b9c64a29..1cbea075e2 100644 --- a/config/splat.ov_SC06_010.yaml +++ b/config/splat.ov_SC06_010.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC06_010] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC06_010_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC06_010_after] # -O2 after whale (0x1D64C..data tail) - - [0x5E84C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5e84c, data, tail] + - [0x87b34, .rodata, ov_SC06_010] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x87c00, data, tail2] - [0x8AB24, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x8AB27] # 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 diff --git a/config/splat.ov_SC06_011.yaml b/config/splat.ov_SC06_011.yaml index a74b08d540..c66c022cb6 100644 --- a/config/splat.ov_SC06_011.yaml +++ b/config/splat.ov_SC06_011.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC06_011] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC06_011_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC06_011_after] # -O2 after whale (0x1D64C..data tail) - - [0x582AC, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x582ac, data, tail] + - [0x81694, .rodata, ov_SC06_011] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x81760, data, tail2] - [0x83BFC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x83BFF] # 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 diff --git a/config/splat.ov_SC06_013.yaml b/config/splat.ov_SC06_013.yaml index 0b68fb7a9d..ac99068b36 100644 --- a/config/splat.ov_SC06_013.yaml +++ b/config/splat.ov_SC06_013.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC06_013] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC06_013_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC06_013_after] # -O2 after whale (0x1D64C..data tail) - - [0x56A28, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x56a28, data, tail] + - [0x70568, .rodata, ov_SC06_013] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x70634, data, tail2] - [0x72AAC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x72AAF] # 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 diff --git a/config/splat.ov_SC06_014.yaml b/config/splat.ov_SC06_014.yaml index 3ddaeb6948..437849421d 100644 --- a/config/splat.ov_SC06_014.yaml +++ b/config/splat.ov_SC06_014.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC06_014] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC06_014_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC06_014_after] # -O2 after whale (0x1D64C..data tail) - - [0x57D8C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x57d8c, data, tail] + - [0x76f58, .rodata, ov_SC06_014] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x77024, data, tail2] - [0x794C4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x794C7] # 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 diff --git a/config/splat.ov_SC06_015.yaml b/config/splat.ov_SC06_015.yaml index f76892f09b..4906d2e717 100644 --- a/config/splat.ov_SC06_015.yaml +++ b/config/splat.ov_SC06_015.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC06_015] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC06_015_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC06_015_after] # -O2 after whale (0x1D64C..data tail) - - [0x568E4, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x568e4, data, tail] + - [0x6a338, .rodata, ov_SC06_015] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6a404, data, tail2] - [0x6C8A4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6C8A7] # 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 diff --git a/config/splat.ov_SC06_016.yaml b/config/splat.ov_SC06_016.yaml index 9bd711e5aa..adbab720d7 100644 --- a/config/splat.ov_SC06_016.yaml +++ b/config/splat.ov_SC06_016.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC06_016] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC06_016_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC06_016_after] # -O2 after whale (0x1D64C..data tail) - - [0x5CCF4, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5ccf4, data, tail] + - [0x74f80, .rodata, ov_SC06_016] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x7504c, data, tail2] - [0x78114, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x78117] # 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 diff --git a/config/splat.ov_SC06_018.yaml b/config/splat.ov_SC06_018.yaml index 6e0a361b8b..27e2b5727c 100644 --- a/config/splat.ov_SC06_018.yaml +++ b/config/splat.ov_SC06_018.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC06_018] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC06_018_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC06_018_after] # -O2 after whale (0x1D64C..data tail) - - [0x6B430, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x6b430, data, tail] + - [0xaa810, .rodata, ov_SC06_018] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xaa8dc, data, tail2] - [0xADA44, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xADA47] # 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 diff --git a/config/splat.ov_SC06_020.yaml b/config/splat.ov_SC06_020.yaml index 01718b6d14..2d6a5b7e60 100644 --- a/config/splat.ov_SC06_020.yaml +++ b/config/splat.ov_SC06_020.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC06_020] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC06_020_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC06_020_after] # -O2 after whale (0x1D64C..data tail) - - [0x5CEB8, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5ceb8, data, tail] + - [0x900f8, .rodata, ov_SC06_020] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x901c4, data, tail2] - [0x92894, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x92897] # 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 diff --git a/config/splat.ov_SC06_022.yaml b/config/splat.ov_SC06_022.yaml index a377b21bb9..7ec95286fb 100644 --- a/config/splat.ov_SC06_022.yaml +++ b/config/splat.ov_SC06_022.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC06_022] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC06_022_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC06_022_after] # -O2 after whale (0x1D64C..data tail) - - [0x65174, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x65174, data, tail] + - [0xb7908, .rodata, ov_SC06_022] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xb79d4, data, tail2] - [0xBA114, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xBA117] # 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 diff --git a/config/splat.ov_SC06_024.yaml b/config/splat.ov_SC06_024.yaml index 89935c30ad..ce951b35cd 100644 --- a/config/splat.ov_SC06_024.yaml +++ b/config/splat.ov_SC06_024.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC06_024] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC06_024_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC06_024_after] # -O2 after whale (0x1D64C..data tail) - - [0x6764C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x6764c, data, tail] + - [0xb6a4c, .rodata, ov_SC06_024] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xb6b18, data, tail2] - [0xB980C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xB980F] # 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 diff --git a/config/splat.ov_SC06_025.yaml b/config/splat.ov_SC06_025.yaml index 0a5bed76e1..7af72c4eb9 100644 --- a/config/splat.ov_SC06_025.yaml +++ b/config/splat.ov_SC06_025.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC06_025] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC06_025_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC06_025_after] # -O2 after whale (0x1D64C..data tail) - - [0x5CAF0, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5caf0, data, tail] + - [0x86d6c, .rodata, ov_SC06_025] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x86e38, data, tail2] - [0x8A12C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x8A12F] # 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 diff --git a/config/splat.ov_SC06_027.yaml b/config/splat.ov_SC06_027.yaml index 86a3a30aa6..f9addaea3a 100644 --- a/config/splat.ov_SC06_027.yaml +++ b/config/splat.ov_SC06_027.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC06_027] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC06_027_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC06_027_after] # -O2 after whale (0x1D64C..data tail) - - [0x55E30, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x55e30, data, tail] + - [0x72da8, .rodata, ov_SC06_027] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x72e74, data, tail2] - [0x752D4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x752D7] # 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 diff --git a/config/splat.ov_SC06_029.yaml b/config/splat.ov_SC06_029.yaml index 662ca621d7..f751ac88ca 100644 --- a/config/splat.ov_SC06_029.yaml +++ b/config/splat.ov_SC06_029.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC06_029] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC06_029_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC06_029_after] # -O2 after whale (0x1D64C..data tail) - - [0x643C0, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x643c0, data, tail] + - [0xb2424, .rodata, ov_SC06_029] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xb24f0, data, tail2] - [0xBA034, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xBA037] # 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 diff --git a/config/splat.ov_SC06_030.yaml b/config/splat.ov_SC06_030.yaml index bc77736f88..ad2ce047d0 100644 --- a/config/splat.ov_SC06_030.yaml +++ b/config/splat.ov_SC06_030.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC06_030] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC06_030_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC06_030_after] # -O2 after whale (0x1D64C..data tail) - - [0x59CB4, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x59cb4, data, tail] + - [0x8f788, .rodata, ov_SC06_030] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x8f854, data, tail2] - [0x91F2C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x91F2F] # 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 diff --git a/config/splat.ov_SC06_032.yaml b/config/splat.ov_SC06_032.yaml index ad3ad34807..92d6c0dea5 100644 --- a/config/splat.ov_SC06_032.yaml +++ b/config/splat.ov_SC06_032.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC06_032] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC06_032_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC06_032_after] # -O2 after whale (0x1D64C..data tail) - - [0x6B180, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x6b180, data, tail] + - [0xa5de4, .rodata, ov_SC06_032] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa5eb0, data, tail2] - [0xA9014, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA9017] # 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 diff --git a/config/splat.ov_SC06_033.yaml b/config/splat.ov_SC06_033.yaml index 28d313f8b2..9ec25acf96 100644 --- a/config/splat.ov_SC06_033.yaml +++ b/config/splat.ov_SC06_033.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC06_033] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC06_033_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC06_033_after] # -O2 after whale (0x1D64C..data tail) - - [0x69690, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x69690, data, tail] + - [0xa5e98, .rodata, ov_SC06_033] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa5f64, data, tail2] - [0xA8E94, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA8E97] # 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 diff --git a/config/splat.ov_SC07_000.yaml b/config/splat.ov_SC07_000.yaml index b9339a9f2c..9a08e648d2 100644 --- a/config/splat.ov_SC07_000.yaml +++ b/config/splat.ov_SC07_000.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC07_000] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC07_000_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC07_000_after] # -O2 after whale (0x1D64C..data tail) - - [0x5A4D8, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5a4d8, data, tail] + - [0xa54f4, .rodata, ov_SC07_000] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa55c0, data, tail2] - [0xA8B8C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA8B8F] # 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 diff --git a/config/splat.ov_SC07_001.yaml b/config/splat.ov_SC07_001.yaml index 96a7c5569f..bd0f227ebd 100644 --- a/config/splat.ov_SC07_001.yaml +++ b/config/splat.ov_SC07_001.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC07_001] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC07_001_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC07_001_after] # -O2 after whale (0x1D64C..data tail) - - [0x59388, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x59388, data, tail] + - [0x80690, .rodata, ov_SC07_001] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x8075c, data, tail2] - [0x82DB4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x82DB7] # 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 diff --git a/config/splat.ov_SC07_002.yaml b/config/splat.ov_SC07_002.yaml index e071f29a55..8e9180e179 100644 --- a/config/splat.ov_SC07_002.yaml +++ b/config/splat.ov_SC07_002.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC07_002] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC07_002_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC07_002_after] # -O2 after whale (0x1D64C..data tail) - - [0x5E644, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5e644, data, tail] + - [0x71078, .rodata, ov_SC07_002] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x71144, data, tail2] - [0x77F7C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x77F7F] # 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 diff --git a/config/splat.ov_SC07_008.yaml b/config/splat.ov_SC07_008.yaml index 8fe0d787f7..a89e08bb69 100644 --- a/config/splat.ov_SC07_008.yaml +++ b/config/splat.ov_SC07_008.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC07_008] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC07_008_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC07_008_after] # -O2 after whale (0x1D64C..data tail) - - [0x5515C, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x5515c, data, tail] + - [0x6c0c8, .rodata, ov_SC07_008] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6c194, data, tail2] - [0x6E5EC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6E5EF] # 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 diff --git a/config/splat.ov_SC07_009.yaml b/config/splat.ov_SC07_009.yaml index f339d247d3..ffa02ada1d 100644 --- a/config/splat.ov_SC07_009.yaml +++ b/config/splat.ov_SC07_009.yaml @@ -96,7 +96,9 @@ segments: - [0x0, c, ov_SC07_009] # -O2 before whale (file 0x0..0x1CA44) - [0x1CA44, c, ov_SC07_009_o0b] # -O0 whale func_80144B9C (0x1CA44..0x1D64C) - [0x1D64C, c, ov_SC07_009_after] # -O2 after whale (0x1D64C..data tail) - - [0x55C00, data, tail] # data tail: pointer tables + packed data (split iterated) + - [0x55c00, data, tail] + - [0x79754, .rodata, ov_SC07_009] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x79820, data, tail2] - [0x7BC7C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x7BC7F] # 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 diff --git a/docs/family-hseq.md b/docs/family-hseq.md index 6412fd2684..d322b25d63 100644 --- a/docs/family-hseq.md +++ b/docs/family-hseq.md @@ -2,11 +2,11 @@ > Generated by `tools/family_hseq.py` from the 134 overlay sigs + per-overlay src stubs. Ranked by TEMPLATABLE byte-weight (PURE+IMM members × nins × 4). The byte-gate is the arbiter. -**Fleet (overlays):** 82.4% fn / 62.9% instr / 39.0% distinct-code matched. Unmatched: 60,084 instances / 4,709,410 ins (34,403 distinct classes). +**Fleet (overlays):** 82.5% fn / 63.0% instr / 39.1% distinct-code matched. Unmatched: 59,951 instances / 4,706,085 ins (34,277 distinct classes). **Tail cross-check (Phase-25 close):** 42,410 tail fns / 2,374,846 ins → 604 h_seq families ≥2, **180 substantial (nins≥80) / 1,771,244 ins**. -**Full frontier (all unmatched by h_seq):** 2734 target families (≥2 members or a matched sibling) + 3553 singletons (Step-D residue). Substantial: **575 families / 3,090,897 templatable ins**, 29 with a matched sibling (zero-crack). Substantial member classes: 17,052 PURE · 39 IMM · 6 STRUCT-excluded. +**Full frontier (all unmatched by h_seq):** 2733 target families (≥2 members or a matched sibling) + 3553 singletons (Step-D residue). Substantial: **575 families / 3,090,897 templatable ins**, 29 with a matched sibling (zero-crack). Substantial member classes: 17,052 PURE · 39 IMM · 6 STRUCT-excluded. ## Top substantial families (by templatable byte-weight) diff --git a/docs/progress.fleet.md b/docs/progress.fleet.md index 879d7adec7..866430dcb7 100644 --- a/docs/progress.fleet.md +++ b/docs/progress.fleet.md @@ -4,151 +4,151 @@ # cross-binary collapsible-byte leverage: docs/duplicates.cross.md. # THREE progress metrics (all matter — see the labels): -FLEET fn-count byte-ident: 282792 / 344038 = 82.20% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) -FLEET instr-weighted : 7996118 / 12707182 = 62.9% (shipped .text across resident+134 overlays; the decomp.dev-DISPLAY number) -FLEET distinct-code(uniq): 2113000 / 5410077 = 39.1% (50572/84996 unique fns; the DISTINCT-RE number; main EXE not sig'd) +FLEET fn-count byte-ident: 282925 / 344038 = 82.24% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) +FLEET instr-weighted : 7999443 / 12707182 = 63.0% (shipped .text across resident+134 overlays; the decomp.dev-DISPLAY number) +FLEET distinct-code(uniq): 2116150 / 5410077 = 39.1% (50698/84996 unique fns; the DISTINCT-RE number; main EXE not sig'd) -FLEET REAL substantive : 281263 (of which dedup-shared 223275 via 1813 groups / 223725 instances) +FLEET REAL substantive : 281396 (of which dedup-shared 223275 via 1813 groups / 223725 instances) FLEET LINKED PsyQ objs : 959 FLEET NON_MATCHING : 7 (0 in any default build — G4) -FLEET INCLUDE_ASM stubs : 61239 +FLEET INCLUDE_ASM stubs : 61106 FLEET matchable : 344038 | binary | REAL | shared | LINKED | byte-ident | matchable | byte-ident % | |---|---:|---:|---:|---:|---:|---:| | main | 54 | 2 | 959 | 1055 | 2096 | 50.3% | | resident | 123 | 0 | 0 | 125 | 146 | 85.6% | -| ov_SC01_000 | 2071 | 1669 | 0 | 2071 | 2405 | 86.1% | -| ov_SC01_001 | 2076 | 1669 | 0 | 2078 | 2469 | 84.2% | -| ov_SC01_004 | 2068 | 1660 | 0 | 2069 | 2416 | 85.6% | -| ov_SC01_005 | 2094 | 1682 | 0 | 2094 | 2506 | 83.6% | -| ov_SC01_006 | 2094 | 1682 | 0 | 2094 | 2506 | 83.6% | -| ov_SC01_008 | 2067 | 1660 | 0 | 2069 | 2428 | 85.2% | -| ov_SC01_009 | 2088 | 1661 | 0 | 2089 | 2510 | 83.2% | -| ov_SC01_074 | 2072 | 1661 | 0 | 2074 | 2427 | 85.5% | +| ov_SC01_000 | 2072 | 1669 | 0 | 2072 | 2405 | 86.2% | +| ov_SC01_001 | 2077 | 1669 | 0 | 2079 | 2469 | 84.2% | +| ov_SC01_004 | 2069 | 1660 | 0 | 2070 | 2416 | 85.7% | +| ov_SC01_005 | 2095 | 1682 | 0 | 2095 | 2506 | 83.6% | +| ov_SC01_006 | 2095 | 1682 | 0 | 2095 | 2506 | 83.6% | +| ov_SC01_008 | 2068 | 1660 | 0 | 2070 | 2428 | 85.3% | +| ov_SC01_009 | 2089 | 1661 | 0 | 2090 | 2510 | 83.3% | +| ov_SC01_074 | 2073 | 1661 | 0 | 2075 | 2427 | 85.5% | | ov_SC01_077 | 2309 | 1624 | 0 | 2311 | 2584 | 89.4% | -| ov_SC01_080 | 2104 | 1664 | 0 | 2104 | 2515 | 83.7% | -| ov_SC01_084 | 2111 | 1664 | 0 | 2116 | 2581 | 82.0% | -| ov_SC02_000 | 2156 | 1699 | 0 | 2156 | 2686 | 80.3% | -| ov_SC02_003 | 2156 | 1699 | 0 | 2156 | 2686 | 80.3% | -| ov_SC02_004 | 2073 | 1664 | 0 | 2073 | 2403 | 86.3% | -| ov_SC02_005 | 2174 | 1660 | 0 | 2184 | 2930 | 74.5% | -| ov_SC02_011 | 2179 | 1667 | 0 | 2190 | 2896 | 75.6% | -| ov_SC02_015 | 2078 | 1666 | 0 | 2078 | 2416 | 86.0% | -| ov_SC02_016 | 2103 | 1666 | 0 | 2106 | 2548 | 82.7% | -| ov_SC02_017 | 2146 | 1666 | 0 | 2154 | 2735 | 78.8% | -| ov_SC02_021 | 2084 | 1666 | 0 | 2084 | 2439 | 85.4% | -| ov_SC02_026 | 2093 | 1664 | 0 | 2099 | 2575 | 81.5% | -| ov_SC02_027 | 2118 | 1664 | 0 | 2127 | 2695 | 78.9% | -| ov_SC02_028 | 2119 | 1664 | 0 | 2129 | 2704 | 78.7% | -| ov_SC02_031 | 2107 | 1665 | 0 | 2112 | 2565 | 82.3% | -| ov_SC02_035 | 2084 | 1664 | 0 | 2087 | 2523 | 82.7% | -| ov_SC02_039 | 2068 | 1664 | 0 | 2068 | 2418 | 85.5% | -| ov_SC02_041 | 2095 | 1664 | 0 | 2098 | 2563 | 81.9% | -| ov_SC03_001 | 2200 | 1665 | 0 | 2217 | 2872 | 77.2% | -| ov_SC03_002 | 2130 | 1669 | 0 | 2145 | 2634 | 81.4% | -| ov_SC03_003 | 2073 | 1664 | 0 | 2074 | 2425 | 85.5% | -| ov_SC03_006 | 2140 | 1670 | 0 | 2149 | 2770 | 77.6% | -| ov_SC03_007 | 2120 | 1664 | 0 | 2124 | 2626 | 80.9% | -| ov_SC03_010 | 2083 | 1664 | 0 | 2083 | 2472 | 84.3% | -| ov_SC03_011 | 2088 | 1664 | 0 | 2094 | 2530 | 82.8% | -| ov_SC03_012 | 2067 | 1664 | 0 | 2068 | 2408 | 85.9% | -| ov_SC03_013 | 2084 | 1664 | 0 | 2084 | 2495 | 83.5% | -| ov_SC03_014 | 2132 | 1689 | 0 | 2132 | 2688 | 79.3% | -| ov_SC03_015 | 2135 | 1689 | 0 | 2135 | 2688 | 79.4% | -| ov_SC03_023 | 2073 | 1664 | 0 | 2074 | 2437 | 85.1% | -| ov_SC03_024 | 2127 | 1669 | 0 | 2134 | 2644 | 80.7% | -| ov_SC03_028 | 2110 | 1664 | 0 | 2114 | 2667 | 79.3% | -| ov_SC03_029 | 2111 | 1666 | 0 | 2121 | 2647 | 80.1% | -| ov_SC03_030 | 2090 | 1668 | 0 | 2092 | 2498 | 83.7% | -| ov_SC03_031 | 2084 | 1664 | 0 | 2088 | 2517 | 83.0% | -| ov_SC03_089 | 2101 | 1664 | 0 | 2108 | 2584 | 81.6% | -| ov_SC03_090 | 2103 | 1664 | 0 | 2111 | 2628 | 80.3% | -| ov_SC03_091 | 2104 | 1664 | 0 | 2112 | 2643 | 79.9% | -| ov_SC03_092 | 2110 | 1664 | 0 | 2122 | 2590 | 81.9% | -| ov_SC03_093 | 2091 | 1664 | 0 | 2095 | 2566 | 81.6% | -| ov_SC03_094 | 2086 | 1664 | 0 | 2092 | 2579 | 81.1% | -| ov_SC03_095 | 2077 | 1664 | 0 | 2080 | 2477 | 84.0% | -| ov_SC03_096 | 2077 | 1664 | 0 | 2080 | 2468 | 84.3% | -| ov_SC03_097 | 2100 | 1664 | 0 | 2107 | 2606 | 80.9% | -| ov_SC03_098 | 2084 | 1664 | 0 | 2087 | 2544 | 82.0% | -| ov_SC03_099 | 2078 | 1664 | 0 | 2081 | 2507 | 83.0% | -| ov_SC03_100 | 2085 | 1664 | 0 | 2089 | 2542 | 82.2% | -| ov_SC03_101 | 2086 | 1664 | 0 | 2090 | 2531 | 82.6% | -| ov_SC03_102 | 2081 | 1664 | 0 | 2084 | 2495 | 83.5% | -| ov_SC03_103 | 2085 | 1666 | 0 | 2088 | 2513 | 83.1% | -| ov_SC03_104 | 2104 | 1664 | 0 | 2111 | 2619 | 80.6% | -| ov_SC03_105 | 2098 | 1664 | 0 | 2105 | 2600 | 81.0% | -| ov_SC03_108 | 2070 | 1664 | 0 | 2070 | 2446 | 84.6% | -| ov_SC03_109 | 2071 | 1664 | 0 | 2073 | 2426 | 85.4% | -| ov_SC03_110 | 2076 | 1664 | 0 | 2076 | 2471 | 84.0% | -| ov_SC03_111 | 2084 | 1664 | 0 | 2087 | 2513 | 83.0% | -| ov_SC03_112 | 2082 | 1666 | 0 | 2084 | 2529 | 82.4% | -| ov_SC03_113 | 2076 | 1666 | 0 | 2079 | 2471 | 84.1% | -| ov_SC03_114 | 2066 | 1664 | 0 | 2068 | 2417 | 85.6% | -| ov_SC03_115 | 2080 | 1664 | 0 | 2082 | 2475 | 84.1% | -| ov_SC03_116 | 2074 | 1664 | 0 | 2077 | 2441 | 85.1% | -| ov_SC03_117 | 2092 | 1664 | 0 | 2098 | 2560 | 82.0% | -| ov_SC03_118 | 2135 | 1688 | 0 | 2136 | 2688 | 79.5% | -| ov_SC03_119 | 2132 | 1688 | 0 | 2133 | 2688 | 79.4% | -| ov_SC03_121 | 2077 | 1664 | 0 | 2080 | 2462 | 84.5% | -| ov_SC03_124 | 2149 | 1660 | 0 | 2169 | 2744 | 79.0% | -| ov_SC03_125 | 2112 | 1664 | 0 | 2124 | 2591 | 82.0% | -| ov_SC03_126 | 2074 | 1666 | 0 | 2074 | 2425 | 85.5% | -| ov_SC04_000 | 2091 | 1668 | 0 | 2100 | 2549 | 82.4% | -| ov_SC04_002 | 2105 | 1664 | 0 | 2109 | 2639 | 79.9% | -| ov_SC04_003 | 2083 | 1664 | 0 | 2087 | 2505 | 83.3% | -| ov_SC04_004 | 2097 | 1664 | 0 | 2099 | 2561 | 82.0% | -| ov_SC04_005 | 2098 | 1664 | 0 | 2104 | 2615 | 80.5% | -| ov_SC04_006 | 2074 | 1664 | 0 | 2076 | 2456 | 84.5% | -| ov_SC04_007 | 2093 | 1664 | 0 | 2097 | 2572 | 81.5% | -| ov_SC04_008 | 2070 | 1664 | 0 | 2070 | 2417 | 85.6% | -| ov_SC04_009 | 2078 | 1664 | 0 | 2081 | 2443 | 85.2% | -| ov_SC04_010 | 2074 | 1664 | 0 | 2075 | 2421 | 85.7% | -| ov_SC04_011 | 2124 | 1664 | 0 | 2130 | 2806 | 75.9% | -| ov_SC04_012 | 2072 | 1664 | 0 | 2073 | 2422 | 85.6% | -| ov_SC04_015 | 2132 | 1665 | 0 | 2143 | 2614 | 82.0% | -| ov_SC04_016 | 2071 | 1664 | 0 | 2073 | 2442 | 84.9% | -| ov_SC04_018 | 2178 | 1699 | 0 | 2178 | 2860 | 76.2% | -| ov_SC04_019 | 2184 | 1699 | 0 | 2184 | 2860 | 76.4% | -| ov_SC04_020 | 2101 | 1664 | 0 | 2113 | 2570 | 82.2% | -| ov_SC04_021 | 2073 | 1666 | 0 | 2073 | 2425 | 85.5% | -| ov_SC05_000 | 2077 | 1668 | 0 | 2080 | 2424 | 85.8% | -| ov_SC05_001 | 2093 | 1664 | 0 | 2098 | 2577 | 81.4% | -| ov_SC05_002 | 2076 | 1664 | 0 | 2079 | 2445 | 85.0% | -| ov_SC05_003 | 2076 | 1664 | 0 | 2077 | 2484 | 83.6% | -| ov_SC05_004 | 2074 | 1664 | 0 | 2076 | 2467 | 84.2% | -| ov_SC05_005 | 2078 | 1664 | 0 | 2079 | 2494 | 83.4% | -| ov_SC05_006 | 2072 | 1664 | 0 | 2072 | 2432 | 85.2% | -| ov_SC05_007 | 2079 | 1664 | 0 | 2084 | 2485 | 83.9% | -| ov_SC05_008 | 2098 | 1664 | 0 | 2100 | 2546 | 82.5% | -| ov_SC05_009 | 2074 | 1664 | 0 | 2078 | 2440 | 85.2% | -| ov_SC05_010 | 2098 | 1664 | 0 | 2102 | 2591 | 81.1% | -| ov_SC05_011 | 2075 | 1664 | 0 | 2076 | 2411 | 86.1% | -| ov_SC05_017 | 2174 | 1661 | 0 | 2185 | 2845 | 76.8% | -| ov_SC05_018 | 2124 | 1664 | 0 | 2137 | 2676 | 79.9% | -| ov_SC05_019 | 2073 | 1666 | 0 | 2073 | 2425 | 85.5% | -| ov_SC06_000 | 2134 | 1673 | 0 | 2137 | 2694 | 79.3% | -| ov_SC06_006 | 2082 | 1664 | 0 | 2083 | 2514 | 82.9% | -| ov_SC06_008 | 2098 | 1666 | 0 | 2104 | 2544 | 82.7% | -| ov_SC06_010 | 2085 | 1664 | 0 | 2090 | 2520 | 82.9% | -| ov_SC06_011 | 2082 | 1664 | 0 | 2086 | 2471 | 84.4% | -| ov_SC06_013 | 2075 | 1664 | 0 | 2076 | 2427 | 85.5% | -| ov_SC06_014 | 2079 | 1664 | 0 | 2081 | 2455 | 84.8% | -| ov_SC06_015 | 2076 | 1664 | 0 | 2076 | 2423 | 85.7% | -| ov_SC06_016 | 2094 | 1664 | 0 | 2096 | 2552 | 82.1% | -| ov_SC06_018 | 2092 | 1667 | 0 | 2099 | 2668 | 78.7% | -| ov_SC06_020 | 2082 | 1666 | 0 | 2083 | 2521 | 82.6% | -| ov_SC06_022 | 2098 | 1664 | 0 | 2106 | 2645 | 79.6% | -| ov_SC06_024 | 2104 | 1664 | 0 | 2110 | 2670 | 79.0% | -| ov_SC06_025 | 2091 | 1664 | 0 | 2096 | 2575 | 81.4% | -| ov_SC06_027 | 2066 | 1664 | 0 | 2067 | 2410 | 85.8% | -| ov_SC06_029 | 2119 | 1664 | 0 | 2131 | 2665 | 80.0% | -| ov_SC06_030 | 2077 | 1664 | 0 | 2077 | 2459 | 84.5% | -| ov_SC06_032 | 2088 | 1665 | 0 | 2095 | 2661 | 78.7% | -| ov_SC06_033 | 2092 | 1665 | 0 | 2099 | 2634 | 79.7% | -| ov_SC07_000 | 2091 | 1668 | 0 | 2093 | 2524 | 82.9% | -| ov_SC07_001 | 2078 | 1664 | 0 | 2080 | 2457 | 84.7% | -| ov_SC07_002 | 2095 | 1664 | 0 | 2099 | 2582 | 81.3% | -| ov_SC07_008 | 2062 | 1664 | 0 | 2062 | 2388 | 86.3% | -| ov_SC07_009 | 2073 | 1664 | 0 | 2075 | 2432 | 85.3% | +| ov_SC01_080 | 2105 | 1664 | 0 | 2105 | 2515 | 83.7% | +| ov_SC01_084 | 2112 | 1664 | 0 | 2117 | 2581 | 82.0% | +| ov_SC02_000 | 2157 | 1699 | 0 | 2157 | 2686 | 80.3% | +| ov_SC02_003 | 2157 | 1699 | 0 | 2157 | 2686 | 80.3% | +| ov_SC02_004 | 2074 | 1664 | 0 | 2074 | 2403 | 86.3% | +| ov_SC02_005 | 2175 | 1660 | 0 | 2185 | 2930 | 74.6% | +| ov_SC02_011 | 2180 | 1667 | 0 | 2191 | 2896 | 75.7% | +| ov_SC02_015 | 2079 | 1666 | 0 | 2079 | 2416 | 86.1% | +| ov_SC02_016 | 2104 | 1666 | 0 | 2107 | 2548 | 82.7% | +| ov_SC02_017 | 2147 | 1666 | 0 | 2155 | 2735 | 78.8% | +| ov_SC02_021 | 2085 | 1666 | 0 | 2085 | 2439 | 85.5% | +| ov_SC02_026 | 2094 | 1664 | 0 | 2100 | 2575 | 81.6% | +| ov_SC02_027 | 2119 | 1664 | 0 | 2128 | 2695 | 79.0% | +| ov_SC02_028 | 2120 | 1664 | 0 | 2130 | 2704 | 78.8% | +| ov_SC02_031 | 2108 | 1665 | 0 | 2113 | 2565 | 82.4% | +| ov_SC02_035 | 2085 | 1664 | 0 | 2088 | 2523 | 82.8% | +| ov_SC02_039 | 2069 | 1664 | 0 | 2069 | 2418 | 85.6% | +| ov_SC02_041 | 2096 | 1664 | 0 | 2099 | 2563 | 81.9% | +| ov_SC03_001 | 2201 | 1665 | 0 | 2218 | 2872 | 77.2% | +| ov_SC03_002 | 2131 | 1669 | 0 | 2146 | 2634 | 81.5% | +| ov_SC03_003 | 2074 | 1664 | 0 | 2075 | 2425 | 85.6% | +| ov_SC03_006 | 2141 | 1670 | 0 | 2150 | 2770 | 77.6% | +| ov_SC03_007 | 2121 | 1664 | 0 | 2125 | 2626 | 80.9% | +| ov_SC03_010 | 2084 | 1664 | 0 | 2084 | 2472 | 84.3% | +| ov_SC03_011 | 2089 | 1664 | 0 | 2095 | 2530 | 82.8% | +| ov_SC03_012 | 2068 | 1664 | 0 | 2069 | 2408 | 85.9% | +| ov_SC03_013 | 2085 | 1664 | 0 | 2085 | 2495 | 83.6% | +| ov_SC03_014 | 2133 | 1689 | 0 | 2133 | 2688 | 79.4% | +| ov_SC03_015 | 2136 | 1689 | 0 | 2136 | 2688 | 79.5% | +| ov_SC03_023 | 2074 | 1664 | 0 | 2075 | 2437 | 85.1% | +| ov_SC03_024 | 2128 | 1669 | 0 | 2135 | 2644 | 80.7% | +| ov_SC03_028 | 2111 | 1664 | 0 | 2115 | 2667 | 79.3% | +| ov_SC03_029 | 2112 | 1666 | 0 | 2122 | 2647 | 80.2% | +| ov_SC03_030 | 2091 | 1668 | 0 | 2093 | 2498 | 83.8% | +| ov_SC03_031 | 2085 | 1664 | 0 | 2089 | 2517 | 83.0% | +| ov_SC03_089 | 2102 | 1664 | 0 | 2109 | 2584 | 81.6% | +| ov_SC03_090 | 2104 | 1664 | 0 | 2112 | 2628 | 80.4% | +| ov_SC03_091 | 2105 | 1664 | 0 | 2113 | 2643 | 79.9% | +| ov_SC03_092 | 2111 | 1664 | 0 | 2123 | 2590 | 82.0% | +| ov_SC03_093 | 2092 | 1664 | 0 | 2096 | 2566 | 81.7% | +| ov_SC03_094 | 2087 | 1664 | 0 | 2093 | 2579 | 81.2% | +| ov_SC03_095 | 2078 | 1664 | 0 | 2081 | 2477 | 84.0% | +| ov_SC03_096 | 2078 | 1664 | 0 | 2081 | 2468 | 84.3% | +| ov_SC03_097 | 2101 | 1664 | 0 | 2108 | 2606 | 80.9% | +| ov_SC03_098 | 2085 | 1664 | 0 | 2088 | 2544 | 82.1% | +| ov_SC03_099 | 2079 | 1664 | 0 | 2082 | 2507 | 83.0% | +| ov_SC03_100 | 2086 | 1664 | 0 | 2090 | 2542 | 82.2% | +| ov_SC03_101 | 2087 | 1664 | 0 | 2091 | 2531 | 82.6% | +| ov_SC03_102 | 2082 | 1664 | 0 | 2085 | 2495 | 83.6% | +| ov_SC03_103 | 2086 | 1666 | 0 | 2089 | 2513 | 83.1% | +| ov_SC03_104 | 2105 | 1664 | 0 | 2112 | 2619 | 80.6% | +| ov_SC03_105 | 2099 | 1664 | 0 | 2106 | 2600 | 81.0% | +| ov_SC03_108 | 2071 | 1664 | 0 | 2071 | 2446 | 84.7% | +| ov_SC03_109 | 2072 | 1664 | 0 | 2074 | 2426 | 85.5% | +| ov_SC03_110 | 2077 | 1664 | 0 | 2077 | 2471 | 84.1% | +| ov_SC03_111 | 2085 | 1664 | 0 | 2088 | 2513 | 83.1% | +| ov_SC03_112 | 2083 | 1666 | 0 | 2085 | 2529 | 82.4% | +| ov_SC03_113 | 2077 | 1666 | 0 | 2080 | 2471 | 84.2% | +| ov_SC03_114 | 2067 | 1664 | 0 | 2069 | 2417 | 85.6% | +| ov_SC03_115 | 2081 | 1664 | 0 | 2083 | 2475 | 84.2% | +| ov_SC03_116 | 2075 | 1664 | 0 | 2078 | 2441 | 85.1% | +| ov_SC03_117 | 2093 | 1664 | 0 | 2099 | 2560 | 82.0% | +| ov_SC03_118 | 2136 | 1688 | 0 | 2137 | 2688 | 79.5% | +| ov_SC03_119 | 2133 | 1688 | 0 | 2134 | 2688 | 79.4% | +| ov_SC03_121 | 2078 | 1664 | 0 | 2081 | 2462 | 84.5% | +| ov_SC03_124 | 2150 | 1660 | 0 | 2170 | 2744 | 79.1% | +| ov_SC03_125 | 2113 | 1664 | 0 | 2125 | 2591 | 82.0% | +| ov_SC03_126 | 2075 | 1666 | 0 | 2075 | 2425 | 85.6% | +| ov_SC04_000 | 2092 | 1668 | 0 | 2101 | 2549 | 82.4% | +| ov_SC04_002 | 2106 | 1664 | 0 | 2110 | 2639 | 80.0% | +| ov_SC04_003 | 2084 | 1664 | 0 | 2088 | 2505 | 83.4% | +| ov_SC04_004 | 2098 | 1664 | 0 | 2100 | 2561 | 82.0% | +| ov_SC04_005 | 2099 | 1664 | 0 | 2105 | 2615 | 80.5% | +| ov_SC04_006 | 2075 | 1664 | 0 | 2077 | 2456 | 84.6% | +| ov_SC04_007 | 2094 | 1664 | 0 | 2098 | 2572 | 81.6% | +| ov_SC04_008 | 2071 | 1664 | 0 | 2071 | 2417 | 85.7% | +| ov_SC04_009 | 2079 | 1664 | 0 | 2082 | 2443 | 85.2% | +| ov_SC04_010 | 2075 | 1664 | 0 | 2076 | 2421 | 85.7% | +| ov_SC04_011 | 2125 | 1664 | 0 | 2131 | 2806 | 75.9% | +| ov_SC04_012 | 2073 | 1664 | 0 | 2074 | 2422 | 85.6% | +| ov_SC04_015 | 2133 | 1665 | 0 | 2144 | 2614 | 82.0% | +| ov_SC04_016 | 2072 | 1664 | 0 | 2074 | 2442 | 84.9% | +| ov_SC04_018 | 2179 | 1699 | 0 | 2179 | 2860 | 76.2% | +| ov_SC04_019 | 2185 | 1699 | 0 | 2185 | 2860 | 76.4% | +| ov_SC04_020 | 2102 | 1664 | 0 | 2114 | 2570 | 82.3% | +| ov_SC04_021 | 2074 | 1666 | 0 | 2074 | 2425 | 85.5% | +| ov_SC05_000 | 2078 | 1668 | 0 | 2081 | 2424 | 85.8% | +| ov_SC05_001 | 2094 | 1664 | 0 | 2099 | 2577 | 81.5% | +| ov_SC05_002 | 2077 | 1664 | 0 | 2080 | 2445 | 85.1% | +| ov_SC05_003 | 2077 | 1664 | 0 | 2078 | 2484 | 83.7% | +| ov_SC05_004 | 2075 | 1664 | 0 | 2077 | 2467 | 84.2% | +| ov_SC05_005 | 2079 | 1664 | 0 | 2080 | 2494 | 83.4% | +| ov_SC05_006 | 2073 | 1664 | 0 | 2073 | 2432 | 85.2% | +| ov_SC05_007 | 2080 | 1664 | 0 | 2085 | 2485 | 83.9% | +| ov_SC05_008 | 2099 | 1664 | 0 | 2101 | 2546 | 82.5% | +| ov_SC05_009 | 2075 | 1664 | 0 | 2079 | 2440 | 85.2% | +| ov_SC05_010 | 2099 | 1664 | 0 | 2103 | 2591 | 81.2% | +| ov_SC05_011 | 2076 | 1664 | 0 | 2077 | 2411 | 86.1% | +| ov_SC05_017 | 2175 | 1661 | 0 | 2186 | 2845 | 76.8% | +| ov_SC05_018 | 2125 | 1664 | 0 | 2138 | 2676 | 79.9% | +| ov_SC05_019 | 2074 | 1666 | 0 | 2074 | 2425 | 85.5% | +| ov_SC06_000 | 2135 | 1673 | 0 | 2138 | 2694 | 79.4% | +| ov_SC06_006 | 2083 | 1664 | 0 | 2084 | 2514 | 82.9% | +| ov_SC06_008 | 2099 | 1666 | 0 | 2105 | 2544 | 82.7% | +| ov_SC06_010 | 2086 | 1664 | 0 | 2091 | 2520 | 83.0% | +| ov_SC06_011 | 2083 | 1664 | 0 | 2087 | 2471 | 84.5% | +| ov_SC06_013 | 2076 | 1664 | 0 | 2077 | 2427 | 85.6% | +| ov_SC06_014 | 2080 | 1664 | 0 | 2082 | 2455 | 84.8% | +| ov_SC06_015 | 2077 | 1664 | 0 | 2077 | 2423 | 85.7% | +| ov_SC06_016 | 2095 | 1664 | 0 | 2097 | 2552 | 82.2% | +| ov_SC06_018 | 2093 | 1667 | 0 | 2100 | 2668 | 78.7% | +| ov_SC06_020 | 2083 | 1666 | 0 | 2084 | 2521 | 82.7% | +| ov_SC06_022 | 2099 | 1664 | 0 | 2107 | 2645 | 79.7% | +| ov_SC06_024 | 2105 | 1664 | 0 | 2111 | 2670 | 79.1% | +| ov_SC06_025 | 2092 | 1664 | 0 | 2097 | 2575 | 81.4% | +| ov_SC06_027 | 2067 | 1664 | 0 | 2068 | 2410 | 85.8% | +| ov_SC06_029 | 2120 | 1664 | 0 | 2132 | 2665 | 80.0% | +| ov_SC06_030 | 2078 | 1664 | 0 | 2078 | 2459 | 84.5% | +| ov_SC06_032 | 2089 | 1665 | 0 | 2096 | 2661 | 78.8% | +| ov_SC06_033 | 2093 | 1665 | 0 | 2100 | 2634 | 79.7% | +| ov_SC07_000 | 2092 | 1668 | 0 | 2094 | 2524 | 83.0% | +| ov_SC07_001 | 2079 | 1664 | 0 | 2081 | 2457 | 84.7% | +| ov_SC07_002 | 2096 | 1664 | 0 | 2100 | 2582 | 81.3% | +| ov_SC07_008 | 2063 | 1664 | 0 | 2063 | 2388 | 86.4% | +| ov_SC07_009 | 2074 | 1664 | 0 | 2076 | 2432 | 85.4% | diff --git a/phase-ends/CURRENT_PHASE.md b/phase-ends/CURRENT_PHASE.md index feb88d8cd2..4324fee7a3 100644 --- a/phase-ends/CURRENT_PHASE.md +++ b/phase-ends/CURRENT_PHASE.md @@ -76,6 +76,7 @@ On approval → `/model opus` + `/effort xHigh` (Tasks 0–4; ALL Fable5 via `Ag ## Log +- **2026-07-12 (session 3, §8 ×134 AUTOMATION — func_8012ACE0 banked fleet-wide):** Built the jr-function ×134 harvest pipeline and proved it end-to-end. `tools/jtbl_carve.py` = per-overlay §8 carve generator (finding: the same fn is at the same vram across siblings but its jtbl is at a DIFFERENT address in each — ov_SC01_000 jtbl_801A331C / ov_SC02_000 jtbl_801E587C — so the carve is recomputed per sibling; rewrites the config data-tail subsegs + sets `_JTBL_INTERLEAVE`). `tools/jtbl_family_bank.py` = the sibling sweep driver (per sibling: revert→carve→extract→remap_hseq+reconcile→whole-binary gate; idempotent, revert-on-fail). **Propagation-cap fix:** `family_remap.extract_unit` now carries single-line `typedef`s (jr-function bodies define local `typedef struct{} Foo_;` that must template with the body, else the sibling sees `Foo undeclared` — additive, byte-gate-protected). **func_8012ACE0 family: 133/133 siblings BANKED, 0 failures; R22 clean-fleet 136/136 byte-identical.** Metrics: distinct-code 39.1% (50,698 unique fns), instr 63.0%. **Opportunity map (`has_mid_jr` families):** 237 total (5,805 members / 5.68M ins) — 46 small mid/tiny (771 members, mechanical, same pipeline) + 191 substantial = the Fable5 cores (Task 7, paused). Committed. **NEXT: (a) R22 profiling/parallelization (Drew asked — check-all builds 136 binaries serially on a 32-core box); (b) the other 45 small jr families.** - **2026-07-12 (session 3, §8 jtbl-rodata tooling — PoC PROVEN):** Built the overlay jtbl-rodata mechanism (cookbook §8a, the durable writeup). Findings: overlay jtbls form a contiguous `.rodata` island at the TAIL (between `.data` globals and a tiny remnant), not the EXE's central island. Mechanism (byte-identical, 2-step): (Step 1) carve a matched jr-function's jtbl out of `[data,tail]` into a dotted `[.rodata, ]` subseg (spimdisasm migrates it into the fn's `.s`) + `[data, tail2]`; parameterized **`tools/ld_interleave.py --section .`** (derives the symbol prefix; default `.main` = EXE byte-identical, backward-compat proven) places text→data(pre)→rodata→data(post)→bss — **build byte-identical with the fn still INCLUDE_ASM**. (Step 2) swap in the C body → **byte-identical** — the C-emitted jtbl lands exact. Wired into `make extract` via `_JTBL_INTERLEAVE` in `config/overlays.mk` + a `$(strip)`-guarded `ifneq` branch (gotcha caught: a trailing `#comment` on the `:=` left whitespace → the branch misfired on resident). **PoC target: `func_8012ACE0`** (25-ins single-jtbl jr-function, ov_SC01_077) — reconciled via `canon_sig_reconcile` (raw draft had `conflicting types`), banked **byte-identical `d19c9580`**, ov077 clean-rebuilds. Key P9 finding: **`func_80159C84`/`func_8015444C` (the 2 carried Fable5 bodies) are rtu_match FALSE-MATCHes** — their C jtbls are incomplete (52B vs 56B), so they never bank; rtu_match excludes the §8 rodata (confirms the checkpoint's "2 jtbl false-MATCH"). The maspsx "hang" scare was a truncated-experimental-file artifact — the real pipeline builds in ~1s. **NEXT: full R22 (in flight) → commit the PoC + tooling; then the ×134 automation** (generate the per-overlay carve + template the reconciled body per sibling). - **2026-07-12 (session 3, TINY-BAND mechanical harvest — Task 8 continuation):** Regenerated the h_seq manifest from the mid-band-banked src (fleet 77.2% fn / 60.9% instr / 35.2% distinct — matches `commit:0530`), then ran `family_sweep.py --hseq --band tiny`. Dry-run sized it: 180 tiny matched-exemplar families / 23,592 staged member-drafts across 267 (overlay,split) groups (skips 1,184 no-matched-unit / 148 unresolved-imm / 117 STRUCT / 39 pinned). Gated run: **17,975 member-matches BANKED / 5,617 gate-rejected** (h_seq-collision false-templates — the whole-binary byte-gate G3/P9 refused every one; ~76% bank rate; per-group ~17/21 main + ~110–129/150 `_after`). 266 overlay `.c` files touched. **R22 clean-fleet (`make clean` + extract-all-136 + check-all) → 136/136, 0 failed.** dedup-check 1813 validated / 0 failed (registry untouched — hseq banks are per-overlay src, not ×134 registry). **Metrics: distinct-code 35.2→39.1% (50,571/84,996 unique fns), instr-weighted 60.9→62.9%.** The mechanical size-bands (substantial/mid/tiny) are now harvested; the remaining levers are the two harvest gaps (§8 jtbl-rodata, reconcile fn-ptr-extern). Committed (Drew pushes — R6). - **2026-07-12 (session 2b, Fable5 batch-1 whole-binary reality):** **P9 correction:** the 2 Fable5 "cracks" (`func_80159C84`/`func_8015444C`) rtu_match-MATCH but FAIL the whole-binary gate — both are jr-functions and rtu_match doesn't verify the §8 jtbl rodata (decision-log). Two harvest gaps found: **§8 jtbl-rodata** (blocks all jr cracks incl. the Fable5 cores) + **reconcile data-extern** (D_801891B8-class, blocks ~15/21 no-jtbl triage cracks). Real whole-binary result: **6 no-jtbl reconcile-clean cracks bank = 729 members** (463 committed + **266 this commit**, func_8015CD20/8015C128 ×133). `func_80176218` (no-jtbl) still cracking = the clean non-jtbl Fable5 test. R22 deferred until it releases asm/. diff --git a/src/ov_SC01_000/ov_SC01_000.c b/src/ov_SC01_000/ov_SC01_000.c index 982514de13..585ec5cd30 100644 --- a/src/ov_SC01_000/ov_SC01_000.c +++ b/src/ov_SC01_000/ov_SC01_000.c @@ -521,7 +521,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC01_000/nonmatchings/ov_SC01_000", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC01_001/ov_SC01_001.c b/src/ov_SC01_001/ov_SC01_001.c index b7c746e04b..5af73a0b0a 100644 --- a/src/ov_SC01_001/ov_SC01_001.c +++ b/src/ov_SC01_001/ov_SC01_001.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC01_004/ov_SC01_004.c b/src/ov_SC01_004/ov_SC01_004.c index 21bf2af8f6..3b615d1ad8 100644 --- a/src/ov_SC01_004/ov_SC01_004.c +++ b/src/ov_SC01_004/ov_SC01_004.c @@ -529,7 +529,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC01_004/nonmatchings/ov_SC01_004", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC01_005/ov_SC01_005.c b/src/ov_SC01_005/ov_SC01_005.c index d0ae8be9fd..7230d78568 100644 --- a/src/ov_SC01_005/ov_SC01_005.c +++ b/src/ov_SC01_005/ov_SC01_005.c @@ -524,7 +524,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC01_006/ov_SC01_006.c b/src/ov_SC01_006/ov_SC01_006.c index 6e0a6dae54..5942e01018 100644 --- a/src/ov_SC01_006/ov_SC01_006.c +++ b/src/ov_SC01_006/ov_SC01_006.c @@ -524,7 +524,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC01_008/ov_SC01_008.c b/src/ov_SC01_008/ov_SC01_008.c index 0463bb473f..6d843bdc34 100644 --- a/src/ov_SC01_008/ov_SC01_008.c +++ b/src/ov_SC01_008/ov_SC01_008.c @@ -529,7 +529,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC01_009/ov_SC01_009.c b/src/ov_SC01_009/ov_SC01_009.c index d932b35aeb..70e4cc45c9 100644 --- a/src/ov_SC01_009/ov_SC01_009.c +++ b/src/ov_SC01_009/ov_SC01_009.c @@ -529,7 +529,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC01_074/ov_SC01_074.c b/src/ov_SC01_074/ov_SC01_074.c index 829a32374e..df6c6ce19a 100644 --- a/src/ov_SC01_074/ov_SC01_074.c +++ b/src/ov_SC01_074/ov_SC01_074.c @@ -529,7 +529,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC01_080/ov_SC01_080.c b/src/ov_SC01_080/ov_SC01_080.c index df182ba02d..31dd49531f 100644 --- a/src/ov_SC01_080/ov_SC01_080.c +++ b/src/ov_SC01_080/ov_SC01_080.c @@ -529,7 +529,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC01_084/ov_SC01_084.c b/src/ov_SC01_084/ov_SC01_084.c index 58fc4ce3f0..24312e74cf 100644 --- a/src/ov_SC01_084/ov_SC01_084.c +++ b/src/ov_SC01_084/ov_SC01_084.c @@ -529,7 +529,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC02_000/ov_SC02_000.c b/src/ov_SC02_000/ov_SC02_000.c index 6103cb833e..e6ff169713 100644 --- a/src/ov_SC02_000/ov_SC02_000.c +++ b/src/ov_SC02_000/ov_SC02_000.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC02_003/ov_SC02_003.c b/src/ov_SC02_003/ov_SC02_003.c index 98293fd647..d99aa7ac82 100644 --- a/src/ov_SC02_003/ov_SC02_003.c +++ b/src/ov_SC02_003/ov_SC02_003.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC02_004/ov_SC02_004.c b/src/ov_SC02_004/ov_SC02_004.c index 0387f578ca..3551c21c3a 100644 --- a/src/ov_SC02_004/ov_SC02_004.c +++ b/src/ov_SC02_004/ov_SC02_004.c @@ -529,7 +529,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC02_005/ov_SC02_005.c b/src/ov_SC02_005/ov_SC02_005.c index bed13b7319..f7e5407e0f 100644 --- a/src/ov_SC02_005/ov_SC02_005.c +++ b/src/ov_SC02_005/ov_SC02_005.c @@ -529,7 +529,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC02_011/ov_SC02_011.c b/src/ov_SC02_011/ov_SC02_011.c index fa05aff9e5..d4d5aec25b 100644 --- a/src/ov_SC02_011/ov_SC02_011.c +++ b/src/ov_SC02_011/ov_SC02_011.c @@ -529,7 +529,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC02_015/ov_SC02_015.c b/src/ov_SC02_015/ov_SC02_015.c index c972443901..590c8ed309 100644 --- a/src/ov_SC02_015/ov_SC02_015.c +++ b/src/ov_SC02_015/ov_SC02_015.c @@ -529,7 +529,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC02_016/ov_SC02_016.c b/src/ov_SC02_016/ov_SC02_016.c index 6d185707ab..950a99aedd 100644 --- a/src/ov_SC02_016/ov_SC02_016.c +++ b/src/ov_SC02_016/ov_SC02_016.c @@ -529,7 +529,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC02_017/ov_SC02_017.c b/src/ov_SC02_017/ov_SC02_017.c index 5414022888..8d5202e477 100644 --- a/src/ov_SC02_017/ov_SC02_017.c +++ b/src/ov_SC02_017/ov_SC02_017.c @@ -529,7 +529,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC02_021/ov_SC02_021.c b/src/ov_SC02_021/ov_SC02_021.c index 1ccb2f7feb..b348dec65f 100644 --- a/src/ov_SC02_021/ov_SC02_021.c +++ b/src/ov_SC02_021/ov_SC02_021.c @@ -529,7 +529,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC02_026/ov_SC02_026.c b/src/ov_SC02_026/ov_SC02_026.c index 6bab291c9e..ef92ed32f3 100644 --- a/src/ov_SC02_026/ov_SC02_026.c +++ b/src/ov_SC02_026/ov_SC02_026.c @@ -529,7 +529,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC02_027/ov_SC02_027.c b/src/ov_SC02_027/ov_SC02_027.c index 103ccb6120..4112fdfa85 100644 --- a/src/ov_SC02_027/ov_SC02_027.c +++ b/src/ov_SC02_027/ov_SC02_027.c @@ -529,7 +529,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC02_028/ov_SC02_028.c b/src/ov_SC02_028/ov_SC02_028.c index 528b0ed43d..0f8d547170 100644 --- a/src/ov_SC02_028/ov_SC02_028.c +++ b/src/ov_SC02_028/ov_SC02_028.c @@ -529,7 +529,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC02_031/ov_SC02_031.c b/src/ov_SC02_031/ov_SC02_031.c index 3c7aac849d..61cf968371 100644 --- a/src/ov_SC02_031/ov_SC02_031.c +++ b/src/ov_SC02_031/ov_SC02_031.c @@ -529,7 +529,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC02_035/ov_SC02_035.c b/src/ov_SC02_035/ov_SC02_035.c index 065b711149..014c6fa201 100644 --- a/src/ov_SC02_035/ov_SC02_035.c +++ b/src/ov_SC02_035/ov_SC02_035.c @@ -529,7 +529,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC02_039/ov_SC02_039.c b/src/ov_SC02_039/ov_SC02_039.c index d0dad8e655..6a26286056 100644 --- a/src/ov_SC02_039/ov_SC02_039.c +++ b/src/ov_SC02_039/ov_SC02_039.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC02_039/nonmatchings/ov_SC02_039", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC02_041/ov_SC02_041.c b/src/ov_SC02_041/ov_SC02_041.c index 498ee4178e..7e867b4ac5 100644 --- a/src/ov_SC02_041/ov_SC02_041.c +++ b/src/ov_SC02_041/ov_SC02_041.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_001/ov_SC03_001.c b/src/ov_SC03_001/ov_SC03_001.c index d421622a78..2cb895a3b9 100644 --- a/src/ov_SC03_001/ov_SC03_001.c +++ b/src/ov_SC03_001/ov_SC03_001.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_002/ov_SC03_002.c b/src/ov_SC03_002/ov_SC03_002.c index e2561c69aa..a56f2026b8 100644 --- a/src/ov_SC03_002/ov_SC03_002.c +++ b/src/ov_SC03_002/ov_SC03_002.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_003/ov_SC03_003.c b/src/ov_SC03_003/ov_SC03_003.c index 532d934d9a..7efec0f015 100644 --- a/src/ov_SC03_003/ov_SC03_003.c +++ b/src/ov_SC03_003/ov_SC03_003.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_006/ov_SC03_006.c b/src/ov_SC03_006/ov_SC03_006.c index 141c961d09..640033ac27 100644 --- a/src/ov_SC03_006/ov_SC03_006.c +++ b/src/ov_SC03_006/ov_SC03_006.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_007/ov_SC03_007.c b/src/ov_SC03_007/ov_SC03_007.c index 388f8a37b0..9295482d4a 100644 --- a/src/ov_SC03_007/ov_SC03_007.c +++ b/src/ov_SC03_007/ov_SC03_007.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_010/ov_SC03_010.c b/src/ov_SC03_010/ov_SC03_010.c index 3089467a8e..174a82b923 100644 --- a/src/ov_SC03_010/ov_SC03_010.c +++ b/src/ov_SC03_010/ov_SC03_010.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_011/ov_SC03_011.c b/src/ov_SC03_011/ov_SC03_011.c index cd4d4f4890..aa092f7429 100644 --- a/src/ov_SC03_011/ov_SC03_011.c +++ b/src/ov_SC03_011/ov_SC03_011.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_012/ov_SC03_012.c b/src/ov_SC03_012/ov_SC03_012.c index 21bc26daf6..5fd7b42403 100644 --- a/src/ov_SC03_012/ov_SC03_012.c +++ b/src/ov_SC03_012/ov_SC03_012.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_013/ov_SC03_013.c b/src/ov_SC03_013/ov_SC03_013.c index 5a3d53f7a1..4dc6b133ce 100644 --- a/src/ov_SC03_013/ov_SC03_013.c +++ b/src/ov_SC03_013/ov_SC03_013.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_014/ov_SC03_014.c b/src/ov_SC03_014/ov_SC03_014.c index 95997f4232..15012bc184 100644 --- a/src/ov_SC03_014/ov_SC03_014.c +++ b/src/ov_SC03_014/ov_SC03_014.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_015/ov_SC03_015.c b/src/ov_SC03_015/ov_SC03_015.c index c8b3dca3b9..5cbc03164e 100644 --- a/src/ov_SC03_015/ov_SC03_015.c +++ b/src/ov_SC03_015/ov_SC03_015.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_023/ov_SC03_023.c b/src/ov_SC03_023/ov_SC03_023.c index 06885a86f9..e479b4b933 100644 --- a/src/ov_SC03_023/ov_SC03_023.c +++ b/src/ov_SC03_023/ov_SC03_023.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_024/ov_SC03_024.c b/src/ov_SC03_024/ov_SC03_024.c index 602f78b145..b03607a8c4 100644 --- a/src/ov_SC03_024/ov_SC03_024.c +++ b/src/ov_SC03_024/ov_SC03_024.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_028/ov_SC03_028.c b/src/ov_SC03_028/ov_SC03_028.c index 07944ab21d..fb91c21cfc 100644 --- a/src/ov_SC03_028/ov_SC03_028.c +++ b/src/ov_SC03_028/ov_SC03_028.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_029/ov_SC03_029.c b/src/ov_SC03_029/ov_SC03_029.c index fb15c8abd5..bed1f63ef7 100644 --- a/src/ov_SC03_029/ov_SC03_029.c +++ b/src/ov_SC03_029/ov_SC03_029.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_030/ov_SC03_030.c b/src/ov_SC03_030/ov_SC03_030.c index b7dd99293f..83b4f45d2d 100644 --- a/src/ov_SC03_030/ov_SC03_030.c +++ b/src/ov_SC03_030/ov_SC03_030.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_031/ov_SC03_031.c b/src/ov_SC03_031/ov_SC03_031.c index cfc31a8a41..b5317bc6e2 100644 --- a/src/ov_SC03_031/ov_SC03_031.c +++ b/src/ov_SC03_031/ov_SC03_031.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_089/ov_SC03_089.c b/src/ov_SC03_089/ov_SC03_089.c index 0e1546aff9..1f803fcc73 100644 --- a/src/ov_SC03_089/ov_SC03_089.c +++ b/src/ov_SC03_089/ov_SC03_089.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_090/ov_SC03_090.c b/src/ov_SC03_090/ov_SC03_090.c index 316b2a8a4f..0890d54167 100644 --- a/src/ov_SC03_090/ov_SC03_090.c +++ b/src/ov_SC03_090/ov_SC03_090.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_091/ov_SC03_091.c b/src/ov_SC03_091/ov_SC03_091.c index d5d8346391..a3c0e38cdd 100644 --- a/src/ov_SC03_091/ov_SC03_091.c +++ b/src/ov_SC03_091/ov_SC03_091.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_092/ov_SC03_092.c b/src/ov_SC03_092/ov_SC03_092.c index 24e9dd7a8c..b1378bd831 100644 --- a/src/ov_SC03_092/ov_SC03_092.c +++ b/src/ov_SC03_092/ov_SC03_092.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_093/ov_SC03_093.c b/src/ov_SC03_093/ov_SC03_093.c index ca459a5ac5..1a8f50f87a 100644 --- a/src/ov_SC03_093/ov_SC03_093.c +++ b/src/ov_SC03_093/ov_SC03_093.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_094/ov_SC03_094.c b/src/ov_SC03_094/ov_SC03_094.c index 6873f84757..07290e3672 100644 --- a/src/ov_SC03_094/ov_SC03_094.c +++ b/src/ov_SC03_094/ov_SC03_094.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_095/ov_SC03_095.c b/src/ov_SC03_095/ov_SC03_095.c index d9bd221b9f..c7c54dfd53 100644 --- a/src/ov_SC03_095/ov_SC03_095.c +++ b/src/ov_SC03_095/ov_SC03_095.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_095/nonmatchings/ov_SC03_095", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_096/ov_SC03_096.c b/src/ov_SC03_096/ov_SC03_096.c index 36b8243187..a92c9eace9 100644 --- a/src/ov_SC03_096/ov_SC03_096.c +++ b/src/ov_SC03_096/ov_SC03_096.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_097/ov_SC03_097.c b/src/ov_SC03_097/ov_SC03_097.c index 1dd588feec..20a98a4660 100644 --- a/src/ov_SC03_097/ov_SC03_097.c +++ b/src/ov_SC03_097/ov_SC03_097.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_098/ov_SC03_098.c b/src/ov_SC03_098/ov_SC03_098.c index 9d6d22418f..23340b9588 100644 --- a/src/ov_SC03_098/ov_SC03_098.c +++ b/src/ov_SC03_098/ov_SC03_098.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_099/ov_SC03_099.c b/src/ov_SC03_099/ov_SC03_099.c index 8bda3fe8e4..c1b0b77a27 100644 --- a/src/ov_SC03_099/ov_SC03_099.c +++ b/src/ov_SC03_099/ov_SC03_099.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_100/ov_SC03_100.c b/src/ov_SC03_100/ov_SC03_100.c index 30c78af64e..54c8328ef2 100644 --- a/src/ov_SC03_100/ov_SC03_100.c +++ b/src/ov_SC03_100/ov_SC03_100.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_101/ov_SC03_101.c b/src/ov_SC03_101/ov_SC03_101.c index 47bd288666..0dd6cbe773 100644 --- a/src/ov_SC03_101/ov_SC03_101.c +++ b/src/ov_SC03_101/ov_SC03_101.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_102/ov_SC03_102.c b/src/ov_SC03_102/ov_SC03_102.c index c6d3fb94b8..568956a2eb 100644 --- a/src/ov_SC03_102/ov_SC03_102.c +++ b/src/ov_SC03_102/ov_SC03_102.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_102/nonmatchings/ov_SC03_102", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_103/ov_SC03_103.c b/src/ov_SC03_103/ov_SC03_103.c index 739bac103f..6dcb0413cb 100644 --- a/src/ov_SC03_103/ov_SC03_103.c +++ b/src/ov_SC03_103/ov_SC03_103.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_103/nonmatchings/ov_SC03_103", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_104/ov_SC03_104.c b/src/ov_SC03_104/ov_SC03_104.c index a18b00c4ab..57425a8894 100644 --- a/src/ov_SC03_104/ov_SC03_104.c +++ b/src/ov_SC03_104/ov_SC03_104.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_105/ov_SC03_105.c b/src/ov_SC03_105/ov_SC03_105.c index 871b64f944..f08f43e148 100644 --- a/src/ov_SC03_105/ov_SC03_105.c +++ b/src/ov_SC03_105/ov_SC03_105.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_108/ov_SC03_108.c b/src/ov_SC03_108/ov_SC03_108.c index f08eb998a3..dbad41a05f 100644 --- a/src/ov_SC03_108/ov_SC03_108.c +++ b/src/ov_SC03_108/ov_SC03_108.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_108/nonmatchings/ov_SC03_108", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_109/ov_SC03_109.c b/src/ov_SC03_109/ov_SC03_109.c index 6a070b36dc..8e8e4d60b6 100644 --- a/src/ov_SC03_109/ov_SC03_109.c +++ b/src/ov_SC03_109/ov_SC03_109.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_110/ov_SC03_110.c b/src/ov_SC03_110/ov_SC03_110.c index b766bbb7eb..a6ef94b719 100644 --- a/src/ov_SC03_110/ov_SC03_110.c +++ b/src/ov_SC03_110/ov_SC03_110.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_111/ov_SC03_111.c b/src/ov_SC03_111/ov_SC03_111.c index cf5d5990b8..68a0667efd 100644 --- a/src/ov_SC03_111/ov_SC03_111.c +++ b/src/ov_SC03_111/ov_SC03_111.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_112/ov_SC03_112.c b/src/ov_SC03_112/ov_SC03_112.c index 88d2b2f4de..85ad400296 100644 --- a/src/ov_SC03_112/ov_SC03_112.c +++ b/src/ov_SC03_112/ov_SC03_112.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_113/ov_SC03_113.c b/src/ov_SC03_113/ov_SC03_113.c index cae9f07eb8..9049149456 100644 --- a/src/ov_SC03_113/ov_SC03_113.c +++ b/src/ov_SC03_113/ov_SC03_113.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_114/ov_SC03_114.c b/src/ov_SC03_114/ov_SC03_114.c index fdbc0b5f08..72441d22ce 100644 --- a/src/ov_SC03_114/ov_SC03_114.c +++ b/src/ov_SC03_114/ov_SC03_114.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_114/nonmatchings/ov_SC03_114", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_115/ov_SC03_115.c b/src/ov_SC03_115/ov_SC03_115.c index 9bac50fb1b..070e2e972b 100644 --- a/src/ov_SC03_115/ov_SC03_115.c +++ b/src/ov_SC03_115/ov_SC03_115.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_116/ov_SC03_116.c b/src/ov_SC03_116/ov_SC03_116.c index 8c9b39c473..455686747c 100644 --- a/src/ov_SC03_116/ov_SC03_116.c +++ b/src/ov_SC03_116/ov_SC03_116.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_117/ov_SC03_117.c b/src/ov_SC03_117/ov_SC03_117.c index 1dd7f06227..3bff82a557 100644 --- a/src/ov_SC03_117/ov_SC03_117.c +++ b/src/ov_SC03_117/ov_SC03_117.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_118/ov_SC03_118.c b/src/ov_SC03_118/ov_SC03_118.c index 97141e2151..931b9e216f 100644 --- a/src/ov_SC03_118/ov_SC03_118.c +++ b/src/ov_SC03_118/ov_SC03_118.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_119/ov_SC03_119.c b/src/ov_SC03_119/ov_SC03_119.c index f01e4c96dc..e269c11c50 100644 --- a/src/ov_SC03_119/ov_SC03_119.c +++ b/src/ov_SC03_119/ov_SC03_119.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_121/ov_SC03_121.c b/src/ov_SC03_121/ov_SC03_121.c index 4bffc3a454..f5062d89e1 100644 --- a/src/ov_SC03_121/ov_SC03_121.c +++ b/src/ov_SC03_121/ov_SC03_121.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_124/ov_SC03_124.c b/src/ov_SC03_124/ov_SC03_124.c index 97a561aba7..b651688d3e 100644 --- a/src/ov_SC03_124/ov_SC03_124.c +++ b/src/ov_SC03_124/ov_SC03_124.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_125/ov_SC03_125.c b/src/ov_SC03_125/ov_SC03_125.c index ee6c547268..f6ec33e153 100644 --- a/src/ov_SC03_125/ov_SC03_125.c +++ b/src/ov_SC03_125/ov_SC03_125.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC03_126/ov_SC03_126.c b/src/ov_SC03_126/ov_SC03_126.c index 8a9f1ba471..f3f0690f15 100644 --- a/src/ov_SC03_126/ov_SC03_126.c +++ b/src/ov_SC03_126/ov_SC03_126.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC04_000/ov_SC04_000.c b/src/ov_SC04_000/ov_SC04_000.c index 33b06bf159..a3da1bad9b 100644 --- a/src/ov_SC04_000/ov_SC04_000.c +++ b/src/ov_SC04_000/ov_SC04_000.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC04_002/ov_SC04_002.c b/src/ov_SC04_002/ov_SC04_002.c index 2daa55ebff..f511e6c358 100644 --- a/src/ov_SC04_002/ov_SC04_002.c +++ b/src/ov_SC04_002/ov_SC04_002.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC04_003/ov_SC04_003.c b/src/ov_SC04_003/ov_SC04_003.c index 576f3c37f5..82ed202d2a 100644 --- a/src/ov_SC04_003/ov_SC04_003.c +++ b/src/ov_SC04_003/ov_SC04_003.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC04_004/ov_SC04_004.c b/src/ov_SC04_004/ov_SC04_004.c index 16d7559e56..4b389e62bd 100644 --- a/src/ov_SC04_004/ov_SC04_004.c +++ b/src/ov_SC04_004/ov_SC04_004.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC04_005/ov_SC04_005.c b/src/ov_SC04_005/ov_SC04_005.c index 7b6ac05a5f..580fb79ef8 100644 --- a/src/ov_SC04_005/ov_SC04_005.c +++ b/src/ov_SC04_005/ov_SC04_005.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC04_006/ov_SC04_006.c b/src/ov_SC04_006/ov_SC04_006.c index d6ccd9b0e0..ff1fcddf77 100644 --- a/src/ov_SC04_006/ov_SC04_006.c +++ b/src/ov_SC04_006/ov_SC04_006.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC04_007/ov_SC04_007.c b/src/ov_SC04_007/ov_SC04_007.c index 81b5969149..5d76839643 100644 --- a/src/ov_SC04_007/ov_SC04_007.c +++ b/src/ov_SC04_007/ov_SC04_007.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC04_008/ov_SC04_008.c b/src/ov_SC04_008/ov_SC04_008.c index 44ec91bd7e..c21c2a3c89 100644 --- a/src/ov_SC04_008/ov_SC04_008.c +++ b/src/ov_SC04_008/ov_SC04_008.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC04_009/ov_SC04_009.c b/src/ov_SC04_009/ov_SC04_009.c index 8472dc8c1e..77346ca1be 100644 --- a/src/ov_SC04_009/ov_SC04_009.c +++ b/src/ov_SC04_009/ov_SC04_009.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC04_010/ov_SC04_010.c b/src/ov_SC04_010/ov_SC04_010.c index 2f429e6a6c..8d1106ab97 100644 --- a/src/ov_SC04_010/ov_SC04_010.c +++ b/src/ov_SC04_010/ov_SC04_010.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC04_010/nonmatchings/ov_SC04_010", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC04_011/ov_SC04_011.c b/src/ov_SC04_011/ov_SC04_011.c index cc015113e4..ea8aab2ed5 100644 --- a/src/ov_SC04_011/ov_SC04_011.c +++ b/src/ov_SC04_011/ov_SC04_011.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC04_012/ov_SC04_012.c b/src/ov_SC04_012/ov_SC04_012.c index 94ae69ae1d..c99745f5ef 100644 --- a/src/ov_SC04_012/ov_SC04_012.c +++ b/src/ov_SC04_012/ov_SC04_012.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC04_015/ov_SC04_015.c b/src/ov_SC04_015/ov_SC04_015.c index a78e7bc6d1..5a21c38376 100644 --- a/src/ov_SC04_015/ov_SC04_015.c +++ b/src/ov_SC04_015/ov_SC04_015.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC04_016/ov_SC04_016.c b/src/ov_SC04_016/ov_SC04_016.c index e638b2f47d..f940fdf4a2 100644 --- a/src/ov_SC04_016/ov_SC04_016.c +++ b/src/ov_SC04_016/ov_SC04_016.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC04_018/ov_SC04_018.c b/src/ov_SC04_018/ov_SC04_018.c index 046296766c..156c78407b 100644 --- a/src/ov_SC04_018/ov_SC04_018.c +++ b/src/ov_SC04_018/ov_SC04_018.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC04_019/ov_SC04_019.c b/src/ov_SC04_019/ov_SC04_019.c index c9be159df3..373189b3a8 100644 --- a/src/ov_SC04_019/ov_SC04_019.c +++ b/src/ov_SC04_019/ov_SC04_019.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC04_020/ov_SC04_020.c b/src/ov_SC04_020/ov_SC04_020.c index 03d60647b0..7f914513bc 100644 --- a/src/ov_SC04_020/ov_SC04_020.c +++ b/src/ov_SC04_020/ov_SC04_020.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC04_021/ov_SC04_021.c b/src/ov_SC04_021/ov_SC04_021.c index f1f4b1e850..6f3502a0e9 100644 --- a/src/ov_SC04_021/ov_SC04_021.c +++ b/src/ov_SC04_021/ov_SC04_021.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC05_000/ov_SC05_000.c b/src/ov_SC05_000/ov_SC05_000.c index 0995b2230f..a60802005d 100644 --- a/src/ov_SC05_000/ov_SC05_000.c +++ b/src/ov_SC05_000/ov_SC05_000.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC05_000/nonmatchings/ov_SC05_000", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC05_001/ov_SC05_001.c b/src/ov_SC05_001/ov_SC05_001.c index 896df9b709..64bf27b957 100644 --- a/src/ov_SC05_001/ov_SC05_001.c +++ b/src/ov_SC05_001/ov_SC05_001.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC05_002/ov_SC05_002.c b/src/ov_SC05_002/ov_SC05_002.c index 1c28e5c7a0..4ae1b6e59c 100644 --- a/src/ov_SC05_002/ov_SC05_002.c +++ b/src/ov_SC05_002/ov_SC05_002.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC05_002/nonmatchings/ov_SC05_002", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC05_003/ov_SC05_003.c b/src/ov_SC05_003/ov_SC05_003.c index 831c3b01f3..9e40802fd0 100644 --- a/src/ov_SC05_003/ov_SC05_003.c +++ b/src/ov_SC05_003/ov_SC05_003.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC05_003/nonmatchings/ov_SC05_003", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC05_004/ov_SC05_004.c b/src/ov_SC05_004/ov_SC05_004.c index fbbe62364d..5e890a7b1b 100644 --- a/src/ov_SC05_004/ov_SC05_004.c +++ b/src/ov_SC05_004/ov_SC05_004.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC05_005/ov_SC05_005.c b/src/ov_SC05_005/ov_SC05_005.c index 3388efe40c..44b036eaea 100644 --- a/src/ov_SC05_005/ov_SC05_005.c +++ b/src/ov_SC05_005/ov_SC05_005.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC05_006/ov_SC05_006.c b/src/ov_SC05_006/ov_SC05_006.c index ff1f2ce59d..0394e4d0fb 100644 --- a/src/ov_SC05_006/ov_SC05_006.c +++ b/src/ov_SC05_006/ov_SC05_006.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC05_006/nonmatchings/ov_SC05_006", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC05_007/ov_SC05_007.c b/src/ov_SC05_007/ov_SC05_007.c index 6384401c38..1e3e98a0c9 100644 --- a/src/ov_SC05_007/ov_SC05_007.c +++ b/src/ov_SC05_007/ov_SC05_007.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC05_007/nonmatchings/ov_SC05_007", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC05_008/ov_SC05_008.c b/src/ov_SC05_008/ov_SC05_008.c index 476a8040e6..716d397eb0 100644 --- a/src/ov_SC05_008/ov_SC05_008.c +++ b/src/ov_SC05_008/ov_SC05_008.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC05_009/ov_SC05_009.c b/src/ov_SC05_009/ov_SC05_009.c index a31d0be34d..af0bdaa8ce 100644 --- a/src/ov_SC05_009/ov_SC05_009.c +++ b/src/ov_SC05_009/ov_SC05_009.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC05_009/nonmatchings/ov_SC05_009", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC05_010/ov_SC05_010.c b/src/ov_SC05_010/ov_SC05_010.c index 66dfdcc608..ae3431f5da 100644 --- a/src/ov_SC05_010/ov_SC05_010.c +++ b/src/ov_SC05_010/ov_SC05_010.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC05_011/ov_SC05_011.c b/src/ov_SC05_011/ov_SC05_011.c index 406f5c8ccc..dc29f82c3a 100644 --- a/src/ov_SC05_011/ov_SC05_011.c +++ b/src/ov_SC05_011/ov_SC05_011.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC05_011/nonmatchings/ov_SC05_011", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC05_017/ov_SC05_017.c b/src/ov_SC05_017/ov_SC05_017.c index 0f4e598d40..4eca574891 100644 --- a/src/ov_SC05_017/ov_SC05_017.c +++ b/src/ov_SC05_017/ov_SC05_017.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC05_018/ov_SC05_018.c b/src/ov_SC05_018/ov_SC05_018.c index a677228cc0..2a4d6c9ebc 100644 --- a/src/ov_SC05_018/ov_SC05_018.c +++ b/src/ov_SC05_018/ov_SC05_018.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC05_019/ov_SC05_019.c b/src/ov_SC05_019/ov_SC05_019.c index 1600b55d70..3bd863bdde 100644 --- a/src/ov_SC05_019/ov_SC05_019.c +++ b/src/ov_SC05_019/ov_SC05_019.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC05_019/nonmatchings/ov_SC05_019", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC06_000/ov_SC06_000.c b/src/ov_SC06_000/ov_SC06_000.c index 6e6c600787..2f33b4b42c 100644 --- a/src/ov_SC06_000/ov_SC06_000.c +++ b/src/ov_SC06_000/ov_SC06_000.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC06_006/ov_SC06_006.c b/src/ov_SC06_006/ov_SC06_006.c index 83acf589c3..5139503297 100644 --- a/src/ov_SC06_006/ov_SC06_006.c +++ b/src/ov_SC06_006/ov_SC06_006.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC06_006/nonmatchings/ov_SC06_006", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC06_008/ov_SC06_008.c b/src/ov_SC06_008/ov_SC06_008.c index a51e1dcaa5..b85c007f28 100644 --- a/src/ov_SC06_008/ov_SC06_008.c +++ b/src/ov_SC06_008/ov_SC06_008.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC06_008/nonmatchings/ov_SC06_008", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC06_010/ov_SC06_010.c b/src/ov_SC06_010/ov_SC06_010.c index 27c5e50f1a..ba3367d8b0 100644 --- a/src/ov_SC06_010/ov_SC06_010.c +++ b/src/ov_SC06_010/ov_SC06_010.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC06_010/nonmatchings/ov_SC06_010", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC06_011/ov_SC06_011.c b/src/ov_SC06_011/ov_SC06_011.c index 1f05a56aac..657e25f3f7 100644 --- a/src/ov_SC06_011/ov_SC06_011.c +++ b/src/ov_SC06_011/ov_SC06_011.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC06_011/nonmatchings/ov_SC06_011", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC06_013/ov_SC06_013.c b/src/ov_SC06_013/ov_SC06_013.c index 34f0dc02a3..433495e62f 100644 --- a/src/ov_SC06_013/ov_SC06_013.c +++ b/src/ov_SC06_013/ov_SC06_013.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC06_014/ov_SC06_014.c b/src/ov_SC06_014/ov_SC06_014.c index ef001d8d9a..2f5e5d7708 100644 --- a/src/ov_SC06_014/ov_SC06_014.c +++ b/src/ov_SC06_014/ov_SC06_014.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC06_014/nonmatchings/ov_SC06_014", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC06_015/ov_SC06_015.c b/src/ov_SC06_015/ov_SC06_015.c index 97c742e681..e2182cb225 100644 --- a/src/ov_SC06_015/ov_SC06_015.c +++ b/src/ov_SC06_015/ov_SC06_015.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC06_015/nonmatchings/ov_SC06_015", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC06_016/ov_SC06_016.c b/src/ov_SC06_016/ov_SC06_016.c index 3e164d4acb..ce5a74f8f1 100644 --- a/src/ov_SC06_016/ov_SC06_016.c +++ b/src/ov_SC06_016/ov_SC06_016.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC06_018/ov_SC06_018.c b/src/ov_SC06_018/ov_SC06_018.c index 76fc5b8717..e7ecf8332e 100644 --- a/src/ov_SC06_018/ov_SC06_018.c +++ b/src/ov_SC06_018/ov_SC06_018.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC06_020/ov_SC06_020.c b/src/ov_SC06_020/ov_SC06_020.c index ce36512054..326eba8713 100644 --- a/src/ov_SC06_020/ov_SC06_020.c +++ b/src/ov_SC06_020/ov_SC06_020.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC06_022/ov_SC06_022.c b/src/ov_SC06_022/ov_SC06_022.c index 009dcf7219..7c21a7fd25 100644 --- a/src/ov_SC06_022/ov_SC06_022.c +++ b/src/ov_SC06_022/ov_SC06_022.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC06_024/ov_SC06_024.c b/src/ov_SC06_024/ov_SC06_024.c index 38ce92d6eb..9391e8f6db 100644 --- a/src/ov_SC06_024/ov_SC06_024.c +++ b/src/ov_SC06_024/ov_SC06_024.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC06_025/ov_SC06_025.c b/src/ov_SC06_025/ov_SC06_025.c index da22e869c9..9045776f6a 100644 --- a/src/ov_SC06_025/ov_SC06_025.c +++ b/src/ov_SC06_025/ov_SC06_025.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC06_027/ov_SC06_027.c b/src/ov_SC06_027/ov_SC06_027.c index 450ea23865..43725588eb 100644 --- a/src/ov_SC06_027/ov_SC06_027.c +++ b/src/ov_SC06_027/ov_SC06_027.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC06_027/nonmatchings/ov_SC06_027", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC06_029/ov_SC06_029.c b/src/ov_SC06_029/ov_SC06_029.c index 4e91bb2982..b3825686f9 100644 --- a/src/ov_SC06_029/ov_SC06_029.c +++ b/src/ov_SC06_029/ov_SC06_029.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC06_030/ov_SC06_030.c b/src/ov_SC06_030/ov_SC06_030.c index ee188f46c0..6eaf6f1262 100644 --- a/src/ov_SC06_030/ov_SC06_030.c +++ b/src/ov_SC06_030/ov_SC06_030.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC06_032/ov_SC06_032.c b/src/ov_SC06_032/ov_SC06_032.c index 490de610fb..76393e6b94 100644 --- a/src/ov_SC06_032/ov_SC06_032.c +++ b/src/ov_SC06_032/ov_SC06_032.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC06_033/ov_SC06_033.c b/src/ov_SC06_033/ov_SC06_033.c index 9c2a6541ec..6b204874a0 100644 --- a/src/ov_SC06_033/ov_SC06_033.c +++ b/src/ov_SC06_033/ov_SC06_033.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC07_000/ov_SC07_000.c b/src/ov_SC07_000/ov_SC07_000.c index cf8bc98fb5..aafe51732a 100644 --- a/src/ov_SC07_000/ov_SC07_000.c +++ b/src/ov_SC07_000/ov_SC07_000.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC07_001/ov_SC07_001.c b/src/ov_SC07_001/ov_SC07_001.c index 0e8fc16a70..11620d19e7 100644 --- a/src/ov_SC07_001/ov_SC07_001.c +++ b/src/ov_SC07_001/ov_SC07_001.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC07_002/ov_SC07_002.c b/src/ov_SC07_002/ov_SC07_002.c index 25bad87f0f..5ba903ddef 100644 --- a/src/ov_SC07_002/ov_SC07_002.c +++ b/src/ov_SC07_002/ov_SC07_002.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC07_008/ov_SC07_008.c b/src/ov_SC07_008/ov_SC07_008.c index 36b7f1f324..c1059bb513 100644 --- a/src/ov_SC07_008/ov_SC07_008.c +++ b/src/ov_SC07_008/ov_SC07_008.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC07_008/nonmatchings/ov_SC07_008", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/src/ov_SC07_009/ov_SC07_009.c b/src/ov_SC07_009/ov_SC07_009.c index 97ee69b8a1..ff6ec1b84b 100644 --- a/src/ov_SC07_009/ov_SC07_009.c +++ b/src/ov_SC07_009/ov_SC07_009.c @@ -523,7 +523,27 @@ void func_8012ACA0(void *arg0) { } -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009", func_8012ACE0); + + +// @class: iv-combine +// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). +typedef struct { int a; short cmd; short b; } Elem_8012ACE0_8012ACE0; /* 8-byte element, cmd @ +4 */ +typedef struct { char pad[0x90]; Elem_8012ACE0_8012ACE0 *list; } Owner_8012ACE0_8012ACE0; /* list ptr @ +0x90 */ + +s32 func_8012ACE0(void *o) { + int i; + for (i = 0; ; i++) { + switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { + case -2: + case -1: + case 0: + return i; + case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ + default: + break; + } + } +} DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ diff --git a/tools/family_remap.py b/tools/family_remap.py index 3f6c684afa..96e20cf6f6 100644 --- a/tools/family_remap.py +++ b/tools/family_remap.py @@ -384,8 +384,12 @@ def extract_unit(ov, addr): for i, ln in enumerate(lines): if pat.search(ln) and "INCLUDE_ASM" not in ln and not ln.rstrip().endswith(";"): j = i - 1 + # Grab the fn's own preceding decls: externs, comments, AND single-line typedefs + # (Phase-26 §8: jr-function bodies define local `typedef struct {…} Foo_;` that + # must template with the body, else the sibling sees `Foo undeclared`. Multi-line + # typedefs aren't carried — those functions route through the engine_types.h lift). while j >= 0 and (lines[j].strip() == "" or - lines[j].lstrip().startswith(("extern", "//", "/*", "*"))): + lines[j].lstrip().startswith(("extern", "//", "/*", "*", "typedef"))): j -= 1 start = j + 1 depth, started, end = 0, False, i diff --git a/tools/jtbl_carve.py b/tools/jtbl_carve.py new file mode 100644 index 0000000000..957e7418e3 --- /dev/null +++ b/tools/jtbl_carve.py @@ -0,0 +1,180 @@ +#!/usr/bin/env python3 +"""Phase-26 §8 (overlay ×134): set up the jtbl-rodata carve for an overlay's matched jr-functions. + +An overlay's gcc switch jump tables sit in one contiguous `.rodata` island at the TAIL of the flat +blob. Matching a jr-function makes its C emit that jtbl into `.rodata` (floated to the FRONT by +section_order) while the raw copy stays in the data tail -> duplicate + wrong address. This tool +carves each named jr-function's jtbl(s) out of the `[…, data, tail]` subseg into a dotted +`[.rodata, ]` subseg (spimdisasm migrates it into the fn's `.s`), splitting the data tail +into pre/post `data` subsegs, and sets the `_JTBL_INTERLEAVE` var in config/overlays.mk so +`make extract` runs `ld_interleave --section .` (the data->rodata->data sandwich; cookbook §8a). + +Per-sibling: the SAME function is at the same vram across overlays but its jtbl is at a DIFFERENT +address in each (the island floats with the overlay's size), so the carve is recomputed per overlay. + +SINGLE-jtbl scope (this slice): one jr-function -> one jtbl -> a 3-region data->rodata->data carve +(--front tail / --tail tail2). Multiple matched jr-functions per overlay (scattered jtbls) need the +address-ordered `ld_interleave --order` mode -> raised as NotImplementedError (the next slice). + +Usage: jtbl_carve.py --func func_XXXX [--func ...] # apply the carve for these matched jr-fns + jtbl_carve.py --revert # restore the config from git (drop carves) +Idempotent: re-running with the same funcs reproduces the same config. +""" +import argparse +import os +import re +import subprocess +import sys + +REPO = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + + +def cfg_path(ov): + return os.path.join(REPO, f"config/splat.{ov}.yaml") + + +def overlay_vram_base(ov): + """The overlay's load vram (all location overlays share the 0x80128158 slot, but read it).""" + txt = open(cfg_path(ov)).read() + m = re.search(r"vram:\s*(0x[0-9A-Fa-f]+)", txt) + if not m: + sys.exit(f"jtbl_carve: no vram in {cfg_path(ov)}") + return int(m.group(1), 16) + + +def func_subseg(ov, func): + """The code subseg name that owns `func` (= the dir under asm//nonmatchings/).""" + base = os.path.join(REPO, "asm", ov, "nonmatchings") + for sub in os.listdir(base): + if os.path.exists(os.path.join(base, sub, f"{func}.s")): + return sub + sys.exit(f"jtbl_carve: {func}.s not found under asm/{ov}/nonmatchings/ (extract first)") + + +def func_jtbls(ov, func): + """The jtbl label(s) `func` references (from its .s %hi(jtbl_...)).""" + sub = func_subseg(ov, func) + s = open(os.path.join(REPO, "asm", ov, "nonmatchings", sub, f"{func}.s")).read() + return sub, sorted(set(re.findall(r"jtbl_([0-9A-Fa-f]{8})", s))) + + +def jtbl_range(ov, jtbl_hex): + """(start_vram, end_vram) of jtbl_ from the data-tail asm (dlabel .. next label).""" + tail = os.path.join(REPO, "asm", ov, "data", "tail.data.s") + lines = open(tail).read().splitlines() + start = int(jtbl_hex, 16) + # find the dlabel, then the next (glabel|dlabel) at a higher address = end. + labels = [] + for ln in lines: + m = re.match(r"\s*(?:dlabel|glabel)\s+(?:jtbl_|D_)([0-9A-Fa-f]{8})", ln) + if m: + labels.append(int(m.group(1), 16)) + labels = sorted(set(labels)) + if start not in labels: + sys.exit(f"jtbl_carve: jtbl_{jtbl_hex} not found in asm/{ov}/data/tail.data.s (carved already? --revert first)") + nxt = next((a for a in labels if a > start), None) + if nxt is None: + sys.exit(f"jtbl_carve: jtbl_{jtbl_hex} is the last label — cannot bound its size") + return start, nxt + + +def has_trailing(ov): + return bool(re.search(r"\[0x[0-9A-Fa-f]+,\s*bin,\s*trailing\]", open(cfg_path(ov)).read())) + + +def build_carve(ov, funcs): + """Return (subsegs, interleave_args) for the given matched jr-functions. + subsegs: list of (file_off, kind, name) replacing the single [tail] data subseg. + Single-jtbl only in this slice.""" + base = overlay_vram_base(ov) + jtbls = [] # (start_vram, end_vram, subseg_name) + for f in funcs: + sub, js = func_jtbls(ov, f) + for jh in js: + s, e = jtbl_range(ov, jh) + jtbls.append((s, e, sub)) + jtbls.sort() + if len(jtbls) != 1: + raise NotImplementedError( + f"jtbl_carve: {len(jtbls)} jtbls for {ov} — the multi-jtbl address-ordered carve " + f"(ld_interleave --order) is the next slice; single-jtbl only for now.") + s, e, sub = jtbls[0] + tail_start = current_tail_start(ov) + j_off, j_end = s - base, e - base + subsegs = [ + (tail_start, "data", "tail"), + (j_off, ".rodata", sub), + (j_end, "data", "tail2"), + ] + args = "--front tail.data.o --tail tail2.data.o" + (" --tail trailing.o" if has_trailing(ov) else "") + return subsegs, args + + +def current_tail_start(ov): + """The file offset of the overlay's data-tail `data` subseg (before any carve).""" + txt = open(cfg_path(ov)).read() + m = re.search(r"\[(0x[0-9A-Fa-f]+),\s*data,\s*tail\]", txt) + if not m: + sys.exit(f"jtbl_carve: no `[…, data, tail]` subseg in {cfg_path(ov)}") + return int(m.group(1), 16) + + +def apply(ov, funcs): + subsegs, args = build_carve(ov, funcs) + txt = open(cfg_path(ov)).read() + # Replace the single `[, data, tail]` line with the carve block (preserve indent). + line_re = re.compile(r"^(\s*)- \[0x[0-9A-Fa-f]+,\s*data,\s*tail\].*$", re.M) + m = line_re.search(txt) + if not m: + sys.exit(f"jtbl_carve: could not find the data-tail subseg line in {cfg_path(ov)}") + indent = m.group(1) + block = "\n".join( + f"{indent}- [{hex(off)}, {kind}, {name}]" + ( + " # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)" if kind == ".rodata" else "") + for off, kind, name in subsegs) + txt = line_re.sub(lambda _: block, txt, count=1) + open(cfg_path(ov), "w").write(txt) + set_overlays_var(ov, args) + print(f"jtbl_carve {ov}: carved {funcs} -> {[hex(o) for o, _, _ in subsegs]}; JTBL_INTERLEAVE = {args}") + + +def set_overlays_var(ov, args): + mk = os.path.join(REPO, "config/overlays.mk") + txt = open(mk).read() + var = f"{ov}_JTBL_INTERLEAVE := {args} # Phase-26 §8 jtbl-rodata carve" + if re.search(rf"^{re.escape(ov)}_JTBL_INTERLEAVE\b", txt, re.M): + txt = re.sub(rf"^{re.escape(ov)}_JTBL_INTERLEAVE.*$", var, txt, count=1, flags=re.M) + else: + # insert right after the overlay's SPLAT_YAML line + anchor = f"{ov}_SPLAT_YAML := config/splat.{ov}.yaml" + if anchor not in txt: + sys.exit(f"jtbl_carve: no {anchor} anchor in overlays.mk") + txt = txt.replace(anchor, anchor + "\n" + var, 1) + open(mk, "w").write(txt) + + +def revert(ov): + subprocess.check_call(["git", "-C", REPO, "checkout", "--", cfg_path(ov)]) + mk = os.path.join(REPO, "config/overlays.mk") + txt = open(mk).read() + txt = re.sub(rf"^{re.escape(ov)}_JTBL_INTERLEAVE.*\n", "", txt, flags=re.M) + open(mk, "w").write(txt) + print(f"jtbl_carve {ov}: reverted config + dropped JTBL_INTERLEAVE") + + +def main(): + ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + ap.add_argument("ov") + ap.add_argument("--func", action="append", default=[], help="matched jr-function to carve (repeatable)") + ap.add_argument("--revert", action="store_true", help="restore config from git + drop the var") + a = ap.parse_args() + if a.revert: + revert(a.ov) + elif a.func: + apply(a.ov, a.func) + else: + ap.error("give --func (repeatable) or --revert") + + +if __name__ == "__main__": + main() diff --git a/tools/jtbl_family_bank.py b/tools/jtbl_family_bank.py new file mode 100644 index 0000000000..bbc8489d48 --- /dev/null +++ b/tools/jtbl_family_bank.py @@ -0,0 +1,94 @@ +#!/usr/bin/env python3 +"""Phase-26 §8 ×134: bank a matched jr-function exemplar across its h_seq family siblings. + +Per sibling (idempotent, revert-on-fail — the whole-binary byte-gate G3/P9 is the sole arbiter): + 1. jtbl_carve — carve the sibling's jtbl into a dotted .rodata subseg + set _JTBL_INTERLEAVE + 2. make extract — regenerate asm + run ld_interleave (the data->rodata->data sandwich) + 3. remap_hseq + canon_sig_reconcile — template the exemplar body onto the sibling's TU + 4. make build — whole-binary gate; keep iff byte-identical, else revert (config + src) + +Usage: jtbl_family_bank.py + members.json = [[to_ov, to_addr_hex], ...] +""" +import glob +import json +import os +import re +import subprocess +import sys + +sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)))) +from family_remap import remap_hseq # noqa: E402 +from canon_sig_reconcile import reconcile # noqa: E402 + + +def sh(cmd): + return subprocess.run(cmd, shell=True, capture_output=True, text=True) + + +def stub_file(ov, func): + for cf in sorted(glob.glob(f"src/{ov}/{ov}*.c")): + if re.search(rf'INCLUDE_ASM\("[^"]*",\s*{func}\);', open(cf).read()): + return cf + return None + + +def revert(ov, cf=None): + if cf: + subprocess.run(f"git checkout -- {cf}", shell=True) + sh(f"python3 tools/jtbl_carve.py {ov} --revert") + + +def bank(func, from_ov, from_addr, to_ov, to_addr): + # clean slate (idempotent): restore this overlay's config AND src to the committed state + revert(to_ov) + subprocess.run(f"git checkout -- src/{to_ov}/ 2>/dev/null", shell=True) + r = sh(f"python3 tools/jtbl_carve.py {to_ov} --func {func}") + if r.returncode and "not found in" in (r.stdout + r.stderr): + # stale carved asm from a prior run — regenerate clean asm, then retry the carve + sh(f"make --no-print-directory extract BINARY={to_ov}") + r = sh(f"python3 tools/jtbl_carve.py {to_ov} --func {func}") + if r.returncode: + return "carve-fail", ((r.stdout + r.stderr).strip().splitlines()[-1:] or [""]) + if sh(f"make --no-print-directory extract BINARY={to_ov}").returncode: + revert(to_ov); return "extract-fail", "" + body, info = remap_hseq(from_addr, from_ov, to_ov, to_addr) + if body is None: + revert(to_ov); return "remap-refuse", info + cf = stub_file(to_ov, func) + if not cf: + revert(to_ov); return "no-stub", "" + try: + rec = reconcile(func, body, tu_path=cf) + except Exception as e: + revert(to_ov); return "reconcile-err", repr(e)[:160] + src = open(cf).read() + m = re.search(rf'INCLUDE_ASM\("[^"]*",\s*{func}\);', src) + open(cf, "w").write(src[:m.start()] + rec + src[m.end():]) + b = sh(f"make --no-print-directory build BINARY={to_ov}") + if b.returncode == 0 and "[ OK ]" in b.stdout: + return "BANKED", cf + revert(to_ov, cf) + return "gate-fail", "" + + +def main(): + func, from_ov, from_addr_hex, members_path = sys.argv[1:5] + from_addr = int(from_addr_hex, 16) + members = json.load(open(members_path)) + tally = {} + banked = [] + for i, (to_ov, to_addr_hex) in enumerate(members, 1): + status, detail = bank(func, from_ov, from_addr, to_ov, int(to_addr_hex, 16)) + tally[status] = tally.get(status, 0) + 1 + if status == "BANKED": + banked.append(to_ov) + print(f"[{i:3}/{len(members)}] {to_ov:16} {status}" + + (f" {detail}" if status not in ("BANKED",) else ""), flush=True) + print(f"\n=== {func}: {tally} ===") + print(f"banked {len(banked)} siblings") + json.dump(banked, open(f".run/banked_{func}.json", "w")) + + +if __name__ == "__main__": + main()