Data on the Evolution of Pokémon is stored as a series of 6-byte structures in Generation III. These structures must be aligned on a 4-byte boundary, and each Pokémon species has 5 such entries, for a total of 40 bytes per species.
In all Generation III games, Evolution data is situated between the Pokémon move list data pool and the actual Pokémon move list index; see Move list data structures in Generation III for a list of locations.
Pokémon Evolution data structure
Each species has 5 substructures, as Eevee has 5 Evolution options in this generation. The overall structure is laid out as follows:
Offset
Size
Type
Notes
0x00
8
Substructure
First Substructure
0x08
8
Substructure
Second Substructure
0x10
8
Substructure
Third Substructure
0x18
8
Substructure
Fourth Substructure
0x20
8
Substructure
Fifth Substructure
Pokémon Evolution Data Substructure
The 6-byte substructure is organized as follows:
Offset
Size
Type
Notes
0x00
2
uint16_t
Method of Evolution - How this Pokémon will evolve. This can be one of the following values:
0x0001 - Evolves by friendship without regards to time of day
0x0002 - Evolves by friendship during the day
0x0003 - Evolves by friendship at night
0x0004 - Evolves by level up
0x0005 - Evolves by trade without items
0x0006 - Evolves by trading the Pokémon while holding an item
0x0007 - Evolves by using an item on the Pokémon
0x0008 - Evolves by level up, but only when Attack is greater than Defense
0x0009 - Evolves by level up, but only when Attack is equal to Defense
0x000A - Evolves by level up, but only when Attack is lower than Defense
0x000C - Evolves by level up, but only when the personality value permits (Wurmple → Cascoon Evolution)
0x000D - Evolves by level up, but may spawn another Pokémon if permitted (Nincada → Ninjask Evolution)
0x000E - Evolves by level up, but is only spawned if the conditions permit (Nincada → Shedinja Evolution)
0x000F - Evolves by beauty
0x02
2
uint16_t
Parameter - The meaning of this is dependent on the method of Evolution - the item, the level, etc. Not used and zeroed out where applicable. Note that the parameter is used for the beauty threshold, but is not used for the friendship threshold (which is always 220).