mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 21:36:06 -04:00
038e7de532
- LZSS: defeated gcc 2.7.2 -O2 cross-jump-merge of the twin state-save tails with a
zero-byte __asm__ __volatile__("" ::: "memory") barrier (find_cross_jump bails on
ASM_INPUT; ground-truthed vs gcc-2.7.2.3 jump.c by a web-research subagent).
LzssDecodeSector now 122 instructions (correct structure); ~3 regalloc/scheduling
swaps remain -> C kept under #ifdef NON_MATCHING, default build = stub = BYTE-IDENTICAL
- surgical rodata carve (lean LZSS path, no libgs needed): splat carves ONLY
jtbl_80072A38 ([0x63238,.rodata,800] bounded by [0x6324C,data,6324C]); ld_interleave
wired into `make extract` as the .data->.rodata->.data sandwich (TAIL_DATA=6324C.data.o)
- libgs: 31/32 used objects byte-verified IDENTICAL to real PsyQ libgs 4.0 (0 conflicts,
69 externals); GS_001 deferred (psyq-obj-parser .bss-common scattering); 6-block
resegmentation wiring pending. psyq_identify.py now skips data-only objects (GLOBAL.o)
- cookbook: §3a (web-research compiler internals — escalation tier above the permuter)
+ §5a (the cross-jump barrier idiom) — both reusable
- build BYTE-IDENTICAL (143dbb89f34491258bbc27810d0a12ec8b43a8dd) throughout