Pokémon data structure (Generation III): Difference between revisions
Kyoufu Kawa (talk | contribs) m (It so much is a sanity byte >:3) |
No edit summary |
||
Line 1: | Line 1: | ||
Pokémon in the games Ruby, Sapphire, FireRed, LeafGreen, and Emerald are all stored the same way in a 100-byte structure. | Pokémon in the games Ruby, Sapphire, FireRed, LeafGreen, and Emerald are all stored the same way in a 100-byte structure. | ||
For Diamond and Pearl, see [[Pokémon data structure in the DS]]. | |||
=Notes= | =Notes= |
Revision as of 10:47, 16 September 2007
Pokémon in the games Ruby, Sapphire, FireRed, LeafGreen, and Emerald are all stored the same way in a 100-byte structure.
For Diamond and Pearl, see Pokémon data structure in the DS.
Notes
Pokémon | ||
---|---|---|
type | offset | |
Personality | dword | 0 |
OT ID | dword | 4 |
Nickname | 10 bytes | 8 |
Font | byte | 18 |
Sanity byte | byte | 19 |
OT name | 7 bytes | 20 |
Mark | byte | 27 |
Checksum | word | 28 |
???? | word | 30 |
Data | 48 bytes | 32 |
Status ailment | dword | 80 |
Level | byte | 84 |
???? | byte | 85 |
Current HP | word | 86 |
Total HP | word | 88 |
Attack | word | 90 |
Defense | word | 92 |
Speed | word | 94 |
Sp. Attack | word | 96 |
Sp. Defense | word | 98 |
Personality value
The personality value controls many things, including gender, Unown letter, Spinda's dots, nature, and others.
OT ID
The Original Trainer's ID Number. Part of the XOR encryption key for the data section, also used in shiny determination and the lottery. The most siginficant word seems to be ignored?
Nickname
The Pokémon's nickname, limited to 10 characters.
Font
Determines which character set is used for the nickname (?). This is used to determine what colour should be used to write nicknames in a Pokémon's status screen. They may appear in either blue (boy) or pink (girl).
OT name
The name of the original trainer of the Pokémon.
Mark
The marks you see in the storage box. bit 0: Circle bit 1: Square bit 2: Triangle bit 3: Heart
Checksum
The checksum is of the 48-byte data section in the structure. It is computed by simply adding all the unencrypted values one word at a time. If this value does not match the real checksum, the Pokémon is interpreted as a Bad egg.
Padding
Any entry marked (Padding) is not used and usually set to either 0 or -1 of the respective data type.
Status ailment
The Pokémon's status ailments are stored as follows:
0-2: Sleep bits. Indicates turns of sleep, so 111b = 7 turns, 101b = 5 turns, etc.
3: Poison
4: Burned
5: Frozen
6: Paralysis
7: Bad poison
Location
A trainer's team starts at the following addresses in the GBA's RAM (for US games?):
- Ruby: 0x03004360
- Sapphire: 0x03004360
- Emerald: 0x02024190 (0x020244EC for US games??) (0x5238 or 0x7238 in save data (US)??)
- FireRed: 0x02024284
- LeafGreen: 0x020241e4
There are 6 Pokémon per team, so the whole team continues for 600 bytes afterward.
This structure is used to save data on Pokémon stored in your team.
The structure for Pokémon saved in the PC stops after the data field, making it only 80 bytes long.
This explains why Pokémon injured by status ailment will cure themselves when put in the PC.
It also applies to stats and level, which are recalculated based on Experience.
Thus, there are also 33600 (14*30*80) bytes stored somewhere else in the GBA's RAM to save data on Pokémon in the PC.