Files
BFM-decomp/dumps/INDEX.md
T
Drew T bd5e21b366 feat(phase-3): file-loader & overlay-map RE + PCSX-Redux runtime oracle
- RE'd the full file-loader/overlay subsystem in Ghidra via MCP: CdReadRequest ->
  CdReadStateMachine (hand-rolled CdControl SeekL/ReadN reader, NOT PsyQ CdRead);
  LIST.CD RAM cache cdFileLocTable + ResourceGetCdLoc/resourceIdMap lookup; LZSS
  staging buffer 0x80079A70; loadDestPtrTable; ~50 symbols named (T1-T5,T8)
- T6b MILESTONE: resident blob @0x800CEDF8 + location overlay @0x80128158 proven
  byte-identical (sha1-equal contiguous prefixes) vs live PCSX-Redux RAM; blobs
  imported into Ghidra (ImportOverlay.java); overlay-map table -> memory-map.md §4.3
- PCSX-Redux runtime oracle: Windows-native build, WSL reads RAM via the web API
  at 172.17.208.1:8081; ledger #4 resolved
- live-verified player/time state: gold(/10) HP BP day hour tiredness boss-HP;
  save-header template (Q#5) + debug-menu dispatch (Q#9: DEBUG.BIN path is dead)
- overlay map: 13 area-states across SC01/02/03, 2 duplicate pairs, location x
  chapter keying, free-roam vs menu-hub granularity
- resolves Open Q#1/#3/#4/#5/#6/#8/#9/#12; corrects SLUS-90029 (FF8 demo, not BFM)
- 2 US prototypes acquired + CRC-verified (Aug-31 1369DE07, Sep-8 5C24728E)
- rules R9 (verify persistence), R10 (>=3-datapoint live verification),
  R11 (runtime oracle Windows-native, bridged to WSL)
- bumps project version 1.2.0 -> 1.3.0
2026-06-14 02:04:28 -06:00

45 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# RAM-dump corpus — Phase 3 live PCSX-Redux captures (2026-06-14)
Full 2 MB PS1 RAM images pulled from the Windows-native PCSX-Redux web API
(`GET http://172.17.208.1:8081/api/v1/cpu/ram/raw`) while Drew played a fresh SLUS-00726 run.
Each is a labeled game-state snapshot — a reusable corpus for offline RE in later phases
(overlay map, player-state, save-format) **without re-playing the game**.
- **The `.bin` files are gitignored** (ROM-derived 2 MB game memory; 57 MB total). This INDEX is committed.
- They are **NOT cheaply regenerable** (each needs replay to the exact state) — back up `dumps/` off-machine
if you want them safe against disk loss (same as `disks/`). While private, they *could* be pushed (H1
relaxed), but local + this index matches the `disks/`/`extracted/` hygiene.
- Resident blob always @0x800CEDF8 (`MAIN.CD/FILE_010/1.1`); location overlay slot @0x80128158.
- Verified addresses derived from these live in `docs/memory-map.md` (§3.4, §4.3, Q#1/#3-#6/#9/#12).
| File | State / location | Overlay @0x80128158 | Key facts | Used for |
|---|---|---|---|---|
| `ram_t6b.bin` | **tut_forest** (tutorial forest, game start, daytime) | `SC01/077` | the MILESTONE dump | T6b/T7 milestone byte-proof |
| `ram_spiral.bin` | Spiral Tower exterior, pre-erection | `SC01/080` | gold 1450, HP 146/150, BP 137/150, +Gunshot | overlay map; HP/BP/gold |
| `ram_spiral2.bin` | Spiral Tower exterior, tower erected | `SC01/080` | gold 1450, HP 136/150, BP 91/150, Day1 Mon | HP/BP change-detect (Q#12) |
| `ram_inside.bin` | Spiral Tower interior | `SC01/084` | gold 1550 | gold triangulation |
| `ram_inside2.bin` | Spiral Tower interior | `SC01/084` | gold 1650 | gold pin (0x80078E8C ÷10) |
| `ram_event.bin` | Spiral Tower interior, bell→fire→teleporter event | `SC01/084` | event-flag cluster lead | event flags (unisolated) |
| `ram_toptower.bin` | Spiral Tower top | `SC02/000≡003` | gold 1760 (dup overlay) | overlay map (SC02; dup pair) |
| `ram_lumina.bin` | Spiral Tower upper, head-chase (got Lumina) | `SC02/000≡003` | — | overlay map |
| `ram_castle.bin` | Allucaneet Castle Ch1 interior (Rootrick/princess) | `SC02/005` | — | overlay map |
| `ram_steamknight.bin` | Steam Knight fight, stage 1 (castle) | `SC02/005` | bossHP 27 | bossHp_SteamKnight 0x801E4398 |
| `ram_courtyard.bin` | Steam Knight stage 2 (courtyard) | `SC02/005` | bossHP 0 (defeated) | bossHP verify (27→0) |
| `ram_dummytown.bin` | Steam Knight stage 3 (dummy town) | `SC02/005` | bossHP 144 (refilled) | bossHP verify (per-stage) |
| `ram_savescreen.bin` | Save screen (location overlay FLUSHED) | (none — menu) | saveHeaderTemplate visible | Q#5 save-format header |
| `ram_ch2castle.bin` | Ch2 Allucaneet Castle bedroom (king/butler) | `SC01/005≡006` | — | overlay map (location×chapter) |
| `ram_library.bin` | Library (read-books menu, frozen/blue) | `SC01/008` | menu sub-state | overlay map |
| `ram_library2.bin` | Library (post-quit, speech menu, animated) | `SC01/008` | same overlay | overlay-model correction |
| `ram_castlehub.bin` | Allucaneet Castle hub (nav menu) | `SC01/004` | Visit/Library/Room/SubMenu/Village | overlay map |
| `ram_room.bin` | Room (Sleep/Toys/Leave) | `SC01/005≡006` | re-entry determinism | overlay map |
| `ram_visit.bin` | Visit / main hall (Geezer) | `SC01/009` | — | overlay map |
| `ram_submenu.bin` | SubMenu (main game menu) | `SC01/004` | gold 1650, HP 150/150, BP 100/150 | player-state cross-check |
| `ram_itemmenu.bin` | Item/inventory menu (empty) | `SC01/004` | — | menu-overlay model |
| `ram_gondola.bin` | Gondola / outside village | `SC03/002` | — | overlay map (SC03) |
| `ram_village1.bin` | Village (central hub) entry | `SC03/001` | hour 15 | overlay map; clock |
| `ram_village2.bin` | Village far corner | `SC03/001` | 18:15 | one-overlay proof; clock |
| `ram_inn.bin` | Inn (before pay-to-sleep) | `SC03/001` | pre-sleep state | tiredness "before" |
| `ram_time1.bin` | Village, clock snapshot 1 (paused) | `SC03/001` | Day1 Mon 13:30, tired 11% | clock/tiredness triangulation |
| `ram_time2.bin` | Village, clock snapshot 2 (paused) | `SC03/001` | 14:30, tired 14% | clock/tiredness triangulation |
| `ram_sleep.bin` | After Inn pay-to-sleep (paid 390) | `SC03/001` | HP/BP max, tired 0, Day2 Tue 3:00, gold 1260 | day/hour/tiredness/gold confirms |