mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-04 00:20:10 -04:00
feat(phase-26a): A9b — bank func_8017A4AC exemplar ×1 (wall re-test payoff)
The 536-ins reach-134 giant listed "blocked on plumbing" since session 8. Re-tested through bank_exemplar after the audit's recover-path fixes (A3d reconcile_tu wiring / A3e gate): BANKED at the `recovered` stage (fb.recover / reconcile_tu resolves the D_80126B58 struct + D_801DA75C fn-ptr conflicts the raw/scoped stages hit). Lazy-isolated into its own jr subseg + jtbl carve. HONEST ATTRIBUTION (R14): this bank is the payoff of the A3 recover path, NOT A9a — it banked at `recovered`, before the `reconciled` (canon_sig_reconcile) stage was reached. A9a's fn-ptr classifier fix is a correctness fix that did NOT independently unblock a bank in the 7-candidate re-test (the reconciled stage failed on func_8015B950's func-conflicts; the rest hit K&R / scalar-typedef / non-ov077 / non-contiguous-carve blockers) — the same null-immediate-banking pattern as A3c/A3d/A3e; its value is protecting all future dispatch-table banking. R22 clean-fleet: 136 passed, 0 failed of 136. Exemplar ×1 (+536 ins); the ×134 family sweep follows.
This commit is contained in:
+1
-1
@@ -21,7 +21,7 @@ ov_SC01_077_ELF := $(ov_SC01_077_OUT).elf
|
||||
ov_SC01_077_MAPFILE := $(ov_SC01_077_OUT).map
|
||||
ov_SC01_077_LD_SCRIPT := $(ov_SC01_077_OUT).ld
|
||||
ov_SC01_077_SPLAT_YAML := config/splat.ov_SC01_077.yaml
|
||||
ov_SC01_077_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_077_jr_8012ACE0.o,tail2.data.o,ov_SC01_077_jr_801380E0.o,tail3.data.o,ov_SC01_077.o,tail4.data.o,ov_SC01_077_jr_8015444C.o,tail5.data.o,ov_SC01_077_jr_8015A3C8.o,tail6.data.o,ov_SC01_077_jr_8015AE2C.o,tail7.data.o,ov_SC01_077_jr_8016AB6C.o,tail8.data.o,ov_SC01_077_jr_801734BC.o,tail9.data.o,ov_SC01_077_jr_80178D40.o,tail10.data.o,ov_SC01_077_jr_80182268.o,tail11.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
|
||||
ov_SC01_077_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_077_jr_8012ACE0.o,tail2.data.o,ov_SC01_077_jr_801380E0.o,tail3.data.o,ov_SC01_077.o,tail4.data.o,ov_SC01_077_jr_8015444C.o,tail5.data.o,ov_SC01_077_jr_8015A3C8.o,tail6.data.o,ov_SC01_077_jr_8015AE2C.o,tail7.data.o,ov_SC01_077_jr_8016AB6C.o,tail8.data.o,ov_SC01_077_jr_801734BC.o,tail9.data.o,ov_SC01_077_jr_80178D40.o,tail10.data.o,ov_SC01_077_jr_8017A4AC.o,tail11.data.o,ov_SC01_077_jr_80182268.o,tail12.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
|
||||
ov_SC01_077_CHECK_SHA := config/check.ov_SC01_077.sha
|
||||
ov_SC01_077_SYMBOLS := config/symbols.ov_SC01_077.txt
|
||||
ov_SC01_077_SIG := .run/sig.ov_SC01_077.jsonl
|
||||
|
||||
@@ -73,6 +73,7 @@ segments:
|
||||
- [0x42a14, c, ov_SC01_077_jr_8016AB6C]
|
||||
- [0x4b364, c, ov_SC01_077_jr_801734BC]
|
||||
- [0x50be8, c, ov_SC01_077_jr_80178D40]
|
||||
- [0x52354, c, ov_SC01_077_jr_8017A4AC]
|
||||
- [0x5a110, c, ov_SC01_077_jr_80182268]
|
||||
# Phase-26 §8 jtbl-rodata carve (cookbook §8, the LZSS precedent adapted to a flat overlay).
|
||||
# gcc emits each `switch` jump table into .rodata; this overlay's jtbl island sits at the TAIL
|
||||
@@ -104,8 +105,10 @@ segments:
|
||||
- [0xb0b24, data, tail9]
|
||||
- [0xb0ccc, .rodata, ov_SC01_077_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb0e44, data, tail10]
|
||||
- [0xb0ed4, .rodata, ov_SC01_077_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb0f60, data, tail11]
|
||||
- [0xb1148, .rodata, ov_SC01_077_jr_80182268] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb1168, data, tail11]
|
||||
- [0xb1168, data, tail12]
|
||||
- [0xB29D4, bin, trailing] # final 3 bytes (EOF 0xB29D7 not word-aligned; spimdisasm drops
|
||||
# a trailing partial word and a <4-byte `data` carve emits nothing,
|
||||
# so use `bin` = raw .incbin, byte-exact). Word-aligned overlays omit this.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user