6th Generation Pokemon Link Map: Difference between revisions
(→Notes) |
(added categories) |
||
Line 431: | Line 431: | ||
# If pokemon species is not valid (i.e 0x0000), no pokemon will be generated. | # If pokemon species is not valid (i.e 0x0000), no pokemon will be generated. | ||
# Pokemon link will set egg met location to "Pokemon Link" and met at location to "Pokemon Link" regardless of the value in the data. | # Pokemon link will set egg met location to "Pokemon Link" and met at location to "Pokemon Link" regardless of the value in the data. | ||
[[Category:Structures]] | |||
[[Category:Technical References]] | |||
[[Category:RAM Research]] |
Revision as of 16:05, 14 October 2015
Savegame Offsets
Pokémon Link Data starts in the following offsets for decrypted savegame files and is 2631 bytes long:
- Pokémon X/Y: 0x1FFFF
- Pokémon OR/AS: 0x20FFF
Modifying this data requires checksum #0x30 to be updated.
Also, for ramsav users (ramsav method does not require to fix checksum):
- ramsav.bin offset Pokémon X/Y: 0x1CF9F
- ramsav.bin offset Pokémon OR/AS: 0x1E05B
Pokémon Link Data
Offset | Description |
---|---|
0x00 | Pokémon Link flag
(0x00 disabled, 0x80 enabled) |
0x01-0x6C | Name of application that produce Pokémon Link Data |
0x6D-0x6E | NULL terminator? |
0x6F-0x94 | Unknown/Unused |
0x95-0x98 | Unknown/Unused (0x00000000) |
0x99-0x9C | Pokémon transfer flags?1 (see notes) |
0x9D-0x13C | Pokémon slot 1 (160 bytes 2 see notes) |
0x13D-0x140 | Unknown/Unused (0x00000000) |
0x141-0x144 | Pokémon transfer flags?1 (see notes) |
0x145-0x1E4 | Pokémon slot 2 (160 bytes 2 see notes) |
0x1E5-0x1E8 | Unknown/Unused (0x00000000) |
0x1E9-0x1EC | Pokémon transfer flags?1 (see notes) |
0x1ED-0x28C | Pokémon slot 3 (160 bytes 2 see notes) |
0x28D-0x290 | Unknown/Unused (0x00000000) |
0x291-0x294 | Pokémon transfer flags?1 (see notes) |
0x295-0x334 | Pokémon slot 4 (160 bytes 2 see notes) |
0x335-0x338 | Unknown/Unused (0x00000000) |
0x339-0x33C | Pokémon transfer flags?1 (see notes) |
0x33D-0x3DC | Pokémon slot 5 (160 bytes 2 see notes) |
0x3DD-0x3E0 | Unknown/Unused (0x00000000) |
0x3E1-0x3E4 | Pokémon transfer flags?1 (see notes) |
0x3E5-0x484 | Pokémon slot 6 (160 bytes 2 see notes) |
0x485-0x488 | Unknown/Unused (0x00000000) |
0x489-0x48A | Item 1 (3 see notes) |
0x48B-0x48C | Item 1 quantity |
0x48D-0x48E | Item 2 (3 see notes) |
0x48F-0x490 | Item 2 quantity |
0x491-0x492 | Item 3 (3 see notes) |
0x493-0x494 | Item 3 quantity |
0x495-0x496 | Item 4 (3 see notes) |
0x497-0x498 | Item 4 quantity |
0x499-0x49A | Item 5 (3 see notes) |
0x49B-0x49C | Item 5 quantity |
0x49D-0x49E | Item 6 (3 see notes) |
0x49F-0x4A0 | Item 6 quantity |
0x4A1-0x4A2 | Battle Points (max. value 9999) |
0x4A3-0x4A4 | Poké Miles |
0x4A5-0xA44 | Unknown/Unused (All 0x00) |
0xA45-0xA46 | CRC-16/CCITT checksum for 0x01-0xA44 data |
When no Pokémon Link Data is available, 0x01-0xA46 is set to 0x00
Pokémon slot structure
Offset | Description |
---|---|
0x00-0x01 | TID |
0x02-0x03 | SID |
0x04 | Pokemon Origin Game (OT Game ID)
00 for Game Received in |
0x05-0x07 | Unknown/Unused (0x000000) |
0x08-0x0B | [Pokemon] Encryption Constant
Unset = 00000000 |
0x0C | Primary Ribbons
Ribbon data available below. |
0x0D | Secondary Ribbons
Ribbon data available below. |
0x0E | PokéBall |
0x0F | Unused/Unknown |
0x10-0x11 | Held Item |
0x12-0x13 | Move ID #1 |
0x14-0x15 | Move ID #2 |
0x16-0x17 | Move ID #3 |
0x18-0x19 | Move ID #4 |
0x1A-0x1B | PokéDex Number (4 see notes) |
0x1C | Form No. |
0x0D | Language 00 for Game Received In |
0x0E-0x37 | Pokémon Nickname Null terminator for last two bytes. |
0x38 | Nature FF - Unset |
0x39 | Pokémon Gender 00 - Male |
0x3A | Pokémon Ability 00 - Ability 1 |
0x3B | PID Toggle 00 - Generate Specified PID (from 0x6C-0x6F) |
0x3C-0x3D | Egg Met Location (5 see notes) |
0x3E-0x3F | Met Location of Pokémon (5 see notes) |
0x40 | Met Level |
0x41-0x46 | Contest Stats Last byte is Sheen |
0x47-0x4C | IVs FFs for unset IVs |
0x4D | OT Gender 00 - Male |
0x4E-0x67 | OT Name Null terminator for last two bytes. |
0x68 | Current Level(random if set to 0) |
0x69 | Egg Flag 00 - Is Not Egg |
0x6A-0x6B | 'Unknown' |
0x6C-0x6F | PID (used if PID toogle is 00) |
0x70-0x71 | Relearn Move 1 |
0x72-0x73 | Relearn Move 2 |
0x74-0x75 | Relearn Move 3 |
0x76-0x77 | Relearn Move 4 |
0x78 | OT Memory Intensity |
0x79 | OT Memory Line |
0x7A-0x7B | OT Memory TextVar |
0x7C | OT Memory Feeling |
0x7D-0x9F | Unknown/Unused/Reserved bytes |
Ribbon Set
Flag Value | 0x74 | 0x75 |
---|---|---|
0x01 | Battle Champ Ribbon | World Champ Ribbon |
0x02 | Regional Champ Ribbon | Birthday Ribbon |
0x04 | National Champ Ribbon | Special Ribbon |
0x08 | Country Ribbon | Souvenir Ribbon |
0x10 | National Ribbon | Wishing Ribbon |
0x20 | Earth Ribbon | Classic Ribbon |
0x40 | World Ribbon | Premier Ribbon |
0x80 | Event Ribbon | Empty |
Notes
- Pokémon transfer flags: for ORAS demo Glalie/Steelix this is set to 0x0001 0x0001; for Celebi and Johto starters 0x0000 0x0000. Somehow this sets a value in the XY/ORAS savegame that makes the game unable to receive the pokemon again, this is what makes Glalie/Steelix from ORAS Demo only be able to be received once per savegame. Removing that value from the savegame allows to import another Glalie/Steelix. Todo: add offset where that value is stored in XY and ORAS.
- The statement that pokemon data is 160 bytes long is made due to this data being essentially the same as in wondercard data, which is 160 bytes long from TID to end of file.
- If item is not valid, it won't be obtained.
- If pokemon species is not valid (i.e 0x0000), no pokemon will be generated.
- Pokemon link will set egg met location to "Pokemon Link" and met at location to "Pokemon Link" regardless of the value in the data.