The checksum covers bytes 0x0000 to 0x1FFFB , excluding the checksum field itself. The save file is divided into sections. Offsets are hexadecimal.

(full Python script available in supplementary materials). End of paper draft.

| Offset Range | Length (bytes) | Description | |--------------|----------------|--------------| | 0x0000–0x0003 | 4 | Header identifier ( DW4H ) | | 0x0004–0x0007 | 4 | Save slot number (0–9) | | 0x0008–0x0027 | 32 | Player name (ASCII, null-padded) | | 0x0028–0x002B | 4 | Total play time (seconds, uint32) | | 0x002C–0x003F | 20 | Difficulty and game flags | | 0x0040–0x0FFF | ~4032 | Officer data (44 officers × 92 bytes each) | | 0x1000–0x1FFF | 4096 | Weapon data (max 256 weapons × 16 bytes) | | 0x2000–0x2FFF | 4096 | Item inventory (bitmask + quantities) | | 0x3000–0x3FFF | 4096 | Bodyguard data (8 bodyguards × 512 bytes) | | 0x4000–0x1FFFB | ~114,684 | Stage completion, musou mode flags, unlockables | | 0x1FFFC–0x1FFFF | 4 | Checksum (as above) | Example offset for Shu officer Zhao Yun starts at 0x0040 .