Small cleanup decisions surfaced by the v0.9 tech-debt pass. Each is deliberately not done because it trades something, and the trade is worth a moment's thought rather than a silent call.
1. Six probes that cannot run, but are cited by name
Each boots a fixture with no minter anywhere in the tree, or probes a mechanism that no longer exists — and each is cited from a file that still ships. Deleting one costs a provenance citation, which is this repo's own documented keep-signal (fcfd138).
| file |
why dead |
cited from |
probe_objarrow.lua |
Ot6ObjArrowAddrTbl has 0 hits in ff6/src; retirement recorded at ot6_hud.asm:15, ot6_icons.asm:58-60 |
ot6_hud.asm:34 — and it self-declares "RETAINED AS EVIDENCE" at :4-8 |
probe_kefka_fight.lua |
boots spike_doorstep.mss, which has no minter; superseded by battle_kefka.lua, which its own :11-12 predicted |
gen_narshe_battle.lua:36 |
probe_kefka_npc.lua |
same dead fixture |
battle_kefka.lua:67 |
probe_narshe_map.lua |
boots spike_defense.mss, no minter |
its two siblings |
probe_narshe_map2.lua |
same |
probe_narshe_edge.lua:3 |
probe_narshe_edge.lua |
same |
gen_narshe_battle.lua:53 |
Suggested: delete the file, leave the citation with a (deleted, see git history) note — the measurement trail survives in the log, which is what the citation is for. probe_objarrow is the exception: the owner already decided to retain it as evidence, so it stays.
Two more that are genuinely arguable, listed so they are not re-litigated from scratch: probe_blitzpage.lua (its output is quoted into menu_blitzpage.lua:9-11 and the combo page it dumped is gone from the EN build, but DrawBlitzInput is still assembled for JP) and probe_mkcheckpoint.lua (607 lines, the only file of 150 with no header comment and zero references — but the only minter of bridge_checkpoint.mss, which five other probes boot).
Also: probe_bridge / probe_climb2 / probe_westroom are truncated forks of gen_zozo4_dadaluma.lua that still open with that file's header. They want headers, not deletion.
2. Ot6ListIcon_ext — dead, deliberately left in
6 bytes at $F00A62 (ot6_icons.asm:494), unreferenced. Removing it shifts every bank-$F0 symbol after it, so it cannot be done with a byte-identical ROM — which was the standard the whole assembly pass held to (3aa5e59). Worth doing next time something else forces a $F0 reflow, not on its own.
3. The JP variant cannot be built in this tree
make -C ff6 ff6-jp fails on missing ripped data — pre-existing, not caused by anything recent. The consequence is that every .if LANG_EN in the tree is an untested promise: the ten-file split's safety on the JP path was argued from ca65 semantics (a .include inside a false .if is never opened; both extracted menu files contain zero conditionals; field_menu.asm's .if/.endif counts are 33/33, unchanged from v0.9) but could not be built. Either get JP buildable or write down plainly that it is unsupported, so the next person does not assume the conditionals are covered.
4. Two source comments that contradict their source
ot6_break_floor.inc:6 says "not yet referenced by ot6.asm" — but ot6_break.asm:50 reads it. The fix belongs in tools/gen_break_floor.py, which regenerates the file.
- The
Makefile's anchor comment says post-opera-v1 is the only anchor. There are 11.
5. weapon-classes-six.md's "62 records" is now 74
The §5.4 mask tally derived from that count was not re-derived during the docs sweep — it is marked as a v0.6-era snapshot rather than replaced with numbers nobody measured. Someone should re-derive it against 74.
6. ot6_class.asm:185-192 carries retranslated names as parentheticals
; dispatch (fang), ; quadra slam (flurry — chips per hit), ; cleave (oblivion). This is what #51's vocabulary rule was clearing, and #51 never reached this file. The counter-argument, worth weighing: kits.md:249 rules that upstream symbols stay because "a comment already buys" the mapping — but there is no upstream symbol on these data rows, so (fang) buys nothing here.
Small cleanup decisions surfaced by the v0.9 tech-debt pass. Each is deliberately not done because it trades something, and the trade is worth a moment's thought rather than a silent call.
1. Six probes that cannot run, but are cited by name
Each boots a fixture with no minter anywhere in the tree, or probes a mechanism that no longer exists — and each is cited from a file that still ships. Deleting one costs a provenance citation, which is this repo's own documented keep-signal (
fcfd138).probe_objarrow.luaOt6ObjArrowAddrTblhas 0 hits inff6/src; retirement recorded atot6_hud.asm:15,ot6_icons.asm:58-60ot6_hud.asm:34— and it self-declares "RETAINED AS EVIDENCE" at:4-8probe_kefka_fight.luaspike_doorstep.mss, which has no minter; superseded bybattle_kefka.lua, which its own:11-12predictedgen_narshe_battle.lua:36probe_kefka_npc.luabattle_kefka.lua:67probe_narshe_map.luaspike_defense.mss, no minterprobe_narshe_map2.luaprobe_narshe_edge.lua:3probe_narshe_edge.luagen_narshe_battle.lua:53Suggested: delete the file, leave the citation with a
(deleted, see git history)note — the measurement trail survives in the log, which is what the citation is for.probe_objarrowis the exception: the owner already decided to retain it as evidence, so it stays.Two more that are genuinely arguable, listed so they are not re-litigated from scratch:
probe_blitzpage.lua(its output is quoted intomenu_blitzpage.lua:9-11and the combo page it dumped is gone from the EN build, butDrawBlitzInputis still assembled for JP) andprobe_mkcheckpoint.lua(607 lines, the only file of 150 with no header comment and zero references — but the only minter ofbridge_checkpoint.mss, which five other probes boot).Also:
probe_bridge/probe_climb2/probe_westroomare truncated forks ofgen_zozo4_dadaluma.luathat still open with that file's header. They want headers, not deletion.2.
Ot6ListIcon_ext— dead, deliberately left in6 bytes at
$F00A62(ot6_icons.asm:494), unreferenced. Removing it shifts every bank-$F0symbol after it, so it cannot be done with a byte-identical ROM — which was the standard the whole assembly pass held to (3aa5e59). Worth doing next time something else forces a$F0reflow, not on its own.3. The JP variant cannot be built in this tree
make -C ff6 ff6-jpfails on missing ripped data — pre-existing, not caused by anything recent. The consequence is that every.if LANG_ENin the tree is an untested promise: the ten-file split's safety on the JP path was argued from ca65 semantics (a.includeinside a false.ifis never opened; both extracted menu files contain zero conditionals;field_menu.asm's.if/.endifcounts are 33/33, unchanged from v0.9) but could not be built. Either get JP buildable or write down plainly that it is unsupported, so the next person does not assume the conditionals are covered.4. Two source comments that contradict their source
ot6_break_floor.inc:6says "not yet referenced by ot6.asm" — butot6_break.asm:50reads it. The fix belongs intools/gen_break_floor.py, which regenerates the file.Makefile's anchor comment sayspost-opera-v1is the only anchor. There are 11.5.
weapon-classes-six.md's "62 records" is now 74The §5.4 mask tally derived from that count was not re-derived during the docs sweep — it is marked as a v0.6-era snapshot rather than replaced with numbers nobody measured. Someone should re-derive it against 74.
6.
ot6_class.asm:185-192carries retranslated names as parentheticals; dispatch (fang),; quadra slam (flurry — chips per hit),; cleave (oblivion). This is what #51's vocabulary rule was clearing, and #51 never reached this file. The counter-argument, worth weighing:kits.md:249rules that upstream symbols stay because "a comment already buys" the mapping — but there is no upstream symbol on these data rows, so(fang)buys nothing here.