mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-27 05:56:00 -04:00
6d09d35b6d
- wave H: 40 atlas mass cards on ov_SC02_005 -> 38/40 standalone (95%), 34 banked, ONE gate group. R22 213/213. stubs 11,788 -> 11,751. fleet 95.4%. - §175 (NEW): a register pin to a CALLER-SAVED reg is not a scheduling hint, it changes program meaning. func_80182EB0: value written before a jal and read after it; the $2 pin let gcc treat the pre-call store as dead across the call and SILENTLY DELETE addiu v0,zero,-1 (49 vs 50 ins), post-call read = garbage. Fix was to DROP the pin and kill the cross-call live range in C. Rule: never pin a caller-saved reg to a value whose live range crosses a jal — use a callee-saved $s0-$s7 (safe by ABI, the §17 lever) or restructure. A one-instruction count mismatch on a caller-saved-pinned draft is this bug until proven otherwise. - 2 NEARs enqueued with full diagnoses (prologue $ra-save scheduling; S3 chain-priority).