Files
BFM-decomp/cookbook/C0316.md
T

3.4 KiB
Raw Blame History

What I could not verify

  • func_8017EB34 (ov_SC03_117), waves dp/dr/dt: the typedef/extern decl-conflict diagnosis (§236-4) is sound and independently confirmed by direct source reading. The more elaborate claims layered on top of it — a specific "hard-reg-vs-pseudo TRUNCATE fork" register mechanism, and (in the dt-wave version only) an inline-__asm__-store escape hatch used instead of the block-scope typedef shadow — could not be confirmed against the current tree. The function still has draft copies scattered across roughly a dozen .run/sweep_* directories and its .s is still present under nonmatchings/ with no clear signal from the readable surface of which (if any) submitted body is the one that ultimately banked; the live src/ file currently uses a plain file-scope typedef shared with a sibling function, a spelling none of the three candidate write-ups describe. Not promoted.

  • func_8018043C (ov_SC03_031), waves cy/cz: the note's specific claim — that the fleet-canonical spelling extern void (*D_80186478[])(void); (no parameter) is required over a locally-invented (void*) form — does NOT match what is currently banked at src/ov_SC03_031/ov_SC03_031_jr_8017DB5C.c:3923, which declares extern void (*D_80186478[])(void*); and never calls through the table as a function pointer at all (only address-arithmetic indexing). Downgraded from a considered ADDENDUM to plain COVERED §236-1/law 2 — the general "fleet wins when the TU has no prior decl of the symbol" principle is sound and unremarkable, but this specific instance's byte claim did not survive checking.

  • func_8018C000 (ov_SC03_001), waves dp/dr/dt: the "keep the TU's (s32,s16) signature, not (s16,s16)" fix is confirmed verbatim against the live tree (src/ov_SC03_001/ ov_SC03_001_jr_8018B8DC.c:3168 and :3521). The dr-wave session's more specific claim — that the switch operand needs (s16)(param_1 - 1) with cases rebased 0..13 to reproduce the minval fold — does NOT match the current tree, which uses the plain switch ((short)param_1) with cases numbered 1..13 (no rebase). Either that intermediate theory was superseded by a later session's correction (visible in the dt-wave candidate, whose skeleton is what is actually banked) or the two candidates describe different points in an evolving multi-session card; either way the -1-rebase claim specifically could not be verified and was not promoted.

  • func_8017F1F0 (ov_SC03_001), wave db: the register s32 rv __asm__("$2") return-value pin under a void-declared definition is a plausible, self-consistent alternate implementation of §138's DEFINITION-alias escape row, but I did not independently confirm it against the target .s (the candidate reports 16 verified MATCHes across sessions; I read only the mechanism description, not the bytes). Filed as COVERED under the closest existing class rather than promoted, out of caution.

  • func_8017D6E4 (ov_SC07_011), waves dr (×2)/dt (×3): five near-identical write-ups of what turned out to be one root cause (a session-1 path typo that bound the wrong overlay's same-named function for several subsequent sessions). I trust the self-diagnosis — it is internally consistent and the final wave-dt/dr versions cite the correct .s path and correct symbol set — but did not independently re-derive the 15-instruction dispatcher's semantics against the corrected target.