Commit c8e02cb
Add support for DE save_version 68
The mid-2026 Definitive Edition patch (build 101.103.48987 / 48086,
VER 9.4, save_version 68.0) changed the recorded-game header in two ways
relative to save_version 66.3/67:
1. Each player entry gained one trailing de_string field (observed empty).
2. The DE header block gained 8 trailing bytes just before the ai section.
Without these, the player array desyncs (ConstError on the next
de_string marker) and, once past that, has_ai is misread so the ai
skip-to-zero-run never fires and map_info lands in the string table.
Reverse-engineered from macOS (Feral) replays; verified against 5 games
across both build 48086 and 48987 via mgz.model.parse_match (header +
body + actions). Patches both the construct parser (header/de.py) and the
fast parser (fast/header.py, used by ModelSummary/parse_match), gated on
save_version >= 67.5 so 66.3/67 paths are untouched. Extends the
save-67 work in PRs happyleavesaoc#139/happyleavesaoc#142.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent 9c1e9cc commit c8e02cb
2 files changed
Lines changed: 9 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
470 | 470 | | |
471 | 471 | | |
472 | 472 | | |
| 473 | + | |
| 474 | + | |
473 | 475 | | |
474 | 476 | | |
475 | 477 | | |
| |||
556 | 558 | | |
557 | 559 | | |
558 | 560 | | |
| 561 | + | |
| 562 | + | |
559 | 563 | | |
560 | 564 | | |
561 | 565 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
| 48 | + | |
| 49 | + | |
48 | 50 | | |
49 | 51 | | |
50 | 52 | | |
| |||
178 | 180 | | |
179 | 181 | | |
180 | 182 | | |
181 | | - | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
182 | 186 | | |
0 commit comments