Complete DOS Beta v0.9 save decode (bit-exact, all 9 slots, splice retired) #256
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "refs/pull/256/head"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Completes the DOS Beta v0.9 savegame decode: all 9 local Beta fixture slots now decode bit-exactly to the end of the suppression bitstream and field-round-trip byte-for-byte, including slot 4 (previously failed to decode at all). Closes the ROADMAP Phase 4 Beta item.
What was wrong
Three Beta-specific mechanisms, found by diffing the decoder against a patched-DOSBox-X execution-trace oracle running the real Beta engine (
Fires.exe), hooked at the suppression reader's per-consumed-bit instruction + the CHECKCODE reader entry (exact-bit, per-call trace):0x1evs retail0x3e, etc.); the narrowing was wired into the closing-CHECKCODE path but not the overlay path. First divergence: the first door overlay read +1 bit, and the shift garbled every downstream dynamic decision.--ignoredround-trip tests stay green.n_maps(54) maps, exactly like retail. The historical "exact landing at 44 maps" was an artifact of bugs 1–2 inflating reads; the 7-bit[DUNGEON+4]bound theory is retracted.BETA_TILE_CHAIN_MAP_COUNTand themap_limitplumbing are removed.Evidence
dos_beta_v09_decode_consumes_full_bitstreamtest, with a retail criterion-sanity leg) and re-encode byte-for-byte (slot 4 added to the round-trip loop).docs/formats/save-record-stream.md; ROADMAP updated.Notes for review
-D warnings/ full workspace tests / doc-D warningsall green.Fires.exedisassembly (no fixture has a same-map detail pair); all-slot exact landings corroborate.dm2-graphicstests (own commit).