Pokémon data structure (Generation III)

From Bulbapedia, the community-driven Pokémon encyclopedia.
Jump to navigationJump to search

Pokémon in the Pokémon Ruby and Sapphire, FireRed and LeafGreen, and Emerald Versions are all stored the same way in a 100-byte structure. All numbers are stored in little-endian order.


type offset
Personality value dword 0
OT ID dword 4
Nickname 10 bytes 8
Language word 18
OT name 7 bytes 20
Markings byte 27
Checksum word 28
???? word 30
Data 48 bytes 32
Status condition dword 80
Level byte 84
Pokérus remaining 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's letter, Spinda's dots, any Pokémon's Nature, and more.


The Original Trainer's ID number. This number is part of the XOR encryption key for the data section, and is also used in Shiny determination and the lottery. The least significant bytes of this number are the Trainer ID visible on the status screen. The most significant bits (top 16) are the Secret ID of the trainer that caught it.


The Pokémon's nickname, limited to 10 characters. The characters represented by each byte are determined by the proprietary character set.


The language of the game the Pokémon comes from. Eggs have this value set to 0x0601. In international versions, the language value determines which character set is used when displaying the Pokémon's name and OT name. Any Pokémon with a language value of 0x0601 will, in international versions, be named the game's regional variant of "EGG", ignoring the nickname field.

In Japanese versions, the language value is entirely disregarded. Names always use the nickname bytes decoded with the Japanese character set. This causes issues such as the nickname and OT name being truncated to five characters, and mojibake (for example, if the in-game trade Seel from Spanish FireRed and LeafGreen, whose nickname is normally SEELÍN, is traded to a Japanese game, then its nickname is displayed as SEELコ).

For Pokémon not in Eggs, the valid values are:

Hex Language
0x0201 Japan Flag.png Japanese
0x0202 England Flag.png English
0x0203 France Flag.png French
0x0204 Italy Flag.png Italian
0x0205 Germany Flag.png German
0x0206 South Korea Flag.png Korean*
0x0207 Spain Flag.png Spanish

OT name

The name of the Pokémon's Original Trainer. The characters represented by each byte are determined by the proprietary character set.


The markings seen in the storage Box. These markings serve only to aid in organizing large collections of Pokémon.

Bit Mark


The checksum for the 48-byte data section of this structure. It is computed by adding all of the unencrypted values of that section one word at a time. If the computed sum and the stored checksum do not match, the Pokémon is interpreted as a Bad Egg.


Unknown, possibly simply padding (not used and usually set to either 0 or -1, depending on the data type).


Certain data pertaining to the Pokémon that is stored in a special and encrypted format.

Status condition

The Pokémon's status condition is stored as follows:

Bit Status
0-2 SLP Sleep
3 PSN Poison
4 BRN Burn
5 FRZ Freeze
6 PAR Paralysis
7 PSN Bad Poison

The three sleep bits are used to indicate turns of sleep. So 1112 = 7 turns of sleep, 1012 = 5 turns, et cetera.


050Diglett.png This section is incomplete.
Please feel free to edit this section to add missing information and complete it.
Reason: What happens when this value ticks down to 0? What determines when it ticks down?
Main article: Pokérus

Not the same as the value found in the miscellaneous data substructure, which is a standard Pokérus byte. Instead, this value starts at 0xFF (and is in fact set to 0xFF initially even for Pokémon who haven't contracted Pokérus) and slowly ticks down. Cured Pokémon have this value set to 0.

Data location

050Diglett.png This section is incomplete.
Please feel free to edit this section to add missing information and complete it.
Reason: Are the addresses below only for US games? Also, is the mentioned "general region" of box data correct?

A Trainer's party starts at the following addresses in the GBA's RAM.

Game Address
Ruby 0x03004360
Emerald 0x02024190
FireRed 0x02024284
LeafGreen 0x020241E4

An opponent's party, or a wild Pokémon, starts at the following addresses.

Game Address
Ruby 0x030045C0
Emerald 0x02024744
FireRed 0x0202402C

The 600 bytes following these addresses describe a whole team of 6 Pokémon.

The full 100-byte structure for a Pokémon is only used to describe Pokémon being held in the player's party. When Pokémon are stored in the PC, their data is recorded using only the first 80 bytes of this structure, stopping after the data field. The last 20 bytes (excepting status condition) can all be recalculated from data in the data substructure when a Pokémon is withdrawn (level being derived from experience). This also explains why Pokémon suffering a status condition are "cured" when put in the PC.

This means there are also 33,600 bytes (80 bytes * 30 per Box * 14 Boxes) elsewhere in the GBA's RAM describing Pokémon in the PC. When the GBA's saved state (including memory contents) is unzipped into a 740,000+ byte file and viewed, the 14 Boxes of 420 Pokémon are stored in the general region of $038000 and $040000. In the US version of Pokémon Emerald, box data is between 0x02FE9888 and 0x02FF1BC8, non-inclusive. The first 6 80-byte structures make up, from left to right, the first row of Pokémon in box 1. The next Pokémon gets placed on the next row. After 5 rows (30 80-byte structures), the next Pokémon is placed in box 2, and so on.

See also


Data structure in the Pokémon games
Generation I Pokémon speciesPokémonPoké MartCharacter encodingSave
Generation II Pokémon speciesPokémonTrainerCharacter encodingSave
Generation III Pokémon species (Pokémon evolutionPokédexType chart)
Pokémon (substructures) • MoveContestContest moveItem
Trainer TowerBattle FrontierCharacter encodingSave
Generation IV PokémonSave
TCG GB and GB2 Character encoding

Project Games logo.png This data structure article is part of Project Games, a Bulbapedia project that aims to write comprehensive articles on the Pokémon games.