Pokemon Save Structure (X/Y): Difference between revisions

From ProjectPokemon Wiki
Jump to navigation Jump to search
Line 199: Line 199:
|- style="background: #ddd;" align="center"
|- style="background: #ddd;" align="center"
| 0xE0
| 0xE0
| Unknown
| Country ID
|- style="background: #eee;" align="center"
|- style="background: #eee;" align="center"
| 0xE1
| 0xE1
| Unknown
| Region ID
|- style="background: #ddd;" align="center"
|- style="background: #ddd;" align="center"
| 0xE2
| 0xE2

Revision as of 19:19, 26 October 2013

Pokémon in the games Pokémon X and Y are stored in a new 232 byte structure (for the box data only). Party Pokémon hold additional data for overworld and battle values. We recommend using the pkx extension for decrypted 232-byte box data structures.

Checksum / Block Shuffling / Encryption

There have been some changes compared to the Generation 4 and Generation 5 structures. First, the LCRNG to decrypt the structure's blocks is now seeded with the PID. Second, the blocks are now 56 bytes instead of the previous 32. However, the way the blocks are shuffled based on the PID did not change.

Unencrypted bytes (0-8)

Offset Contents
0x00-0x03 Personality value (Also known as the PID)
0x04-0x05 Sanity Placeholder
0x06-0x07 Checksum

Encrypted bytes

Block A (8-40h)

Offset Contents
0x08-0x09 National Pokédex ID
0x0A-0x0B Held Item
0x0C-0x0D OT ID
0x0E-0x0F OT Secret ID
0x10-0x13 Experience points
0x14 Ability
0x15 Unknown
0x16-0x17 Unknown
0x18-0x1B Unknown
0x1C Nature
0x1D Bit 0 - Fateful Encounter Flag
Bit 1 - Female
Bit 2 - Genderless
Bit 3-7 - Alternate Forms
0x1E HP Effort Value
0x1F Attack Effort Value
0x20 Defense Effort Value
0x21 Speed Effort Value
0x22 SP Attack Effort Value
0x23 SP Defense Effort Value
0x24-0x25 Sinnoh Ribbon Set 1
0x26-0x27 Unova Ribbon Set
0x28-0x2A Unknown / Unused
0x2B Pokérus
0x2C-0x3F Unknown / Unused

Block B (40-78h)

Offset Contents
0x40-0x53 Nickname
0x54-0x57 Unknown
0x58-0x59 Unknown
0x5A-0x5B Move 1 ID
0x5C-0x5D Move 2 ID
0x5E-0x5F Move 3 ID
0x60-0x61 Move 4 ID
0x62 Move 1 Current PP
0x63 Move 2 Current PP
0x64 Move 3 Current PP
0x65 Move 4 Current PP
0x66-0x69 Move PP Ups
0x6A-0x6B Move 1 ID at hatching
0x6C-0x6D Move 2 ID at hatching
0x6E-0x6F Move 3 ID at hatching
0x70-0x71 Move 4 ID at hatching
0x74-0x78 Bits 0-29 - Individual Values

HP ( [0-31] << 0 )
Attack ( [0-31] << 5 )
Defense ( [0-31] << 10 )
Speed ( [0-31] << 15 )
SP Attack ( [0-31] << 20 )
SP Defense ( [0-31] << 25 )
Bit 30 - IsEgg Flag
Bit 31 - IsNicknamed Flag

Block C (78-B0h)

This block is dedicated to the history/memory of the Pokémon.

Offset Contents
0x78-0x88 OT Name traded to (updated every time the owner's OT changes)

Block D (B0-E8h)

Offset Contents
0xB0-0xBF OT Name
0xD1-0xD3 Date Egg Received
0xD4-0xD6 Date Met
0xD8-0xD9 Egg Location
0xDA-0xDB Met At Location
0xDC Pokéball
0xDD Bit 0-6 - Encounter Level
Bit 7 - Female OT Gender
0xDE Unknown / Unused
0xDF OT Game version (24=X, 25=Y)
0xE0 Country ID
0xE1 Region ID
0xE2 Unknown
0xE3 OT language
0xE4-0xE7 Unknown / Unused