Trainer data structure (Generation II)

050Diglett.png This article is incomplete.
Please feel free to edit this article to add missing information and complete it.

0572Minccino.png This article does not yet meet the quality standards of Bulbapedia. Please feel free to edit this article to make it conform to Bulbapedia norms and conventions.

NPC Trainer data

Name Length
Name 2-8 bytes
Name string 1-7 bytes
Terminator 1 byte
Custom move marker 1 byte
Pokémon 2-6 bytes
Level 1 byte
Species 1 byte
Moveset 4 bytes
Terminator 1 byte

The in-game Trainer data is remarkably compressed.


This is a string going anywhere from 2 to 8 bytes, containing the Trainer's name and ending in a 0x50 terminator. The rival's name is represented by a single byte - 0xE6.

Custom move marker

This is one byte marking whether the Pokémon in the party have custom moves or not. If not, it is set to 0 - if so, it is set to 1.


Depending on whether the custom move marker was set or not, each Pokémon's data is either 2 or 6 bytes long. If the move marker was set to 0, the Pokémon's data simply contains the Pokémon's level and species, in that order. Otherwise, it contains the full moveset after the level and species - 1 byte per move.


This is a single byte (0xFF) which tells the processor to stop reading data.

  This game-related article is a stub. You can help Bulbapedia by expanding it.

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

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