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

From ProjectPokemon Wiki
Jump to navigation Jump to search
Line 296: Line 296:
== Battle Stats ==
== Battle Stats ==


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


=== Encrypted Bytes ===
=== Encrypted Bytes ===
Line 349: Line 349:
| Unknown / Unused
| Unknown / Unused
|}
|}


== Original Language ==
== Original Language ==

Revision as of 05:43, 24 February 2014

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 encryption key at the beginning of the pkx file. 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. That said, the shuffling algorithm now uses the encryption key at the beginning of the pkx instead of the PID.

Unencrypted bytes (0x0-0x7)

Offset Contents
0x00-0x03 Pkx encryption key
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 Personality value (Also known as the PID)
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-0x29 Unknown
0x2A Markings
0x2B Pokérus
0x2C-0x2F Unknown / Unused
0x30-0x33 Kalos Ribbons
0x34-0x37 Unknown / Unused
0x38 Contest Memory Ribbon [Count]
0x39 Battle Memory Ribbon [Count]
0x3A-0x3F Unknown / Unused

Block B (0x40-0x77)

Offset Contents
0x40-0x57 Nickname
0x58-0x59 Unused
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
0x72-0x73 Unknown
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 Traded To

Updates Every Trade

0x90-0x91 Unused
0x92-0x93 Unknown
0x94-0x95 Unknown
0x96-0x97 Unknown
0x98-0x99 Unknown
0x9A-0x9B Unknown
0x9C-0x9D Unknown
0x9E-0x9F Unknown
0xA0-0xA1 Unknown
0xA2-0xA3 Unknown
0xA4-0xA5 Unknown
0xA6-0xA7 Unknown
0xA8-0xA9 Unknown
0xAA-0xAB Unknown
0xAC-0xAD Unknown
0xAE Fullness
0xAF Enjoyment

Block D (0xB0-0xE7)

Offset Contents
0xB0-0xC7 OT Name
0xC8-0xC9 Unused
0xCA Friendship
0xCB Affection
0xCB-0xD0 Unknown
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 Encryption Constant.

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

Original Language

Value Language
0x1 日本語 (Japan)
0x2 English (US/UK/AU)
0x3 Français (France/Québec)
0x4 Italiano (Italy)
0x5 Deutsch (Germany)
0x7 Español (Spain/Latin Americas)
0x8 한국어 (South Korea)

Markings

Bit Marking
0x01 Circle
0x02 Triangle
0x04 Square
0x08 Heart
0x10 Star
0x20 Diamond

Ribbons

Kalos Ribbon Set 1

Flag Value 0x30 0x31
0x01 Kalos Champ Ribbon Alert Ribbon
0x02 Champion Ribbon Shock Ribbon
0x04 Sinnoh Champ Ribbon Downcast Ribbon
0x08 ??? Careless Ribbon
0x10 ??? Relax Ribbon
0x20 Skillful Battler Ribbon Snooze Ribbon
0x40 Expert Battler Ribbon Smile Ribbon
0x80 Effort Ribbon Gorgeous Ribbon

Kalos Ribbon Set 2

Flag Value 0x32 0x33
0x01 Royal Ribbon Earth Ribbon
0x02 Gorgeous Royal Ribbon World Ribbon
0x04 Artist Ribbon Classic Ribbon
0x08 Footprint Ribbon Premier Ribbon
0x10 Record Ribbon Event Ribbon (History)
0x20 Legend Ribbon Birthday Ribbon (Green)
0x40 Country Ribbon Special Ribbon (Blue)
0x80 National Ribbon Souvenir Ribbon (Festival)