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

From ProjectPokemon Wiki
Jump to navigation Jump to search
Line 238: Line 238:
|- style="background: #ddd;" align="center"
|- style="background: #ddd;" align="center"
| 0xA6-0xA7
| 0xA6-0xA7
| Current Feeling
| Latest Feeling
|- style="background: #eee;" align="center"
|- style="background: #eee;" align="center"
| 0xA8-0xA9
| 0xA8-0xA9
| Unknown
| Dynamic TextVar
|- style="background: #ddd;" align="center"
|- style="background: #ddd;" align="center"
| 0xAA-0xAB
| 0xAA-0xAB

Revision as of 03:41, 7 March 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 Contest Stat: Cool
0x25 Contest Stat: Beauty
0x26 Contest Stat: Cute
0x27 Contest Stat: Smart
0x28 Contest Stat: Tough
0x29 Contest Stat: Sheen
0x2A Markings
0x2B Pokérus
0x2C-0x2F (Secret) Super Training
Gold Medal Flags
0x30-0x34 Ribbons
0x35-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 "Secret" Super Training Flag

00 - Missions Unavailable
01 - Missions Available

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 00/01 flags
0x94-0x95 Geolocation 1 - (Region,Country)
0x96-0x97 Geolocation 2 - (Region,Country)
0x98-0x99 Geolocation 3 - (Region,Country)
0x9A-0x9B Geolocation 4 - (Region,Country)
0x9C-0x9D Geolocation 5 - (Region,Country)
0x9E-0x9F Unknown/Unused
0xA0-0xA1 Unknown/Unused
0xA2 Friendship before being
received by current OT
0xA3 Unknown
0xA4-0xA5 Unknown
0xA6-0xA7 Latest Feeling
0xA8-0xA9 Dynamic TextVar
0xAA-0xAB Unknown/Unused
0xAC-0xAD Unknown/Unused
0xAE Fullness
0xAF Enjoyment

Block D (0xB0-0xE7)

Offset Contents
0xB0-0xC7 OT Name
0xC8-0xC9 Unused
0xCA Friendship
0xCB Affection
0xCC-0xCD Unknown
0xCE-0xCF Unknown
0xD0 OT Feeling
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 Encounter Type (Gen 4)
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 Key.

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

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

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
0x20 Legend Ribbon Birthday Ribbon
0x40 Country Ribbon Special Ribbon
0x80 National Ribbon Souvenir Ribbon

Ribbon Set 3

Flag Value 0x34
0x01 Wishing Ribbon
0x02 Battle Champion Ribbon
0x04 Regional Champion Ribbon
0x08 National Champion Ribbon
0x10 World Champion Ribbon