mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 13:33:34 -04:00
f8e522ea0d
Correcting my own guidance from earlier today. §378 gave the self-caller chain; three more variants appeared within hours and two of them BREAK the chain. Variant 3 (NEW, byte-proven ov_SC04_018/func_8017F35C, banked): conflicting RETURN type on a decl that is ALREADY no-proto, where the symbol is ADDRESS-TAKEN rather than called. --any-proto has nothing to relax and cast_self_callers has no call site to cast; --sync-decls ALONE fixes it, and is safe precisely because an address-taken site has no arguments to convert. Variant 4 (REFUTATION of what I wrote in the playbook this morning): "run the same chain on the callee the diagnostic names" is wrong at scale. Applied to func_8012AD44 in ov_SC07_000 it no-protoed 60 caller decls and the binary went RED (265b24bb vs 9dbe4241); reverted via journal. The self case is safe because step 2 casts the call sites so the decl change cannot alter argument conversion; for a callee, cast_self_callers correctly refuses and the decl change runs unprotected. It banked main/func_80021D38 only because that callee had ONE decl, not sixty. Rule added: never --any-proto a symbol whose call sites you are not also casting; count the sites first. The chain is a DECISION TABLE, not a sequence to run blindly.