mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 13:33:34 -04:00
bd5e21b366
- 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
4.3 KiB
4.3 KiB
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
.binfiles 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 asdisks/). While private, they could be pushed (H1 relaxed), but local + this index matches thedisks//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 |