Editing Hey! Pikmin save file
Jump to navigation
Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 3: | Line 3: | ||
== Format == | == Format == | ||
− | The save data is split into several blocks that start with 4-byte magic words | + | The save data is split into several blocks that start with 4-byte magic words. |
=== SAVE === | === SAVE === | ||
Line 51: | Line 51: | ||
=== PBUF === | === PBUF === | ||
− | |||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
! colspan="2" | Offset || rowspan="2" | Length || rowspan="2" | Field || rowspan="2" | Notes | ! colspan="2" | Offset || rowspan="2" | Length || rowspan="2" | Field || rowspan="2" | Notes | ||
Line 59: | Line 58: | ||
| <code>0x002C</code> || <code>0x0000</code> || 4 bytes || Block magic word || Always <code>PBUF</code>. | | <code>0x002C</code> || <code>0x0000</code> || 4 bytes || Block magic word || Always <code>PBUF</code>. | ||
|- | |- | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|} | |} | ||
Line 140: | Line 132: | ||
! File || Block | ! File || Block | ||
|- | |- | ||
− | | <code>0x0BF0</code> || <code>0x0000</code> || 4 bytes || Block magic word || Always <code> | + | | <code>0x0BF0</code> || <code>0x0000</code> || 4 bytes || Block magic word || Always <code>0xRINF</code>. |
|- | |- | ||
|} | |} | ||
Line 194: | Line 186: | ||
| <code>0x0CE0</code> || <code>0x0000</code> || 4 bytes || Block magic word || Always <code>DATE</code>. | | <code>0x0CE0</code> || <code>0x0000</code> || 4 bytes || Block magic word || Always <code>DATE</code>. | ||
|- | |- | ||
− | | <code>0x0CE4</code> || <code>0x0004</code> || | + | | <code>0x0CE4</code> || <code>0x0004</code> || 8 bytes || {{unknown|Unknown}} || |
− | |||
− | |||
|- | |- | ||
| <code>0x0CEC</code> || <code>0x000C</code> || 1 byte || Month || 1 to 12. | | <code>0x0CEC</code> || <code>0x000C</code> || 1 byte || Month || 1 to 12. | ||
Line 242: | Line 232: | ||
== Checksum == | == Checksum == | ||
− | The checksum seems to be a CRC32 of the | + | The checksum seems to be a CRC32 of the 0xd87 bytes that follow after the checksum (i.e. just one byte short of the entire remaining data), with crc32 as implemented by e.g. zlib. |
− | |||
− | |||
+ | The following python code can recalculate the checksum if the data after the checksum is modified: | ||
<pre> | <pre> | ||
import struct | import struct |