Character encoding (Generation II): Difference between revisions

m Special duplicate characters: https://github.com/erosunica/pokecrystal-es/blob/9239005/home/text.asm#L237
Cleanup/rewrite
Line 1: Line 1:
{{incomplete|needs=Similar level of detail to English for non-English encodings.}}
In the [[Generation II]] [[core series]] games, a proprietary '''[[character encoding]]''' is used to store text data. Different languages use different encodings, although Western language games have very similar encodings to each other.
In the [[Generation II]] [[core series]] games, a proprietary '''[[character encoding]]''' is used to store text data. Different languages use different encodings, although Western language games have very similar encodings to each other.


Line 7: Line 6:
The exact character encoding differs between languages, although all Western languages use almost-equivalent encodings. The set of [[Text entry (Generation II)|user-enterable characters]] in Trainer names and Pokémon [[nickname]]s is the same in all Western languages except German; in German, letters with umlauts are enterable (<code>ÄÖÜäöü</code>), but to compensate it is not possible to enter a semicolon and either a space{{sup/2|GS}} or multiplication sign{{sup/2|C}}.
The exact character encoding differs between languages, although all Western languages use almost-equivalent encodings. The set of [[Text entry (Generation II)|user-enterable characters]] in Trainer names and Pokémon [[nickname]]s is the same in all Western languages except German; in German, letters with umlauts are enterable (<code>ÄÖÜäöü</code>), but to compensate it is not possible to enter a semicolon and either a space{{sup/2|GS}} or multiplication sign{{sup/2|C}}.


In the Generation I and II games, the only supported cross-language compatibility is among the Western games. Attempting to trade or battle between a Western language game and a Japanese or Korean game will usually result in some kind of corruption in both games, and is completely disabled in the [[Virtual Console]] releases. Between Western language games, the only text that can be transferred is the player's name, the [[nickname]]s and [[Original Trainer]]s of their party Pokémon, and the contents of [[Mail]]. When reading Mail in a Western language game, the game uses the character encoding of the language the Mail was written in, rather than the current game's language, which prevents the text from being corrupted.
In the Generation I and II games, the only supported cross-language compatibility is among the Western games. Between Western language games, the only text that can be transferred is the player's name, the [[nickname]]s and [[Original Trainer]]s of their party Pokémon, and the contents of [[Mail]]. When [[trade|trading]] Pokémon between different Western languages, nicknames and Original Trainer names are usually displayed correctly, with the exception of characters with diacritics (specifically, some characters obtainable in names in the Spanish versions that cannot be entered by players). The static display control character 0x5D "TRAINER" is used as the Original Trainer of Pokémon obtained in [[in-game trade]]s in Generation I. Due to being a control character, this means that if the Pokémon is traded to a game in a different language, the Original Trainer is automatically updated to display "TRAINER" in that game's own language. When reading Mail in a Western language game, the game uses the font of the language the Mail was written in, rather than the current game's language, which prevents the text from being corrupted.


Due to the encodings of Western language games mostly being compatible, when [[trade|trading]] Pokémon between different Western languages, [[nickname]]s and [[Original Trainer]] names are usually displayed correctly, with the exception of characters with diacritics (specifically, some characters obtainable in names in the Spanish versions that cannot be [[Text entry (Generation II)|entered by players]]). The [[Original Trainer]] of Pokémon obtained in [[in-game trade]]s in Generation I is codepoint 0x5D, a control character that prints "TRAINER" in the game's language, meaning that it is automatically translated when traded between languages.
Attempting to trade or battle between a Western language or Korean game and a Japanese game causes corruption of both save files. The Korean versions of {{game|Gold and Silver|s}} can successfully trade with Western language Generation I and II games. However, [[Korean character encoding (Generation II)|Hangul characters]] will appear garbled on Western language games, and may even include bytes that map to control characters in these games. However, unlike attempting to trade between Western language and Japanese games, save data is not corrupted. The [[Virtual Console]] releases only allow trades or battles between two Western language games, between two Japanese games, or between two Korean games.


The [[Character encoding (Generation I)|Generation I character encoding]] for each language is almost the same as the Generation II encoding, with all characters that can be entered in Trainer names and Pokémon nicknames remaining at the same codepoints in both generations. However, the English Generation I games do not support letters with umlauts that can be entered in German games—simply displaying them as spaces—although the code points are preserved so they will be correctly displayed in other games. This means that trading Pokémon between Generation I and II games of the same language will not affect their nicknames or Original Trainer names.
The [[Character encoding (Generation I)|Generation I character encoding]] for each language is almost the same as the Generation II encoding, with all characters that can be entered in Trainer names and Pokémon nicknames remaining at the same code points in both generations. However, the English Generation I games do not support letters with umlauts that can be entered in German games—simply displaying them as spaces—although the code points are preserved so they will be correctly displayed in other games. This means that trading Pokémon between Generation I and II games of the same language will not affect their nicknames or Original Trainer names.


===Pokémon Stadium 2===
===Pokémon Stadium 2===
Line 18: Line 17:


