Pokémon data substructures (Generation III): Difference between revisions

From Bulbapedia, the community-driven Pokémon encyclopedia.
Jump to navigationJump to search
m (Text replacement - "}}<br>↵{{Project Games notice" to "}} {{Project Games notice")
 
(76 intermediate revisions by 39 users not shown)
Line 1: Line 1:
=Format=
This is the list of Pokémon data substructures in the [[Generation III]] [[Game Boy Advance]] games, [[Pokémon Ruby and Sapphire Versions|Pokémon Ruby, Sapphire]], {{3v2|FireRed|LeafGreen|Emerald}}.
A Pokémon's data is slightly more complex than the rest of the structure. It is stored as four substructures, each 12 bytes in length:


{| align="center" style="border: 1px solid #88a; background: #f8f8ff; padding: 0.5em;" cellspacing="1"
==Format==
|-  
A Pokémon's data is slightly more complex than the rest of the  {{OBP|Pokémon data structure|Generation III}}. It is stored as four distinct substructures, each 12 bytes in length. (The Notes section below explains some of these fields in greater detail.)
! colspan="2" style="text-align: center; background: #ccf;" | '''Growth'''
 
|-
{| cellspacing="3" style="border: 1px solid #88a; padding: 0.5em"
| Species || word
|- style="background: #ccf;"
|-
! colspan="3" | Growth
| Item held || word
! colspan="3" | [[Move|Attacks]]
|-
! colspan="3" | [[Effort values|EVs]] & [[Contest condition|Condition]]
| Experience || long
! colspan="3" | Miscellaneous
|-
| [[Items#PP_Up|PP bonuses]] || byte
|-
| [[Happiness]] || byte
|-
| ??? || word
|}
{| align="center" style="border: 1px solid #88a; background: #f8f8ff; padding: 0.5em;" cellspacing="1"
! colspan="2" style="text-align: center; background: #ccf;" | '''[[Attacks]]'''
|-
| Attack 1 || word
|-
| Attack 2 || word
|-
| Attack 3 || word
|-
| Attack 4 || word
|-
| PP 1 || byte
|-
| PP 2 || byte
|-
| PP 3 || byte
|-
| PP 4 || byte
|}
{| align="center" style="border: 1px solid #88a; background: #f8f8ff; padding: 0.5em;" cellspacing="1"
! colspan="2" style="text-align: center; background: #ccf;" | '''Effort'''
|-
| HP [[Effort values|EV]] || byte
|-
| Attack EV || byte
|-
| Defense EV || byte
|-
| Speed EV || byte
|-
|-
| Sp. Attack EV || byte
! || size<br>(bytes) || offset<br>(bytes)
! || size<br>(bytes) || offset<br>(bytes)
! || size<br>(bytes) || offset<br>(bytes)
! || size<br>(bytes) || offset<br>(bytes)
|-
|-
| Sp. Defense EV || byte
| [[List of Pokémon by index number in Generation III|Species]] || 2 || 0
| [[List of moves|Move]] 1 || 2 || 0
| [[Stats#HP|HP]] EV || 1 || 0
| [[Pokérus]] status || 1 || 0
|-
|-
| Coolness || byte
| [[List of items by index number in Generation III|Item held]] || 2 || 2
| Move 2 || 2 || 2
| [[Stats#Attack|Attack]] EV || 1 || 1
| [[List of locations by index number in Generation III|Met location]] || 1 || 1
|-
|-
| Beauty || byte
| [[Experience]] || 4 || 4
| Move 3 || 2 || 4
| [[Stats#Defense|Defense]] EV || 1 || 2
| Origins info || 2 || 2
|-
|-
| Cuteness || byte
| [[PP Up|PP bonuses]] || 1 || 8
|-
| Move 4 || 2 || 6
| Smartness || byte
| [[Stats#Speed|Speed]] EV || 1 || 3
| [[Individual values|IVs]], {{pkmn|Egg}}, and [[Ability]] || 4 || 4
|-
|-
| Toughness || byte
| [[Friendship]] || 1 || 9
|-
| [[PP]] 1 || 1 || 8
| Fill || byte
| [[Stats#Special Attack|Special Attack]] EV || 1 || 4
|}
| [[Ribbons]] and [[Obedience]] || 4 || 8
{| align="center" style="border: 1px solid #88a; background: #f8f8ff; padding: 0.5em;" cellspacing="1"
! colspan="2" style="text-align: center; background: #ccf;" | '''Misc.'''
|-
|-
| [[Pokérus]] status || byte
| ''Unused'' || 2 || 10
| PP 2 || 1 || 9
| [[Stats#Special Defense|Special Defense]] EV || 1 || 5
|-
|-
| Location caught || byte
| colspan="3" rowspan="2" |
| PP 3 || 1 || 10
| {{OBP|Cool|condition}}ness || 1 || 6
|-
|-
| Level || signed byte
| PP 4 || 1 || 11
| {{OBP|Beauty|condition}} || 1 || 7
|-
|-
| [[Poké Ball]]
| colspan="6" rowspan="4" |
| rowspan="2" | byte
| {{OBP|Cute|condition}}ness || 1 || 8
|-
|-
| Trainer gender
| {{OBP|Smart|condition}}ness || 1 || 9
|-
|-
| [[DVs]] || long
| {{OBP|Tough|condition}}ness || 1 || 10
|-
|-
| [[Ribbons]] || long
| {{DL|Pokéblock|Feel}} || 1 || 11
|}
|}


==Order==
===Substructure order===
The order of the structures is determined by the [[personality value]] of the Pokémon. The order is determined by the value modulo 24:
The order of the structures is determined by the [[personality value]] of the Pokémon modulo 24, as shown below, where G, A, E, and M stand for the substructures growth, attacks, EVs and condition, and miscellaneous, respectively.


{| align="center" style="border: 1px solid #88a; background: white; padding: 1px; text-align: center;" cellspacing="1" cellpadding="2"
{| style="margin:auto; border: 1px solid #88a; background: #f8f8ff; padding: 1px; text-align: center;" cellspacing="1" cellpadding="2"
|- style="background: #f8f8ff;"
| width="25%" | 00. GAEM
| width="25%" | 00. GAEM
| width="25%" | 06. AGEM
| width="25%" | 06. AGEM
| width="25%" | 12. EGAM
| width="25%" | 12. EGAM
| width="25%" | 18. MGAE
| width="25%" | 18. MGAE
|- style="background: #f8f8ff;"
|-
| 01. GAME
| 01. GAME
| 07. AGME
| 07. AGME
| 13. EGMA
| 13. EGMA
| 19. MGEA
| 19. MGEA
|- style="background: #f8f8ff;"
|-
| 02. GEAM
| 02. GEAM
| 08. AEGM
| 08. AEGM
| 14. EAGM
| 14. EAGM
| 20. MAGE
| 20. MAGE
|- style="background: #f8f8ff;"
|-
| 03. GEMA
| 03. GEMA
| 09. AEMG
| 09. AEMG
| 15. EAMG
| 15. EAMG
| 21. MAEG
| 21. MAEG
|- style="background: #f8f8ff;"
|-
| 04. GMAE
| 04. GMAE
| 10. AMGE
| 10. AMGE
| 16. EMGA
| 16. EMGA
| 22. MEGA
| 22. MEGA
|- style="background: #f8f8ff;"
|-
| 05. GMEA
| 05. GMEA
| 11. AMEG
| 11. AMEG
Line 119: Line 97:
|}
|}


Where G, A, E, and M stand for the substructures: growth, attacks, effort, and Caught respectively.
===Encryption===
The four data substructures are stored in an encrypted form. Decrypting the data involves two steps: actually decrypting the data, and validating the decrypted data. To obtain the 32-bit decryption key, the entire [[Original Trainer]] [[Trainer ID number|ID number]] must be {{wp|XOR}}ed with the personality value of the entry. This key can then be used to decrypt the data by XORing it, 32 bits (or 4 bytes) at a time. To validate the checksum given in the encapsulating {{OBP|Pokémon data structure|Generation III}}, the entirety of the four unencrypted data substructures must be summed into a 16-bit value.


<!--
==Notes==
Not really necessary.
===PP bonuses===
The PP bonuses byte stores the number of times [[PP]] has been increased for each move in the attacks substructure. Each move has two bits, meaning the PP of each move can be increased 0 to 3 times.
{| style="border: 1px solid #88a; background: #f8f8ff; padding: 0.5em; border-collapse: collapse; margin: 0 0 0.5em 0.5em" cellpadding=2
! Bits || Move
|-
| 0-1 || Move 1
|-
| 2-3 || Move 2
|-
| 4-5 || Move 3
|-
| 6-7 || Move 4
|}


For simplicity I used a table-lookup procedure to retrieve a single DWORD at a time from a specific data section, which I'll share.
===Pokérus status===
Written in x86 assembly, formatted in MASM:
[[Pokérus]] status is stored in a single byte, with the upper and lower halves representing distinct values.
''pattern'' is (p modulo 24)
{| style="border: 1px solid #88a; background: #f8f8ff; padding: 0.5em; border-collapse: collapse; margin: 0 0 0.5em 0.5em" cellpadding=2
''section'' is 0, 1, 2, or 3 corresponding to Growth, Attacks, Effort, and Caught respectively.
! Bits || Interpretation
<pre>
|-
.data
| 0-3 || Days left until Pokérus is cured
GDSO_A db 0,0,0,0,0,0
|-
GDSO_B db 1,1,2,3,2,3
| 4-7 || Pokérus "strain"
GDSO_C db 2,3,1,1,3,2
|}
GDSO_D db 3,2,3,2,1,1
Any value from 0 to 15 is valid for the strain, with 0 indicating that the Pokémon does not have Pokérus at all. The number of days can be any value from 0 to 4, although for some "strains", some of those higher values [[Pokérus#Strains|are also invalid]]. If any bit is set in the "strain" and the number of days is at 0, the Pokémon has been "cured" of Pokérus, as indicated by a small black dot on the Pokémon's status screen.
.code
 
GetDataSectionOffset proc uses ebx pattern:DWORD,section:DWORD
===Origins===
mov eax,pattern
''Trainer gender'' tells the game how to color the name of the Pokémon's [[Original Trainer]] on the Pokémon's status screen. If ''Level met'' is 0, it is interpreted as the Pokémon having been hatched from an {{pkmn|Egg}}; however, the games only differentiate a hatched Pokémon from other Pokémon if its current Trainer is the Pokémon's Original Trainer. If a hatched Pokémon is traded, its origin text on the status screen is displayed just like a caught Pokémon's and will not say "Hatched" or "Egg".
mov ecx,6
{| style="border: 1px solid #88a; padding: 0.5em" cellpadding=2 cellspacing=3
xor edx,edx
|- style="background: #ccf;"
div ecx
! colspan=2 | Trainer gender || colspan=2 | Poké Ball caught in || colspan=2 | [[Game of origin]] || colspan=2 | Level met
mov ecx,eax
|- style="text-align:center"
mov eax,section
| colspan=2 | ''Bit 15'' || colspan=2 | ''Bits 11 - 14'' || colspan=2 | ''Bits 7 - 10'' || colspan=2 | ''Bits 0 - 6''
shl eax,2
|-
add eax,offset gdso_pbgroup
! Value || Gender || Value || Ball || Value || Game || Value || Interpretation
mov eax,DWORD PTR [eax]
|-
shl cl,3 ; x8
| 0 || style="color:#{{blue color}}" | '''Male''' || 1 || {{bag2|Master Ball}} || 1 || '''{{color2|{{sapphire color}}|Pokémon Ruby and Sapphire Versions|Sapphire}}''' || 0 || Hatched
shr eax,cl
|-
and eax,11111111b
| 1 || style="color:#{{red color}}" | '''Female''' || 2 || {{bag2|Ultra Ball}} || 2 || '''{{color2|{{ruby color}}|Pokémon Ruby and Sapphire Versions|Ruby}}''' || >0 || Caught or other
mov ebx,offset GDSO_A
|-
add ebx,edx
| rowspan=10 colspan=2 | || 3 || {{bag2|Great Ball}} || 3 || '''{{color2|{{emerald color}}|Pokémon Emerald Version|Emerald}}'''
mov edx,12
|-
xlatb
| 4 || {{bag|Poké Ball}} {{i|Poké Ball}} || 4 || '''{{color2|{{firered color}}|Pokémon FireRed and LeafGreen Versions|FireRed}}'''
mul edx
|-
ret
| 5 || {{bag2|Safari Ball}} || 5 || '''{{color2|{{leafgreen color}}|Pokémon FireRed and LeafGreen Versions|LeafGreen}}'''
gdso_pbgroup db 0,6,6,6 ; DS_GROWTH = 0
|-
db 6,0,12,12 ; DS_ATTACKS = 1
| 6 || {{bag2|Net Ball}} || 15 || '''{{color2|{{colo color}}|Pokémon Colosseum|Colosseum}}''' or '''{{color2|{{xd color}}|Pokémon XD: Gale of Darkness|XD}}'''
db 12,12,0,18 ; DS_EFFORT = 2
|-
db 18,18,18,0 ; DS_CAUGHT = 3
| 7 || {{bag2|Dive Ball}}
GetDataSectionOffset endp
|-
</pre>
| 8 || {{bag2|Nest Ball}}
-->
|-
| 9 || {{bag2|Repeat Ball}}
|-
| 10 || {{bag2|Timer Ball}}
|-
| 11 || {{bag2|Luxury Ball}}
|-
| 12 || {{bag2|Premier Ball}}
|}


==Encryption==
===IVs, Egg, and Ability===
[[Individual values|IVs]] for each of the [[stats]] from HP to Special Defense take up the lowest 30 bits of this field, each IV taking 5 bits. Bit 30 is a 1 if the Pokémon is still an Egg or 0 otherwise. Bit 31 indicates the [[Ability]] the Pokémon has: 0 indicates its first Ability, while 1 indicates its second Ability (if it has one).


The entire data structure is encrypted by XORing the entire Trainer ID with the personality value, then XORing the resulting value with the data (one long value at a time). The same process is used to decrypt the encrypted data. The correct checksum is found by summing the original values, not the encrypted values.
In the table below, bit 0 is the least significant bit of the 32-bit field and bit 31 is the most significant.


=Notes=
{| style="border: 1px solid #88a; background: #f8f8ff; padding: 0.5em; border-collapse: collapse; margin: 0 0 0.5em 0.5em" cellpadding=2
==Pokérus status==
! Bits || Stat
|-
| 0-4 || HP
|-
| 5-9 || Attack
|-
| 10-14 || Defense
|-
| 15-19 || Speed
|-
| 20-24 || Special Attack
|-
| 25-29 || Special Defense
|-
| 30 || Egg?
|-
| 31 || Ability
|}


[[Pokérus]] status is stored in a single byte. The lower 4 bits represents the number of units of time left until the virus wears away. If any bit in the upper 4 bits is set, the Pokémon is immune to Pokérus, indicated a small black dot appears on the Pokémon's status screen. Both values are completely random when caught, leading to the fact that not all Pokémon contract the virus for the same amount of time and some are able to catch it again.
===Ribbons and Obedience===
For most of the [[Ribbon]]s, a value of 0 indicates that the Pokémon does not have the Ribbon while 1 indicates that it does. For the {{pkmn|Contest}} Ribbons, the values 1 to 4 indicate that the Pokémon has the Ribbon or Ribbons for (respectively) the Normal, Super, Hyper, and Master Ranks of that Contest.


==PP bonuses==
In-game, the descriptions of the last 7 ribbons (corresponding to bits 20-26) are blank by default. What text appears there is determined by the method those ribbons are attained. Also note that some of these ribbons are unobtainable and/or had different names prior to Gen 5. For a full list of possible descriptions see [[List of Ribbons in the games#Gift Ribbon descriptions|here]].


The PP bonuses byte stores the number of [[Item#PP Up|PP Up]]s used for each attack. (Order? Do the uppermost 2 bits represent attack 1 or 4?)
{| style="border: 1px solid #88a; background: #f8f8ff; padding: 0.5em; border-collapse: collapse; margin: 0 0 0.5em 0.5em" cellpadding=2
! Bits || Ribbon
|-
| 0-2 || {{DL|List of Ribbons in the games|Cool Ribbon|Cool}}
|-
| 3-5 || {{DL|List of Ribbons in the games|Beauty Ribbon|Beauty}}
|-
| 6-8 || {{DL|List of Ribbons in the games|Cute Ribbon|Cute}}
|-
| 9-11 || {{DL|List of Ribbons in the games|Smart Ribbon|Smart}}
|-
| 12-14 || {{DL|List of Ribbons in the games|Tough Ribbon|Tough}}
|-
| 15 || {{DL|List of Ribbons in the games|Champion Ribbon|Champion}}
|-
| 16 || {{DL|List of Ribbons in the games|Winning Ribbon|Winning}}
|-
| 17 || {{DL|List of Ribbons in the games|Victory Ribbon|Victory}}
|-
| 18 || {{DL|List of Ribbons in the games|Artist Ribbon|Artist}}
|-
| 19 || {{DL|List of Ribbons in the games|Effort Ribbon|Effort}}
|-
| 20 || {{DL|List of Ribbons in the games|Battle Champion Ribbon|{{tt|Battle Champion Ribbon|Marine Ribbon in gen 3/4}}}}
|-
| 21 || {{DL|List of Ribbons in the games|Battle Regional Ribbon|{{tt|Regional Champion Ribbon|Land Ribbon in gen 3/4}}}}
|-
| 22 || {{DL|List of Ribbons in the games|National Champion Ribbon|{{tt|National Champion Ribbon|Sky Ribbon in gen 3/4}}}}
|-
| 23 || {{DL|List of Ribbons in the games|Country Ribbon|Country}}
|-
| 24 || {{DL|List of Ribbons in the games|National Ribbon|National}}
|-
| 25 || {{DL|List of Ribbons in the games|Earth Ribbon|Earth}}
|-
| 26 || {{DL|List of Ribbons in the games|World Ribbon|World}}
|}


==Poké Ball / Trainer gender==
The highest bit of this field, bit 31, determines the [[obedience]] of {{p|Mew}} and {{p|Deoxys}}. If this bit is not set, Mew and Deoxys cannot be traded to or from Pokémon FireRed, LeafGreen, or Emerald, and will always disobey the player in battle in those games (except in link battles). If this bit is set on a Pokémon that is transferred to a later generation, the Pokémon will be treated as having had a [[fateful encounter]].<ref>[https://web.archive.org/web/20110426023742/http://upokecenter.com/games/rs/guides/notes.php#15BB2A7E2 Pokémon Ruby, Sapphire, and Emerald - Various Notes (Upokecenter via the Internet Archive)]</ref>


The gender of the trainer that caught a Pokémon is stored in the data section, and is determined by the most significant bit of this byte. The lower 4 bits of this byte store the [[Poké Ball]] type that the Pokémon was caught in.
==See also==
* [[Pokémon data structure (Generation III)]]


==DVs==
==Links==
* [http://www.ppnstudio.com/maker/PokemonMakerHelp.txt PokemonMakerV4x Help and 80 bytes Make a Pokémon]


DVs are stored pretty logically. Starting from the least significant bit, each stat from HP to Special Defense takes up 5 bits, leaving the uppermost 2 bits zeroed.
==References==
<references/>


[[Category:Structures]]
{{data structure}}
[[Category:Game mechanics]]
{{Project Games notice|data structure}}

Latest revision as of 17:33, 16 September 2024

This is the list of Pokémon data substructures in the Generation III Game Boy Advance games, Pokémon Ruby, Sapphire, FireRed, LeafGreen, and Emerald.

Format

A Pokémon's data is slightly more complex than the rest of the Pokémon data structure. It is stored as four distinct substructures, each 12 bytes in length. (The Notes section below explains some of these fields in greater detail.)

Growth Attacks EVs & Condition Miscellaneous
size
(bytes)
offset
(bytes)
size
(bytes)
offset
(bytes)
size
(bytes)
offset
(bytes)
size
(bytes)
offset
(bytes)
Species 2 0 Move 1 2 0 HP EV 1 0 Pokérus status 1 0
Item held 2 2 Move 2 2 2 Attack EV 1 1 Met location 1 1
Experience 4 4 Move 3 2 4 Defense EV 1 2 Origins info 2 2
PP bonuses 1 8 Move 4 2 6 Speed EV 1 3 IVs, Egg, and Ability 4 4
Friendship 1 9 PP 1 1 8 Special Attack EV 1 4 Ribbons and Obedience 4 8
Unused 2 10 PP 2 1 9 Special Defense EV 1 5
PP 3 1 10 Coolness 1 6
PP 4 1 11 Beauty 1 7
Cuteness 1 8
Smartness 1 9
Toughness 1 10
Feel 1 11

Substructure order

The order of the structures is determined by the personality value of the Pokémon modulo 24, as shown below, where G, A, E, and M stand for the substructures growth, attacks, EVs and condition, and miscellaneous, respectively.

00. GAEM 06. AGEM 12. EGAM 18. MGAE
01. GAME 07. AGME 13. EGMA 19. MGEA
02. GEAM 08. AEGM 14. EAGM 20. MAGE
03. GEMA 09. AEMG 15. EAMG 21. MAEG
04. GMAE 10. AMGE 16. EMGA 22. MEGA
05. GMEA 11. AMEG 17. EMAG 23. MEAG

Encryption

The four data substructures are stored in an encrypted form. Decrypting the data involves two steps: actually decrypting the data, and validating the decrypted data. To obtain the 32-bit decryption key, the entire Original Trainer ID number must be XORed with the personality value of the entry. This key can then be used to decrypt the data by XORing it, 32 bits (or 4 bytes) at a time. To validate the checksum given in the encapsulating Pokémon data structure, the entirety of the four unencrypted data substructures must be summed into a 16-bit value.

Notes

PP bonuses

The PP bonuses byte stores the number of times PP has been increased for each move in the attacks substructure. Each move has two bits, meaning the PP of each move can be increased 0 to 3 times.

Bits Move
0-1 Move 1
2-3 Move 2
4-5 Move 3
6-7 Move 4

Pokérus status

Pokérus status is stored in a single byte, with the upper and lower halves representing distinct values.

Bits Interpretation
0-3 Days left until Pokérus is cured
4-7 Pokérus "strain"

Any value from 0 to 15 is valid for the strain, with 0 indicating that the Pokémon does not have Pokérus at all. The number of days can be any value from 0 to 4, although for some "strains", some of those higher values are also invalid. If any bit is set in the "strain" and the number of days is at 0, the Pokémon has been "cured" of Pokérus, as indicated by a small black dot on the Pokémon's status screen.

Origins

Trainer gender tells the game how to color the name of the Pokémon's Original Trainer on the Pokémon's status screen. If Level met is 0, it is interpreted as the Pokémon having been hatched from an Egg; however, the games only differentiate a hatched Pokémon from other Pokémon if its current Trainer is the Pokémon's Original Trainer. If a hatched Pokémon is traded, its origin text on the status screen is displayed just like a caught Pokémon's and will not say "Hatched" or "Egg".

Trainer gender Poké Ball caught in Game of origin Level met
Bit 15 Bits 11 - 14 Bits 7 - 10 Bits 0 - 6
Value Gender Value Ball Value Game Value Interpretation
0 Male 1 Master Ball Master Ball 1 Sapphire 0 Hatched
1 Female 2 Ultra Ball Ultra Ball 2 Ruby >0 Caught or other
3 Great Ball Great Ball 3 Emerald
4 Poké Ball Poké Ball 4 FireRed
5 Safari Ball Safari Ball 5 LeafGreen
6 Net Ball Net Ball 15 Colosseum or XD
7 Dive Ball Dive Ball
8 Nest Ball Nest Ball
9 Repeat Ball Repeat Ball
10 Timer Ball Timer Ball
11 Luxury Ball Luxury Ball
12 Premier Ball Premier Ball

IVs, Egg, and Ability

IVs for each of the stats from HP to Special Defense take up the lowest 30 bits of this field, each IV taking 5 bits. Bit 30 is a 1 if the Pokémon is still an Egg or 0 otherwise. Bit 31 indicates the Ability the Pokémon has: 0 indicates its first Ability, while 1 indicates its second Ability (if it has one).

In the table below, bit 0 is the least significant bit of the 32-bit field and bit 31 is the most significant.

Bits Stat
0-4 HP
5-9 Attack
10-14 Defense
15-19 Speed
20-24 Special Attack
25-29 Special Defense
30 Egg?
31 Ability

Ribbons and Obedience

For most of the Ribbons, a value of 0 indicates that the Pokémon does not have the Ribbon while 1 indicates that it does. For the Contest Ribbons, the values 1 to 4 indicate that the Pokémon has the Ribbon or Ribbons for (respectively) the Normal, Super, Hyper, and Master Ranks of that Contest.

In-game, the descriptions of the last 7 ribbons (corresponding to bits 20-26) are blank by default. What text appears there is determined by the method those ribbons are attained. Also note that some of these ribbons are unobtainable and/or had different names prior to Gen 5. For a full list of possible descriptions see here.

Bits Ribbon
0-2 Cool
3-5 Beauty
6-8 Cute
9-11 Smart
12-14 Tough
15 Champion
16 Winning
17 Victory
18 Artist
19 Effort
20 Battle Champion Ribbon
21 Regional Champion Ribbon
22 National Champion Ribbon
23 Country
24 National
25 Earth
26 World

The highest bit of this field, bit 31, determines the obedience of Mew and Deoxys. If this bit is not set, Mew and Deoxys cannot be traded to or from Pokémon FireRed, LeafGreen, or Emerald, and will always disobey the player in battle in those games (except in link battles). If this bit is set on a Pokémon that is transferred to a later generation, the Pokémon will be treated as having had a fateful encounter.[1]

See also

Links

References


Data structure in the Pokémon games
General Character encoding
Generation I Pokémon speciesPokémonPoké MartCharacter encodingSave
Generation II Pokémon speciesPokémonTrainerCharacter encoding (Korean) • Save
Generation III Pokémon species (EvolutionPokédexType chart)
Pokémon (substructures) • MoveContestContest moveItem
Trainer TowerBattle FrontierCharacter encoding (GameCube) • Save
Generation IV Pokémon species (EvolutionLearnsets)
PokémonSaveCharacter encoding (Wii)
Generation V–present Character encoding
Generation VIII Save
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.