Boktai save file checksums
The save files of Boktai games contain checksums that are verified when the save is loaded. After modifying save files with a hex editor or another tool, these checksums must be updated so the save will load correctly again.
The save file is divided into blocks. Each block size is a multiple of 8 bytes. After the last 8-byte chunk in a block, there is another 8-byte chunk containing the checksum. The checksum are these 4 halfwords:
- Constant
0xffff
- Byte size of this block, excluding this checksum
- Sum of halfwords in this block, excluding this checksum
- XOR-sum of halfwords in this block, excluding this checksum
Hex dump of the first block in Boktai 1 saves, with the checksum in bold. Note that each halfword is stored in the save file in big-endian byte order:
00000000: 0000 00e4 0003 cc18 0000 0101 0000 0000
00000010: 0000 0000 0000 0000 ffff 0018 ce00 cdfe
Boktai 1 save files contain the following blocks. Here is a Python script that updates all checksums of a Boktai 1 save.
Byte offset | Byte size |
---|---|
0x0000 | 0x18 |
0x00c0 | 0x28 |
0x0200 | 0x28 |
0x0340 | 0x400 |
0x0780 | 0x418 |
0x0dc0 | 0x400 |
0x1200 | 0x418 |
0x1840 | 0x168 |
0x1a40 | 0x168 |