mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-01 15:43:06 -04:00
3d26cef9ad
- 3 falsified hypotheses, then MATCH (101 ins) with direct-symbol scalar decls. The length gap was the target re-materializing "lui $at,%hi(sym)" per scalar store while array/struct forms let gcc CSE the address into a register (1-ins stores) -> mine was exactly one instruction short. - Remaining blocker NAMED: the TU's canonical decl is "extern u8 D_80126BE0[]" INSIDE a DEFINE_func_* macro body (engine_core.h:19813), so the matching u16 form gives conflicting types in the real TU (real cc1, via rtu_match --stderr-out). - demacroize would clear it but banks x1 (+101 ins) and forfeits x138 — a trap, not a win. The right exit is the §H CSE address-fold antidote (balanced if/else diamond, zero asm) so the canonical u8[] decl stays and the bank propagates x138 (+13,938 ins). Both draft forms preserved.
phase-ends/ — the living record
PhaseEnd_Phase[N].md— written at each phase boundary (format defined inPROJECT_CONTEXT.md). Append-only history: build log, deviations, commit message, rules added, changelog. Never deleted.CURRENT_PHASE.md— the in-phase autonomous log: approved phase plan, per-task checkboxes, current task pointer, blockers. Created at phase start, updated after every task, absorbed into the PhaseEnd file and deleted at phase close. This is the crash/compaction recovery point.- Sessions read
PROJECT_CONTEXT.md, then everyPhaseEnd_*.mdin numeric order, thenCURRENT_PHASE.md(if present) — in that order, every session.