mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-29 23:24:32 -04:00
eb90cacd72
- T2 (Xenogears mine, 2 bg agents): independent decomp on IDENTICAL gcc-2.7.2-psx -O2 has NO C lever for the call-crossing $s0/$s1 ORDER class; ships it as INCLUDE_ASM (1174 nonmatch). Their idioms: variable-split, width/cast, per-file compiler-switch. - flag/cc1 sweep (func_8012B8E4): -funsigned-char/-fpcc-struct-return/-fpeephole/ -fcaller-saves all 21 (no change); cdk worse (32); -fno-schedule-insns worse (71) - T3 verdict: regalloc-ORDER class = UNSTEERABLE from C (global.c density ordering; exhaustive empirics + independent corroboration) - NEW IDIOM found on func_8012B4B8 (remat class): array-decay forces rematerialization (s32 mtx[8] passed as decay -> remat not hoist; fixes 88->52 incl. the hard regalloc). &struct/.w/*(M8*) all hoist. Bankable; this fn has a struct-copy conflict so partial. - synthesis: .run/p18/T2_T3_synthesis.md; reconciles §10-vs-§16 for T5 - strategic redirect: high-reach circular tail largely unmatchable from C -> match-% lever is the tractable-247 wave (Phase 19) + accept the tail as asm (Xenogears policy)
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.