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

From ProjectPokemon Wiki
Jump to navigation Jump to search
(→‎Block C (0x78-0xAF): Fixed name length)
Line 161: Line 161:
! Contents
! Contents
|- style="background: #eee;" align="center"
|- style="background: #eee;" align="center"
| 0x78-0x88
| 0x78-0x8F
| OT Name traded to (updated every time the owner's OT changes)
| OT Name traded to (updated every time the owner's OT changes)
|- style="background: #ddd;" align="center"
|- style="background: #ddd;" align="center"
| 0x89-0xAF
| 0x90-0xAF
| Unknown
| Unknown
|}
|}

Revision as of 19:59, 3 November 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 28 bytes of additional data for overworld and battle values. We recommend using the pkx extension for decrypted 232-byte box data and 260-byte party 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 (0x0-0x7)

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

Encrypted bytes

Block A (0x8-0x3F)

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 Ability number
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
0x28-0x2A Unknown / Unused
0x2B Pokérus
0x2C-0x2F Unknown / Unused
0x30-0x33 Kalos Ribbons
0x34-0x3F Unknown / Unused

Block B (0x40-0x77)

Offset Contents
0x40-0x57 Nickname
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-0x77 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 (0x78-0xAF)

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

Offset Contents
0x78-0x8F OT Name traded to (updated every time the owner's OT changes)
0x90-0xAF Unknown

Block D (0xB0-0xE7)

Offset Contents
0xB0-0xC7 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 3DS region ID
0xE3 OT language
0xE4-0xE7 Unknown / Unused

Battle Stats

The battle stats are encrypted in the exact same manner as the main pkx data. The seed is still the PID.

Encrypted Bytes

Offset Contents
0xE8 Bits 0-2 - Asleep (0-7 rounds)
Bit 3 - Poisoned
Bit 4 - Burned
Bit 5 - Frozen
Bit 6 - Paralyzed
Bit 7 - Toxic
0xE9 Unknown - Flags
0xEA-0xEB Unknown / Unused
0xEC Level
0xED Unknown / Unused
0xEE-0xEF Unknown / Unused
0xF0-0xF1 Current HP
0xF2-0xF3 Max HP
0xF4-0xF5 Attack
0xF6-0xF7 Defense
0xF8-0xF9 Speed
0xFA-0xFB Special Attack
0xFC-0xFD Special Defense
0xFE-0xFF Unknown / Unused
0x100-0x103 Unknown / Unused