mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-01 15:43:06 -04:00
docs(phase-13): T1c done — C record + Ghidra import (2661 fns, 0 failed); harvest next
This commit is contained in:
@@ -25,6 +25,9 @@ All load @ vram 0x80128158. SC01/077 starts with CODE at offset 0x0 (no leading
|
||||
- [x] **T0** — Overlay splat template (`config/splat.us.overlay.template.yaml`) + Makefile `-include config/overlays.mk` indirection. ✅ GATE: clean rebuild main `143dbb89…` + resident `8e17e02f…` BYTE-IDENTICAL (indirection proven a no-op; `overlays.mk` absent → silent `-include` → `BINARIES` unchanged).
|
||||
- [~] **T1** — SC01/077 end-to-end. ✅ T1a scaffold (overlays.mk + splat.ov_SC01_077.yaml + check.sha + symbols + 4 Python dicts w/ sentinel) · ✅ T1b all-asm byte-match `d19c9580…` BYTE-IDENTICAL (milestone; main+resident unregressed) · ☐ T1c seed boundaries + Ghidra import · ☐ T1d dedup-credit · ☐ T1e unique-remainder harvest (Ultracode §12 — prompt R26).
|
||||
- **Reusable finding (→ cookbook §13 + PhaseEnd):** non-word-aligned overlays (≈75% of fleet) need 3 template/Makefile additions: (1) a `[<word_floor>, bin, trailing]` carve for the final 1-3 bytes spimdisasm's data path drops; (2) a `build/assets/%.o` incbin rule (+ `--set-section-alignment .data=1`) wiring splat `bin` assets (scoped `asset_path: assets/<alias>`); (3) an objcopy end-align **trim** (shrink-only, ≤3 B) removing the splat `.ld`'s `. = ALIGN(., 4)` segment-end pad. EXE/resident are 4-aligned so untouched.
|
||||
- ✅ **T1c done:** carve is clean (splat 2504 fns; key shared `func_80144B9C`=770 ins carved right) → match `func_*` directly (resident precedent), no boundary reseed. C record committed (`commit:0086`). Ghidra: raw-import @0x80128158 + DefineFunctions (created 1424/existed 1080/**failed 0** → 2661 fns), Save succeeded (PsyQ 470 detected = same coincidental DsMix sig as resident; real triple = EXE's gcc-2.7.2 per R24, byte-matches will confirm). Overlay Ghidra DB is **script-reproducible** (ghidra_import_raw.sh + DefineFunctions over the committed boundary list) → DB commit deferred as regenerable (no manual RE yet; avoids ~14 MB bloat).
|
||||
- **MCP note:** server restarted serving ov_SC01_077 (port 8080 STARTED); client SSE went stale across the restart (timeouts — the known `/mcp` re-attach churn). Harvest can draft from on-disk `asm/ov_SC01_077/nonmatchings/` if MCP stays flaky; a `/mcp` reconnect restores get_code assist.
|
||||
- ☐ **T1d/T1e = the harvest** (breadth → R26 Ultracode prompt): match SC01/077's functions, prioritizing the high-leverage cross-report shared engine fns (register matched shared bodies in dedup.us.yaml with onboarded-members-only), then the unique remainder. `harvest_verify.py` byte-gate + `match_one.py` iterate.
|
||||
- [ ] **T2** — Dup-pair collapse SC01/005≡006 (both `56760dbe…` from one shared source).
|
||||
- [ ] **T3** — Free-roam SC03/001 (`f8fd92f5…`); recipe scales to a large overlay.
|
||||
- [ ] **T4** — `tools/new_overlay.sh` one-command onboarding (gen `overlays.mk`; sentinel-insert 4 dicts; idempotent). GATE: onboard a fresh overlay in one command.
|
||||
|
||||
Reference in New Issue
Block a user