Skip to content

cleanup: six decisions left open by the tech-debt pass #73

Description

@mtklein

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions