docs: correct disproven claims in save-format docs (hero.rs skproject-mask note, saves.md LE claim, mac-post-sgb-reads.md timer count / SGB mask / index-offset width) #176
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Documentation claims disproven during a full crate review — worth fixing so they don't mislead future decode work.
hero.rsCHAMPION_MASKnote (~131-141): claims skproject'stable1d6356has 8 extra non-zero bytes at0xAF..=0xB6vs the retail binary. Verified false against the current skproject checkout: the table is byte-identical toCHAMPION_MASK(positional compare, popcount 1045 both) and unchanged since the original "add v5 code" commit (only ani8→U8type change since). Good news for SKWINSPX save interchange; the note should be corrected or dated.docs/formats/saves.md: "Multi-byte fields inside the suppression-encoded bitstream are always little-endian regardless of host CPU" — disproven for Mac (SGB scalars, GlobalWords, timer u16s are big-endian with per-field swapped masks; see #168 for fixture evidence).docs/formats/mac-post-sgb-reads.md, three stale claims:timer_count_raw = 12 (sgb[20] & 0xFF)forskullkeep_void_gate— the fixture-verified formula is(b20 << 1) | (b21 & 1)(= 24 for that save);sgb[20] & 0xFFis the LE misread.dos-post-sgb-reads.md, bysksvgame.cpp:847(vb_34 = 3→ mask 0x03 = 2 bits), and by the crate's skull.exe citation. Both platforms use 2 bits; same resolution for the line-391 open question on the type-9 sub-type (2 bits on DOS too,sksvgame.cpp:886).savegamebuffer.rsfield docs: the "verified empirically against the Mac fixtures" LE claim only ever covered fields whose payload fits a single byte; restate the actual verification scope.Fixed by #209 (merged into
main).