Character encoding (Generation II)
|This article is incomplete.|
Please feel free to edit this article to add missing information and complete it.
Reason: French, German, Italian, and Spanish character encodings
The Generation II games use a proprietary character encoding to store text data. The Generation II encoding is largely similar to the Generation I encoding. Versions of the games in different languages may use different encodings, some more different than others.
Technically, all characters before 0x60 function as control characters. An asterisk (*) denotes a character that is explained in the control characters section below.
Only a few control characters below 0x50 are actually used in the English games, all of which are ones marked below with an asterisk (for more, see the control characters section further down where they are explained). The sub-0x50 characters that are not marked with an asterisk are artifacts of the Japanese control characters that print other characters with a diacritic.
The arrows at 0xDF & 0xEB are only present in Pokemon Crystal.
French & German
Italian & Spanish
- Main article: Korean character encoding (Generation II)
|This section is incomplete.|
Please feel free to edit this section to add missing information and complete it.
Reason: Any alternate defaults or functions in Gold and Silver or in other languages
The characters on a gray background below are not naturally used in the games.
|0x14||Prints the player's name, including a gendered honorific in Japanese (adds |
||A "half" line break (moves the print position to the place one tile below the start of the current line).|
|0x3F||Prints the opposing Trainer's name (including their Trainer class). (Outside of battle, this may not terminate properly.)|
|0x4B||Appears to be the same as 0x55|
|0x4C||Appears to be the same as 0x55 except without any prompt or pause (immediately shifting the dialogue box's lines upwards)|
|0x4E||Line break (moves the print position to the space two tiles below the start of the current line (as defined by explicit placements of the print position); mostly used in move descriptions and Pokédex entries).|
|0x4F||Dialogue line break (moves the print position to the expected start of the second line in a standard dialogue box).|
|0x51||Prompts the player to press a button, after which the text window is cleared to make way for the following text.|
|0x52||Prints the player's name without an honorific.|
|0x53||Prints the rival's name.|
|0x55||Prompts the player to press a button, after which the top line of the text window is replaced by the bottom, the bottom line is cleared, and the print position moves to the start of the bottom line.|
|0x57||Marks the end of dialogue, without a visual prompt to the player.|
|0x58||Marks the end of dialogue, with a visual prompt to the player.|
|0x59||Prints the inactive* Pokémon's name in battle. (Outside of battle, this may not terminate properly.)|
|0x5A||Prints the active* Pokémon's name in battle.|
|0x5F||Prints a period (0xE8) and simultaneously functions as a string terminator. (Only used in Japanese Pokédex entries.)|
The names of all the Pokémon are stored in a simple list of 256 strings. In international versions, each entry is 10 bytes, while in Japanese versions, they are 5 bytes. If a name takes less than its full allotted length, it is terminated by
The first name in the list is Bulbasaur while the last is ?????. The game looks up a Pokémon's name by receiving its index number, decrementing it by 1, and then looking for that index in the list. So while Bulbasaur's index number is 1, the game will find Bulbasaur's name at index 0 in the list (the first entry). These names are used for a variety of things, such as naming wild Pokémon and displaying the species name in the Pokédex and on summary screens.
The following are ROM offsets for the start of the list in each game:
|This data structure article is part of Project Games, a Bulbapedia project that aims to write comprehensive articles on the Pokémon games.|