This page documents Header files (also known as head.yw) for V2.0 saves. Note that each game has 3 save files (game*.yw) but only ONE header (head.yw) which contains the data for all save files.
The head.yw has 3 “player blocks” - with each corresponding to a different save file. Some things however, are the same for all save files and are therefore not in a player block. For example the seed located in the head file at 0x0C. Despite head files using a SectionID system there is only one Section: Section ID 248 (F8) meaning that a direct offset can be used - which for simplicity is used in this doc.
Here are some of the known elements:
Fixed Elements (1 per head)
| Offset | Length | Description |
|---|---|---|
0x08 | 0x04 | Some sort of metadata i.e. 02 00 06 00 - DO NOT CHANGE THIS RIGHT NOW - WAIT UNTIL FURTHER RESEARCH HAS CONCLUDED. |
0x0C | 0x04 | (Uint32) - A seed ran through a Xorshift-based PRNG to derive an AES encryption key, used to decrypt V2 saves. More info. |
⚠️ changing the encryption key can render your save file unrecoverable with current technology (AES-128).
Player Block Positions
| Block # | Start Addr | End Addr | Block Length |
|---|---|---|---|
| 1 | 0x5390 | 0x5417 | 0x88 (136) bytes |
| 2 | 0x5418 | 0x549F | 0x88 (136) bytes |
| 3 | 0x54A0 | 0x5527 | 0x88 (136) bytes |
Save File Dependent (3 per head)
Note that the Offset in this table assumes the player block is at 0x00 instead of providing all 3 possible positions. A list of player name positions can be found above for reference.
| Offset | Length | Notes |
|---|---|---|
0x00 | dep. | Player name (UTF-8 or cp932 depending on region), length depends but the end can be determined by the first instance of 00 after the name (if the length isnt 0x18 (max length) - if it is, there will be no terminator. |
0x18 | 0x01 | Gender. DO NOT EDIT THIS UNTIL FURTHER RESEARCH HAS BEEN CONCLUDED AS IT CAN (WILL) MAKE THE GAME IGNORE YOUR SAVE FILE IF DONE INCORRECTLY! FF,01,0D,0C |
0x19 | 0x01 | Metadata - does various things. Note that for now, editing this isn’t recommended. (0xFF) makes the game think you imported your data from BS/FS on a PS game copy. |
0x1B | 0x01 | Unknown (1 byte) |
0x1C | 0x24 | Unknown (10 bytes) |
0x24 | 0x01 | Watch Rank (0x05 = S, 0x04 = A, 0x03 = B, etc.) |
0x28 | 0x04 | The BaseID (not ParamID like usual) of the 1st Yo-kai in the party? |
0x2C | 0x04 | The BaseID (not ParamID like usual) of the 2nd Yo-kai in the party? |
... | … | … |
0x40 | 0x04 | Play Time (in seconds) |
0x58 | 0x04 | Sub-Location Data (Location Names that change without loading zone, they often have a “-“ i.e. Harrisville is a location but Harrisville - Gloworm Grove is a sub-location. |
0x68 | 0x02 | Last Save Date Year (3DS clock) |
0x6A | 0x01 | Last Save Date Month (3DS clock) |
0x6B | 0x01 | Last Save Date Day (3DS clock) |
0x6C | 0x01 | Last Save Date Hour (3DS clock) |
0x6D | 0x01 | Last Save Date Minute (3DS clock) |
Notes
The head.yw is extremely tolerant of illegal values, it allows illegal names (invalid code points appear as a black-box), an hour value of 25 and most changes. And changing certain data incorrectly such as Gender can render your save file unusable - although note that this IS recoverable. Most changes to the head.yw only affect the preview you see before you enter the save file, NOT the actual save file (This is very important, dont forget :P) and often reset to their true state when the game is saved. Exceptions to this rule include the save file names, gender and decryption seed which actually affect behaviour and apply permenantly.
TO;DO document save file version, save origin (1.0, 2.0, PS), save file lang?