Files
BFM-decomp/docs
Drew T 8b48f482f9 feat(phase-24): T7 — Fable5 cracks giant func_80129CF8 + §32 idiom; banked ×1 (×134 needs the canonical-decl tool)
- Fable5Max cracked func_80129CF8 (191-ins region-a camera giant; match_one MATCH, 0-off): struct-base
  hoisting via SOURCE-LOCAL pointers (gcc-2.7.2 has no cross-bb CSE → a callee-saved base can only come
  from a local, NO pins), branch-polarity-off-the-opcode, S12 reused-temp fence, expand_block_move
  struct-assignment for the grouped copy, dead-local-aggregate for the frame. Distilled → cookbook §32.
- banked ×1 in ov_SC01_077_a.c (d19c9580; clean fleet 136/136) after reconciling its loose-typed decls
  (u8[]/s32[]/struct BigCopy/s8-vs-u8; func_80012F74 s16-vs-s32) to canonical + byte-neutral access casts;
  RView (GsRVIEW2-shaped 32B) lifted to engine_types.h.
- FINDING (byte-proven): ×134 propagation is BLOCKED by the fleet-wide loose-typing wall — the giant's
  shared callees/data are declared incompatibly across overlays, so the macro's externs conflict per
  overlay (dedup_propagate --recover only fixes the propagated fn's CALLER extern, not its callee/data).
  Unlike the flagship func_80132784 (compatible → ×134), loose-typed giants bank ×1, not ×134.
- Drew's call (A, invest): build the fleet-wide canonical-decl reconcile tool = the ×134 giant unlock.
  Spec + conflict taxonomy + byte-neutral cast patterns: docs/canonical-decl-reconcile-design.md.
- clean fleet check-all 136/136 BYTE-IDENTICAL (R22). No new governance rules.
2026-07-03 16:40:04 -06:00
..