Character encoding (Generation III): Difference between revisions
Tiddlywinks (talk | contribs) m (→English: missed a non-English western symbol) |
m (Text replacement - "}}<br>↵{{Project Games notice" to "}} {{Project Games notice") |
||
(51 intermediate revisions by 10 users not shown) | |||
Line 1: | Line 1: | ||
The [[Generation III]] games use a proprietary '''character encoding''' to store text data. The Generation III encoding is greatly different from the encodings used in previous generations, with characters corresponding to different bytes. Versions of the games in different languages may use different encodings, some more different than others. | The [[Generation III]] games use a proprietary '''[[character encoding]]''' to store text data. The Generation III encoding is greatly different from the encodings used in previous generations, with characters corresponding to different bytes. Versions of the games in different languages may use different encodings, some more different than others. | ||
Some text strings are stored in fixed-length structures while others are stored in a block of text with separate strings simply terminated by 0xFF. In the large, variable-length blocks, usually another structure will have pointers to the appropriate string(s) within that block of text. In the fixed-length structures, strings are still terminated by 0xFF, but any remainder of the | Some text strings are stored in fixed-length structures while others are stored in a block of text with separate strings simply terminated by 0xFF. In the large, variable-length blocks, usually another structure will have pointers to the appropriate string(s) within that block of text. In the fixed-length structures, strings are still terminated by 0xFF, but any remainder of the allotted space is padded out with 0x00. | ||
==Compatibility== | |||
Unlike previous generations, all language versions are able to [[trade]] or {{pkmn|battle}} across languages. This includes between Japanese games and Western games, which was not previously supported. Due to the encodings mostly being compatible, when trading Pokémon between different languages, [[nickname]]s and [[Original Trainer]] names are usually displayed correctly, though Japanese games will only display the first five characters of names longer than five characters. | |||
All of the [[core series]] games for the [[Game Boy Advance]] and the side series games for the [[Nintendo GameCube]] losslessly preserve the codepoints used in Trainer names and Pokémon nicknames when traded, so they will be correctly displayed if returned to a game of the same language as its [[language of origin]], even if it may appear truncated or be displayed differently. | |||
===Nintendo GameCube=== | |||
{{main|GameCube character encoding (Generation III)}} | |||
When viewing or storing a Pokémon in [[Pokémon Box Ruby & Sapphire]] or trading a Pokémon between the Game Boy Advance games and {{g|Colosseum}} and {{XD}}, its [[nickname]] and [[Original Trainer]] need to be transcoded between this character encoding and that of the Nintendo GameCube game. | |||
===Pal Park=== | |||
{{main|Pal Park#Nicknames and Original Trainers|Pal Park → Nicknames and Original Trainers}} | |||
When transferring a Pokémon to a [[Generation IV]] game via [[Pal Park]], its nickname and Original Trainer need to be transcoded from this character encoding to [[Character encoding (Generation IV)|that of the Generation IV games]]. Due to [[List of glitches in Generation IV#Pal Park name encoding glitch|a bug]], some accented letters that normally cannot be entered by the player are incorrectly turned into a kana character instead. | |||
==Character sets== | ==Character sets== | ||
Every Western game in Generation III (English, French, Italian, German, and Spanish games) contains two character sets: their native set and the Japanese set. The different Western character sets are mostly identical, with only a few [[#Regional differences|regional differences]]. | |||
For most text, the game's native character set is used, but if a Pokémon's origin {{DL|Pokémon data structure (Generation III)|language}} is Japanese, its nickname and its [[Original Trainer]]'s name use the Japanese character set. The Japanese games only have the Japanese character set, but almost all user-enterable characters from the Western versions are encoded to roughly equivalent characters in the Japanese encoding. The key differences are <code>0xB8</code> (a comma in the Western versions but a period in Japanese), <code>0xAE</code> (a hyphen-minus in the Western versions but a {{wp|chōonpu}} in Japanese, which is visually similar), and <code>0xAD</code> and <code>0xB0</code>-<code>0xB4</code> (which display as the Japanese equivalents of the Western characters). | |||
===Western=== | |||
The table below shows the English character set in Pokémon Emerald. Some differences do exist between different [[#Differences between games and revisions|revisions and games]] and between different [[#Regional differences|languages]], detailed afterward. | |||
Characters on a white background are the only characters that can be input in names; <code>0xF1</code> - <code>0xF6</code> are only available for input in German games. Those on a light gray background may be used in other text strings (such as dialogue) depending on the language of the game. Characters on a dark gray background are unused values that mostly display as spaces in Pokémon FireRed, LeafGreen, and Emerald; in Pokémon Ruby and Sapphire, they are holdovers from the Japanese encoding. | |||
{| class="wikitable" style="text-align: center; border-collapse:collapse" cellpadding="2px" width="410px" | |||
|- style="white-space: nowrap" | |||
! || -0 || -1 || -2 || -3 || -4 || -5 || -6 || -7 || -8 || -9 || -A || -B || -C || -D || -E || -F | |||
|- | |- | ||
! | ! 0- | ||
| | | {{tt|<span style{{=}}"white-space: pre; padding: 0; background-color: teal"> </span>|Space}} | ||
|style="background: #ddd"| À | |||
| style="background:# | |style="background: #ddd"| Á | ||
| | |style="background: #ddd"| Â | ||
| | |style="background: #ddd"| Ç | ||
| | |style="background: #ddd"| È | ||
| | |style="background: #ddd"| É | ||
| | |style="background: #ddd"| Ê | ||
| | |style="background: #ddd"| Ë | ||
| | |style="background: #ddd"| Ì | ||
| | |style="background: #bbb"| | ||
| | |style="background: #ddd"| Î | ||
| style="background:# | |style="background: #ddd"| Ï | ||
| | |style="background: #ddd"| Ò | ||
| | |style="background: #ddd"| Ó | ||
| | |style="background: #ddd"| Ô | ||
| | |||
| Ô | |||
|- style="background:#ddd" | |- | ||
! 1- | |||
| | |style="background: #ddd"| Œ | ||
| | |style="background: #ddd"| Ù | ||
| | |style="background: #ddd"| Ú | ||
| Û | |style="background: #ddd"| Û | ||
| Ñ | |style="background: #ddd"| Ñ | ||
| ß | |style="background: #ddd"| ß | ||
| | |style="background: #ddd"| à | ||
| | |style="background: #ddd"| á | ||
| style="background:#bbb" | | |style="background: #bbb"| | ||
| ç | |style="background: #ddd"| ç | ||
| | |style="background: #ddd"| è | ||
| | |style="background: #ddd"| é | ||
| ê | |style="background: #ddd"| ê | ||
| | |style="background: #ddd"| ë | ||
| | |style="background: #ddd"| ì | ||
| style="background:#bbb" | | |style="background: #bbb"| | ||
|- style="background:#ddd" | |- | ||
! 2- | |||
| | |style="background: #ddd"| î | ||
| | |style="background: #ddd"| ï | ||
| | |style="background: #ddd"| ò | ||
| | |style="background: #ddd"| ó | ||
| ô | |style="background: #ddd"| ô | ||
| œ | |style="background: #ddd"| œ | ||
| | |style="background: #ddd"| ù | ||
| | |style="background: #ddd"| ú | ||
| û | |style="background: #ddd"| û | ||
| ñ | |style="background: #ddd"| ñ | ||
| º | |style="background: #ddd"| º | ||
| ª | |style="background: #ddd"| ª | ||
| | |style="background: #ddd"| ᵉʳ | ||
| style="background:# | |style="background: #ddd"| & | ||
| style="background:# | |style="background: #ddd"| + | ||
| style="background:#bbb" | | |style="background: #bbb"| | ||
|- style="background:#bbb" | |- | ||
! 3- | |||
| | |style="background: #bbb"| | ||
| | |style="background: #bbb"| | ||
| | |style="background: #bbb"| | ||
| | |style="background: #bbb"| | ||
| style="background:# | |style="background: #ddd"| <div style="border-bottom:1px dotted" title="Differs between regions"><small>Lv</small></div> | ||
| style="background:# | |style="background: #ddd"| = | ||
| | |style="background: #ddd"| ; | ||
| | |style="background: #bbb"| | ||
| | |style="background: #bbb"| | ||
| | |style="background: #bbb"| | ||
| | |style="background: #bbb"| | ||
| | |style="background: #bbb"| | ||
| | |style="background: #bbb"| | ||
| | |style="background: #bbb"| | ||
| | |style="background: #bbb"| | ||
| | |style="background: #bbb"| | ||
|- style="background:#bbb" | |- | ||
! 4- | |||
| | |style="background: #bbb"| | ||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|- | |- | ||
! 5- | ! 5- | ||
| style="background:# | | style="background:#ddd" | ▯ | ||
| style="background:#ddd" | ¿ | | style="background:#ddd" | ¿ | ||
| style="background:#ddd" | ¡ | | style="background:#ddd" | ¡ | ||
| {{PK}} | | style="background:#ddd" | {{PK}} | ||
| {{MN}} | | style="background:#ddd" | {{MN}} | ||
| | | style="background:#ddd" | [[File:Character 0x55 iii.png]] | ||
| | | style="background:#ddd" | [[File:Character 0x56 iii.png]] | ||
| [[ | | style="background:#ddd" | <div style="border-bottom:1px dotted" title="Differs between regions">[[File:Character 0x57 iii.png]]</div> | ||
| [[ | | style="background:#ddd" | <div style="border-bottom:1px dotted" title="Differs between regions">[[File:Character 0x58 iii.png]]</div> | ||
| [[ | | style="background:#ddd" | <div style="border-bottom:1px dotted" title="Differs between regions">[[File:Character 0x59 iii.png]]</div> | ||
| style="background:#ddd" | < | | style="background:#ddd" | Í | ||
|% | | style="background:#ddd" | % | ||
| ( | | style="background:#ddd" | ( | ||
| style="background:#ddd" | ) | |||
| style="background:# | | style="background:#bbb" | <div style="border-bottom:1px dotted" title="Differs between regions"> </div> | ||
| style="background:#bbb" | | | style="background:#bbb" | <div style="border-bottom:1px dotted" title="Differs between regions"> </div> | ||
| | |||
! style="background:# | |- | ||
| | ! 6- | ||
| | |style="background: #bbb"| <div style="border-bottom:1px dotted" title="Differs between regions"> </div> | ||
|style="background: #bbb"| <div style="border-bottom:1px dotted" title="Differs between regions"> </div> | |||
|style="background: #bbb"| <div style="border-bottom:1px dotted" title="Differs between regions"> </div> | |||
|style="background: #bbb"| <div style="border-bottom:1px dotted" title="Differs between regions"> </div> | |||
|style="background: #bbb"| <div style="border-bottom:1px dotted" title="Differs between regions"> </div> | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #ddd"| â | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #ddd"| í | |||
|- style="background:#bbb" | |- | ||
! 7- | |||
| | |style="background: #bbb"| | ||
| style="background:# | |style="background: #bbb"| | ||
| style="background:# | |style="background: #bbb"| | ||
| style="background:# | |style="background: #bbb"| | ||
| style="background:# | |style="background: #bbb"| | ||
| | |style="background: #bbb"| | ||
| | |style="background: #bbb"| | ||
| | |style="background: #bbb"| | ||
|style="background: #bbb"| | |||
| style="background:#ddd" | ↑ | |||
| style="background:#ddd" | ↓ | |||
| style="background:#ddd" | ← | |||
| style="background:#ddd" | → | |||
| style="background:#ddd" | * | |||
| style="background:#ddd" | * | |||
| style="background:#ddd" | * | |||
|- style="background:# | |- | ||
! 8- | |||
| | | style="background:#ddd" | * | ||
| style="background:#ddd" | * | |||
| style="background:#ddd" | * | |||
| style="background:#ddd" | * | |||
| style="background:#ddd" | ᵉ | |||
| style="background:#ddd" | < | |||
| style="background:#ddd" | > | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|- style="background:#bbb" | |- | ||
! 9- | |||
| | |style="background: #bbb"| | ||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|style="background: #bbb"| | |||
|- | |- | ||
! A- | ! A- | ||
| style="background:# | | style="background:#ddd" | ʳᵉ | ||
| 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 ||! ||? || . || - || style="background:#bbb" | ・ | |||
|- | |- | ||
! B- | ! B- | ||
| | | ‥ | ||
| <div style="border-bottom:1px dotted" title="Differs between regions">“</div> | |||
| <div style="border-bottom:1px dotted" title="Differs between regions">”</div> | |||
| ‘ || ' || ♂ || ♀ || style="background:#ddd" | {{pdollar}} || , || style="background:#ddd" | × || / || A || B || C || D || E | |||
|- | |- | ||
! C- | ! C- | ||
Line 148: | Line 237: | ||
|- | |- | ||
! E- | ! E- | ||
| l || m || n || o || p || q || r || s || t || u || v || w || x || y || z || | | l || m || n || o || p || q || r || s || t || u || v || w || x || y || z || style="background:#ddd" | ► | ||
|- style="background:#fff" | |||
! F- | |||
| style="background:#ddd" | : | |||
| Ä | |||
| Ö | |||
| Ü | |||
| ä | |||
| ö | |||
| ü | |||
| colspan=9 style="background:#ddd" | ''Control characters'' | |||
|} | |||
====Differences between games and revisions==== | |||
Codepoint <code>0xB0</code> represents an {{wp|ellipsis}}. In Pokémon Ruby, Sapphire, Colosseum, XD, and Box Ruby & Sapphire, it renders as a two-dot ellipsis (<code>‥</code>). In Pokémon FireRed, LeafGreen, and Emerald, it renders as a three-dot ellipsis (<code>…</code>) in the main font, but remains a two-dot ellipsis in the small font used on the party screen and the narrow font used in the Pokédex, bag, and shops. In subsequent generations, this character renders consistently as a three-dot ellipsis. | |||
Codepoint <code>0xB0</code> represents an {{wp|apostrophe}} or {{wp|right single quotation mark}}. In Pokémon Box Ruby & Sapphire, it is transcoded as a curly right single quotation mark (<code>’</code>). In Pokémon Colosseum and XD, it is transcoded as a straight apostrophe (<code>'</code>). | |||
Codepoints <code>0x7D</code>-<code>0x83</code>, marked by asterisks (*) above, print spaces 1-7 pixels wide (in ascending order of the hex value). In FireRed and LeafGreen, <code>0x50</code> and <code>0x7D</code>-<code>0x83</code> are not used and print as regular spaces like other unused characters. | |||
In certain languages, codepoints <code>0x34</code>, <code>0x57</code>-<code>0x59</code>, and <code>0x64</code> differ between games, [[#Regional differences|as detailed below]]. | |||
In Pokémon Ruby and Sapphire, many values print Japanese characters—holdovers from the original Japanese encoding. These include: | |||
* All unused characters (on a dark gray background above) | |||
* <code>0x50</code> and <code>0x7D</code> - <code>0x83</code> | |||
* <code>0x36</code>, <code>0x84</code> - <code>0x86</code>, and <code>0xA0</code>, in version 1.0 of the English Ruby and Sapphire only | |||
====Regional differences==== | |||
A few characters differ between regions, and among them are quotation marks. These can be input into names, which means a Pokémon with quotation marks in its nickname or OT name will display differently if traded to a game of a different region. | |||
In the table below, the underscores (<code>_</code>) stand for spaces. | |||
{| class="wikitable" style="text-align: center; background-color: #fff;" | |||
! | |||
! English | |||
! Spanish | |||
! Italian | |||
! German | |||
! French | |||
|- style="background-color:#ddd" | |||
! <code>0x34</code> | |||
| <small>Lv</small> | |||
| <small>Nv</small>{{sup/3|RS}}<br><small>Nv.</small>{{sup/3|E}}{{sup/3|FRLG}} | |||
| <small>L.</small> | |||
| <small>Lv.</small> | |||
| <small>N.</small> | |||
|- style="background-color:#ddd" | |||
! <code>0x57</code> - <code>0x59</code> | |||
| [[File:Character 0x57 iii.png]][[File:Character 0x58 iii.png]][[File:Character 0x59 iii.png]] | |||
| [[File:Character 0x57 es iii.png]][[File:Character 0x58 es iii.png]][[File:Character 0x59 es iii.png]] | |||
| _, _, <sub>M</sub>{{sup/3|RS}}<br>_, _, _{{sup/3|E}}{{sup/3|FRLG}} | |||
| [[File:Character 0x57 de iii.png]][[File:Character 0x58 de iii.png]][[File:Character 0x59 de iii.png]] | |||
| [[File:Character 0x57 fr iii.png]][[File:Character 0x58 fr iii.png]][[File:Character 0x59 fr iii.png]] | |||
|- style="background-color:#bbb" | |||
! <code>0x5E</code> - <code>0x63</code> | |||
| colspan=2 | | |||
| style="background-color:#ddd" | [[File:Character 0x5E it iii.png]][[File:Character 0x5F it iii.png]][[File:Character 0x60 it iii.png]][[File:Character 0x61 it iii.png]][[File:Character 0x62 it iii.png]], [[File:Character 0x63 it iii.png]] | |||
| colspan=2 | | |||
|- | |||
! <code>0x64</code> | |||
| colspan=4 style="background-color:#bbb" | | |||
| style="background-color:#ddd" | <small>[[Battle Point|Pco]]</small>{{sup/3|E}} | |||
|- | |||
! <code>0xB1</code> | |||
| colspan=3 | “ | |||
| „ | |||
| « | |||
|- | |||
! <code>0xB2</code> | |||
| colspan=3 | ” | |||
| “ | |||
| » | |||
|} | |} | ||
===Japanese=== | ===Japanese=== | ||
Only the characters on a white background below can be input in names. The characters on a dark gray background are printed as spaces in Pokémon FireRed, LeafGreen, and Emerald. Otherwise, the Japanese character set has no differences between games or revisions. Codepoint <code>0xB0</code> represents an {{wp|ellipsis}}. In Pokémon Ruby, Sapphire, Emerald, Colosseum, XD, and Box Ruby & Sapphire, it renders as a two-dot ellipsis (<code lang="ja">‥</code>). In Pokémon FireRed and LeafGreen, it renders as a three-dot ellipsis (<code lang="ja">…</code>). In subsequent generations, this character renders consistently as a three-dot ellipsis. | |||
|- | |||
{| class="wikitable" style="text-align: center; border-collapse:collapse" cellpadding="2px" width="410px" | |||
|- 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 | ||
|- | |- | ||
! 0- | ! 0- | ||
| || あ || い || う || え || お || か || き || く || け || こ || さ || し || す || せ || そ | | {{tt|<span style{{=}}"white-space: pre; padding: 0; background-color: teal"> </span>|Fullwidth space}} || あ || い || う || え || お || か || き || く || け || こ || さ || し || す || せ || そ | ||
|- | |- | ||
! 1- | ! 1- | ||
Line 201: | Line 357: | ||
|- | |- | ||
! A- | ! A- | ||
| ッ || 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || | | ッ || 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || ! || ? || 。 || ー || ・ | ||
|- | |||
! B- | |||
| lang="ja" | ‥ || 『 || 』 || 「 || 」 || ♂ || ♀ || style="background:#ddd" | 円 || style="background:#ddd" | . || style="background:#ddd" lang="ja" | × || / || A || B || C || D || E | |||
|- | |||
! C- | |||
| F || G || H || I || J || K || L || M || N || O || P || Q || R || S || T || U | |||
|- | |||
! D- | |||
| V || W || X || Y || Z || a || b || c || d || e || f || g || h || i || j || k | |||
|- | |||
! E- | |||
| l || m || n || o || p || q || r || s || t || u || v || w || x || y || z || style="background:#ddd" | ► | |||
|- | |||
! F- | |||
|style="background: #ddd"| : | |||
|style="background: #ddd"| Ä | |||
|style="background: #ddd"| Ö | |||
|style="background: #ddd"| Ü | |||
|style="background: #ddd"| ä | |||
|style="background: #ddd"| ö | |||
|style="background: #ddd"| ü | |||
|style="background: #ddd" colspan=9 | ''Control characters'' | |||
|} | |||
==Special characters== | |||
===Extra symbols=== | |||
====Pokémon Ruby and Sapphire==== | |||
In Pokémon Ruby and Sapphire, the escape sequence <code>0xFC 0x0C</code> is used as an escape code for the following characters, depending on the following byte. These characters are stored in the game's fonts at their respective indices, but the escape sequence forces these characters to be printed directly, rather than possibly interpreted as a control character. If the byte is not a control character byte, that byte prints normally. | |||
{| class="wikitable" style="text-align: center; border-collapse:collapse" cellpadding="2px" width="410px" | |||
|- style="white-space: nowrap" | |||
! || -0 || -1 || -2 || -3 || -4 || -5 || -6 || -7 || -8 || -9 || -A || -B || -C || -D || -E || -F | |||
|- | |||
! F- | |||
| style="background: #000" colspan=7 | | |||
| ↑ | |||
| ↓ | |||
| ← | |||
| → | |||
| + | |||
| style="background: #000" colspan=4 | | |||
|} | |||
As <code>0xF7</code>-<code>0xF9</code> are not control characters in these games, they will also print normally even if not escaped, though in-game text always escapes them. | |||
In Japanese games, <code>0xFB</code> is instead used to produce "=" in the [[Options]] screen and "&" in the [[Game credits|credits]]. Western versions almost never use these codepoints, instead preferring to use the equivalent characters in the <code>0x01</code>-<code>0xA0</code> range. | |||
The control characters from <code>0xFC</code>-<code>0xFF</code> do not produce any characters. In the English games, nothing is printed, while in the Japanese games, miscellaneous data appears to be printed. | |||
====Pokémon FireRed, LeafGreen, and Emerald==== | |||
In Pokémon FireRed, LeafGreen, and Emerald, either the escape sequence <code>0xF9</code> or <code>0xFC 0x0C</code> is used as an escape code for the following characters, depending on the following byte. These characters are stored in the game's fonts beginning at index 0x100, after the main set of characters. Characters on a dark gray background are unused values that display 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" cellpadding="2px" width="410px" | |||
|+ Western font | |||
|- style="white-space: nowrap" | |||
! || -0 || -1 || -2 || -3 || -4 || -5 || -6 || -7 || -8 || -9 || -A || -B || -C || -D || -E || -F | |||
|- | |||
! 0- | |||
| ↑ || ↓ || ← || → || + | |||
| <div style="border-bottom:1px dotted" title="Differs between regions"><small>Lv</small></div> | |||
| <div style="border-bottom:1px dotted" title="Differs between regions"><small>PP</small></div> | |||
| <small>ID</small> | |||
| <div style="border-bottom:1px dotted" title="Differs between regions"><small>No</small></div> | |||
| _ || ① || ② || ③ || ④ || ⑤ || ⑥ | |||
|- | |||
! 1- | |||
| ⑦ || ⑧ || ⑨ || ( || ) || ◎ || △ | |||
| lang="ja" | × | |||
| style="background: #bbb" | <div style="border-bottom:1px dotted" title="Differs between regions"> </div> | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
|- | |||
! 2- | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
|- | |||
! 3- | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
|- | |||
! 4- | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
|- | |||
! 5- | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
|- | |||
! 6- | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
|- | |||
! 7- | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
|- | |||
! 8- | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
|- | |||
! 9- | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
|- | |||
! A- | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
|- | |||
! B- | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
|- | |||
! C- | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
|- | |||
! D- | |||
| [[File:Character 0x1D0 iii.png|Underscore]] | |||
| [[File:Character 0x1D1 iii.png|Vertical bar]] | |||
| [[File:Character 0x1D2 iii.png|Overline]] | |||
| [[File:Character 0x1D3 iii.png|Tilde]] | |||
| [[File:Character 0x1D4 iii.png|Left parenthesis]] | |||
| [[File:Character 0x1D5 iii.png|Right parenthesis]] | |||
| [[File:Character 0x1D6 iii.png|Subset of]] | |||
| [[File:Character 0x1D7 iii.png|Greater than]] | |||
| [[File:Character 0x1D8 iii.png|Left eye]] | |||
| [[File:Character 0x1D9 iii.png|Right eye]] | |||
| [[File:Character 0x1DA iii.png|At sign]] | |||
| [[File:Character 0x1DB iii.png|Semicolon]] | |||
| [[File:Character 0x1DC iii.png|Plus sign]] | |||
| [[File:Character 0x1DD iii.png|Minus sign]] | |||
| [[File:Character 0x1DE iii.png|Equals sign]] | |||
| [[File:Character 0x1DF iii.png|Spiral]] | |||
|- | |||
! E- | |||
| [[File:Character 0x1E0 iii.png|Tongue]] | |||
| [[File:Character 0x1E1 iii.png|Triangle outline]] | |||
| [[File:Character 0x1E2 iii.png|Acute accent]] | |||
| [[File:Character 0x1E3 iii.png|Grave accent]] | |||
| [[File:Character 0x1E4 iii.png|Circle]] | |||
| [[File:Character 0x1E5 iii.png|Down-pointing triangle]] | |||
| [[File:Character 0x1E6 iii.png|Square]] | |||
| [[File:Character 0x1E7 iii.png|Heart]] | |||
| [[File:Character 0x1E8 iii.png|Crescent]] | |||
| [[File:Character 0x1E9 iii.png|Music note]] | |||
| [[File:Character 0x1EA iii.png|Poké Ball]] | |||
| [[File:Character 0x1EB iii.png|Thunderbolt]] | |||
| [[File:Character 0x1EC iii.png|Leaf]] | |||
| [[File:Character 0x1ED iii.png|Fire]] | |||
| [[File:Character 0x1EE iii.png|Water]] | |||
| [[File:Character 0x1EF iii.png|Right hand]] | |||
|- | |||
! F- | |||
| [[File:Character 0x1F0 iii.png|Left hand]] | |||
| [[File:Character 0x1F1 iii.png|Flower]] | |||
| [[File:Character 0x1F2 iii.png|Eye]] | |||
| [[File:Character 0x1F3 iii.png|Eye]] | |||
| [[File:Character 0x1F4 iii.png|Irritated face]] | |||
| [[File:Character 0x1F5 iii.png|Mischievous face]] | |||
| [[File:Character 0x1F6 iii.png|Happy face]] | |||
| [[File:Character 0x1F7 iii.png|Angry face]] | |||
| [[File:Character 0x1F8 iii.png|Surprised face]] | |||
| [[File:Character 0x1F9 iii.png|Big smile face]] | |||
| [[File:Character 0x1FA iii.png|Evil face]] | |||
| [[File:Character 0x1FB iii.png|Tired face]] | |||
| [[File:Character 0x1FC iii.png|Neutral face]] | |||
| [[File:Character 0x1FD iii.png|Shocked face]] | |||
| [[File:Character 0x1FE iii.png|Big anger face]] | |||
| style="background: #bbb" | | |||
|} | |||
{| class="wikitable" style="text-align: center; border-collapse:collapse; margin: 0" cellpadding="2px" width="410px" | |||
|+ lang="en" | Japanese font | |||
|- style="white-space: nowrap" | |||
! || -0 || -1 || -2 || -3 || -4 || -5 || -6 || -7 || -8 || -9 || -A || -B || -C || -D || -E || -F | |||
|- | |||
! 0- | |||
| ↑ || ↓ || ← || → || + | |||
| <small>Lv</small> | |||
| <small>PP</small> | |||
| <div style="border-bottom:1px dotted" title="Differs between fonts"><small>ID</small></div> | |||
| <small>No</small> | |||
| _ || ① || ② || ③ || ④ || ⑤ || ⑥ | |||
|- | |||
! 1- | |||
| ⑦ || ⑧ || ⑨ || ( || ) || ◎ || △ | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
|- | |||
! 2- | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
|- | |||
! 3- | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
|- | |||
! 4- | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
|- | |||
! 5- | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
|- | |||
! 6- | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
|- | |||
! 7- | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
|- | |||
! 8- | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
|- | |||
! 9- | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
|- | |||
! A- | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
|- | |- | ||
! B- | ! B- | ||
| style=" | | style="background: #bbb" | | ||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
|- | |- | ||
! C- | ! C- | ||
| | | style="background: #bbb" | | ||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| style="background: #bbb" | | |||
| [[File:Character 0x1CC ja iii.png|R Button]] | |||
| [[File:Character 0x1CD ja iii.png|大]] | |||
| [[File:Character 0x1CE ja iii.png|小]] | |||
| [[File:Character 0x1CF ja iii.png|゛]] | |||
|- | |- | ||
! D- | ! D- | ||
| | | [[File:Character 0x1D0 ja iii.png|゜]] | ||
| [[File:Character 0x1D1 iii.png|Vertical bar]] | |||
| [[File:Character 0x1D2 iii.png|Overline]] | |||
| [[File:Character 0x1D3 iii.png|Tilde]] | |||
| [[File:Character 0x1D4 iii.png|Left parenthesis]] | |||
| [[File:Character 0x1D5 iii.png|Right parenthesis]] | |||
| [[File:Character 0x1D6 iii.png|Subset of]] | |||
| [[File:Character 0x1D7 iii.png|Greater than]] | |||
| [[File:Character 0x1D8 iii.png|Left eye]] | |||
| [[File:Character 0x1D9 iii.png|Right eye]] | |||
| [[File:Character 0x1DA iii.png|At sign]] | |||
| [[File:Character 0x1DB iii.png|Semicolon]] | |||
| [[File:Character 0x1DC iii.png|Plus sign]] | |||
| [[File:Character 0x1DD iii.png|Minus sign]] | |||
| [[File:Character 0x1DE iii.png|Equals sign]] | |||
| [[File:Character 0x1DF iii.png|Spiral]] | |||
|- | |- | ||
! E- | ! E- | ||
| | | [[File:Character 0x1E0 iii.png|Tongue]] | ||
| [[File:Character 0x1E1 iii.png|Triangle outline]] | |||
| [[File:Character 0x1E2 iii.png|Acute accent]] | |||
| [[File:Character 0x1E3 iii.png|Grave accent]] | |||
| [[File:Character 0x1E4 iii.png|Circle]] | |||
| [[File:Character 0x1E5 iii.png|Down-pointing triangle]] | |||
| [[File:Character 0x1E6 iii.png|Square]] | |||
| [[File:Character 0x1E7 iii.png|Heart]] | |||
| [[File:Character 0x1E8 iii.png|Crescent]] | |||
| [[File:Character 0x1E9 iii.png|Music note]] | |||
| [[File:Character 0x1EA iii.png|Poké Ball]] | |||
| [[File:Character 0x1EB iii.png|Thunderbolt]] | |||
| [[File:Character 0x1EC iii.png|Leaf]] | |||
| [[File:Character 0x1ED iii.png|Fire]] | |||
| [[File:Character 0x1EE iii.png|Water]] | |||
| [[File:Character 0x1EF iii.png|Right hand]] | |||
|- | |- | ||
! F- | ! F- | ||
|: || | | [[File:Character 0x1F0 iii.png|Left hand]] | ||
| [[File:Character 0x1F1 iii.png|Flower]] | |||
| [[File:Character 0x1F2 iii.png|Eye]] | |||
| [[File:Character 0x1F3 iii.png|Eye]] | |||
| [[File:Character 0x1F4 iii.png|Irritated face]] | |||
| [[File:Character 0x1F5 iii.png|Mischievous face]] | |||
| [[File:Character 0x1F6 iii.png|Happy face]] | |||
| [[File:Character 0x1F7 iii.png|Angry face]] | |||
| [[File:Character 0x1F8 iii.png|Surprised face]] | |||
| [[File:Character 0x1F9 iii.png|Big smile face]] | |||
| [[File:Character 0x1FA iii.png|Evil face]] | |||
| [[File:Character 0x1FB iii.png|Tired face]] | |||
| [[File:Character 0x1FC iii.png|Neutral face]] | |||
| [[File:Character 0x1FD iii.png|Shocked face]] | |||
| [[File:Character 0x1FE iii.png|Big anger face]] | |||
| style="background: #bbb" | | |||
|} | |||
</div> | |||
<code>0xF9</code> is used in most cases, but most arrows in game text are still written using the escape sequence <code>0xFC 0x0C</code> in Japanese versions or the <code>0x7A</code>-<code>0x7D</code> range in Western versions. | |||
=====Differences between games and revisions===== | |||
In Western versions of Pokémon FireRed and LeafGreen, the character "{{j|×}}" was added at <code>0x117</code> to preserve the original appearance of the fullwidth character when displaying type matchups in the [[Help System]], as the halfwidth character "×" at <code>0xB9</code> used elsewhere in the game is slightly smaller and does not match the width of "◎" and "△". | |||
In Western versions of Pokémon FireRed and LeafGreen, the character "[[File:Character 0x1D0 iii.png|Underscore]]" was added at <code>0x1D0</code> as an 8-pixel wide underscore for the [[Union Room]] chat, distinct from the underscore which leaves a 1-pixel gap between it and the previous character at <code>0x109</code> used in the [[easy chat system]] in Western versions and in both interfaces in Japanese versions. | |||
In Japanese versions of Pokémon Emerald, the characters from <code>0x1CC</code>-<code>0x1D0</code> were added to explain what function the R Button performs on the [[text entry]] screen, though <code>0x1CC</code> was not actually used in the final game. | |||
=====Regional differences===== | |||
A few characters differ between regions. The table below describes how they are displayed in the main font. | |||
{| class="wikitable" style="text-align: center; background-color: #fff;" | |||
! | |||
! Japanese | |||
! English | |||
! Spanish | |||
! Italian | |||
! German | |||
! French | |||
|- | |||
! <code>0x105</code> | |||
| colspan="2" | <small>Lv</small> | |||
| <small>Nv.</small> | |||
| <small>L.</small> | |||
| <small>Lv.</small> | |||
| <small>N.</small> | |||
|- | |||
! <code>0x106</code> | |||
| colspan=4 | <small>PP</small> | |||
| <small>AP</small> | |||
| <small>PP</small> | |||
|- | |||
! <code>0x107</code> | |||
| colspan=6 | <small>ID</small> | |||
|- | |||
! <code>0x108</code> | |||
| colspan="2" | <small>No</small> | |||
| <small>N.º</small> | |||
| <small>Nº</small> | |||
| <small>Nr.</small> | |||
| <small>Nº</small> | |||
|} | |||
In Japanese versions, the "<small>ID</small>" character is displayed as "<small>ID.</small>" in the wider fonts introduced in Pokémon FireRed and LeafGreen. | |||
In the small font, each character is only 8 pixels wide, so the sequence <code>0x105 0x118</code> is used in Spanish and German versions to display the full 9-pixel wide "<small>Nv</small>" and "<small>Lv.</small>" strings. | |||
===Braille=== | |||
The table below shows the codepoints corresponding to each braille pattern. They are not ordered according to the braille numeric sequence; rather, they are stored in a binary ordering with dots 1, 4, 2, 5, 3, and 6 corresponding to the lowest six bits from lowest to highest. | |||
In Pokémon Ruby, Sapphire, and Emerald, each braille message is preceded by six bytes describing the size and position of the window and text. However, Pokémon Emerald ignores these values and calculates them based on the contents of the message itself. | |||
In Pokémon FireRed and LeafGreen, braille is displayed like normal text in the standard dialogue window. | |||
{| class="wikitable" style="text-align: center; border-collapse:collapse; margin: 0" cellpadding="2px" width="410px" | |||
|+ Western font | |||
|- style="white-space: nowrap" | |||
! || -0 || -1 || -2 || -3 || -4 || -5 || -6 || -7 || -8 || -9 || -A || -B || -C || -D || -E || -F | |||
|- | |||
! 0- | |||
| ⠀ || ⠁ || ⠈ || ⠉ || ⠂ || ⠃ || ⠊ || ⠋ || ⠐ || ⠑ || ⠘ || ⠙ || ⠒ || ⠓ || ⠚ || ⠛ | |||
|- | |||
! 1- | |||
| ⠄ || ⠅ || ⠌ || ⠍ || ⠆ || ⠇ || ⠎ || ⠏ || ⠔ || ⠕ || ⠜ || ⠝ || ⠖ || ⠗ || ⠞ || ⠟ | |||
|- | |||
! 2- | |||
| ⠠ || ⠡ || ⠨ || ⠩ || ⠢ || ⠣ || ⠪ || ⠫ || ⠰ || ⠱ || ⠸ || ⠹ || ⠲ || ⠳ || ⠺ || ⠻ | |||
|- | |||
! 3- | |||
| ⠤ || ⠥ || ⠬ || ⠭ || ⠦ || ⠧ || ⠮ || ⠯ || ⠴ || ⠵ || ⠼ || ⠽ || ⠶ || ⠷ || ⠾ || ⠿ | |||
|} | |||
===Keypad icons=== | |||
In Pokémon FireRed, LeafGreen, and Emerald, the escape sequence <code>0xF8</code> is used as an escape code for the following characters, depending on the following byte. | |||
{| class="wikitable" style="text-align: center; border-collapse:collapse" cellpadding="2px" width="410px" | |||
|- style="white-space: nowrap" | |||
! || -0 || -1 || -2 || -3 || -4 || -5 || -6 || -7 || -8 || -9 || -A || -B || -C | |||
|- | |||
! 0- | |||
| [[File:Character 0x00 iii keypad.png|A Button]] | |||
| [[File:Character 0x01 iii keypad.png|B Button]] | |||
| [[File:Character 0x02 iii keypad.png|L Button]] | |||
| [[File:Character 0x03 iii keypad.png|R Button]] | |||
| [[File:Character 0x04 iii keypad.png|START]] | |||
| [[File:Character 0x05 iii keypad.png|SELECT]] | |||
| [[File:Character 0x06 iii keypad.png|Control Pad up]] | |||
| [[File:Character 0x07 iii keypad.png|Control Pad down]] | |||
| [[File:Character 0x08 iii keypad.png|Control Pad left]] | |||
| [[File:Character 0x09 iii keypad.png|Control Pad right]] | |||
| [[File:Character 0x0A iii keypad.png|Control Pad up-down]] | |||
| [[File:Character 0x0B iii keypad.png|Control Pad left-right]] | |||
| [[File:Character 0x0C iii keypad.png|Control Pad]] | |||
|} | |} | ||
==Control characters== | ==Control characters== | ||
{{ | * 0xF7 is an {{wp|escape character}} for dynamic data.{{sup/3|FRLG}}{{sup/3|E}} | ||
* 0xF8 is an escape character for {{DL||keypad icons}}.{{sup/3|FRLG}}{{sup/3|E}} | |||
* 0xF9 is an escape character for {{DL||extra symbols}}.{{sup/3|FRLG}}{{sup/3|E}} | |||
* 0xFA and 0xFB both mark a prompt for the player to press a button to continue the dialogue. However, they will print the new line of dialogue differently: 0xFA will scroll the previous dialogue up one line before printing the next line, while 0xFB will clear the dialogue box entirely. | * 0xFA and 0xFB both mark a prompt for the player to press a button to continue the dialogue. However, they will print the new line of dialogue differently: 0xFA will scroll the previous dialogue up one line before printing the next line, while 0xFB will clear the dialogue box entirely. | ||
* 0xFC is an | * 0xFC is an escape character that leads to several different functions (see [[#0xFC functions|below]]). | ||
* 0xFD is an escape character for variables, such as the player's name or a Pokémon's name (see [[#0xFD variables|below]]). | |||
* 0xFD is an escape character for variables, such as the player's name or a Pokémon's name. | |||
* 0xFE is a line break. | * 0xFE is a line break. | ||
* 0xFF is a terminator, marking the ends of strings. | * 0xFF is a terminator, marking the ends of strings. | ||
===0xFC functions=== | |||
{| class="wikitable" | |||
! Index || Function || Length || Values | |||
|- | |||
! colspan="4" | Introduced in Japanese versions of Ruby and Sapphire | |||
|- | |||
| 0x00 || do nothing || 1 || | |||
|- | |||
| 0x01 || change the text color || 2 || [[#Color values|color index]] (byte) | |||
|- | |||
| 0x02 || change the highlight color || 2 || color index (byte) | |||
|- | |||
| 0x03 || change the shadow color || 2 || color index (byte) | |||
|- | |||
| 0x04 || change the text, highlight, and shadow color || 4 || text color index (byte)<br>highlight color index (byte)<br>shadow color index (byte) | |||
|- | |||
| 0x05 || change the palette{{sup/3|RS}} || 2 || palette index (byte) | |||
|- | |||
| 0x06 || change font || 2 || font index (byte) | |||
|- | |||
| 0x07 || reset font to the default{{sup/3|RS}} || 1 || | |||
|- | |||
| 0x08 || pause text display for a period of time || 2 || length (byte) | |||
|- | |||
| 0x09 || wait for a button to be pressed || 1 || | |||
|- | |||
| 0x0A || wait for a sound effect to finish || 1 || | |||
|- | |||
| 0x0B || play background music || 3 || index (two bytes, little endian) | |||
|- | |||
| 0x0C || print an {{DL||extra symbols|extra symbol}} || 2 || character index (byte) | |||
|- | |||
| 0x0D || set the X coordinate of the cursor (in all versions except Western RS) || 2 || number of pixels (byte) | |||
|- | |||
| 0x0E || set the Y coordinate of the cursor || 2 || number of pixels (byte) | |||
|- | |||
| 0x0F || clear the window || 1 || | |||
|- | |||
| 0x10 || play a sound effect || 3 || index (two bytes, little endian) | |||
|- | |||
! colspan="4" | Introduced in Western versions of Ruby and Sapphire | |||
|- | |||
| 0x11 || print a space of the specified width || 2 || number of pixels (byte) | |||
|- | |||
| 0x12 || set the X coordinate of the cursor || 2 || number of pixels (byte) | |||
|- | |||
| 0x13 || clear the line until the specified X coordinate || 2 || number of pixels (byte) | |||
|- | |||
| 0x14 || set the minimum character width || 2 || number of pixels (byte) | |||
|- | |||
| 0x15 || display text in the Japanese font || 1 || | |||
|- | |||
| 0x16 || display text in the international font || 1 || | |||
|- | |||
! colspan="4" | Introduced in Japanese versions of FireRed and LeafGreen | |||
|- | |||
| 0x17 || pause the background music || 1 || | |||
|- | |||
| 0x18 || resume playing the background music || 1 || | |||
|} | |||
Although <code>0xFC 0x00</code> does not have any effect in regular text, the Western versions of Pokémon Ruby and Sapphire handle it specially in two cases. | |||
* It is used as a placeholder for a one-digit number in the text "Appeal no. <number>!" used during {{pkmn|Contest}}s. | |||
* It is used to abbreviate the names of cities and towns in the Trainer's Eyes function of the [[PokéNav]]. For example, "VERDANTURF TOWN" is shortened to "VERDANTURF". | |||
====Color values==== | |||
A table of available text, highlight, and shadow colors is shown below. | |||
{| style="border: 1px solid #999; border-collapse: collapse;" | |||
|- style="background: #ccc;" | |||
! Byte | |||
! style="width:80px" | {{gameabbrev3|RS}} | |||
! style="width:80px" | {{gameabbrev3|FRLG}} | |||
! style="width:80px" | {{gameabbrev3|E}} | |||
|- | |||
| 0x00 | |||
| Transparent | |||
| style="background: #FFF" | | |||
| style="background: #FFF" | | |||
|- | |||
| 0x01 | |||
| style="background: #444" | | |||
| style="background: #FFF" | | |||
| style="background: #FFF" | | |||
|- | |||
| 0x02 | |||
| style="background: #F00" | | |||
| style="background: #666" | | |||
| style="background: #666" | | |||
|- | |||
| 0x03 | |||
| style="background: #0F0" | | |||
| style="background: #DDD" | | |||
| style="background: #DDD" | | |||
|- | |||
| 0x04 | |||
| style="background: #00F" | | |||
| style="background: #F00" | | |||
| style="background: #F00" | | |||
|- | |||
| 0x05 | |||
| style="background: #FF0" | | |||
| style="background: #FB7" | | |||
| style="background: #FB7" | | |||
|- | |||
| 0x06 | |||
| style="background: #0FF" | | |||
| style="background: #290" | | |||
| style="background: #290" | | |||
|- | |||
| 0x07 | |||
| style="background: #F0F" | | |||
| style="background: #9F9" | | |||
| style="background: #9F9" | | |||
|- | |||
| 0x08 | |||
| style="background: #DDD" | | |||
| style="background: #35C" | | |||
| style="background: #35C" | | |||
|- | |||
| 0x09 | |||
| style="background: #000" | | |||
| style="background: #ACF" | | |||
| style="background: #ACF" | | |||
|- | |||
| 0x0A | |||
| style="background: #000" | | |||
| style="background: #FFF" | | |||
| style="background: #FFF" | | |||
|- | |||
| 0x0B | |||
| style="background: #EEE" | | |||
| style="background: #DEF" | | |||
| style="background: #EEE" | | |||
|- | |||
| 0x0C | |||
| style="background: #FFF" | | |||
| style="background: #ADE" | | |||
| style="background: #FFF" | | |||
|- | |||
| 0x0D | |||
| style="background: #9CF" | | |||
| style="background: #EFF" | | |||
| style="background: #0F9" | | |||
|- | |||
| 0x0E | |||
| style="background: #7BE" | | |||
| style="background: #7AC" | | |||
| style="background: #0CB" | | |||
|- | |||
| 0x0F | |||
| style="background: #FFF" | | |||
| style="background: #47A" | | |||
| style="background: #47A" | | |||
|} | |||
===0xFD variables=== | |||
When 0xFD is followed by one of the following bytes, it prints a text variable or version-dependent text. Version-dependent text is only used in Pokémon Ruby, Sapphire, and Emerald; in Pokémon Emerald, all of these values are the same as Pokémon Sapphire, except the version name. The text printed by version-dependent text variables is constant within a single game, but varies between versions and languages. | |||
;Text variables | |||
*0x01: the player's name | |||
*0x02, 0x03, or 0x04: whatever text has been assigned to one of three buffers using a variety of script commands | |||
*0x05: an honorific corresponding to the player's gender in Japanese (<code>くん</code> for male, <code>ちゃん</code> for female), or nothing in Western languages | |||
*0x06: the rival's name | |||
;Version-dependent text | |||
{| class="wikitable" | |||
! rowspan=2 | Variable ID | |||
! rowspan=2 | Description | |||
! colspan=5 | English content | |||
|- | |||
! {{GameIcon|Ru}} | |||
! {{GameIcon|Sa}} | |||
! {{GameIcon|Em}} | |||
|- | |||
| 0x07 || the game's name || RUBY || SAPPHIRE || EMERALD | |||
|- | |||
| 0x08 || the name of the villainous team || MAGMA ||colspan=2| AQUA | |||
|- | |||
| 0x09 || the name of the non-villainous team || AQUA ||colspan=2| MAGMA | |||
|- | |||
| 0x0A || the name of the villainous team's leader || MAXIE ||colspan=2| ARCHIE | |||
|- | |||
| 0x0B || the name of the non-villainous team's leader || ARCHIE ||colspan=2| MAXIE | |||
|- | |||
| 0x0C || the name of the villainous team's Legendary Pokémon || GROUDON ||colspan=2| KYOGRE | |||
|- | |||
| 0x0D || the name of the opposing Legendary Pokémon || KYOGRE ||colspan=2| GROUDON | |||
|} | |||
==Trivia== | ==Trivia== | ||
*In the name field for {{pkmn|Egg}}s, the game places the bytes <code>0x60 0x6F 0x8B</code> corresponding to タマゴ (''tamago'', the Japanese word for egg). This remains in the English version even though the characters have been replaced. | *In the name field for {{pkmn|Egg}}s, the game places the bytes <code>0x60 0x6F 0x8B</code> corresponding to タマゴ (''tamago'', the Japanese word for egg). This remains in the English version even though the characters have been replaced. | ||
{{data structure}} | {{data structure}} | ||
{{Project Games notice|data structure}} | {{Project Games notice|data structure}} |
Latest revision as of 17:34, 16 September 2024
The Generation III games use a proprietary character encoding to store text data. The Generation III encoding is greatly different from the encodings used in previous generations, with characters corresponding to different bytes. Versions of the games in different languages may use different encodings, some more different than others.
Some text strings are stored in fixed-length structures while others are stored in a block of text with separate strings simply terminated by 0xFF. In the large, variable-length blocks, usually another structure will have pointers to the appropriate string(s) within that block of text. In the fixed-length structures, strings are still terminated by 0xFF, but any remainder of the allotted space is padded out with 0x00.
Compatibility
Unlike previous generations, all language versions are able to trade or battle across languages. This includes between Japanese games and Western games, which was not previously supported. Due to the encodings mostly being compatible, when trading Pokémon between different languages, nicknames and Original Trainer names are usually displayed correctly, though Japanese games will only display the first five characters of names longer than five characters.
All of the core series games for the Game Boy Advance and the side series games for the Nintendo GameCube losslessly preserve the codepoints used in Trainer names and Pokémon nicknames when traded, so they will be correctly displayed if returned to a game of the same language as its language of origin, even if it may appear truncated or be displayed differently.
Nintendo GameCube
- Main article: GameCube character encoding (Generation III)
When viewing or storing a Pokémon in Pokémon Box Ruby & Sapphire or trading a Pokémon between the Game Boy Advance games and Pokémon Colosseum and XD, its nickname and Original Trainer need to be transcoded between this character encoding and that of the Nintendo GameCube game.
Pal Park
- Main article: Pal Park → Nicknames and Original Trainers
When transferring a Pokémon to a Generation IV game via Pal Park, its nickname and Original Trainer need to be transcoded from this character encoding to that of the Generation IV games. Due to a bug, some accented letters that normally cannot be entered by the player are incorrectly turned into a kana character instead.
Character sets
Every Western game in Generation III (English, French, Italian, German, and Spanish games) contains two character sets: their native set and the Japanese set. The different Western character sets are mostly identical, with only a few regional differences.
For most text, the game's native character set is used, but if a Pokémon's origin language is Japanese, its nickname and its Original Trainer's name use the Japanese character set. The Japanese games only have the Japanese character set, but almost all user-enterable characters from the Western versions are encoded to roughly equivalent characters in the Japanese encoding. The key differences are 0xB8
(a comma in the Western versions but a period in Japanese), 0xAE
(a hyphen-minus in the Western versions but a chōonpu in Japanese, which is visually similar), and 0xAD
and 0xB0
-0xB4
(which display as the Japanese equivalents of the Western characters).
Western
The table below shows the English character set in Pokémon Emerald. Some differences do exist between different revisions and games and between different languages, detailed afterward.
Characters on a white background are the only characters that can be input in names; 0xF1
- 0xF6
are only available for input in German games. Those on a light gray background may be used in other text strings (such as dialogue) depending on the language of the game. Characters on a dark gray background are unused values that mostly display as spaces in Pokémon FireRed, LeafGreen, and Emerald; in Pokémon Ruby and Sapphire, they are holdovers from the Japanese encoding.
-0 | -1 | -2 | -3 | -4 | -5 | -6 | -7 | -8 | -9 | -A | -B | -C | -D | -E | -F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0- | À | Á | Â | Ç | È | É | Ê | Ë | Ì | Î | Ï | Ò | Ó | Ô | ||
1- | Œ | Ù | Ú | Û | Ñ | ß | à | á | ç | è | é | ê | ë | ì | ||
2- | î | ï | ò | ó | ô | œ | ù | ú | û | ñ | º | ª | ᵉʳ | & | + | |
3- | Lv
|
= | ; | |||||||||||||
4- | ||||||||||||||||
5- | ▯ | ¿ | ¡ | PK | MN | Í | % | ( | ) | |||||||
6- | â | í | ||||||||||||||
7- | ↑ | ↓ | ← | → | * | * | * | |||||||||
8- | * | * | * | * | ᵉ | < | > | |||||||||
9- | ||||||||||||||||
A- | ʳᵉ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ! | ? | . | - | ・ |
B- | ‥ | “
|
”
|
‘ | ' | ♂ | ♀ | $ | , | × | / | A | B | C | D | E |
C- | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U |
D- | V | W | X | Y | Z | a | b | c | d | e | f | g | h | i | j | k |
E- | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z | ► |
F- | : | Ä | Ö | Ü | ä | ö | ü | Control characters |
Differences between games and revisions
Codepoint 0xB0
represents an ellipsis. In Pokémon Ruby, Sapphire, Colosseum, XD, and Box Ruby & Sapphire, it renders as a two-dot ellipsis (‥
). In Pokémon FireRed, LeafGreen, and Emerald, it renders as a three-dot ellipsis (…
) in the main font, but remains a two-dot ellipsis in the small font used on the party screen and the narrow font used in the Pokédex, bag, and shops. In subsequent generations, this character renders consistently as a three-dot ellipsis.
Codepoint 0xB0
represents an apostrophe or right single quotation mark. In Pokémon Box Ruby & Sapphire, it is transcoded as a curly right single quotation mark (’
). In Pokémon Colosseum and XD, it is transcoded as a straight apostrophe ('
).
Codepoints 0x7D
-0x83
, marked by asterisks (*) above, print spaces 1-7 pixels wide (in ascending order of the hex value). In FireRed and LeafGreen, 0x50
and 0x7D
-0x83
are not used and print as regular spaces like other unused characters.
In certain languages, codepoints 0x34
, 0x57
-0x59
, and 0x64
differ between games, as detailed below.
In Pokémon Ruby and Sapphire, many values print Japanese characters—holdovers from the original Japanese encoding. These include:
- All unused characters (on a dark gray background above)
0x50
and0x7D
-0x83
0x36
,0x84
-0x86
, and0xA0
, in version 1.0 of the English Ruby and Sapphire only
Regional differences
A few characters differ between regions, and among them are quotation marks. These can be input into names, which means a Pokémon with quotation marks in its nickname or OT name will display differently if traded to a game of a different region.
In the table below, the underscores (_
) stand for spaces.
English | Spanish | Italian | German | French | |
---|---|---|---|---|---|
0x34
|
Lv | NvRS Nv.EFRLG |
L. | Lv. | N. |
0x57 - 0x59
|
_, _, MRS _, _, _EFRLG |
||||
0x5E - 0x63
|
, | ||||
0x64
|
PcoE | ||||
0xB1
|
“ | „ | « | ||
0xB2
|
” | “ | » |
Japanese
Only the characters on a white background below can be input in names. The characters on a dark gray background are printed as spaces in Pokémon FireRed, LeafGreen, and Emerald. Otherwise, the Japanese character set has no differences between games or revisions. Codepoint 0xB0
represents an ellipsis. In Pokémon Ruby, Sapphire, Emerald, Colosseum, XD, and Box Ruby & Sapphire, it renders as a two-dot ellipsis (‥
). In Pokémon FireRed and LeafGreen, it renders as a three-dot ellipsis (…
). In subsequent generations, this character renders consistently as a three-dot ellipsis.
-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- | ッ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ! | ? | 。 | ー | ・ |
B- | ‥ | 『 | 』 | 「 | 」 | ♂ | ♀ | 円 | . | × | / | A | B | C | D | E |
C- | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U |
D- | V | W | X | Y | Z | a | b | c | d | e | f | g | h | i | j | k |
E- | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z | ► |
F- | : | Ä | Ö | Ü | ä | ö | ü | Control characters |
Special characters
Extra symbols
Pokémon Ruby and Sapphire
In Pokémon Ruby and Sapphire, the escape sequence 0xFC 0x0C
is used as an escape code for the following characters, depending on the following byte. These characters are stored in the game's fonts at their respective indices, but the escape sequence forces these characters to be printed directly, rather than possibly interpreted as a control character. If the byte is not a control character byte, that byte prints normally.
-0 | -1 | -2 | -3 | -4 | -5 | -6 | -7 | -8 | -9 | -A | -B | -C | -D | -E | -F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
F- | ↑ | ↓ | ← | → | + |
As 0xF7
-0xF9
are not control characters in these games, they will also print normally even if not escaped, though in-game text always escapes them.
In Japanese games, 0xFB
is instead used to produce "=" in the Options screen and "&" in the credits. Western versions almost never use these codepoints, instead preferring to use the equivalent characters in the 0x01
-0xA0
range.
The control characters from 0xFC
-0xFF
do not produce any characters. In the English games, nothing is printed, while in the Japanese games, miscellaneous data appears to be printed.
Pokémon FireRed, LeafGreen, and Emerald
In Pokémon FireRed, LeafGreen, and Emerald, either the escape sequence 0xF9
or 0xFC 0x0C
is used as an escape code for the following characters, depending on the following byte. These characters are stored in the game's fonts beginning at index 0x100, after the main set of characters. Characters on a dark gray background are unused values that display as spaces.
-0 | -1 | -2 | -3 | -4 | -5 | -6 | -7 | -8 | -9 | -A | -B | -C | -D | -E | -F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0- | ↑ | ↓ | ← | → | + | Lv
|
PP
|
ID | No
|
_ | ① | ② | ③ | ④ | ⑤ | ⑥ |
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 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0- | ↑ | ↓ | ← | → | + | Lv | PP | ID
|
No | _ | ① | ② | ③ | ④ | ⑤ | ⑥ |
1- | ⑦ | ⑧ | ⑨ | ( | ) | ◎ | △ | |||||||||
2- | ||||||||||||||||
3- | ||||||||||||||||
4- | ||||||||||||||||
5- | ||||||||||||||||
6- | ||||||||||||||||
7- | ||||||||||||||||
8- | ||||||||||||||||
9- | ||||||||||||||||
A- | ||||||||||||||||
B- | ||||||||||||||||
C- | ||||||||||||||||
D- | ||||||||||||||||
E- | ||||||||||||||||
F- |
0xF9
is used in most cases, but most arrows in game text are still written using the escape sequence 0xFC 0x0C
in Japanese versions or the 0x7A
-0x7D
range in Western versions.
Differences between games and revisions
In Western versions of Pokémon FireRed and LeafGreen, the character "×" was added at 0x117
to preserve the original appearance of the fullwidth character when displaying type matchups in the Help System, as the halfwidth character "×" at 0xB9
used elsewhere in the game is slightly smaller and does not match the width of "◎" and "△".
In Western versions of Pokémon FireRed and LeafGreen, the character "" was added at 0x1D0
as an 8-pixel wide underscore for the Union Room chat, distinct from the underscore which leaves a 1-pixel gap between it and the previous character at 0x109
used in the easy chat system in Western versions and in both interfaces in Japanese versions.
In Japanese versions of Pokémon Emerald, the characters from 0x1CC
-0x1D0
were added to explain what function the R Button performs on the text entry screen, though 0x1CC
was not actually used in the final game.
Regional differences
A few characters differ between regions. The table below describes how they are displayed in the main font.
Japanese | English | Spanish | Italian | German | French | |
---|---|---|---|---|---|---|
0x105
|
Lv | Nv. | L. | Lv. | N. | |
0x106
|
PP | AP | PP | |||
0x107
|
ID | |||||
0x108
|
No | N.º | Nº | Nr. | Nº |
In Japanese versions, the "ID" character is displayed as "ID." in the wider fonts introduced in Pokémon FireRed and LeafGreen.
In the small font, each character is only 8 pixels wide, so the sequence 0x105 0x118
is used in Spanish and German versions to display the full 9-pixel wide "Nv" and "Lv." strings.
Braille
The table below shows the codepoints corresponding to each braille pattern. They are not ordered according to the braille numeric sequence; rather, they are stored in a binary ordering with dots 1, 4, 2, 5, 3, and 6 corresponding to the lowest six bits from lowest to highest.
In Pokémon Ruby, Sapphire, and Emerald, each braille message is preceded by six bytes describing the size and position of the window and text. However, Pokémon Emerald ignores these values and calculates them based on the contents of the message itself.
In Pokémon FireRed and LeafGreen, braille is displayed like normal text in the standard dialogue window.
-0 | -1 | -2 | -3 | -4 | -5 | -6 | -7 | -8 | -9 | -A | -B | -C | -D | -E | -F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0- | ⠀ | ⠁ | ⠈ | ⠉ | ⠂ | ⠃ | ⠊ | ⠋ | ⠐ | ⠑ | ⠘ | ⠙ | ⠒ | ⠓ | ⠚ | ⠛ |
1- | ⠄ | ⠅ | ⠌ | ⠍ | ⠆ | ⠇ | ⠎ | ⠏ | ⠔ | ⠕ | ⠜ | ⠝ | ⠖ | ⠗ | ⠞ | ⠟ |
2- | ⠠ | ⠡ | ⠨ | ⠩ | ⠢ | ⠣ | ⠪ | ⠫ | ⠰ | ⠱ | ⠸ | ⠹ | ⠲ | ⠳ | ⠺ | ⠻ |
3- | ⠤ | ⠥ | ⠬ | ⠭ | ⠦ | ⠧ | ⠮ | ⠯ | ⠴ | ⠵ | ⠼ | ⠽ | ⠶ | ⠷ | ⠾ | ⠿ |
Keypad icons
In Pokémon FireRed, LeafGreen, and Emerald, the escape sequence 0xF8
is used as an escape code for the following characters, depending on the following byte.
-0 | -1 | -2 | -3 | -4 | -5 | -6 | -7 | -8 | -9 | -A | -B | -C | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0- |
Control characters
- 0xF7 is an escape character for dynamic data.FRLGE
- 0xF8 is an escape character for keypad icons.FRLGE
- 0xF9 is an escape character for extra symbols.FRLGE
- 0xFA and 0xFB both mark a prompt for the player to press a button to continue the dialogue. However, they will print the new line of dialogue differently: 0xFA will scroll the previous dialogue up one line before printing the next line, while 0xFB will clear the dialogue box entirely.
- 0xFC is an escape character that leads to several different functions (see below).
- 0xFD is an escape character for variables, such as the player's name or a Pokémon's name (see below).
- 0xFE is a line break.
- 0xFF is a terminator, marking the ends of strings.
0xFC functions
Index | Function | Length | Values |
---|---|---|---|
Introduced in Japanese versions of Ruby and Sapphire | |||
0x00 | do nothing | 1 | |
0x01 | change the text color | 2 | color index (byte) |
0x02 | change the highlight color | 2 | color index (byte) |
0x03 | change the shadow color | 2 | color index (byte) |
0x04 | change the text, highlight, and shadow color | 4 | text color index (byte) highlight color index (byte) shadow color index (byte) |
0x05 | change the paletteRS | 2 | palette index (byte) |
0x06 | change font | 2 | font index (byte) |
0x07 | reset font to the defaultRS | 1 | |
0x08 | pause text display for a period of time | 2 | length (byte) |
0x09 | wait for a button to be pressed | 1 | |
0x0A | wait for a sound effect to finish | 1 | |
0x0B | play background music | 3 | index (two bytes, little endian) |
0x0C | print an extra symbol | 2 | character index (byte) |
0x0D | set the X coordinate of the cursor (in all versions except Western RS) | 2 | number of pixels (byte) |
0x0E | set the Y coordinate of the cursor | 2 | number of pixels (byte) |
0x0F | clear the window | 1 | |
0x10 | play a sound effect | 3 | index (two bytes, little endian) |
Introduced in Western versions of Ruby and Sapphire | |||
0x11 | print a space of the specified width | 2 | number of pixels (byte) |
0x12 | set the X coordinate of the cursor | 2 | number of pixels (byte) |
0x13 | clear the line until the specified X coordinate | 2 | number of pixels (byte) |
0x14 | set the minimum character width | 2 | number of pixels (byte) |
0x15 | display text in the Japanese font | 1 | |
0x16 | display text in the international font | 1 | |
Introduced in Japanese versions of FireRed and LeafGreen | |||
0x17 | pause the background music | 1 | |
0x18 | resume playing the background music | 1 |
Although 0xFC 0x00
does not have any effect in regular text, the Western versions of Pokémon Ruby and Sapphire handle it specially in two cases.
- It is used as a placeholder for a one-digit number in the text "Appeal no. <number>!" used during Contests.
- It is used to abbreviate the names of cities and towns in the Trainer's Eyes function of the PokéNav. For example, "VERDANTURF TOWN" is shortened to "VERDANTURF".
Color values
A table of available text, highlight, and shadow colors is shown below.
Byte | RS | FRLG | E |
---|---|---|---|
0x00 | Transparent | ||
0x01 | |||
0x02 | |||
0x03 | |||
0x04 | |||
0x05 | |||
0x06 | |||
0x07 | |||
0x08 | |||
0x09 | |||
0x0A | |||
0x0B | |||
0x0C | |||
0x0D | |||
0x0E | |||
0x0F |
0xFD variables
When 0xFD is followed by one of the following bytes, it prints a text variable or version-dependent text. Version-dependent text is only used in Pokémon Ruby, Sapphire, and Emerald; in Pokémon Emerald, all of these values are the same as Pokémon Sapphire, except the version name. The text printed by version-dependent text variables is constant within a single game, but varies between versions and languages.
- Text variables
- 0x01: the player's name
- 0x02, 0x03, or 0x04: whatever text has been assigned to one of three buffers using a variety of script commands
- 0x05: an honorific corresponding to the player's gender in Japanese (
くん
for male,ちゃん
for female), or nothing in Western languages - 0x06: the rival's name
- Version-dependent text
Variable ID | Description | English content | ||||
---|---|---|---|---|---|---|
R | S | E | ||||
0x07 | the game's name | RUBY | SAPPHIRE | EMERALD | ||
0x08 | the name of the villainous team | MAGMA | AQUA | |||
0x09 | the name of the non-villainous team | AQUA | MAGMA | |||
0x0A | the name of the villainous team's leader | MAXIE | ARCHIE | |||
0x0B | the name of the non-villainous team's leader | ARCHIE | MAXIE | |||
0x0C | the name of the villainous team's Legendary Pokémon | GROUDON | KYOGRE | |||
0x0D | the name of the opposing Legendary Pokémon | KYOGRE | GROUDON |
Trivia
- In the name field for Eggs, the game places the bytes
0x60 0x6F 0x8B
corresponding to タマゴ (tamago, the Japanese word for egg). This remains in the English version even though the characters have been replaced.
|
This data structure article is part of Project Games, a Bulbapedia project that aims to write comprehensive articles on the Pokémon games. |