mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-03 08:07:25 -04:00
aaed146bb2
TWO REAL DEFECTS I INTRODUCED, both found by the audit:
1. §429 WAS SILENTLY DELETED. My §428a rewrite (commit:3659) wrote t[:start]+new instead of
t[:start]+new+t[end:], truncating everything below §428a. §429 ('every held pointer
needs its own local') was the casualty and had been gone for the rest of the session.
Restored verbatim from commit:3658, between §428a and §430. All of 426-434 now present;
index 1103 sections.
2. §434 ACCUSED AN AGENT OF INVENTING ITS CITATION OF §265. §265 exists and says exactly
what the agent said — 'THE VERBATIM-ASM BANK LANE: A FUNCTION NO -O2 C CAN EVER MATCH
BANKS AS A RAW __asm__ BODY' — with four named byte-banked precedents. I ran
cookbook_index --resolve 265, which resolves a LINE number not a section, and believed
it without opening §265. Retracted in the section itself.
The verdict also needed narrowing: gated, the §265 transcription of SaveLoadRoutine is
BYTE-IDENTICAL for the function itself and fails only because substituting one half of
the shared frame moves 3,989 bytes across 262 symbols. True statement: neither can bank
SEPARATELY; the route is to transcribe/resegment the PAIR together via §265. The
exclude entries now say 'excluded from DRAWS only' and name that route, instead of
reading as 'unmatchable'.
I also mis-read the draft as containing INCLUDE_ASM by grepping raw text — all three hits
were in comments. Sixth instance this session of reading prose as code.
50 lines
4.6 KiB
Plaintext
50 lines
4.6 KiB
Plaintext
# config/wave_exclude.txt — THE canonical wave exclude list. (P31 S72)
|
|
#
|
|
# There were NINE session-snapshot exclude files and SEVEN walls ledgers under .run/, with no way
|
|
# to tell which was current. This is the one, it is TRACKED, and it is regenerated, not hand-edited:
|
|
#
|
|
# tools/exclude_audit.py config/wave_exclude.txt --write config/wave_exclude.txt.new
|
|
#
|
|
# `draw_waves --exclude-file config/wave_exclude.txt` AUDITS it first and REFUSES to draw if any
|
|
# entry is stale (--exclude-stale-ok overrides, loudly). Regenerate as part of every tool fix: an
|
|
# exclude list records what the TOOLING could not do, and becomes a list of work you decided not to
|
|
# do the moment the tooling improves. Measured on its predecessor one day after it was written:
|
|
# 88 of 107 entries stale, 46 of them open drawable functions totalling 12,750 instructions.
|
|
#
|
|
# TWO CLASSES:
|
|
# CARVE-BLOCKED — DERIVED (tools/split_indicator.py). Disappears when the subseg is split.
|
|
# WALL — CURATED. Cannot be re-derived, which is why this file is tracked. The `# WALL:`
|
|
# annotation is re-read as a PIN by exclude_audit.parse, so a wall survives
|
|
# regeneration; its note is its refutation list — what was measured and found
|
|
# inert — so keep it, and beat it before reopening the entry.
|
|
#
|
|
# NOT INCLUDED: .run/t3wall_list.txt (99 BARE function names, no binary). R48 — the same name is a
|
|
# different function in another overlay, so a bare-name exclude over-excludes silently fleet-wide.
|
|
main:PopMatrix # WALL: compiler wall (merged from S68_walls_332.txt)
|
|
main:PushMatrix # WALL: compiler wall (merged from S68_walls_332.txt)
|
|
main:func_8005D9C4 # WALL: no jump table — curated compiler fact, not a tooling limit
|
|
main:func_8005ECC0 # WALL: no jump table — curated compiler fact, not a tooling limit
|
|
main:func_8005F0C8 # WALL: compiler wall (merged from S68_walls.txt)
|
|
main:func_80062144 # WALL: no jump table — curated compiler fact, not a tooling limit
|
|
md_MAIN_034:func_800CB00C # WALL: compiler wall (merged from S68_walls_332.txt)
|
|
ov_SC01_084:func_80182328 # CARVE-BLOCKED: ov_SC01_084_jr_8017F690 owns >1 raw jtbl span — needs a split
|
|
ov_SC01_084:func_80182A00 # CARVE-BLOCKED: ov_SC01_084_jr_8017F690 owns >1 raw jtbl span — needs a split
|
|
ov_SC02_005:func_80185060 # CARVE-BLOCKED: ov_SC02_005_jr_80181D30 owns >1 raw jtbl span — needs a split
|
|
ov_SC02_005:func_80185E80 # CARVE-BLOCKED: ov_SC02_005_jr_80181D30 owns >1 raw jtbl span — needs a split
|
|
ov_SC02_011:func_80183178 # CARVE-BLOCKED: ov_SC02_011_jr_8017AE2C owns >1 raw jtbl span — needs a split
|
|
ov_SC02_011:func_80183630 # CARVE-BLOCKED: ov_SC02_011_jr_8017AE2C owns >1 raw jtbl span — needs a split
|
|
ov_SC02_011:func_8018418C # CARVE-BLOCKED: ov_SC02_011_jr_8017AE2C owns >1 raw jtbl span — needs a split
|
|
ov_SC02_011:func_80188E3C # CARVE-BLOCKED: ov_SC02_011_jr_8017AE2C owns >1 raw jtbl span — needs a split
|
|
ov_SC03_105:func_801806F8 # CARVE-BLOCKED: ov_SC03_105_jr_8017C8D0 owns >1 raw jtbl span — needs a split
|
|
ov_SC03_105:func_80180ABC # CARVE-BLOCKED: ov_SC03_105_jr_8017C8D0 owns >1 raw jtbl span — needs a split
|
|
ov_SC03_105:func_80180EC0 # CARVE-BLOCKED: ov_SC03_105_jr_8017C8D0 owns >1 raw jtbl span — needs a split
|
|
ov_SC03_105:func_801813BC # CARVE-BLOCKED: ov_SC03_105_jr_8017C8D0 owns >1 raw jtbl span — needs a split
|
|
ov_SC03_105:func_801818E8 # CARVE-BLOCKED: ov_SC03_105_jr_8017C8D0 owns >1 raw jtbl span — needs a split
|
|
ov_SC03_105:func_80181C84 # CARVE-BLOCKED: ov_SC03_105_jr_8017C8D0 owns >1 raw jtbl span — needs a split
|
|
ov_SC03_105:func_801834A4 # WALL: loop.c movable ordering, closeness 6 (S71)
|
|
ov_SC03_105:func_8018624C # CARVE-BLOCKED: ov_SC03_105_jr_8017C8D0 owns >1 raw jtbl span — needs a split
|
|
ov_SC03_105:func_801867D0 # CARVE-BLOCKED: ov_SC03_105_jr_8017C8D0 owns >1 raw jtbl span — needs a split
|
|
ov_SC06_022:func_8017DF28 # WALL: expand_block_move copy_addr_to_reg pseudo + cse reuse, closeness 2 (S71)
|
|
main:func_8002B0B4 # WALL: §179-C/§434 — no epilogue; every exit is a raw j/jr into labels inside SaveLoadRoutine, with which it shares one 0x40 frame. Same route as its twin: the §265 pair transcription, not a per-function draft. Excluded from DRAWS only.
|
|
main:SaveLoadRoutine # WALL: §296/§434 — SaveLoadRoutine (1139) and func_8002B0B4 (76) are ONE 0x40 frame across two symbols. NOT unmatchable: the §265 verbatim-asm lane transcribes SaveLoadRoutine BYTE-IDENTICAL (measured S73); it fails the whole-binary gate only because substituting one alone moves 3,989 bytes across 262 symbols of the shared frame. Route = transcribe/resegment the PAIR TOGETHER (§265), not a per-function draft. Excluded from DRAWS only.
|