Character encoding (Generation II)

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.

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

Character sets

Technically, all characters before 0x60 function as control characters. An asterisk (*) denotes a character that is explained in the control characters section below.

English

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.

-0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F
0- ?BCDEFGHIJKLMNOP
1- QRST***XYZ():;[*
2- qr****wxyz      
3- ÄÖÜäö*****     *
4- Z()":"     ****'r**
5- ****************
6- DEFGHIVSLM:
7- POKétext box borders 
8- ABCDEFGHIJKLMNOP
9- QRSTUVWXYZ():;[]
A- abcdefghijklmnop
B- qrstuvwxyz      
C- Ä Ö Ü ä ö ü           
D- 'd'l'm'r's't'v        
E- 'PKMN-  ?!.&é
F- ×./,0123456789

The arrows at 0xDF & 0xEB are only present in Pokemon Crystal.

French & German

-0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F
0- Unsure
1-
2-
3-
4-
5-
6- DEFGHIVSLM:
7- POKétext box borders 
8- ABCDEFGHIJKLMNOP
9- QRSTUVWXYZ():;[]
A- abcdefghijklmnop
B- qrstuvwxyzàèéùßç
C- ÄÖÜäöüëïâôûêî
D- c'd'j'l'm'n'p's''st'u'y'
E- 'PKMN-+?!.&é
F- ×./,0123456789

Italian & Spanish

-0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F
0-
1- Unsure
2-
3-
4-
5-
6- DEFGHIVSLM:
7- POKétext box borders 
8- ABCDEFGHIJKLMNOP
9- QRSTUVWXYZ() :;[]
A- abcdefghijklmnop
B- qrstuvwxyzàèéùÀÁ
C- ÄÖÜäöüÈÉÌÍÑÒÓÙÚá
D- ìíñòóúº&'d'l'm'r's't'v
E- 'PKMN-¿¡?!.&é
F- ×./,0123456789

Japanese

-0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F
0- ?イ゙エ゙オ゙
1- ***ネ゙ノ゙***
2- ィ゙あ゙****
3- ******
4- ****も゚**
5- ****************
6- DEFGHIVSLM:
7- text box borders 
8-
9-
A-
B-
C-
D-
E- ?!
F- ×./0123456789

Korean

Main article: Korean character encoding (Generation II)

Control characters

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.

CharacterJapaneseEnglish
0x14Prints the player's name, including a gendered honorific in Japanese (adds くん for male, ちゃん for female).
0x15Nothing.May break.
0x16Nothing.May break.
0x1DPrints .Prints ;.
0x1EPrints って.Prints [.
0x1FPrints .Prints  .
0x22Prints た!.A "half" line break (moves the print position to the place one tile below the start of the current line).
0x23Prints こうげき.Prints tzx, but this appears to be junk data.
0x24Prints は .Prints POKé.
0x25Prints の .Nothing.
0x35Prints ばん どうろ.Nothing.
0x36Prints わたし.Nothing.
0x37Prints ここは .Nothing.
0x38Prints レッド.Prints RED.
0x39Prints グリーン.Prints GREEN.
0x3FPrints the opposing Trainer's name (including their Trainer class). (Outside of battle, this may not terminate properly.)
0x49Prints おかあさん.Prints MOM.
0x4APrints .Prints PKMN.
0x4BAppears to be the same as 0x55
0x4CAppears to be the same as 0x55 except without any prompt or pause (immediately shifting the dialogue box's lines upwards)
0x4ELine 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).
0x4FDialogue line break (moves the print position to the expected start of the second line in a standard dialogue box).
0x50String terminator.
0x51Prompts the player to press a button, after which the text window is cleared to make way for the following text.
0x52Prints the player's name without an honorific.
0x53Prints the rival's name.
0x54Prints ポケモン.Prints POKé.
0x55Prompts 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.
0x56Prints ...... (in the middle of the line in Japanese).
0x57Marks the end of dialogue, without a visual prompt to the player.
0x58Marks the end of dialogue, with a visual prompt to the player.
0x59Prints the inactive* Pokémon's name in battle. (Outside of battle, this may not terminate properly.)
0x5APrints the active* Pokémon's name in battle.
0x5BPrints パソコン.Prints PC.
0x5CPrints わざマシン.Prints TM.
0x5DPrints トレーナー.Prints TRAINER.
0x5EPrints ロケットだんPrints ROCKET.
0x5FPrints a period (0xE8) and simultaneously functions as a string terminator. (Only used in Japanese Pokédex entries.)

Uses

Strings using this character encoding are found in various places, including the save data structure in RAM and the Trainer data structure and the below examples in ROM.

Species names

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 0x50.

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:

GameEnglishJapanese
Gold 0x1B0B74 0x053A09
Silver 0x1B0B74 0x053A09
Crystal 0x053384 0x05341A



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


This data structure article is part of Project Games, a Bulbapedia project that aims to write comprehensive articles on the Pokémon games.
This article is issued from Bulbagarden. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.