mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-28 06:49:47 -04:00
1e86617ff8
§450 — regenerating a target .s for a function that is no longer a stub. The source must be the ROM IMAGE, never the __asm__ block: the block is the thing under test, and a target derived from it agrees with the candidate by construction. Two silent defects caught by ONE known-true cross-check: splat writes BYTE-order hex where objdump prints the VALUE (reversing double-swaps -- 91/1139 words agreed, and the LENGTH was perfect so only a word-level compare could catch it), and objdump ELIDES runs of zero bytes so every MIPS nop vanished (-z is load-bearing; there the length assertion did catch it). Plus verbatim_to_stub: to gate this class, put the function back into the form every tool already understands rather than writing a parallel gate. §451 — your evidence has more than one source, and the one you query is probably the worse one. BEST not LAST from the append-only backlog (a last row is evidence about that lane's seed, not about the function); journal_notes as a second, DISAGREEING oracle (37 functions reclassified, G-DRAFTED-UNKNOWN 47->10, and func_8017DB98's 122 ins banked from a one-word declaration fix the journal had recorded all along); and a regex that consumes an unbounded body cannot enumerate the items after the first -- a 400-char window swallowed the next attempt's header and hid BOTH of that function's MATCH records. §452 — CORRECTION to §448's headline. A burst against the ten smallest verbatim bodies returned 0 banks and refuted the "154 functions of real decompilation work" framing. Four classes are legitimately verbatim: fragments of a SPLIT function sharing one stack frame (SYS_OBJ_604/640/func_80059760 are the compiled output of ONE original C function; a bare epilogue tail cannot be decompiled alone), hand-written GTE assembly from 1998, compiler-inexpressible forms (a symbolic store in a jr-ra delay slot, which gcc-2.7.2's define_delay cannot emit), and no-return tails. 154 is an UPPER BOUND, not a work queue, and the four tells are cheap to check. Also banked: one agent submitted the verbatim __asm__ block itself as its "decompile", and match_one truthfully printed MATCH -- a raw asm blob byte-matches its own source by construction. The adversarial verifier refuted it. Any burst over this class MUST carry that check: the trivially-passing draft is not hypothetical here, it is the default thing to produce, and a byte gate cannot tell the difference.