===Poké Transporter===
===Poké Transporter===
{{main|Poké Transporter#Character transcoding|Poké Transporter → Character transcoding}}
{{main|Poké Transporter|section=Character transcoding}}
When transferring a Pokémon from a Generation I or II game via [[Poké Transporter]], its nickname and Original Trainer need to be transcoded from this character encoding to that of [[Pokémon Bank]]. Due to differences in the characters that can be entered or otherwise appear in names in these games and the Generation VII games, some characters are not transcoded to the same characters they represent in these games.
When transferring a Pokémon from a Generation I or II game via [[Poké Transporter]], its nickname and Original Trainer need to be transcoded from this character encoding to that of [[Pokémon Bank]]. Due to differences in the characters that can be entered or otherwise appear in names in these games and the [[Nintendo 3DS]] games, some characters are not transcoded to the same characters they represent in these games.


Additionally, the name of Box 1 (the box that will be transferred) is displayed in Poké Transporter. The range of characters that can be entered in Box names is broader than in nicknames and Trainer names, and varies more between languages, but Poké Transporter still makes an effort to display Box names accurately.
Additionally, the name of Box 1 (the box that will be transferred) is displayed in Poké Transporter. The range of characters that can be entered in Box names is broader than in nicknames and Trainer names, and varies more between languages, but Poké Transporter still makes an effort to display Box names accurately.
Line 26: Line 25:
Due to how text is rendered in the Generation II core series games, all non-control characters take up the exact same amount of space (i.e. the games effectively use a {{wp|monospaced font}}). In Western languages, some ligature characters exist to display two characters within the width of one (e.g. the character <code>'s</code> is the same width as <code>s</code>).
Due to how text is rendered in the Generation II core series games, all non-control characters take up the exact same amount of space (i.e. the games effectively use a {{wp|monospaced font}}). In Western languages, some ligature characters exist to display two characters within the width of one (e.g. the character <code>'s</code> is the same width as <code>s</code>).


These same code points are used for both rendering text and other elements. For example, code points 0x79-0x7E are {{wp|box-drawing character}}s used to draw the boundaries of text boxes; in certain user interfaces (e.g. in battles, on summary screens, and in the Pokédex) parts of the tileset overwrite code points that are not used to display text in that interface.
Each character code directly corresponds to a tile in the tilemap loaded into {{wp|VRAM}}. Not all tiles in the tilemap are accessible via character code, but many are. For example, code points 0x79-0x7E are {{wp|box-drawing character}}s used to draw the boundaries of text boxes; in certain user interfaces (e.g. in battles, on summary screens, and in the Pokédex) parts of the tileset overwrite code points that are not used to display text in that interface.


Some codepoints are used for different characters in different contexts. For example, 0x6E and 0x6F usually contain hiragana characters leftover from the Japanese version, but when displaying the length of {{p|Magikarp}} at the [[Lake of Rage]] they are replaced by symbols for feet and inches instead (<code>′</code> and <code>″</code>).
Some code points are used for different characters in different contexts. For example, 0x6E and 0x6F usually contain hiragana characters leftover from the Japanese version, but when displaying the length of {{p|Magikarp}} at the [[Lake of Rage]] they are replaced by symbols for feet and inches instead (<code>′</code> and <code>″</code>).


==English==
==Character map==
The following represents the baseline values of these characters. In some contexts, many of these characters have their values overwritten.
The following represents the baseline values of these characters. In some contexts, many of these characters have their values overwritten. The Korean character map is [[Korean character encoding (Generation II)#Character map|listed separately]].


Undefined characters simply print as spaces.
<div style="display: flex; flex-wrap: wrap; align-items: start; gap: 2em; margin: 1em 0">
 
{| class="wikitable" style="text-align: center; border-collapse:collapse; margin: 0"
{| class="wikitable" style="text-align: center; border-collapse: collapse; white-space: nowrap" cellpadding="2px" width="375px"
|+ English
|-
|- style="white-space: nowrap"
! || -0 || -1 || -2 || -3 || -4 || -5 || -6 || -7 || -8 || -9 || -A || -B || -C || -D || -E || -F
! || -0 || -1 || -2 || -3 || -4 || -5 || -6 || -7 || -8 || -9 || -A || -B || -C || -D || -E || -F
|- style="background: #FDF"
|- style="background: #FDF"
! 0-
! 0-
|style="background: #FFD"| ? || B || C || D || E || F || G || H || I || J || K || L || M || N || O || P
|style="background: #FFD"| {{tt|␀|Null character}} || B || C || D || E || F || G || H || I || J || K || L || M || N || O || P
|- style="background: #FDF"
|- style="background: #FDF"
! 1-
! 1-
Line 58: Line 57:
|-
|-
! 6-
! 6-
| █ || ▲ || [[File:Character 0x62 ii.png|16px|🖁]] || '''D''' || '''E''' || '''F''' || '''G''' || '''H''' || '''I''' || '''V''' || '''S''' || '''L''' || '''M''' || : || ぃ || ぅ
| █ || ▲ || [[File:Character 0x62 ii.png|16px|🖁|class=noviewer]] || || || || || || || || || || || || ぃ || ぅ
|-
|-
! 7-
! 7-
| <sup>P</sup><sub>O</sub> || <sup>K</sup><sub>é</sub> ||style="background: #{{crystal color light}}"| “ ||style="background: #{{crystal color light}}"| ” || ・ || … || ぁ || ぇ || ぉ || ╔ || ═ || ╗ || ║ || ╚ || ╝ || {{tt|␠|Space}}
| <sup>P</sup><sub>O</sub> || <sup>K</sup><sub>é</sub> ||style="background: #DFF"| “ ||style="background: #DFF"| ” || ・ || … || ぁ || ぇ || ぉ || ╔ || ═ || ╗ || ║ || ╚ || ╝ || {{tt|␠|Space}}
|-
|-
! 8-
! 8-
Line 67: Line 66:
|-
|-
! 9-
! 9-
| Q || R || S || T || U || V || W || X || Y || Z || ( || ) || ''':''' || ''';''' || [ || ]
| Q || R || S || T || U || V || W || X || Y || Z || ( || ) || : || ; || [ || ]
|-
|-
! A-
! A-
Line 79: Line 78:
|-
|-
! D-
! D-
| 'd || 'l || 'm || 'r || 's || 't || 'v || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; ||style="background: #{{crystal color light}}"| 🡄
| 'd || 'l || 'm || 'r || 's || 't || 'v || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; ||style="background: #DFF"| 🡄
|-
|-
! E-
! E-
| ' || <sup>P</sup><sub>K</sub> || <sup>M</sup><sub>N</sub> || - || &nbsp; || &nbsp; || ? || ! || . || & || é ||style="background: #{{crystal color light}}"| 🡆 || ▷ || ▶ || ▼ || ♂
| ' || <sup>P</sup><sub>K</sub> || <sup>M</sup><sub>N</sub> || - || &nbsp; || &nbsp; || ? || ! || . || & || é ||style="background: #DFF"| 🡆 || ▷ || ▶ || ▼ || ♂
|-
|-
! F-
! F-
| [[File:Character 0xF0 i.png|Poké Dollar]] || × || . || / || , || ♀ || 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9
| [[File:Character 0xF0 i.png|Pokémon Dollar|class=noviewer]] || × || . || / || , || ♀ || 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9
|}
|}


;Legend
{| class="wikitable" style="text-align: center; border-collapse:collapse; margin: 0"
{{Colorswatch|FFF|Standard text characters}}
|+ French and German
{{Colorswatch|FFD|Control characters}}
|- style="white-space: nowrap"
{{Colorswatch|FDF|Special duplicate characters}}
! || -0 || -1 || -2 || -3 || -4 || -5 || -6 || -7 || -8 || -9 || -A || -B || -C || -D || -E || -F
{{Colorswatch|{{crystal color light}}|Differs between Pokémon Gold and Silver and Pokémon Crystal}}
|- style="background: #FDF"
 
! 0-
===Notes===
|style="background: #FFD"| {{tt||Null character}} || B || C || D || E || F || G || H || I || J || K || L || M || N || O || P
* 0x00 is a [[wikipedia:null character|null character]], used to mark null values and occasionally used as a delimiter, but displays as <code>?</code> in strings.
|- style="background: #FDF"
* 0x01-0x4F are mostly leftovers from Japanese diacritic characters (but just print their corresponding base character unmodified in English), although many characters in this range are control characters.
! 1-
* 0x60-0x6C are bold letters leftover from the Japanese version. Only <code>'''V'''</code> and <code>'''S'''</code> are used in the English version, appearing on the VS screen at the start of a link battle.
| Q || R || S || T ||style="background: #FFD" colspan=3| || X || Y || Z || ( || ) || : ||style="background: #FFD" colspan=3|
** 0x60-0x62 are technically bold <code>'''A'''</code>, <code>'''B'''</code>, <code>'''C'''</code> in the base font, but are almost always immediately overwritten with the characters listed in the above table (<code>█</code>, <code>▲</code>, <code>[[File:Character 0x62 ii.png|16px|🖁]]</code>). Since these characters will almost never render as their base values, the superseding values are used in the table above.
|- style="background: #FDF"
* 0x6E-0x6F and 0x76-0x78 are Japanese [[wikipedia:hiragana|hiragana]] leftover in the character table from the Japanese version. They are not used in the English version.
! 2-
* 0x72 and 0x73 are <code>『</code> and <code>』</code> in Pokémon Gold and Silver, and <code>“</code> and <code>”</code> in Pokémon Crystal.
| q || r || style="background: #FFD" colspan=4 |  || w || x || y || z || à || è || é || ù || ß || ç
* 0x74 is an [[wikipedia:interpunct|interpunct]] leftover from the Japanese version. It is not used in the English version.
|- style="background: #FDF"
* 0x79-0x7E are [[wikipedia:box-drawing characters|text box boundaries]]. The player can change how they display in the [[Options]] menu.
! 3-
* 0x7F is a [[wikipedia:Space (punctuation)|space]].
| Ä || Ö || Ü || ä || ö || style="background: #FFD" colspan=5 |  || û || ê || î || &nbsp; || &nbsp; ||style="background: #FFD"|
* 0xD0-0xD6 represent an apostrophe followed by a letter. These characters are used to render {{wp|Contraction (grammar)|contractions}} and {{wp|English possessive|possessives}} in dialogue, so that the apostrophe does not take up an entire character-width of space.
|- style="background: #FDF"
* 0xDF and 0xEB are arrows that are only present in Pokémon Crystal.
! 4-
* 0xE8 and 0xF2 are both [[wikipedia:Full stop|periods]] that render identically. 0xE8 is used as a period and 0xF2 is used as a decimal point.
| Z || ( || ) || : || û || ê || î || &nbsp; || &nbsp; || style="background: #FFD" colspan=4 |  || 'r || style="background: #FFD" colspan=2 |
** 0xE8 is used in user input in Generation II, while 0xF2 is used in user input in Generation I. {{p|Mr. Mime}}'s name contains 0xE8 in both generations.
|- style="background: #FFD"
** [[#Japanese|In the Japanese games]], the two code points represent visually distinct characters.
! 5-
 
| style="background: #FFD" colspan=16 | ''Control characters''
===Special duplicate characters===
For characters below 0x60, if they are not a control character, they duplicate a character from the regular character range (0x80-0xFF). In the Western versions, these code points are unused.
 
This duplication is due to leftover code from the Japanese version that was used to print kana with {{wp|dakuten and handakuten}}. In the English versions of Pokémon Gold and Silver, the base character (i.e., the character at the same codepoint as the corresponding base kana character) is printed with the blank tile at the same code point as dakuten or handakuten (i.e., 0xE5 or 0xE4). In non-English Western versions of Pokémon Gold and Silver and the English version of Pokémon Crystal, the code that prints the diacritic itself is skipped, so it prints only an unmodified duplicate of the base character. In non-English Western versions of Pokémon Crystal, this code was removed entirely, so these code points print the corresponding graphical tile directly.
 
* 0x01-0x1F (excluding control characters) are 0x81-0x9F, printed with dakuten (゛) in the Japanese version. In the Japanese version, the characters in this range are all katakana.
* 0x20-0x3F (excluding control characters) are 0xB0-0xCF, printed with dakuten (゛) in the Japanese version. In the Japanese version, the characters in this range are all hiragana (except 0xB0).
* 0x40-0x43 (excluding control characters) are 0x99-0x9C, printed with handakuten (゜) in the Japanese version. In the Japanese version, the characters in this range are all katakana.
* 0x43-0x4D (excluding control characters) are 0xCA-0xD3, printed with handakuten (゜) in the Japanese version. In the Japanese version, the characters in this range are all hiragana.
* 0x4E-0x5F are all control characters in both the Japanese and Western versions.
 
===Name error handling===
The game defines a list of characters that are considered valid in [[Original Trainer]] names and Pokémon [[nickname]]s. In some contexts, the game will replace any invalid characters in these names with <code>?</code>. This can help suppress issues arising from control characters being present in these names.
 
The following are considered valid characters in names:
* 0x7F-0xFF: This encompasses all user-enterable characters in the Western games (among many other characters).
* 0x5D: A control character that prints "TRAINER" (used in Generation I as the Original Trainer of [[in-game trade]] Pokémon).
* 0x05-0x13, 0x19-0x1C, 0x26-0x34, 0x3A-0x3E, and 0x40-0x48: The specific code points that correspond to standard dakuten and handakuten characters in the Japanese character encoding. In English, these are all special duplicate characters.
 
The circumstances under which this is applied are very inconsistent. For example, the error handling is applied to Pokémon nicknames on the party screen, but not on their own individual summary screens, despite it still being applied to Original Trainer names on this screen. In battle, it is not applied to nicknames in most cases, but is applied when reporting gained [[experience]].
 
===Control characters===
The following are control codes used in the English version of the games. Further details are included in the [[#Control characters|control characters]] section.
 
{| class="wikitable sortable"
! Code point !! Control type !! Description !! Usage
|-
|-
| 0x00 || Print control || Marks a null value. Displays as <code>?</code> in strings. || Not used in strings.
! 6-
| || || [[File:Character 0x62 ii.png|16px|🖁|class=noviewer]] || D || E || F || G || H || I || V || S || L || M || : || ぃ ||
|-
|-
| 0x14 || Variable display || Prints the player's name (duplicate of 0x52). In Japanese, this prints the player's name with an honorific. || Used in dialogue that refers to the player's name (specifically, dialogue that referred to the player with an honorific in the Japanese version).
! 7-
| <sup>P</sup><sub>O</sub> || <sup>K</sup><sub>é</sub> ||style="background: #DFF"| ||style="background: #DFF"| ” || ・ || … || ぁ || ぇ || ぉ || ╔ || ═ || ╗ || ║ || ╚ || ╝ || {{tt|␠|Space}}
|-
|-
| 0x15 || Print control || Can cause the game to hang or prevent the rest of the text from printing. || Unused. In Japanese, its purpose is related to the [[Mobile Game Boy Adapter]].
! 8-
| A || B || C || D || E || F || G || H || I || J || K || L || M || N || O || P
|-
|-
| 0x16 || Print control || ??? || Unused.
! 9-
| Q || R || S || T || U || V || W || X || Y || Z || ( || ) || : || ; || [ || ]
|-
|-
| 0x1F || Print control || '''Breakable space''': Usually prints a space ("<code> </code>"), but prints as a line break (0x22) on the [[Town Map]]. || Used in the names of locations with long names, so that their names are usually displayed with a space, but break across two lines on the Town Map.
! A-
| a || b || c || d || e || f || g || h || i || j || k || l || m || n || o || p
|-
|-
| 0x22 || Print control || '''Single-spaced line break:''' Moves the print position one tile below the start of the current line. || Used on the [[Options]] menu, to display battle records on 2F on the [[Pokémon Center]], and in some [[Pokégear]] phone number entries.
! B-
| q || r || s || t || u || v || w || x || y || z || à || è || é || ù || ß || ç
|-
|-
| 0x23 || Static display || Prints "<code>&nbsp;tzx</code>" ({{wp|mojibake}} of <code>こうげき</code>, which means "attack"). || Unused. In Japanese, it is used in in-battle text.
! C-
| Ä || Ö || Ü || ä || ö || ü || ë || ï || â || ô || û || ê || î || &nbsp; || &nbsp; ||style="background: #DFF"| 🡄
|-
|-
| 0x24 || Static display || Prints "<code><sup>P</sup><sub>O</sub><sup>K</sup><sub>é</sub></code>". || Used on the menu in the name of the [[Pokégear]] option.
! D-
| &nbsp; || &nbsp; || &nbsp; || &nbsp; || c' || d' || j' || l' || m' || n' || p' || s' || 's || t' || u' || y'
|-
|-
| 0x25 || Print control || '''Zero-width breakable space:''' Usually prints nothing (zero width), but prints as a line break (0x22) on the [[Town Map]]. || Unused.
! E-
| ' || <sup>P</sup><sub>K</sub> || <sup>M</sup><sub>N</sub> || - || + || &nbsp; || ? || ! || . || & || é ||style="background: #DFF"| 🡆 || ▷ || ▶ || ▼ ||
|-
|-
| 0x35 || Static display || Print nothing (zero width). || Unused. In Japanese, it printed "<code>ばん どうろ</code>" ("Route №").
! F-
| [[File:Character 0xF0 i.png|Pokémon Dollar|class=noviewer]] || × || . || / || , || ♀ || 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9
|}
 
{| class="wikitable" style="text-align: center; border-collapse:collapse; margin: 0"
|+ Italian and Spanish
|- style="white-space: nowrap"
! || -0 || -1 || -2 || -3 || -4 || -5 || -6 || -7 || -8 || -9 || -A || -B || -C || -D || -E || -F
|- style="background: #FDF"
! 0-
|style="background: #FFD"| {{tt|␀|Null character}} || B || C || D || E || F || G || H || I || J || K || L || M || N || O || P
|- style="background: #FDF"
! 1-
| Q || R || S || T ||style="background: #FFD" colspan=3| || X || Y || Z || ( || ) || : ||style="background: #FFD" colspan=3|
|- style="background: #FDF"
! 2-
| q || r || style="background: #FFD" colspan=4 |  || w || x || y || z || à || è || é || ù || À || Á
|- style="background: #FDF"
! 3-
| Ä || Ö || Ü || ä || ö || style="background: #FFD" colspan=5 |  || Ñ || Ò || Ó || Ù || Ú ||style="background: #FFD"|
|- style="background: #FDF"
! 4-
| Z || ( || ) || : || Ñ || Ò || Ó || Ù || Ú || style="background: #FFD" colspan=4 |  || 'r || style="background: #FFD" colspan=2 |
|- style="background: #FFD"
! 5-
| style="background: #FFD" colspan=16 | ''Control characters''
|-
|-
| 0x36 || Static display || Print nothing (zero width). || Unused. In Japanese, it printed "<code>わたし</code>" ("I"/"me").
! 6-
| || || [[File:Character 0x62 ii.png|16px|🖁|class=noviewer]] || D || E || F || G || H || I || V || S || L || M || : || ぃ || ぅ
|-
|-
| 0x37 || Static display || Print nothing (zero width). || Unused. In Japanese, it printed "<code>ここは</code>" ("Here is").
! 7-
| <sup>P</sup><sub>O</sub> || <sup>K</sup><sub>é</sub> ||style="background: #DFF"| “ ||style="background: #DFF"| ” || ・ || … || ぁ || ぇ || ぉ || ╔ || ═ || ╗ || ║ || ╚ || ╝ || {{tt|␠|Space}}
|-
|-
| 0x38 || Static display || Prints "<code>RED</code>". || Unused. Relates to unused code for storing a custom name for {{ga|Red}}.
! 8-
| A || B || C || D || E || F || G || H || I || J || K || L || M || N || O || P
|-
|-
| 0x39 || Static display || Prints "<code>GREEN</code>". || Unused. Relates to unused code for storing a custom name for {{ga|Blue}} (who is called "Green" in Japanese).
! 9-
| Q || R || S || T || U || V || W || X || Y || Z || ( || ) || : || ; || [ || ]
|-
|-
| 0x3F || Variable display || Prints the opposing Trainer's name (including their Trainer class). || Used in various in-battle messages.
! A-
| a || b || c || d || e || f || g || h || i || j || k || l || m || n || o || p
|-
|-
| 0x49 || Static display || Prints "<code>MOM</code>". || Unused. Relates to unused code for storing a custom name for {{jo|Mom}}.
! B-
| q || r || s || t || u || v || w || x || y || z || à || è || é || ù || À || Á
|-
|-
| 0x4A || Static display || Prints "<code>{{PK}}{{MN}}</code>". || Several usages, including the [[party]] button in battle and on the menu, and the name of the Trainer class {{tc|Pokémon Trainer|{{PK}}{{MN}} Trainer}}.
! C-
| Ä || Ö || Ü || ä || ö || ü || È || É || Ì || Í || Ñ || Ò || Ó || Ù || Ú || á
|-
|-
| 0x4B || Print control || Scrolls the standard text window up one line after player confirmation, then starts writing at the second line. || Implementation of 0x55. Not used directly.
! D-
| ì || í || ñ || ò || ó || ú || º || & || 'd || 'l || 'm || 'r || 's || 't || 'v ||style="background: #DFF"| 🡄
|-
|-
| 0x4C || Print control || '''Autoscroll:''' Scrolls the standard text window up one line without player confirmation, then starts writing at the second line. || Used in messages for [[Stat modifier|stat modification]] by 2 stages.
! E-
| ' || <sup>P</sup><sub>K</sub> || <sup>M</sup><sub>N</sub> || - || ¿ || ¡ || ? || ! || . || & || é ||style="background: #DFF"| 🡆 || ▷ || ▶ || ||
|-
|-
| 0x4E || Print control || '''Double-spaced line break:''' Moves the print position two tiles below the start of the current line. || Used in multiline text not printed in the standard text box, such as item descriptions and Pokédex entries.
! F-
| [[File:Character 0xF0 i.png|Pokémon Dollar|class=noviewer]] || × || . || / || , || ♀ || 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9
|}
 
{| class="wikitable" style="text-align: center; border-collapse:collapse; margin: 0"
|+ Japanese
|- style="white-space: nowrap"
! || -0 || -1 || -2 || -3 || -4 || -5 || -6 || -7 || -8 || -9 || -A || -B || -C || -D || -E || -F
|- style="background: #FDF"
! 0-
| style="background: #FFD" | {{tt|␀|Null character}} || イ゙ || ヴ || エ゙ || オ゙ || ガ || ギ || グ || ゲ || ゴ || ザ || ジ || ズ || ゼ || ゾ || ダ
|- style="background: #FDF"
! 1-
| ヂ || ヅ || デ || ド || colspan=3 style="background: #FFD" | || ネ゙ || ノ゙ || バ || ビ || ブ || ボ || colspan=3 style="background: #FFD" |
|- style="background: #FDF"
! 2-
| ィ゙ || あ゙ || colspan=4 style="background: #FFD" | || が || ぎ || ぐ || げ || ご || ざ || じ || ず || ぜ || ぞ
|- style="background: #FDF"
! 3-
| だ || ぢ || づ || で || ど || colspan=5 style="background: #FFD" | || ば || び || ぶ || べ || ぼ || style="background: #FFD" |
|- style="background: #FDF"
! 4-
| パ || ピ || プ || ポ || ぱ || ぴ || ぷ || ぺ || ぽ || colspan=4 style="background: #FFD" | || も゚ || colspan=2 style="background: #FFD" |
|- style="background: #FDF"
! 5-
| colspan=16 style="background: #FFD" | ''Control characters''
|-
|-
| 0x4F || Print control || '''Second line:''' Moves the print position to the start of the second line of the standard text window. || Used in multiline text printed in the standard text box, such as character dialogue.
! 6-
| || || [[File:Character 0x62 ii.png|16px|🖁|class=noviewer]] || D || E || F || G || H || I || V || S || L || M || : || ぃ || ぅ
|-
|-
| 0x50 || Print control || String terminator || Used as a string terminator. For strings in fixed length fields, it is often used to pad shorter strings to the required length.
! 7-
| || || || 』 || ・ || {{j|…}} || ぁ || ぇ || ぉ || ╔ || ═ || ╗ || ║ || ╚ || ╝ || {{tt|␠|Space}}
|-
|-
| 0x51 || Print control || '''Paragraph:''' Clears the standard text window after player confirmation, then starts printing in a new window. || Used in text split across multiple text boxes, such as character dialogue.
! 8-
| || || || エ || オ || カ || キ || ク || ケ || コ || サ || シ || ス || セ || ソ || タ
|-
|-
| 0x52 || Variable display || Prints the player's name. || Used in dialogue that refers to the player's name (specifically, dialogue that referred to the player without an honorific in the Japanese version).
! 9-
| || || || ト || ナ || ニ || ヌ || ネ || ノ || ハ || ヒ || フ || ホ || マ || ミ || ム
|-
|-
| 0x53 || Variable display || Prints the [[rival]]'s name. || Used in dialogue that refers to the rival's name.
! A-
| || || || ユ || ヨ || ラ || ル || レ || ロ || ワ || ヲ || ン || ッ || ャ || ュ || ョ
|-
|-
| 0x54 || Static display || Prints "<code>POKé</code>". || Frequently used in text that includes "POKé", such as "POKéMON" and "POKéGEAR".
! B-
| || || || う || え || お || か || き || く || け || こ || さ || し || す || せ || そ
|-
|-
| 0x55 || Print control || '''Scroll:''' Scrolls the standard text window up one line after player confirmation, then starts writing at the second line. || Used in scrolling multiline text printed in the standard text box, such as character dialogue.
! C-
| || || || て || と || な || に || ぬ || ね || の || は || ひ || ふ || へ || ほ || ま
|-
|-
| 0x56 || Static display || Prints "<code>……</code>". || Used in dialogue that prints sequential ellipses.
! D-
| || || || も || や || ゆ || よ || ら || リ || る || れ || ろ || わ || を || ん || っ
|-
|-
| 0x57 || Print control || '''Done:''' After player confirmation, closes the text window. || Used at the end of dialogue printed in the standard text window.
! E-
| || || || ー || ゜ || ゛ || ? || ! || 。 || ァ || ゥ || ェ || ▷ || ▶ || ▼ || {{j|♂}}
|-
|-
| 0x58 || Print control || '''Prompt:''' After player confirmation twice, closes the text window. || Used at the end of dialogue which is followed by some kind of choice for the player.
! F-
|-
| || {{j|×}} || || || || {{j|♀}} || || || || || || || || || ||
| 0x59 || Variable display || Prints the target of a move. If referring to the opponent's Pokémon, "<code>Enemy </code>" is prepended to the Pokémon's name. || Used in various messages in battle.
|-
| 0x5A || Variable display || Prints the user of a move. If referring to the opponent's Pokémon, "<code>Enemy </code>" is prepended to the Pokémon's name. || Used in various messages in battle.
|-
| 0x5B || Static display || Prints "<code>PC</code>". || Unused.
|-
| 0x5C || Static display || Prints "<code>TM</code>". || Unused.
|-
| 0x5D || Static display || Prints "<code>TRAINER</code>". || Used as the [[Original Trainer]] of [[in-game trade]] Pokémon in Generation I.
|-
| 0x5E || Static display || Prints "<code>ROCKET</code>". || Unused.
|-
| 0x5F || Print control || Prints "<code>.</code>" and ends the Pokédex entry. || Unused. In Generation I, it was used at the end of Pokédex entries; in Generation II, Pokédex entries instead end with a regular period and string terminator.
|}
|}
</div>
;Legend
{{Colorswatch|FFF|Standard text characters}}
{{Colorswatch|FFD|Control characters}}
{{Colorswatch|FDF|Diacritic characters/Map tiles}}
{{Colorswatch|DFF|Differs between versions}}
===Notes===
====0x00-0x5F====
These are [[#Control characters|control characters]], special code points that either print a particular multi-character string or serve some functional purpose (such as marking the end of a line of text).
Code points in this range not assigned to a specific function behave differently between versions:
* In the Japanese versions, they print a specific kana from the main font with {{wp|Dakuten and handakuten|dakuten or handakuten}} in the space above it.
** 0x01-0x1F print a {{wp|katakana}} character from 0x81-0x9F with a dakuten diacritic (゛).
** 0x20-0x3F print a {{wp|hiragana}} character from 0xB0-0xCF with a dakuten diacritic (゛).
** 0x40-0x43 print a katakana character from 0x99-0x9C with a handakuten diacritic (゜).
** 0x44-0x5F print a hiragana character from 0xCA-0xE5 with a handakuten diacritic (゜).
* In the English versions of Pokémon Gold and Silver, the code executed is identical to the Japanese version. However, since the corresponding tiles have been replaced, they instead print the base character listed above (i.e., the character at the same code point as the corresponding base kana character) with the blank tile at 0xE5 or 0xE4.
* In non-English Western versions of Pokémon Gold and Silver and the English version of Pokémon Crystal, the code that prints the diacritic itself is skipped, so it prints only an unmodified duplicate of the base character listed above.
* In non-English Western versions of Pokémon Crystal, this code was removed entirely, so these code points print the corresponding tile from VRAM addresses 0x9000 to 0x95FF. Like in Generation I, these correspond to a portion of the current tileset of the current map.
====0x60-0x7F====
These are additional text characters stored in VRAM addresses 0x9600 to 0x97FF. These tiles are frequently [[#Overwriting characters|overwritten]] in certain contexts to render different characters, meaning the same code point can print different tiles.
* 0x60-0x6C are bold letters originally from the Japanese font. Only <code>V</code> and <code>S</code> are used in the English versions, appearing on the VS screen at the start of a link battle.
** 0x60-0x62 are technically bold <code>A</code>, <code>B</code>, <code>C</code> in the base font, but are almost always immediately overwritten with the characters listed in the above table (<code>█</code>, <code>▲</code>, <code>[[File:Character 0x62 ii.png|16px|🖁|class=noviewer]]</code>). Since these characters will almost never render as their base values, the superseding values are used in the table above.
* 0x6D is a {{wp|colon}}, which has smaller dots than the colon at 0x9C in the Western language fonts. In the Western language versions, it is only used to display total playtime.
* 0x6E-0x6F and 0x76-0x78 are Japanese hiragana. They are not used in the English version.
* 0x72-0x73 are <code>『</code> and <code>』</code> in the Japanese font and in the Western versions of Pokémon Gold and Silver, and <code>“</code> and <code>”</code> in the Western versions of Pokémon Crystal.
* 0x74 is an {{wp|interpunct}}. It is not used in the English version.
* 0x79-0x7E are {{wp|box-drawing characters}} used to draw the boundaries of text boxes. The player can change how they display in the [[Options]] menu.
* 0x7F is a {{wp|Space (punctuation)|space}}.
====0x80-0xFF====
These are standard text characters from the main font, stored in VRAM addresses 0x8800 to 0x8FFF. However, certain areas that need extra space for extra tiles, such as the player's {{ga|Trainer Card}}, will still overwrite tiles in this range.
* 0xD0-0xD6 in English, 0xD4-0xDF in French and German, or 0xD8-0xDE in Italian and Spanish represent a letter with an {{wp|apostrophe}}. These characters are used to render English, French, and German {{wp|Contraction (grammar)|contractions}} and {{wp|English possessive}}s in dialogue, so that the apostrophe does not take up a separate tile.
* 0xDF and 0xEB are arrows used in the interface when printing {{DL|Game Boy Printer|Alph Ruins Stamps}} that are only present in the Western versions of Pokémon Crystal.
* 0xE4 and 0xE5 print the corresponding diacritic above the following character in the Japanese version and the English versions of Pokémon Gold and Silver.
* 0xBC and 0xEA are both <code>é</code> in non-English Western versions. Of the two code points, only 0xEA is used; 0xBC was previously used in Generation I.
* 0xE8 and 0xF2 are both {{wp|Full stop|periods}} that render identically. In the Japanese games, the two code points represent visually distinct characters: 0xF2 is a decimal point and 0xE8 is punctuation. In the Western language games, 0xE8 is used for user input and in the name of {{p|Mr. Mime}}, while 0xF2 was previously used for user input in Generation I.
===Name error handling===
The game defines a list of characters that are considered valid in [[Original Trainer]] names and Pokémon [[nickname]]s. In some contexts, the game will replace any invalid characters in these names with <code>?</code>. This can help suppress issues arising from control characters being present in these names.


===Overwriting characters===
The following are considered valid characters in names in the Japanese and Western language versions:
* 0x7F-0xFF: This encompasses all user-enterable characters in the Western games (among many other characters).
* 0x5D: A control character that prints "TRAINER" (used in Generation I as the Original Trainer of [[in-game trade]] Pokémon).
* 0x05-0x13, 0x19-0x1C, 0x26-0x34, 0x3A-0x3E, and 0x40-0x48: The specific code points that correspond to standard dakuten and handakuten characters in the Japanese character encoding. In English, these are all special duplicate characters.
 
The circumstances under which this is applied are very inconsistent. For example, the error handling is applied to Pokémon nicknames on the party screen, but not on their own individual summary screens, despite it still being applied to Original Trainer names on this screen. In battle, it is not applied to nicknames in most cases, but is applied when reporting gained [[experience]].
 
==Overwriting characters==
{{incomplete|section|Other languages besides English}}
In some contexts, different tilesets are loaded into the game's font.
In some contexts, different tilesets are loaded into the game's font.
* In displays that need to display an HP bar (such as in battle and on Pokémon summary screens), a dedicated HP bar variant of the base font is loaded into 0x60-0x7F to include tiles for drawing HP bars. (See [[#HP bar tileset|below]] for details.)
* In displays that need to display an HP bar (such as in battle and on Pokémon summary screens), a dedicated HP bar variant of the base font is loaded into 0x60-0x7F to include tiles for drawing HP bars. (See [[#HP bar tileset|below]] for details.)
Line 218: Line 306:
* In the [[Pokédex]], parts of the tileset used to display the Pokédex's user interface are loaded into the range 0x60-0x6A.
* In the [[Pokédex]], parts of the tileset used to display the Pokédex's user interface are loaded into the range 0x60-0x6A.
** In Unown Mode, parts of the user interface and the Unown font are loaded into the range 0x00-0x5F, in addition to the regular Pokédex tileset loaded into the range 0x60-0x6A. Due to the text terminator being overwritten with an Unown character, 0xFF is used as the terminator instead.
** In Unown Mode, parts of the user interface and the Unown font are loaded into the range 0x00-0x5F, in addition to the regular Pokédex tileset loaded into the range 0x60-0x6A. Due to the text terminator being overwritten with an Unown character, 0xFF is used as the terminator instead.
* In Western versions of Pokémon Crystal and non-English Western versions of Pokémon Gold and Silver, when reading [[Mail]], the game ensures that the message is displayed using the character encoding of the language the Mail was written in, preventing corruption when trading Mail between languages. This is only applicable when trading between Western languages, as trading between other languages causes corruption, so is not supported by this feature.
* In Western versions of Pokémon Crystal and non-English Western versions of Pokémon Gold and Silver, when reading [[Mail]], the game ensures that the message is displayed using the character encoding of the language the Mail was written in, preventing corruption when trading Mail between languages. This is only applicable when trading between Western languages, as trading between other languages corrupts Mail, so is not supported by this feature.


====HP bar tileset====
====HP bar tileset====
Line 229: Line 317:
|-
|-
! 6-
! 6-
| [[File:Character 0x60 ii HP bar.png|HI]] || [[File:Character 0x61 ii HP bar.png|ↄ:]] || [[File:Character 0x62 ii HP bar.png]] || [[File:Character 0x63 ii HP bar.png]] || [[File:Character 0x64 ii HP bar.png]] || [[File:Character 0x65 ii HP bar.png]] || [[File:Character 0x66 ii HP bar.png]] || [[File:Character 0x67 ii HP bar.png]] || [[File:Character 0x68 ii HP bar.png]] || [[File:Character 0x69 ii HP bar.png]] || [[File:Character 0x6A ii HP bar.png]] || [[File:Character 0x6B ii HP bar.png|▌]]
| [[File:Character 0x60 ii HP bar.png|HI|class=noviewer]] || [[File:Character 0x61 ii HP bar.png|ↄ:|class=noviewer]] || [[File:Character 0x62 ii HP bar.png|class=noviewer]] || [[File:Character 0x63 ii HP bar.png|class=noviewer]] || [[File:Character 0x64 ii HP bar.png|class=noviewer]] || [[File:Character 0x65 ii HP bar.png|class=noviewer]] || [[File:Character 0x66 ii HP bar.png|class=noviewer]] || [[File:Character 0x67 ii HP bar.png|class=noviewer]] || [[File:Character 0x68 ii HP bar.png|class=noviewer]] || [[File:Character 0x69 ii HP bar.png|class=noviewer]] || [[File:Character 0x6A ii HP bar.png|class=noviewer]] || [[File:Character 0x6B ii HP bar.png|▌|class=noviewer]]
| [[File:Character 0x6C ii HP bar.png|╮]]
| [[File:Character 0x6C ii HP bar.png|╮|class=noviewer]]
|style="background: #FEE"| ║
|style="background: #FEE"| ║
| :L
| :L
|style="background: #FEE"| [[File:Character 0x6F ii HP bar.png|◢<!-- 🭊 -->]]
|style="background: #FEE"| [[File:Character 0x6F ii HP bar.png|◢<!-- 🭊 -->|class=noviewer]]
|-
|-
! 7-
! 7-
Line 240: Line 328:
|style="background: #FEE"| №
|style="background: #FEE"| №
|style="background: #FEE"| …
|style="background: #FEE"| …
|style="background: #FEE"| [[File:Character 0x76 ii HP bar.png|─]]
|style="background: #FEE"| [[File:Character 0x76 ii HP bar.png|─|class=noviewer]]
|style="background: #FEE"| [[File:Character 0x77 ii HP bar.png|─<!-- 🮂 -->]]
|style="background: #FEE"| [[File:Character 0x77 ii HP bar.png|─<!-- 🮂 -->|class=noviewer]]
|style="background: #FEE"| [[File:Character 0x78 ii HP bar.png|◣<!-- 🬿 -->]]
|style="background: #FEE"| [[File:Character 0x78 ii HP bar.png|◣<!-- 🬿 -->|class=noviewer]]
|style="background: #DDF"| ╔
|style="background: #DDF"| ╔
|style="background: #DDF"| ═
|style="background: #DDF"| ═
Line 275: Line 363:
! 6-
! 6-
|style="background: #DDF" colspan=12 | ''Unchanged''
|style="background: #DDF" colspan=12 | ''Unchanged''
| [[File:Character 0x6C ii HP bar.png|╮]]
| [[File:Character 0x6C ii HP bar.png|╮|class=noviewer]]
|style="background: #FEE"| [[File:Character 0x6D ii HP bar frame.png|▌]]
|style="background: #FEE"| [[File:Character 0x6D ii HP bar frame.png|▌|class=noviewer]]
| :L
| :L
|style="background: #FEE"| [[File:Character 0x6F ii HP bar frame.png|◢<!-- 🭊 -->]]
|style="background: #FEE"| [[File:Character 0x6F ii HP bar frame.png|◢<!-- 🭊 -->|class=noviewer]]
|-
|-
! 7-
! 7-
|style="background: #DDF" colspan=3 |  
|style="background: #DDF" colspan=3 |  
|style="background: #FEE"| [[File:Character 0x73 ii HP bar frame.png|▐]]
|style="background: #FEE"| [[File:Character 0x73 ii HP bar frame.png|▐|class=noviewer]]
|style="background: #FEE"| [[File:Character 0x74 ii HP bar frame.png|╰]]
|style="background: #FEE"| [[File:Character 0x74 ii HP bar frame.png|╰|class=noviewer]]
|style="background: #FEE"| …
|style="background: #FEE"| …
|style="background: #FEE"| [[File:Character 0x76 ii HP bar frame.png|▁<!-- 🭻 -->]]
|style="background: #FEE"| [[File:Character 0x76 ii HP bar frame.png|▁<!-- 🭻 -->|class=noviewer]]
|style="background: #FEE"| [[File:Character 0x77 ii HP bar frame.png|╯]]
|style="background: #FEE"| [[File:Character 0x77 ii HP bar frame.png|╯|class=noviewer]]
|style="background: #FEE"| [[File:Character 0x78 ii HP bar frame.png|◣<!-- 🬿 -->]]
|style="background: #FEE"| [[File:Character 0x78 ii HP bar frame.png|◣<!-- 🬿 -->|class=noviewer]]
|style="background: #DDF" colspan=7 | ''Unchanged''
|style="background: #DDF" colspan=7 | ''Unchanged''
|}
|}
Line 310: Line 398:
|-
|-
! 6-
! 6-
| '''g''' || [[File:Character 0x61 ii Pokédex.png|─]] || style="background: #DDD" colspan=4 | ''Footprint'' || [[File:Character 0x66 ii Pokédex.png|┐]] || [[File:Character 0x67 ii Pokédex.png|│]] || [[File:Character 0x68 ii Pokédex.png|┘]] || [[File:Character 0x69 ii Pokédex.png|│]] || [[File:Character 0x6A ii Pokédex.png|└]] ||style="background-color: #DDF"| '''L''' ||style="background-color: #DDF"| '''M''' ||style="background-color: #DDF"| : ||style="background-color: #DDF"| ぃ ||style="background-color: #DDF"| ぅ
| || [[File:Character 0x61 ii Pokédex.png|─|class=noviewer]] || style="background: #DDD" colspan=4 | ''Footprint'' || [[File:Character 0x66 ii Pokédex.png|┐|class=noviewer]] || [[File:Character 0x67 ii Pokédex.png|│|class=noviewer]] || [[File:Character 0x68 ii Pokédex.png|┘|class=noviewer]] || [[File:Character 0x69 ii Pokédex.png|│|class=noviewer]] || [[File:Character 0x6A ii Pokédex.png|└|class=noviewer]] ||style="background: #DDF"| ||style="background: #DDF"| ||style="background: #DDF"| ||style="background: #DDF"| ぃ ||style="background: #DDF"| ぅ
|}
|}
{{Colorswatch|DDD|Sprite buffer}}
{{Colorswatch|DDD|Sprite buffer}}
{{Colorswatch|DDF|Same as default font}}
{{Colorswatch|DDF|Same as default font}}


* 0x60 is a bold <code>'''g'''</code>. This is leftover from the Japanese version, which uses this as part of "kg" when displaying Pokémon [[weight]]s. (In English, weights are instead displayed in feet and inches; the feet and inches characters are not left in the text tileset.)
* 0x60 is a bold <code></code>. This is leftover from the Japanese version, which uses this as part of "kg" when displaying Pokémon [[weight]]s. (In English, weights are instead displayed in feet and inches; the feet and inches characters are not left in the text tileset.)
* 0x61 is the horizontal divider displayed in the middle of the Pokédex entry screen.
* 0x61 is the horizontal divider displayed in the middle of the Pokédex entry screen.
* 0x62-0x65 is the current Pokémon's [[footprint]].
* 0x62-0x65 is the current Pokémon's [[footprint]].
Line 339: Line 427:
! 3-
! 3-
|style="background: #DDD"|  
|style="background: #DDD"|  
| &nbsp; || [[File:Character 0x32 ii Unown.png|█]] || [[File:Character 0x33 ii Unown.png|┌]] || [[File:Character 0x34 ii Unown.png|─]] || [[File:Character 0x35 ii Unown.png|┐]] || [[File:Character 0x36 ii Unown.png|│]] || [[File:Character 0x37 ii Unown.png|│]] || [[File:Character 0x38 ii Unown.png|└]] || [[File:Character 0x39 ii Unown.png|─]] || [[File:Character 0x3A ii Unown.png|┘]] || [[File:Character 0x3B ii Unown.png|🬴]] || [[File:Character 0x3C ii Unown.png|🬸]] || [[File:Character 0x3D ii Unown.png|◁]] || [[File:Character 0x3E ii Unown.png|▷]] || [[File:Character 0x3F ii Unown.png|△]]
| &nbsp; || [[File:Character 0x32 ii Unown.png|█|class=noviewer]] || [[File:Character 0x33 ii Unown.png|┌|class=noviewer]] || [[File:Character 0x34 ii Unown.png|─|class=noviewer]] || [[File:Character 0x35 ii Unown.png|┐|class=noviewer]] || [[File:Character 0x36 ii Unown.png|│|class=noviewer]] || [[File:Character 0x37 ii Unown.png|│|class=noviewer]] || [[File:Character 0x38 ii Unown.png|└|class=noviewer]] || [[File:Character 0x39 ii Unown.png|─|class=noviewer]] || [[File:Character 0x3A ii Unown.png|┘|class=noviewer]] || [[File:Character 0x3B ii Unown.png|🬴|class=noviewer]] || [[File:Character 0x3C ii Unown.png|🬸|class=noviewer]] || [[File:Character 0x3D ii Unown.png|◁|class=noviewer]] || [[File:Character 0x3E ii Unown.png|▷|class=noviewer]] || [[File:Character 0x3F ii Unown.png|△|class=noviewer]]
|-
|-
! 4-
! 4-
| [[File:Character 0x40 ii Unown.png|A]] || [[File:Character 0x41 ii Unown.png|B]] || [[File:Character 0x42 ii Unown.png|C]] || [[File:Character 0x43 ii Unown.png|D]] || [[File:Character 0x44 ii Unown.png|E]] || [[File:Character 0x45 ii Unown.png|F]] || [[File:Character 0x46 ii Unown.png|G]] || [[File:Character 0x47 ii Unown.png|H]] || [[File:Character 0x48 ii Unown.png|I]] || [[File:Character 0x49 ii Unown.png|J]] || [[File:Character 0x4A ii Unown.png|K]] || [[File:Character 0x4B ii Unown.png|L]] || [[File:Character 0x4C ii Unown.png|M]] || [[File:Character 0x4D ii Unown.png|N]] || [[File:Character 0x4E ii Unown.png|O]] || [[File:Character 0x4F ii Unown.png|P]]
| [[File:Character 0x40 ii Unown.png|A|class=noviewer]] || [[File:Character 0x41 ii Unown.png|B|class=noviewer]] || [[File:Character 0x42 ii Unown.png|C|class=noviewer]] || [[File:Character 0x43 ii Unown.png|D|class=noviewer]] || [[File:Character 0x44 ii Unown.png|E|class=noviewer]] || [[File:Character 0x45 ii Unown.png|F|class=noviewer]] || [[File:Character 0x46 ii Unown.png|G|class=noviewer]] || [[File:Character 0x47 ii Unown.png|H|class=noviewer]] || [[File:Character 0x48 ii Unown.png|I|class=noviewer]] || [[File:Character 0x49 ii Unown.png|J|class=noviewer]] || [[File:Character 0x4A ii Unown.png|K|class=noviewer]] || [[File:Character 0x4B ii Unown.png|L|class=noviewer]] || [[File:Character 0x4C ii Unown.png|M|class=noviewer]] || [[File:Character 0x4D ii Unown.png|N|class=noviewer]] || [[File:Character 0x4E ii Unown.png|O|class=noviewer]] || [[File:Character 0x4F ii Unown.png|P|class=noviewer]]
|-
|-
! 5-
! 5-
| [[File:Character 0x50 ii Unown.png|Q]] || [[File:Character 0x51 ii Unown.png|R]] || [[File:Character 0x52 ii Unown.png|S]] || [[File:Character 0x53 ii Unown.png|T]] || [[File:Character 0x54 ii Unown.png|U]] || [[File:Character 0x55 ii Unown.png|V]] || [[File:Character 0x56 ii Unown.png|W]] || [[File:Character 0x57 ii Unown.png|X]] || [[File:Character 0x58 ii Unown.png|Y]] || [[File:Character 0x59 ii Unown.png|Z]] || ◆ || [[File:Character 0x5B ii Unown.png|╨]] || № || . || ′ || ″  
| [[File:Character 0x50 ii Unown.png|Q|class=noviewer]] || [[File:Character 0x51 ii Unown.png|R|class=noviewer]] || [[File:Character 0x52 ii Unown.png|S|class=noviewer]] || [[File:Character 0x53 ii Unown.png|T|class=noviewer]] || [[File:Character 0x54 ii Unown.png|U|class=noviewer]] || [[File:Character 0x55 ii Unown.png|V|class=noviewer]] || [[File:Character 0x56 ii Unown.png|W|class=noviewer]] || [[File:Character 0x57 ii Unown.png|X|class=noviewer]] || [[File:Character 0x58 ii Unown.png|Y|class=noviewer]] || [[File:Character 0x59 ii Unown.png|Z|class=noviewer]] || ◆ || [[File:Character 0x5B ii Unown.png|╨|class=noviewer]] || № || . || ′ || ″  
|-
|-
! 6-
! 6-
| '''g''' || [[File:Character 0x61 ii Pokédex.png|─]] || style="background: #DDD" colspan=4 | ''Footprint'' || [[File:Character 0x66 ii Pokédex.png|┐]] || [[File:Character 0x67 ii Pokédex.png|│]] || [[File:Character 0x68 ii Pokédex.png|┘]] || [[File:Character 0x69 ii Pokédex.png|│]] || [[File:Character 0x6A ii Pokédex.png|└]] ||style="background-color: #DDF"| '''L''' ||style="background-color: #DDF"| '''M''' ||style="background-color: #DDF"| : ||style="background-color: #DDF"| ぃ ||style="background-color: #DDF"| ぅ
| || [[File:Character 0x61 ii Pokédex.png|─|class=noviewer]] || style="background: #DDD" colspan=4 | ''Footprint'' || [[File:Character 0x66 ii Pokédex.png|┐|class=noviewer]] || [[File:Character 0x67 ii Pokédex.png|│|class=noviewer]] || [[File:Character 0x68 ii Pokédex.png|┘|class=noviewer]] || [[File:Character 0x69 ii Pokédex.png|│|class=noviewer]] || [[File:Character 0x6A ii Pokédex.png|└|class=noviewer]] ||style="background: #DDF"| ||style="background: #DDF"| ||style="background: #DDF"| ||style="background: #DDF"| ぃ ||style="background: #DDF"| ぅ
|- style="background-color: #DDF"
|- style="background: #DDF"
! 7-
! 7-
| <sup>P</sup><sub>O</sub> || <sup>K</sup><sub>é</sub> ||style="background: #{{crystal color light}}"| “ ||style="background: #{{crystal color light}}"| ” || ・ || … || ぁ || ぇ || ぉ || ╔ || ═ || ╗ || ║ || ╚ || ╝ || {{tt|␠|Space}}
| <sup>P</sup><sub>O</sub> || <sup>K</sup><sub>é</sub> ||style="background: #DFF"| “ ||style="background: #DFF"| ” || ・ || … || ぁ || ぇ || ぉ || ╔ || ═ || ╗ || ║ || ╚ || ╝ || {{tt|␠|Space}}
|- style="background-color: #DDF"
|- style="background: #DDF"
! 8-
! 8-
| A || B || C || D || E || F || G || H || I || J || K || L || M || N || O || P
| A || B || C || D || E || F || G || H || I || J || K || L || M || N || O || P
|- style="background-color: #DDF"
|- style="background: #DDF"
! 9-
! 9-
| Q || R || S || T || U || V || W || X || Y || Z || ( || ) || ''':''' || ''';''' || [ || ]
| Q || R || S || T || U || V || W || X || Y || Z || ( || ) || ''':''' || ''';''' || [ || ]
|- style="background-color: #DDF"
|- style="background: #DDF"
! A-
! A-
| a || b || c || d || e || f || g || h || i || j || k || l || m || n || o || p
| a || b || c || d || e || f || g || h || i || j || k || l || m || n || o || p
|- style="background-color: #DDF"
|- style="background: #DDF"
! B-
! B-
| q || r || s || t || u || v || w || x || y || z || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp;
| q || r || s || t || u || v || w || x || y || z || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp;
|- style="background-color: #DDF"
|- style="background: #DDF"
! C-
! C-
| Ä || Ö || Ü || ä || ö || ü || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp;
| Ä || Ö || Ü || ä || ö || ü || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp;
|- style="background-color: #DDF"
|- style="background: #DDF"
! D-
! D-
| 'd || 'l || 'm || 'r || 's || 't || 'v || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; ||style="background: #{{crystal color light}}"| 🡄
| 'd || 'l || 'm || 'r || 's || 't || 'v || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; ||style="background: #DFF"| 🡄
|- style="background-color: #DDF"
|- style="background: #DDF"
! E-
! E-
| ' || <sup>P</sup><sub>K</sub> || <sup>M</sup><sub>N</sub> || - || &nbsp; || &nbsp; || ? || ! || . || & || é ||style="background: #{{crystal color light}}"| 🡆 || ▷ || ▶ || ▼ || ♂
| ' || <sup>P</sup><sub>K</sub> || <sup>M</sup><sub>N</sub> || - || &nbsp; || &nbsp; || ? || ! || . || & || é ||style="background: #DFF"| 🡆 || ▷ || ▶ || ▼ || ♂
|- style="background-color: #DDF"
|- style="background: #DDF"
! F-
! F-
| [[File:Character 0xF0 i.png|Poké Dollar]] || × || . || / || , || ♀ || 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 ||style="background: #FFD"|  
| [[File:Character 0xF0 i.png|Pokémon Dollar|class=noviewer]] || × || . || / || , || ♀ || 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 ||style="background: #FFD"|  
|}
|}
{{Colorswatch|DDD|Sprite buffer}}
{{Colorswatch|DDD|Sprite buffer}}
{{Colorswatch|DDF|Same as default font}}
{{Colorswatch|DDF|Same as default font}}
{{Colorswatch|FFD|Control characters}}
{{Colorswatch|FFD|Control characters}}
{{Colorswatch|{{crystal color light}}|Differs between Pokémon Gold and Silver and Pokémon Crystal}}
{{Colorswatch|DFF|Differs between Pokémon Gold and Silver and Pokémon Crystal}}


* 0x00-0x30 is the sprite buffer for the Unown's sprite (including the white padding), tiled top-to-bottom then left-to-right.
* 0x00-0x30 is the sprite buffer for the Unown's sprite (including the white padding), tiled top-to-bottom then left-to-right.
Line 388: Line 476:
* 0x62-0x65 is the sprite buffer for the Pokémon's footprint in the main Pokédex. It is unused in Unown Mode, just displaying as white tiles (against the black background).
* 0x62-0x65 is the sprite buffer for the Pokémon's footprint in the main Pokédex. It is unused in Unown Mode, just displaying as white tiles (against the black background).
* 0xFF is the string terminator.
* 0xFF is the string terminator.
** 0x50, which usually would function as the string terminator, has instead been overwritten with Unown Q ([[File:Character 0x50 ii Unown.png|Q]]).
** 0x50, which usually would function as the string terminator, has instead been overwritten with Unown Q ([[File:Character 0x50 ii Unown.png|Q|class=noviewer]]).


====Naming screen====
====Naming screen====
Line 398: Line 486:
|-
|-
! 6-
! 6-
| [[File:Character 0x60 ii naming screen.png|▚]]
| [[File:Character 0x60 ii naming screen.png|▚|class=noviewer]]
|style="background-color: #DDF"| ▲ ||style="background-color: #DDF"| [[File:Character 0x62 ii.png|16px|🖁]] ||style="background-color: #DDF"| '''D''' ||style="background-color: #DDF"| '''E''' ||style="background-color: #DDF"| '''F''' ||style="background-color: #DDF"| '''G''' ||style="background-color: #DDF"| '''H''' ||style="background-color: #DDF"| '''I''' ||style="background-color: #DDF"| '''V''' ||style="background-color: #DDF"| '''S''' ||style="background-color: #DDF"| '''L''' ||style="background-color: #DDF"| '''M''' ||style="background-color: #DDF"| : ||style="background-color: #DDF"| ぃ ||style="background-color: #DDF"| ぅ
|style="background: #DDF"| ▲ ||style="background: #DDF"| [[File:Character 0x62 ii.png|16px|🖁|class=noviewer]] ||style="background: #DDF"| ||style="background: #DDF"| ||style="background: #DDF"| ||style="background: #DDF"| ||style="background: #DDF"| ||style="background: #DDF"| ||style="background: #DDF"| ||style="background: #DDF"| ||style="background: #DDF"| ||style="background: #DDF"| ||style="background: #DDF"| ||style="background: #DDF"| ぃ ||style="background: #DDF"| ぅ
|- style="background-color: #DDF"
|- style="background: #DDF"
! 7-
! 7-
| <sup>P</sup><sub>O</sub> || <sup>K</sup><sub>é</sub> ||style="background: #{{crystal color light}}"| “ ||style="background: #{{crystal color light}}"| ” || ・ || … || ぁ || ぇ || ぉ || ╔ || ═ || ╗ || ║ || ╚ || ╝ || {{tt|␠|Space}}
| <sup>P</sup><sub>O</sub> || <sup>K</sup><sub>é</sub> ||style="background: #DFF"| “ ||style="background: #DFF"| ” || ・ || … || ぁ || ぇ || ぉ || ╔ || ═ || ╗ || ║ || ╚ || ╝ || {{tt|␠|Space}}
|- style="background-color: #DDF"
|- style="background: #DDF"
! 8-
! 8-
| A || B || C || D || E || F || G || H || I || J || K || L || M || N || O || P
| A || B || C || D || E || F || G || H || I || J || K || L || M || N || O || P
|- style="background-color: #DDF"
|- style="background: #DDF"
! 9-
! 9-
| Q || R || S || T || U || V || W || X || Y || Z || ( || ) || ''':''' || ''';''' || [ || ]
| Q || R || S || T || U || V || W || X || Y || Z || ( || ) || : || ; || [ || ]
|- style="background-color: #DDF"
|- style="background: #DDF"
! A-
! A-
| a || b || c || d || e || f || g || h || i || j || k || l || m || n || o || p
| a || b || c || d || e || f || g || h || i || j || k || l || m || n || o || p
|- style="background-color: #DDF"
|- style="background: #DDF"
! B-
! B-
| q || r || s || t || u || v || w || x || y || z || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp;
| q || r || s || t || u || v || w || x || y || z || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp;
|- style="background-color: #DDF"
|- style="background: #DDF"
! C-
! C-
| Ä || Ö || Ü || ä || ö || ü || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp;
| Ä || Ö || Ü || ä || ö || ü || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp;
|- style="background-color: #DDF"
|- style="background: #DDF"
! D-
! D-
| 'd || 'l || 'm || 'r || 's || 't || 'v || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; ||style="background: #{{crystal color light}}"| 🡄
| 'd || 'l || 'm || 'r || 's || 't || 'v || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; || &nbsp; ||style="background: #DFF"| 🡄
|-
|-
! E-
! E-
|style="background-color: #DDF"| ' ||style="background-color: #DDF"| <sup>P</sup><sub>K</sub> ||style="background-color: #DDF"| <sup>M</sup><sub>N</sub> ||style="background-color: #DDF"| - ||style="background-color: #DDF"| &nbsp; ||style="background-color: #DDF"| &nbsp; ||style="background-color: #DDF"| ? ||style="background-color: #DDF"| ! ||style="background-color: #DDF"| . ||style="background-color: #DDF"| & ||style="background-color: #DDF"| é || ‒ ||style="background-color: #DDF"| ▷ ||style="background-color: #DDF"| ▶ ||style="background-color: #DDF"| ▼ ||style="background-color: #DDF"| ♂
|style="background: #DDF"| ' ||style="background: #DDF"| <sup>P</sup><sub>K</sub> ||style="background: #DDF"| <sup>M</sup><sub>N</sub> ||style="background: #DDF"| - ||style="background: #DDF"| &nbsp; ||style="background: #DDF"| &nbsp; ||style="background: #DDF"| ? ||style="background: #DDF"| ! ||style="background: #DDF"| . ||style="background: #DDF"| & ||style="background: #DDF"| é || ‒ ||style="background: #DDF"| ▷ ||style="background: #DDF"| ▶ ||style="background: #DDF"| ▼ ||style="background: #DDF"| ♂
|-
|-
! F-
! F-
|style="background-color: #DDF"| [[File:Character 0xF0 i.png|Poké Dollar]] ||style="background-color: #DDF"| × || _ ||style="background-color: #DDF"| / ||style="background-color: #DDF"| , ||style="background-color: #DDF"| ♀ ||style="background-color: #DDF"| 0 ||style="background-color: #DDF"| 1 ||style="background-color: #DDF"| 2 ||style="background-color: #DDF"| 3 ||style="background-color: #DDF"| 4 ||style="background-color: #DDF"| 5 ||style="background-color: #DDF"| 6 ||style="background-color: #DDF"| 7 ||style="background-color: #DDF"| 8 ||style="background-color: #DDF"| 9
|style="background: #DDF"| [[File:Character 0xF0 i.png|Pokémon Dollar|class=noviewer]] ||style="background: #DDF"| × || _ ||style="background: #DDF"| / ||style="background: #DDF"| , ||style="background: #DDF"| ♀ ||style="background: #DDF"| 0 ||style="background: #DDF"| 1 ||style="background: #DDF"| 2 ||style="background: #DDF"| 3 ||style="background: #DDF"| 4 ||style="background: #DDF"| 5 ||style="background: #DDF"| 6 ||style="background: #DDF"| 7 ||style="background: #DDF"| 8 ||style="background: #DDF"| 9
|}
|}
{{Colorswatch|DDF|Same as default font}}
{{Colorswatch|DDF|Same as default font}}
{{Colorswatch|{{crystal color light}}|Differs between Pokémon Gold and Silver and Pokémon Crystal}}
{{Colorswatch|DFF|Differs between Pokémon Gold and Silver and Pokémon Crystal}}


* 0x60 is the sprite used as the frame of the screen.
* 0x60 is the sprite used as the frame of the screen.
Line 435: Line 523:
* 0xF2 is the base-line horizontal line used to indicate the next slot to be written to in the name being entered.
* 0xF2 is the base-line horizontal line used to indicate the next slot to be written to in the name being entered.


==French & German==
==Control characters==
{| class="wikitable" style="text-align: center; border-collapse: collapse; white-space: nowrap" cellpadding="2px" width="375px"
Control characters execute a piece of code (unless caught by [[#name error handling|name error handling]]) instead of printing the tile they would correspond to from VRAM. There are three main categories of control characters:
|-
* Static display: Prints a fixed string (which may contain multiple characters)
! || -0 || -1 || -2 || -3 || -4 || -5 || -6 || -7 || -8 || -9 || -A || -B || -C || -D || -E || -F
* Variable display: Prints the value of a text variable (which may contain multiple characters)
|-
* Print control: Directs where to print text
! 0-
| colspan=16 rowspan=6 style="background: #bbb" | ''Unsure''
|-
! 1-
|-
! 2-
|-
! 3-
|-
! 4-
|-
! 5-
|-
! 6-
| style="background: #000" | || ▲ || [[File:Character 0x62 ii.png|16px]] || D || E || F || G || H || I || V || S || L || M ||: || ぃ || ぅ
|-
! 7-
| <sup>P</sup><sub>O</sub> || <sup>K</sup><sub>é</sub> || “ || ” || ・ || … || ぁ || ぇ || ぉ || colspan=6 | ''text box borders'' || &nbsp;
|-
! 8-
| A || B || C || D || E || F || G || H || I || J || K || L || M || N || O || P
|-
! 9-
| Q || R || S || T || U || V || W || X || Y || Z || ( || ) ||: ||; || [ || ]
|-
! A-
| a || b || c || d || e || f || g || h || i || j || k || l || m || n || o || p
|-
! B-
| q || r || s || t || u || v || w || x || y || z || à || è || é || ù || ß || ç
|-
! C-
| Ä || Ö || Ü || ä || ö || ü || ë || ï || â || ô || û || ê || î ||  ||  || 
|-
! D-
|  ||  ||  ||  || c' || d' || j' || l' || m' || n' || p' || s' || 's || t' || u' || y'
|-
! E-
| ' || <sup>P</sup><sub>K</sub> || <sup>M</sup><sub>N</sub> || -  || + ||  || ? || ! || . || & || é ||  || ▷ || ▶ || ▼ || ♂
|-
|-
! F-
| {{PDollar}} || × || . || / || , || ♀ || 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9
|}
 
==Italian & Spanish==
{| class="wikitable" style="text-align: center; border-collapse: collapse; white-space: nowrap" cellpadding="2px" width="375px"
|-
! || -0 || -1 || -2 || -3 || -4 || -5 || -6 || -7 || -8 || -9 || -A || -B || -C || -D || -E || -F
|-
! 0-
| colspan=16 style="background: #bbb" |
|-
! 1-
| colspan=16 rowspan=5 style="background: #bbb" | ''Unsure''
|-
! 2-
|-
! 3-
|-
! 4-
|-
! 5-
|-
! 6-
| style="background: #000" | || ▲ || [[File:Character 0x62 ii.png|16px]] || D || E || F || G || H || I || V || S || L || M ||: || ぃ || ぅ
|-
! 7-
| <sup>P</sup><sub>O</sub> || <sup>K</sup><sub>é</sub> || “ || ” || ・ || … || ぁ || ぇ || ぉ || colspan=6 | ''text box borders'' || &nbsp;
|-
! 8-
| A || B || C || D || E || F || G || H || I || J || K || L || M || N || O || P
|-
! 9-
| Q || R || S || T || U || V || W || X || Y || Z || ( || ) || : || ; || [ || ]
|-
! A-
| a || b || c || d || e || f || g || h || i || j || k || l || m || n || o || p
|-
! B-
| q || r || s || t || u || v || w || x || y || z || à || è || é || ù || À || Á
|-
! C-
| Ä || Ö || Ü || ä || ö || ü || È || É || Ì || Í || Ñ || Ò || Ó || Ù || Ú || á
|-
! D-
| ì || í || ñ || ò || ó || ú || º || & || 'd || 'l || 'm || 'r || 's || 't || 'v ||
|-
! E-
| ' || <sup>P</sup><sub>K</sub> || <sup>M</sup><sub>N</sub> || -  || ¿ || ¡ || ? || ! || . || & || é ||  || ▷ || ▶ || ▼ || ♂
|-
! F-
| {{PDollar}} || ×  || . || / || ,  || ♀ || 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9
|}


==Japanese==
The following control codes are present in the Generation II games in Japanese and Western language games. Korean control characters are assigned to different code points, so they are [[Korean character encoding (Generation II)#Control characters|listed separately]].
An asterisk (*) denotes a character that is explained in the control characters section below.  


{| class="wikitable" style="text-align: center; border-collapse: collapse; white-space: nowrap" cellpadding="2px" width="375px"
{| class="wikitable sortable"
|-
! Code<br>point
! || -0 || -1 || -2 || -3 || -4 || -5 || -6 || -7 || -8 || -9 || -A || -B || -C || -D || -E || -F
! Control type
|-
! Description
! 0-
! Usage
|? || イ゙  || ヴ || エ゙ || オ゙ || || || グ || ゲ || ゴ || ザ || ジ || ズ || ゼ || ゾ || ダ
|- style="background: #DDD"
|-
| 0x00 || Print control || Prints an [[error message]] and ends the dialogue.{{sup/2|GS}}<br>Prints "<code>?</code>".{{sup/2|C}} || Not used in strings.
! 1-
|- style="background: #DFF"
| || || デ || ド || * || * || * || ネ゙ || ノ゙ || バ || ビ || ブ || ボ || * || * || *
| 0x14 || Variable display || Prints the player's name with an honorific corresponding to the player's gender (<code>くん</code> for male or <code>ちゃん</code> for female in Japanese, empty strings in Western languages). || Introduced in Crystal. Used in dialogue that refers to the player's name with an honorific in the Japanese version.
|- style="background: #DFF"
| 0x15 || Print control || Escape character for [[Pokémon News Machine]] scripts || Introduced in Crystal. Used in data downloaded through the [[Mobile System GB]] in the Japanese version.
|- style="background: #DFF"
| 0x16 || Print control || '''Carriage return''': Moves the print position one tile below the current line and sets the start of the line according to the following byte. || Introduced in Crystal. Unused, but a similar function is present in the code for [[Pokémon News Machine]] scripts.
|-
|-
! 2-
| rowspan="2" | 0x1D || Static display || Prints "<code>に </code>" ({{wp|Japanese particles|particle ''ni''}}). || Used in dialogue in Japanese.
| ィ゙ || あ゙ || * || * || * || * || が || ぎ || ぐ || げ || ご || || || || ||
|-
|-
! 3-
| Print control || Prints a hyphen ("<code>-</code>") followed by a line break (0x22). || Introduced in non-English Western versions. Implementation of 0x1E. Not used directly.
| || || づ || で || ど || * || * || * || * || * || ば || び || ぶ || べ || ぼ || *
|-
|-
! 4-
| rowspan="2" | 0x1E || Static display || Prints "<code>って</code>" ({{wp|Japanese particles|particle ''tte''}}). || Used in dialogue in Japanese.
| || || || || || ぴ || ぷ || ぺ || ぽ || * || * || * || * || も゚ || * || *
|-
|-
! 5-
| Print control || '''Soft hyphen''': Usually prints nothing (zero width), but prints as a hyphen ("<code>-</code>") followed by a line break (0x22) on the [[Town Map]]. || Introduced in non-English Western versions. Used in the names of locations with long names, so that their names are usually displayed as one word, but break across two lines on the Town Map.
| * || * || * || * || * || * || * || * || * || * || * || * || * || * || * || *
|-
|-
! 6-
| rowspan="2" | 0x1F || Static display || Prints "<code>を </code>" ({{wp|Japanese particles|particle ''wo''}}). || Used in dialogue in Japanese.
| style="background: #000" | || || [[File:Character 0x62 ii.png|16px]] || D || E || F || G || H || I || V || S || L || M || : || ぃ || ぅ
|-
|-
! 7-
| Print control || '''Breakable space''': Usually prints a space ("<code> </code>"), but prints as a line break (0x22) on the [[Town Map]]. || Used in the names of locations with long names, so that their names are usually displayed with a space, but break across two lines on the Town Map.
| || 」 || 『 || 』 || ・ || {{j|…}} || ぁ || ぇ || ぉ || colspan=6 | ''text box borders'' || &nbsp;
|-
|-
! 8-
| rowspan="2" | 0x22 || Static display || Prints "<code>た!</code>" ({{wp|Japanese conjugation|past tense suffix ''ta''}}). || Used in dialogue in Japanese.
| || || || || || カ || キ || ク || ケ || コ || サ || シ || ス || セ || ソ || タ
|-
|-
! 9-
| Print control || '''Single-spaced line break:''' Moves the print position one tile below the start of the current line. || Used on the [[Options]] menu, to display battle records on 2F on the [[Pokémon Center]], and in some [[Pokégear]] phone number entries.
| || ツ || テ || ト || ナ || ニ || ヌ || ネ || ノ || ハ || ヒ || フ || ホ || マ || ミ ||
|-
|-
! A-
| 0x23 || Static display || Prints "<code>こうげき</code>" (attack). || Used in in-battle text in Japanese.
| || || || ユ || ヨ || ラ || ル || レ || ロ || ワ || ヲ || ン || ッ || ャ || ュ || ョ
|-
|-
! B-
| 0x24 || Static display || Prints "<code>は </code>" ({{wp|Japanese particles|particle ''wa''}}) in Japanese, or "<code><sup>P</sup><sub>O</sub><sup>K</sup><sub>é</sub></code>" in Western languages. || Used on the menu in the name of the [[Pokégear]] option.
| || || || || え || お || か || き || く || け || こ || さ || し || す || せ || そ
|-
|-
! C-
| rowspan="2" | 0x25 || Static display || Prints "<code>の </code>". ({{wp|Japanese particles|particle ''no''}}) || Used in dialogue in Japanese.
| || || || || || な || に || ぬ || ね || の || は || ひ || ふ || へ || ほ || ま
|-
|-
! D-
| Print control || '''{{wp|Zero-width space|Zero-width breakable space}}''': Usually prints nothing (zero width), but prints as a line break (0x22) on the [[Town Map]]. || Used in the names of locations with long names, so that their names are usually displayed as one word, but break across two lines on the Town Map.
| || || め || も || や || ゆ || よ || ら || リ || る || れ || ろ || わ || を || ん ||
|-
|-
! E-
| 0x35 || Static display || Prints "<code>ばん どうろ</code>" (Route №) in Japanese. || Used in dialogue in Japanese.
| || || || ー || ゜ || ゛ ||? ||! || 。 || ァ || ゥ || ェ || ▷ || ▶ || ▼ || ♂
|-
|-
! F-
| 0x36 || Static display || Prints "<code>わたし</code>" (I/me) in Japanese. || Used in dialogue in Japanese.
| || × || . || / || ォ || ♀ || 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9
|}
 
===Control characters===
The characters on a gray background below are not naturally used in the games.
 
{| border=1 style="border: 1px solid #000; border-collapse: collapse"
|- style="background: #ccf;"
! Character !! Function
|-
|-
| 0x14 || Prints the player's name, including a gendered honorific (adds <code>くん</code> for male, <code>ちゃん</code> for female).
| 0x37 || Static display || Prints "<code>ここは</code>" (Here is) in Japanese. || Used in dialogue in Japanese.
|- style="background: #ddd"
|- style="background: #DDD"
| 0x15 || Related to the [[Mobile Game Boy Adapter]].
| 0x38 || Static display || Prints "<code>RED</code>". || Unused. Relates to unused code for storing a custom name for {{ga|Red}}.
|- style="background: #ddd"
|- style="background: #DDD"
| 0x16 || ''Nothing.''
| 0x39 || Static display || Prints "<code>GREEN</code>". || Unused. Relates to unused code for storing a custom name for {{ga|Blue}} (who is called "Green" in Japanese).
|-
|-
| 0x1D || Prints <code></code>.
| 0x3F || Variable display || Prints the opposing Trainer's name (including their Trainer class). || Used in various in-battle messages.
|- style="background: #DDD"
| 0x49 || Static display || Prints "<code>MOM</code>". || Unused. Relates to unused code for storing a custom name for {{jo|Mom}}.
|-
|-
| 0x1E || Prints <code>って</code>.
| rowspan="2" | 0x4A || rowspan="2" | Static display || Prints "<code>が </code>" ({{wp|Japanese particles|particle ''ga''}}). || Used in dialogue in Japanese.
|-
|-
| 0x1F || Prints <code></code>.
| Prints "<code>{{PK}}{{MN}}</code>". || Several usages, including the [[party]] button in battle and on the menu, and the name of the Trainer class {{tc|Pokémon Trainer|{{PK}}{{MN}} Trainer}}.
|-
|-
| 0x22 || Prints <code>た!</code>.
| 0x4B || Print control || Scrolls the standard text window up one line after player confirmation, then starts writing at the second line. || Implementation of 0x55. Not used directly.
|-
|-
| 0x23 || Prints <code>こうげき</code>.
| 0x4C || Print control || '''Autoscroll:''' Scrolls the standard text window up one line without player confirmation, then starts writing at the second line. || Used in messages for [[Stat modifier|stat modification]] by 2 stages.
|-
|-
| 0x24 || Prints <code>は </code>.
| 0x4E || Print control || '''Double-spaced line break:''' Moves the print position two tiles below the start of the current line. || Used in multiline text not printed in the standard text box, such as item descriptions and Pokédex entries.
|-
|-
| 0x25 || Prints <code>の </code>.
| 0x4F || Print control || '''Second line:''' Moves the print position to the start of the second line of the standard text window. || Used in multiline text printed in the standard text box, such as character dialogue.
|-
|-
| 0x35 || Prints <code>ばん どうろ</code>.
| 0x50 || Print control || String terminator || Used as a string terminator. For strings in fixed length fields, it is often used to pad shorter strings to the required length.
|-
|-
| 0x36 || Prints <code>わたし</code>.
| 0x51 || Print control || '''Paragraph:''' Clears the standard text window after player confirmation, then starts printing in a new window. || Used in text split across multiple text boxes, such as character dialogue.
|-
|-
| 0x37 || Prints <code>ここは </code>.
| 0x52 || Variable display || Prints the player's name, without an honorific. || Used in dialogue that refers to the player's name (specifically, dialogue that referred to the player without an honorific in the Japanese version).
|- style="background: #ddd"
| 0x38 || Prints <code>レッド</code>.
|- style="background: #ddd"
| 0x39 || Prints <code>グリーン</code>.
|-
|-
| 0x3F || Prints the opposing Trainer's name (including their Trainer class).
| 0x53 || Variable display || Prints the [[rival]]'s name. || Used in dialogue that refers to the rival's name.
|- style="background: #ddd"
| 0x49 || Prints <code>おかあさん</code> ("MOM").
|-
|-
| 0x4A || Prints <code></code>.
| 0x54 || Static display || Prints "<code>ポケモン</code>" (Pokémon) in Japanese or "<code>POKé</code>" in Western languages. || Frequently used in text that includes "POKé", such as "POKéMON" and "POKéGEAR".
|-
|-
| 0x4B || style="background: #ddd" | Appears to be the same as 0x55
| 0x55 || Print control || '''Scroll:''' Scrolls the standard text window up one line after player confirmation, then starts writing at the second line. || Used in scrolling multiline text printed in the standard text box, such as character dialogue.
|-
|-
| 0x4C || style="background: #ddd" | Appears to be the same as 0x55 except without any prompt or pause (immediately shifting the dialogue box's lines upwards)
| 0x56 || Static display || Prints "<code>……</code>". || Used in dialogue that prints sequential ellipses.
|-
|-
| 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).
| 0x57 || Print control || '''Done:''' After player confirmation, closes the text window. || Used at the end of dialogue printed in the standard text window.
|-
|-
| 0x4F || Dialogue line break (moves the print position to the expected start of the second line in a standard dialogue box).
| 0x58 || Print control || '''Prompt:''' After player confirmation twice, closes the text window. || Used at the end of dialogue which is followed by some kind of choice for the player.
|-
|-
| 0x50 || String terminator.
| 0x59 || Variable display || Prints the target of a move. If referring to the opponent's Pokémon, "<code>Enemy </code>" is prepended to the Pokémon's name. || Used in various messages in battle.
|-
|-
| 0x51 || Prompts the player to press a button, after which the text window is cleared to make way for the following text.
| 0x5A || Variable display || Prints the user of a move. If referring to the opponent's Pokémon, "<code>Enemy </code>" is prepended to the Pokémon's name. || Used in various messages in battle.
|-
| 0x52 || Prints the player's name without an honorific.
|-
| 0x53 || Prints the rival's name.
|-
| 0x54 || Prints <code>ポケモン</code>.
|-
|-
| 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.
| 0x5B || Static display || Prints "<code>PC</code>". || Used in dialogue and menus in Japanese.
|-
|-
| 0x56 || Prints <code>{{j|……}}</code> (in the middle of the line in Japanese).
| 0x5C || Static display || Prints "<code>TM</code>". || Used in dialogue in Japanese.
|-
|-
| 0x57 || Marks the end of dialogue, without a visual prompt to the player.
| 0x5D || Static display || Prints "<code>TRAINER</code>". || Used as the [[Original Trainer]] of [[in-game trade]] Pokémon in Generation I in all languages, and in dialogue in Japanese.
|-
|-
| 0x58 || Marks the end of dialogue, with a visual prompt to the player.
| 0x5E || Static display || Prints "<code>ROCKET</code>". || Used in dialogue in Japanese.
|-
|-
| 0x59 || Prints the inactive{{tt|*|In specific circumstances<!--E.g., Rage-->, the game may 'pretend' that the inactive Pokémon is actually active and vice versa.}} Pokémon's name in battle. ''(Outside of battle, this may not terminate properly.)''
| 0x5F || Print control || Prints "<code></code>" in Japanese or "<code>.</code>" in Western languages and ends the Pokédex entry. || Used at the end of Pokédex entries in Japanese.
|-
| 0x5A || Prints the active{{tt|*|In specific circumstances, the game may 'pretend' that the active Pokémon is actually inactive and vice versa.}} Pokémon's name in battle.
|-
| 0x5B || Prints <code>パソコン</code>.
|-
| 0x5C || Prints <code>わざマシン</code>.
|-
| 0x5D || Prints <code>トレーナー</code>.
|-
| 0x5E || Prints <code>ロケットだん</code>.
|-
| 0x5F || Prints a period (0xE8) and simultaneously functions as a string terminator. ''(Only used in Japanese Pokédex entries.)''
|}
|}


==Korean==
The following table lists the strings that each static display code prints in each language. Entries with a black background are not static display codes in that language. Korean control characters do not align with other languages, so the text printed by the functionally equivalent control character is listed instead.
{{main|Korean character encoding (Generation II)}}


==Control characters==
{| class="wikitable sortable"
Code points within the 0x00-0x5F range are either control characters or Japanese diacritic characters (or in other languages, [[#Special duplicate characters|leftovers from Japanese diacritic characters]]). When including in a text string, they execute a piece of code instead of printing a single character, unless caught by [[#name error handling|name error handling]].
 
There are three main categories of control character:
* [[#Static display codes|Static display]]: Prints a fixed string (which may contain multiple characters)
* [[#Variable display codes|Variable display]]: Prints the value of a text variable (which may contain multiple characters)
* [[#Print control codes|Print control]]: Directs where to print text
 
===Static display codes===
{{incomplete|section|needs=Values printed in French, German, Italian, Spanish}}
The following is a table of what the static display codes print in each language. Entries on a grey background are not static display codes in that language. Entries on a pink background are simply [[#Special duplicate characters|special duplicate characters]] in that language.
 
Korean control characters do not align with other languages, so are [[Korean character encoding (Generation II)#Control characters|listed separately]].
 
{| class="wikitable"
! Code point
! Code point
! Japanese
! Japanese
! English
! English
! French
! German
! Italian
! Spanish
! Korean
|-
| 0x1D || <code>に </code> || colspan="6" style="background: #000" |
|-
|-
| 0x1D || <code></code> ({{wp|Japanese particles|particle ''ni''}}) ||style="background: #ddd"| <code>;</code>
| 0x1E || <code>って</code> || colspan="6" style="background: #000" |
|-
|-
| 0x1E || <code>って</code> ||style="background: #ddd"| <code>[</code>
| 0x1F || <code>を </code> || colspan="6" style="background: #000" |
|-
|-
| 0x1F || <code></code> ({{wp|Japanese particles|particle ''wo''}}) ||style="background: #ddd"| <code>&nbsp;</code>
| 0x22 || <code>た!</code> || colspan="6" style="background: #000" |
|-
|-
| 0x22 || <code>た!</code> ||style="background: #ddd"| [[#Line breaks|Single-spaced line break]]
| 0x23 || <code>こうげき</code> || <code>&nbsp;tzx</code><ref name="kougeki" group="lower-alpha"/> || colspan="4" | <code>àtzx</code><ref name="kougeki" group="lower-alpha"/> || <code>[[File:Character 0xBA ko ii.png|ᄀ|class=noviewer]]tzx</code><ref name="kougeki" group="lower-alpha"/>
|-
|-
| 0x23 || <code>こうげき</code> ("attack") || <code>&nbsp;tzx</code><ref name="kougeki" group="lower-alpha"/>
| 0x24 || <code>は </code> || colspan="6" | <code><sup>P</sup><sub>O</sub><sup>K</sup><sub>é</sub></code>
|-
|-
| 0x24 || <code>は </code> ({{wp|Japanese particles|particle ''wa''}}) || <code><sup>P</sup><sub>O</sub><sup>K</sup><sub>é</sub></code>
| 0x25 || <code>の </code> || colspan="6" style="background: #000" |
|-
|-
| 0x35 || <code>ばん どうろ</code> ("Route №") || Nothing (zero width)
| 0x35 || <code>ばん どうろ</code> || colspan="6" | ''Empty string''
|-
|-
| 0x36 || <code>わたし</code> ("I") || Nothing (zero width)
| 0x36 || <code>わたし</code> || colspan="6" | ''Empty string''
|-
|-
| 0x37 || <code>ここは</code> ("Here is") || Nothing (zero width)
| 0x37 || <code>ここは</code> || colspan="6" | ''Empty string''
|-
|-
| 0x38 || <code>レッド</code> ("Red") || <code>RED</code>
| 0x38 || <code>レッド</code> || <code>RED</code> || <code>RED</code> || <code>ROT</code> || <code>ROSSO</code> || <code>ROJO</code> || <code>레드</code>
|-
|-
| 0x39 || <code>グリーン</code> ("Green") || <code>GREEN</code>
| 0x39 || <code>グリーン</code> || <code>GREEN</code> || <code>GREEN</code> || <code>GRÜN</code> || <code>VERDE</code> || <code>VERDE</code> || <code>그린</code>
|-
|-
| 0x49 || <code>おかあさん</code> ("mom") || <code>MOM</code>
| 0x49 || <code>おかあさん</code> || <code>MOM</code> || <code>MAMAN</code> || <code>MAMA</code> || <code>MAMMA</code> || <code>MAMÁ</code> || <code>어머니</code>
|-
|-
| 0x4A || <code></code> ({{wp|Japanese particles|particle ''ga''}}) || <code>{{PK}}{{MN}}</code>
| 0x4A || <code>が </code> || colspan="6" | <code>{{PK}}{{MN}}</code>
|-
|-
| 0x54 || <code>ポケモン</code> ("Pokémon") || <code>POKé</code>
| 0x54 || <code>ポケモン</code> || colspan="5" | <code>POKé</code> || <code>포켓몬</code>
|-
|-
| 0x56 || <code>{{j|……}}</code> || <code>……</code>
| 0x56 || <code>{{j|……}}</code> || colspan="6" | <code>……</code>
|-
|-
| 0x5B || <code>パソコン</code> ("PC") || <code>PC</code>
| 0x5B || <code>パソコン</code> || colspan="5" | <code>PC</code> || <code>컴퓨터</code>
|-
|-
| 0x5C || <code>わざマシン</code> ("TM") || <code>TM</code>
| 0x5C || <code>わざマシン</code> || <code>TM</code> || <code>CT</code> || <code>TM</code> || <code>MT</code> || <code>MT</code> || <code>기술머신</code>
|-
|-
| 0x5D || <code>トレーナー</code> ("Trainer") || <code>TRAINER</code>
| 0x5D || <code>トレーナー</code> || <code>TRAINER</code> || <code>DRESSEUR</code> || <code>TRAINER</code> || <code>ALLEN.</code> || <code>ENTREN.</code> || <code>트레이너</code>
|-
|-
| 0x5E || <code>ロケットだん</code> ("Team Rocket") || <code>ROCKET</code>
| 0x5E || <code>ロケットだん</code> || colspan="5" | <code>ROCKET</code> || <code>로켓단</code>
|}
|}
<references group="lower-alpha">
<references group="lower-alpha">
<ref name="kougeki" group="lower-alpha">{{wp|mojibake}} of <code>こうげき</code></ref>
<ref name="kougeki" group="lower-alpha">{{wp|mojibake}} of <code>こうげき</code></ref>
</references>
</references>
The static display control character 0x5D "TRAINER" is used as the [[Original Trainer]] of Pokémon obtained in [[in-game trade]]s. Due to being a control character, this means that if the Pokémon is traded to a game in a different language, the Original Trainer is automatically updated to display "TRAINER" in that game's own language.
===Variable display codes===
The following are control characters that display a particular variable value.
For variables that are only populated during battle, they may not terminate properly outside of battle; otherwise, they typically retain the last value they held.
{| class="wikitable sortable"
! Code point
! Description
|-
| 0x14 || Prints the player's name, including a gendered honorific in Japanese (adds <code>くん</code> for male, <code>ちゃん</code> for female). Identical to 0x52 in Western languages.
|-
| 0x3F || Prints the opposing Trainer's name (including their Trainer class).
|-
| 0x52 || Prints the player's name, without an honorific. Identical to 0x14 in Western languages.
|-
| 0x53 || Prints the [[rival]]'s name.
|-
| 0x59 || Prints the target of a move. If referring to the opponent's Pokémon, "<code>Enemy </code>" is prepended to the Pokémon's name.
|-
| 0x5A || Prints the user of a move. If referring to the opponent's Pokémon, "<code>Enemy </code>" is prepended to the Pokémon's name.
|}
===Print control codes===
====Line breaks====
Line breaks are manually defined; text usually prints on a single line until a line break is defined.
Most text is printed double-spaced, leaving a one-tile blank row between each line of text. On the rare occasions it is necessary, text can be printed single-spaced using 0x22 (half-line break).
For text printed outside of the standard text window, line breaks are created with 0x4E (next line), or in rare cases that do not use double-line spacing, 0x22 (half-line break). Both of these line breaks move the print head relative to the start of the preceeding line.
For text printed in the standard text window, there is a collection of distinct line breaks that are used. The standard text window only has two lines, so rather than moving the print head relative to the preceeding line, all of the standard text window line breaks move the print head to the start of either the first or second line.
* 0x4F (second line): Continues printing at the start of the second line
* 0x51 (paragraph): After player confirmation, clears the text window and continues printing from the start of the first line.
* 0x55 (scroll): After player confirmation, scrolls the text window one line up then continues printing from the start of the second line.
* 0x4C (autoscroll): Automatically scrolls the text window one line up then continues printing from the start of the second line (without waiting for player confirmation).
* 0x57 (done): After player confirmation, closes the text window.
* 0x58 (prompt): After player confirmation twice, closes the text window.
Additionally, 0x4B contains the implementation of 0x55 (scroll). That is, 0x55 causes 0x4B to be placed at its position, then 0x4B defines the code for actually creating such a line break.
====Breakable static display codes====
In English, there are two characters that normally function as static display codes, but on the [[Town Map]] are turned into a line break (0x22) instead.
* 0x1F (breakable space): Normally prints <code> </code>, but on the Town Map is turned into a line break.
* 0x25 ({{wp|Zero-width space|zero-width breakable space}}): Normally prints nothing (zero width), but on the Town Map is turned into a line break.
====String terminator====
0x50 is the standard string terminator.
In text for the Pokédex's [[Unown Mode]], because 0x50 is used for an Unown letter, 0xFF is used as the string terminator instead.
In Japanese Pokédex entries, 0x5F prints <code>.</code> and marks the end of the Pokédex entry. In English Generation II games, Pokédex entries end with a regular period and the regular string terminator 0x50. (In Generation I, English language games also used 0x5F to mark the end of Pokédex entries.)
====Null====
0x00 is the {{wp|null character}}. It is used to indicate null values.
If included in a string, it renders as <code>?</code>.


==Related articles==
==Related articles==
{{data structure}}
{{data structure}}
{{Project Games notice|data structure}}
{{Project Games notice|data structure}}

Revision as of 08:07, 29 May 2026

In the Generation II core series games, a proprietary character encoding is used to store text data. Different languages use different encodings, although Western language games have very similar encodings to each other.

The Generation II encoding is largely similar to the Generation I encoding.

Compatibility

The exact character encoding differs between languages, although all Western languages use almost-equivalent encodings. The set of user-enterable characters in Trainer names and Pokémon nicknames is the same in all Western languages except German; in German, letters with umlauts are enterable (ÄÖÜäöü), but to compensate it is not possible to enter a semicolon and either a spaceGS or multiplication signC.

In the Generation I and II games, the only supported cross-language compatibility is among the Western games. Between Western language games, the only text that can be transferred is the player's name, the nicknames and Original Trainers of their party Pokémon, and the contents of Mail. When trading Pokémon between different Western languages, nicknames and Original Trainer names are usually displayed correctly, with the exception of characters with diacritics (specifically, some characters obtainable in names in the Spanish versions that cannot be entered by players). The static display control character 0x5D "TRAINER" is used as the Original Trainer of Pokémon obtained in in-game trades in Generation I. Due to being a control character, this means that if the Pokémon is traded to a game in a different language, the Original Trainer is automatically updated to display "TRAINER" in that game's own language. When reading Mail in a Western language game, the game uses the font of the language the Mail was written in, rather than the current game's language, which prevents the text from being corrupted.

Attempting to trade or battle between a Western language or Korean game and a Japanese game causes corruption of both save files. The Korean versions of Pokémon Gold and Silver can successfully trade with Western language Generation I and II games. However, Hangul characters will appear garbled on Western language games, and may even include bytes that map to control characters in these games. However, unlike attempting to trade between Western language and Japanese games, save data is not corrupted. The Virtual Console releases only allow trades or battles between two Western language games, between two Japanese games, or between two Korean games.

The Generation I character encoding for each language is almost the same as the Generation II encoding, with all characters that can be entered in Trainer names and Pokémon nicknames remaining at the same code points in both generations. However, the English Generation I games do not support letters with umlauts that can be entered in German games—simply displaying them as spaces—although the code points are preserved so they will be correctly displayed in other games. This means that trading Pokémon between Generation I and II games of the same language will not affect their nicknames or Original Trainer names.

Pokémon Stadium 2

Main article: Character encoding (Stadium)

When the player's name, the nickname or Original Trainer of a Pokémon, a Box name, or Mail from the handheld games is displayed in Pokémon Stadium 2, it needs to be transcoded between this character encoding and that of the Nintendo 64 game.

Poké Transporter

Main article: Poké Transporter → Character transcoding

When transferring a Pokémon from a Generation I or II game via Poké Transporter, its nickname and Original Trainer need to be transcoded from this character encoding to that of Pokémon Bank. Due to differences in the characters that can be entered or otherwise appear in names in these games and the Nintendo 3DS games, some characters are not transcoded to the same characters they represent in these games.

Additionally, the name of Box 1 (the box that will be transferred) is displayed in Poké Transporter. The range of characters that can be entered in Box names is broader than in nicknames and Trainer names, and varies more between languages, but Poké Transporter still makes an effort to display Box names accurately.

Rendering

Due to how text is rendered in the Generation II core series games, all non-control characters take up the exact same amount of space (i.e. the games effectively use a monospaced font). In Western languages, some ligature characters exist to display two characters within the width of one (e.g. the character 's is the same width as s).

Each character code directly corresponds to a tile in the tilemap loaded into VRAM. Not all tiles in the tilemap are accessible via character code, but many are. For example, code points 0x79-0x7E are box-drawing characters used to draw the boundaries of text boxes; in certain user interfaces (e.g. in battles, on summary screens, and in the Pokédex) parts of the tileset overwrite code points that are not used to display text in that interface.

Some code points are used for different characters in different contexts. For example, 0x6E and 0x6F usually contain hiragana characters leftover from the Japanese version, but when displaying the length of Magikarp at the Lake of Rage they are replaced by symbols for feet and inches instead ( and ).

Character map

The following represents the baseline values of these characters. In some contexts, many of these characters have their values overwritten. The Korean character map is listed separately.

English
-0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -A -B -C -D -E -F
0- B C D E F G H I J K L M N O P
1- Q R S T X Y Z ( ) : ; [
2- q r w x y z            
3- Ä Ö Ü ä ö          
4- Z ( ) :           'r
5- Control characters
6- 🖁
7- PO Ké
8- A B C D E F G H I J K L M N O P
9- Q R S T U V W X Y Z ( ) : ; [ ]
A- a b c d e f g h i j k l m n o p
B- q r s t u v w x y z            
C- Ä Ö Ü ä ö ü                    
D- 'd 'l 'm 'r 's 't 'v                 🡄
E- ' PK MN -     ? ! . & é 🡆
F- Pokémon Dollar × . / , 0 1 2 3 4 5 6 7 8 9
French and German
-0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -A -B -C -D -E -F
0- B C D E F G H I J K L M N O P
1- Q R S T X Y Z ( ) :
2- q r w x y z à è é ù ß ç
3- Ä Ö Ü ä ö û ê î    
4- Z ( ) : û ê î     'r
5- Control characters
6- 🖁
7- PO Ké
8- A B C D E F G H I J K L M N O P
9- Q R S T U V W X Y Z ( ) : ; [ ]
A- a b c d e f g h i j k l m n o p
B- q r s t u v w x y z à è é ù ß ç
C- Ä Ö Ü ä ö ü ë ï â ô û ê î     🡄
D-         c' d' j' l' m' n' p' s' 's t' u' y'
E- ' PK MN - +   ? ! . & é 🡆
F- Pokémon Dollar × . / , 0 1 2 3 4 5 6 7 8 9
Italian and Spanish
-0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -A -B -C -D -E -F
0- B C D E F G H I J K L M N O P
1- Q R S T X Y Z ( ) :
2- q r w x y z à è é ù À Á
3- Ä Ö Ü ä ö Ñ Ò Ó Ù Ú
4- Z ( ) : Ñ Ò Ó Ù Ú 'r
5- Control characters
6- 🖁
7- PO Ké
8- A B C D E F G H I J K L M N O P
9- Q R S T U V W X Y Z ( ) : ; [ ]
A- a b c d e f g h i j k l m n o p
B- q r s t u v w x y z à è é ù À Á
C- Ä Ö Ü ä ö ü È É Ì Í Ñ Ò Ó Ù Ú á
D- ì í ñ ò ó ú º & 'd 'l 'm 'r 's 't 'v 🡄
E- ' PK MN - ¿ ¡ ? ! . & é 🡆
F- Pokémon Dollar × . / , 0 1 2 3 4 5 6 7 8 9
Japanese
-0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -A -B -C -D -E -F
0- イ゙ エ゙ オ゙
1- ネ゙ ノ゙
2- ィ゙ あ゙
3-
4- も゚
5- Control characters
6- 🖁
7-
8-
9-
A-
B-
C-
D-
E-
F- ×
Legend
Standard text characters
Control characters
Diacritic characters/Map tiles
Differs between versions

Notes

0x00-0x5F

These are control characters, special code points that either print a particular multi-character string or serve some functional purpose (such as marking the end of a line of text).

Code points in this range not assigned to a specific function behave differently between versions:

  • In the Japanese versions, they print a specific kana from the main font with dakuten or handakuten in the space above it.
    • 0x01-0x1F print a katakana character from 0x81-0x9F with a dakuten diacritic (゛).
    • 0x20-0x3F print a hiragana character from 0xB0-0xCF with a dakuten diacritic (゛).
    • 0x40-0x43 print a katakana character from 0x99-0x9C with a handakuten diacritic (゜).
    • 0x44-0x5F print a hiragana character from 0xCA-0xE5 with a handakuten diacritic (゜).
  • In the English versions of Pokémon Gold and Silver, the code executed is identical to the Japanese version. However, since the corresponding tiles have been replaced, they instead print the base character listed above (i.e., the character at the same code point as the corresponding base kana character) with the blank tile at 0xE5 or 0xE4.
  • In non-English Western versions of Pokémon Gold and Silver and the English version of Pokémon Crystal, the code that prints the diacritic itself is skipped, so it prints only an unmodified duplicate of the base character listed above.
  • In non-English Western versions of Pokémon Crystal, this code was removed entirely, so these code points print the corresponding tile from VRAM addresses 0x9000 to 0x95FF. Like in Generation I, these correspond to a portion of the current tileset of the current map.

0x60-0x7F

These are additional text characters stored in VRAM addresses 0x9600 to 0x97FF. These tiles are frequently overwritten in certain contexts to render different characters, meaning the same code point can print different tiles.

  • 0x60-0x6C are bold letters originally from the Japanese font. Only and are used in the English versions, appearing on the VS screen at the start of a link battle.
    • 0x60-0x62 are technically bold , , in the base font, but are almost always immediately overwritten with the characters listed in the above table (, , 🖁). Since these characters will almost never render as their base values, the superseding values are used in the table above.
  • 0x6D is a colon, which has smaller dots than the colon at 0x9C in the Western language fonts. In the Western language versions, it is only used to display total playtime.
  • 0x6E-0x6F and 0x76-0x78 are Japanese hiragana. They are not used in the English version.
  • 0x72-0x73 are and in the Japanese font and in the Western versions of Pokémon Gold and Silver, and and in the Western versions of Pokémon Crystal.
  • 0x74 is an interpunct. It is not used in the English version.
  • 0x79-0x7E are box-drawing characters used to draw the boundaries of text boxes. The player can change how they display in the Options menu.
  • 0x7F is a space.

0x80-0xFF

These are standard text characters from the main font, stored in VRAM addresses 0x8800 to 0x8FFF. However, certain areas that need extra space for extra tiles, such as the player's Trainer Card, will still overwrite tiles in this range.

  • 0xD0-0xD6 in English, 0xD4-0xDF in French and German, or 0xD8-0xDE in Italian and Spanish represent a letter with an apostrophe. These characters are used to render English, French, and German contractions and English possessives in dialogue, so that the apostrophe does not take up a separate tile.
  • 0xDF and 0xEB are arrows used in the interface when printing Alph Ruins Stamps that are only present in the Western versions of Pokémon Crystal.
  • 0xE4 and 0xE5 print the corresponding diacritic above the following character in the Japanese version and the English versions of Pokémon Gold and Silver.
  • 0xBC and 0xEA are both é in non-English Western versions. Of the two code points, only 0xEA is used; 0xBC was previously used in Generation I.
  • 0xE8 and 0xF2 are both periods that render identically. In the Japanese games, the two code points represent visually distinct characters: 0xF2 is a decimal point and 0xE8 is punctuation. In the Western language games, 0xE8 is used for user input and in the name of Mr. Mime, while 0xF2 was previously used for user input in Generation I.

Name error handling

The game defines a list of characters that are considered valid in Original Trainer names and Pokémon nicknames. In some contexts, the game will replace any invalid characters in these names with ?. This can help suppress issues arising from control characters being present in these names.

The following are considered valid characters in names in the Japanese and Western language versions:

  • 0x7F-0xFF: This encompasses all user-enterable characters in the Western games (among many other characters).
  • 0x5D: A control character that prints "TRAINER" (used in Generation I as the Original Trainer of in-game trade Pokémon).
  • 0x05-0x13, 0x19-0x1C, 0x26-0x34, 0x3A-0x3E, and 0x40-0x48: The specific code points that correspond to standard dakuten and handakuten characters in the Japanese character encoding. In English, these are all special duplicate characters.

The circumstances under which this is applied are very inconsistent. For example, the error handling is applied to Pokémon nicknames on the party screen, but not on their own individual summary screens, despite it still being applied to Original Trainer names on this screen. In battle, it is not applied to nicknames in most cases, but is applied when reporting gained experience.

Overwriting characters

This section is incomplete.
Please feel free to edit this section to add missing information and complete it.
Reason: Other languages besides English

In some contexts, different tilesets are loaded into the game's font.

  • In displays that need to display an HP bar (such as in battle and on Pokémon summary screens), a dedicated HP bar variant of the base font is loaded into 0x60-0x7F to include tiles for drawing HP bars. (See below for details.)
  • In English, when the size of a Magikarp is displayed at the Lake of Rage, 0x6E and 0x6F are replaced by symbols for feet and inches ( and ), respectively, for this dialogue only.
  • In the Pokédex, parts of the tileset used to display the Pokédex's user interface are loaded into the range 0x60-0x6A.
    • In Unown Mode, parts of the user interface and the Unown font are loaded into the range 0x00-0x5F, in addition to the regular Pokédex tileset loaded into the range 0x60-0x6A. Due to the text terminator being overwritten with an Unown character, 0xFF is used as the terminator instead.
  • In Western versions of Pokémon Crystal and non-English Western versions of Pokémon Gold and Silver, when reading Mail, the game ensures that the message is displayed using the character encoding of the language the Mail was written in, preventing corruption when trading Mail between languages. This is only applicable when trading between Western languages, as trading between other languages corrupts Mail, so is not supported by this feature.

HP bar tileset

When it is necessary to draw an HP bar (such as in battle and on a Pokémon's summary screen), a tileset containing HP bar pieces and other text characters is loaded into the font. Most of these characters are semigraphic tiles rather than text characters.

-0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -A -B -C -D -E -F
6- HI ↄ: ▌ ╮ :L ◢
7- ID ─ ─ ◣
Same as default font
Differs between HP bar tilesets
  • 0x60 and 0x61 are a pair of tiles that form the HP: graphic displayed on the left side of the HP bar.
  • 0x62-0x6A are segments used to draw the HP bar and experience bar.
  • 0x6B is the right edge of an HP bar. It used for HP bars on summary screens and for the opponent's HP bar during battle.
  • 0x6C is the top piece of the right bracket of the player's HP bar interface during battle.
  • 0x6D is a duplicate of 0x7C.
  • 0x6E is the abbreviation of "Level" used in various displays.
  • 0x6F and 0x78 are similar to the triangles placed at the tip of HP bar frames, but shifted 2 pixels up.
  • 0x70 and 0x72 are unused leftover text characters from the Japanese version.
HP bar frame tileset

The characters listed above are the base HP bar tileset, although in many contexts one or both of a pair of ranges of tiles (0x6C-0x6F and 0x73-0x78) are overwritten with other tiles. The replacement characters are depicted below.

  • In battle, 0x6C-0x6F and 0x73-0x78 are overwritten with tiles used to draw the HP bar frame for both Pokémon.
  • On the summary screen, only 0x6C-0x6F are overwritten.
  • On the party list screen during battle, neither is overwritten.
-0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -A -B -C -D -E -F
6- Unchanged ╮ ▌ :L ◢
7- ▐ ╰ ▁ ╯ ◣ Unchanged
Not changed from base HP bar tileset
Differs from base HP bar tileset
  • 0x6C and 0x6E are the same as the base HP bar tileset, but are technically overwritten along with the other characters.
  • 0x6C, 0x73, and 0x77 are tiles that form the right bracket of the player's HP bar frame during battle.
  • 0x6D and 0x74 are tiles that form the left bracket of the opponent's HP bar frame during battle.
  • 0x6F and 0x78 are the triangles placed at the tip of the player's and opponent's HP bar frames (respectively).
  • 0x75 is an ellipsis in the original tileset and base HP bar tileset, but in the HP bar frame tileset the ellipsis is positioned slightly higher.
  • 0x76 is the baseline of the opponent's HP bar frame.

Pokédex

In the Pokédex, some of the tileset used to display the Pokédex frame is loaded into code points in the 0x60-0x6A range. The rest of the character set is unchanged.

Additionally, all characters have their colors inverted, as the Pokédex uses a white-on-black display (as opposed to the usual black-on-white display). They are depicted as black-on-white below.

-0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -A -B -C -D -E -F
6- ─ Footprint ┐ │ ┘ │ └
Sprite buffer
Same as default font
  • 0x60 is a bold . This is leftover from the Japanese version, which uses this as part of "kg" when displaying Pokémon weights. (In English, weights are instead displayed in feet and inches; the feet and inches characters are not left in the text tileset.)
  • 0x61 is the horizontal divider displayed in the middle of the Pokédex entry screen.
  • 0x62-0x65 is the current Pokémon's footprint.
  • 0x66-0x6A are borders of the Pokédex frame.
  • 0x6B-0x6F are unchanged from the base character set.
Unown Mode

In the Pokédex's Unown Mode, an Unown font is loaded into the 0x40-0x5A range in order to display text using Unown letters. Additionally, the sprite buffer and more tiles from the Pokédex tileset remain in the character table, in contrast to other Pokédex modes.

In the Pokédex, all characters have their colors inverted, as the Pokédex uses a white-on-black display (as opposed to the usual black-on-white display). Text characters are depicted as black-on-white below, but user interface tiles are unchanged.

-0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -A -B -C -D -E -F
0- Pokémon sprite buffer
1-
2-
3-   █ ┌ ─ ┐ │ │ └ ─ ┘ 🬴 🬸 ◁ ▷ △
4- A B C D E F G H I J K L M N O P
5- Q R S T U V W X Y Z ╨ .
6- ─ Footprint ┐ │ ┘ │ └
7- PO Ké
8- A B C D E F G H I J K L M N O P
9- Q R S T U V W X Y Z ( ) : ; [ ]
A- a b c d e f g h i j k l m n o p
B- q r s t u v w x y z            
C- Ä Ö Ü ä ö ü                    
D- 'd 'l 'm 'r 's 't 'v                 🡄
E- ' PK MN -     ? ! . & é 🡆
F- Pokémon Dollar × . / , 0 1 2 3 4 5 6 7 8
Sprite buffer
Same as default font
Control characters
Differs between Pokémon Gold and Silver and Pokémon Crystal
  • 0x00-0x30 is the sprite buffer for the Unown's sprite (including the white padding), tiled top-to-bottom then left-to-right.
  • 0x31-0x3F, 0x5B, 0x61, and 0x66-0x6A are tiles from the Pokédex user interface.
  • 0x40-0x59 are Unown characters.
  • 0x5A is the cursor from Unown Mode.
  • 0x62-0x65 is the sprite buffer for the Pokémon's footprint in the main Pokédex. It is unused in Unown Mode, just displaying as white tiles (against the black background).
  • 0xFF is the string terminator.
    • 0x50, which usually would function as the string terminator, has instead been overwritten with Unown Q (Q).

Naming screen

On the screen to enter the player's name, rival's name, and Pokémon nicknames, a few characters are overwritten by tiles used elsewhere on the screen.

-0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -A -B -C -D -E -F
6- ▚ 🖁
7- PO Ké
8- A B C D E F G H I J K L M N O P
9- Q R S T U V W X Y Z ( ) : ; [ ]
A- a b c d e f g h i j k l m n o p
B- q r s t u v w x y z            
C- Ä Ö Ü ä ö ü                    
D- 'd 'l 'm 'r 's 't 'v                 🡄
E- ' PK MN -     ? ! . & é
F- Pokémon Dollar × _ / , 0 1 2 3 4 5 6 7 8 9
Same as default font
Differs between Pokémon Gold and Silver and Pokémon Crystal
  • 0x60 is the sprite used as the frame of the screen.
  • 0xEB is the centered horizontal line used to indicate unset characters (except the current character slot) in the name being entered.
  • 0xF2 is the base-line horizontal line used to indicate the next slot to be written to in the name being entered.

Control characters

Control characters execute a piece of code (unless caught by name error handling) instead of printing the tile they would correspond to from VRAM. There are three main categories of control characters:

  • Static display: Prints a fixed string (which may contain multiple characters)
  • Variable display: Prints the value of a text variable (which may contain multiple characters)
  • Print control: Directs where to print text

The following control codes are present in the Generation II games in Japanese and Western language games. Korean control characters are assigned to different code points, so they are listed separately.

Code
point
Control type Description Usage
0x00 Print control Prints an error message and ends the dialogue.GS
Prints "?".C
Not used in strings.
0x14 Variable display Prints the player's name with an honorific corresponding to the player's gender (くん for male or ちゃん for female in Japanese, empty strings in Western languages). Introduced in Crystal. Used in dialogue that refers to the player's name with an honorific in the Japanese version.
0x15 Print control Escape character for Pokémon News Machine scripts Introduced in Crystal. Used in data downloaded through the Mobile System GB in the Japanese version.
0x16 Print control Carriage return: Moves the print position one tile below the current line and sets the start of the line according to the following byte. Introduced in Crystal. Unused, but a similar function is present in the code for Pokémon News Machine scripts.
0x1D Static display Prints "に " (particle ni). Used in dialogue in Japanese.
Print control Prints a hyphen ("-") followed by a line break (0x22). Introduced in non-English Western versions. Implementation of 0x1E. Not used directly.
0x1E Static display Prints "って" (particle tte). Used in dialogue in Japanese.
Print control Soft hyphen: Usually prints nothing (zero width), but prints as a hyphen ("-") followed by a line break (0x22) on the Town Map. Introduced in non-English Western versions. Used in the names of locations with long names, so that their names are usually displayed as one word, but break across two lines on the Town Map.
0x1F Static display Prints "" (particle wo). Used in dialogue in Japanese.
Print control Breakable space: Usually prints a space (" "), but prints as a line break (0x22) on the Town Map. Used in the names of locations with long names, so that their names are usually displayed with a space, but break across two lines on the Town Map.
0x22 Static display Prints "た!" (past tense suffix ta). Used in dialogue in Japanese.
Print control Single-spaced line break: Moves the print position one tile below the start of the current line. Used on the Options menu, to display battle records on 2F on the Pokémon Center, and in some Pokégear phone number entries.
0x23 Static display Prints "こうげき" (attack). Used in in-battle text in Japanese.
0x24 Static display Prints "は " (particle wa) in Japanese, or "POKé" in Western languages. Used on the menu in the name of the Pokégear option.
0x25 Static display Prints "の ". (particle no) Used in dialogue in Japanese.
Print control Zero-width breakable space: Usually prints nothing (zero width), but prints as a line break (0x22) on the Town Map. Used in the names of locations with long names, so that their names are usually displayed as one word, but break across two lines on the Town Map.
0x35 Static display Prints "ばん どうろ" (Route №) in Japanese. Used in dialogue in Japanese.
0x36 Static display Prints "わたし" (I/me) in Japanese. Used in dialogue in Japanese.
0x37 Static display Prints "ここは" (Here is) in Japanese. Used in dialogue in Japanese.
0x38 Static display Prints "RED". Unused. Relates to unused code for storing a custom name for Red.
0x39 Static display Prints "GREEN". Unused. Relates to unused code for storing a custom name for Blue (who is called "Green" in Japanese).
0x3F Variable display Prints the opposing Trainer's name (including their Trainer class). Used in various in-battle messages.
0x49 Static display Prints "MOM". Unused. Relates to unused code for storing a custom name for Mom.
0x4A Static display Prints "が " (particle ga). Used in dialogue in Japanese.
Prints "PKMN". Several usages, including the party button in battle and on the menu, and the name of the Trainer class PKMN Trainer.
0x4B Print control Scrolls the standard text window up one line after player confirmation, then starts writing at the second line. Implementation of 0x55. Not used directly.
0x4C Print control Autoscroll: Scrolls the standard text window up one line without player confirmation, then starts writing at the second line. Used in messages for stat modification by 2 stages.
0x4E Print control Double-spaced line break: Moves the print position two tiles below the start of the current line. Used in multiline text not printed in the standard text box, such as item descriptions and Pokédex entries.
0x4F Print control Second line: Moves the print position to the start of the second line of the standard text window. Used in multiline text printed in the standard text box, such as character dialogue.
0x50 Print control String terminator Used as a string terminator. For strings in fixed length fields, it is often used to pad shorter strings to the required length.
0x51 Print control Paragraph: Clears the standard text window after player confirmation, then starts printing in a new window. Used in text split across multiple text boxes, such as character dialogue.
0x52 Variable display Prints the player's name, without an honorific. Used in dialogue that refers to the player's name (specifically, dialogue that referred to the player without an honorific in the Japanese version).
0x53 Variable display Prints the rival's name. Used in dialogue that refers to the rival's name.
0x54 Static display Prints "ポケモン" (Pokémon) in Japanese or "POKé" in Western languages. Frequently used in text that includes "POKé", such as "POKéMON" and "POKéGEAR".
0x55 Print control Scroll: Scrolls the standard text window up one line after player confirmation, then starts writing at the second line. Used in scrolling multiline text printed in the standard text box, such as character dialogue.
0x56 Static display Prints "……". Used in dialogue that prints sequential ellipses.
0x57 Print control Done: After player confirmation, closes the text window. Used at the end of dialogue printed in the standard text window.
0x58 Print control Prompt: After player confirmation twice, closes the text window. Used at the end of dialogue which is followed by some kind of choice for the player.
0x59 Variable display Prints the target of a move. If referring to the opponent's Pokémon, "Enemy " is prepended to the Pokémon's name. Used in various messages in battle.
0x5A Variable display Prints the user of a move. If referring to the opponent's Pokémon, "Enemy " is prepended to the Pokémon's name. Used in various messages in battle.
0x5B Static display Prints "PC". Used in dialogue and menus in Japanese.
0x5C Static display Prints "TM". Used in dialogue in Japanese.
0x5D Static display Prints "TRAINER". Used as the Original Trainer of in-game trade Pokémon in Generation I in all languages, and in dialogue in Japanese.
0x5E Static display Prints "ROCKET". Used in dialogue in Japanese.
0x5F Print control Prints "" in Japanese or "." in Western languages and ends the Pokédex entry. Used at the end of Pokédex entries in Japanese.

The following table lists the strings that each static display code prints in each language. Entries with a black background are not static display codes in that language. Korean control characters do not align with other languages, so the text printed by the functionally equivalent control character is listed instead.

Code point Japanese English French German Italian Spanish Korean
0x1D に 
0x1E って
0x1F を 
0x22 た!
0x23 こうげき  tzx[a] àtzx[a] ᄀtzx[a]
0x24 は  POKé
0x25 の 
0x35 ばん どうろ Empty string
0x36 わたし Empty string
0x37 ここは Empty string
0x38 レッド RED RED ROT ROSSO ROJO 레드
0x39 グリーン GREEN GREEN GRÜN VERDE VERDE 그린
0x49 おかあさん MOM MAMAN MAMA MAMMA MAMÁ 어머니
0x4A が  PKMN
0x54 ポケモン POKé 포켓몬
0x56 …… ……
0x5B パソコン PC 컴퓨터
0x5C わざマシン TM CT TM MT MT 기술머신
0x5D トレーナー TRAINER DRESSEUR TRAINER ALLEN. ENTREN. 트레이너
0x5E ロケットだん ROCKET 로켓단
  1. 1.0 1.1 1.2 mojibake of こうげき

Related articles

Data structure in the Pokémon games
General Character encoding
Generation I Pokémon speciesPokémonPoké MartCharacter encoding (Stadium) • Save
Generation II Pokémon speciesPokémonTrainerCharacter encoding (StadiumKorean) • 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
This data structure article is part of Project Games, a Bulbapedia project that aims to write comprehensive articles on the Pokémon games.