Adopt the engine-exact standalone-missile termination for Beta saves #257
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "refs/pull/257/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?
Re-tests the #169 standalone-missile termination discrepancy now that the Beta walk is bit-exact (#256), and resolves it: the Beta compensating model is gone, retail and Beta share the engine-exact model.
Background
For standalone (non-creature-possessed) type-14 missiles, the Beta path deliberately kept a chain-mode / persistent-flag "compensating" model that contradicted the disassembled Beta binary, because engine-exact semantics desynced
DATA/SKSAVE0.DATat the time (#169, 2026-07-06). That desync was measured while the three since-fixed Beta decode bugs (overlay masks, teleporter pair fold, map cap) were corrupting downstream bit positions.What changed
betaconditional: single-record sub-read/sub-write with the termination flag set, flag unconditionally cleared — matching the retail engine and the unpackedFires.exereader/writer (0x1eaa4/0x1eac6,0x1de41/0x1de60).set_beta(true)too); the retail-shaped tests stay as the shared-path guard.docs/formats/save-record-stream.md§"Standalone-missile termination" rewritten from open question to resolved, with the history and a fixture-coverage statement.Evidence (all under the flip, local fixtures)
--ignoredround-trip guards green (retail unchanged).Notes for review
-D warnings/ full workspace tests / doc-D warningsall green.Closes #169.