re: +36/+52/+56 are neither stage nor difficulty -- refuted with eleven probe saves

Those three fields all hold 2, and "difficulty or stage, undecidable from one
save" has been the reading since the format was parsed. Writing saves makes it
decidable and the answer is neither.

boot_menu.sh boots to the title menu WITHOUT loading anything, and LOAD GAME's
slot list renders each slot's Details panel from that slot's payload. Extra
slots can be fabricated (copy the directory plus a gameNN.header with its
UTF-16BE display string and ASCII name patched), so four probes fit in one boot,
read-only.

Probed: +36 at 1/3/9, +52 and +56 at 1/9, and +0, +16, +32, +48, +28,
SHAB[0].a. Every one left the panel at STAGE 02 / EASY / At Standby /
Times Cleared 0.

The negative is meaningful because the panel does read each payload -- slot 02
shows 5% clear ratio against the others' 6%, and Points tracked +24 exactly.
Two controls: patching a slot header to "STAGE09 HARD" changed nothing (the
display is payload-driven, not header text), and the row date follows the
container FILETIME.

Remaining candidates: +12, +20, +40 (u64), +60, +64, or the phase string.

Also here: savegame_edit.py --slot for SHAB records, and boot_menu.sh itself --
nav_probe.sh's boot loads a save, which with probe slots on disc loads a probe,
and a dropped d-pad step there put A on TAKE OFF and spent a boot loading a
mission.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-11 19:37:06 +00:00
parent 6e0fbe52a6
commit eac3435cc7
3 changed files with 87 additions and 3 deletions

View File

@@ -78,6 +78,13 @@ def main():
elif a == "--set":
k, v = args[i + 1].split("=")
parsed["ghad"][k] = int(v, 0)
elif a == "--slot":
# --slot <record>,<field>=<value>, e.g. --slot 0,0=3
where, v = args[i + 1].split("=")
rec, fld = (int(x) for x in where.split(","))
row = list(parsed["slots"][rec])
row[fld] = int(v, 0)
parsed["slots"][rec] = tuple(row)
parsed["ghad"]["blob_68"] = bytes(blob)
out = wrap(header, sg.serialize(parsed))