Character encoding (Generation I): Difference between revisions

m
no edit summary
mNo edit summary
Line 4: Line 4:
Fixed-length user-input strings are terminated with 0x50. If a fixed-length string is terminated before using its full capacity, the contents of the remaining space are not specified.
Fixed-length user-input strings are terminated with 0x50. If a fixed-length string is terminated before using its full capacity, the contents of the remaining space are not specified.


==Character sets==
Note that 0x7F is a space (" "), not empty. All characters that are not control characters print in one character.
Note that 0x7F is a space (" "), not empty. All characters that are not control characters print in one character.


In some contexts, some characters may display differently than suggested below. For example, in the character input table, <sup>E</sup><sub>D</sub> is 0xF0 instead of the [[Pokémon Dollar]] symbol, and in the Pokédex (in English), the feet (') and inches (") marks are 0x60 and 0x61.
In some contexts, some characters may display differently than suggested below. For example, in the character input table, <sup>E</sup><sub>D</sub> is 0xF0 instead of the [[Pokémon Dollar]] symbol, and in the Pokédex (in English), the feet (') and inches (") marks are 0x60 and 0x61.


===English===
==English==
Bytes with a dark gray background are not used normally in the English games. Characters with a light gray background are holdovers from the Japanese game but that are not used in the English game.
Bytes with a dark gray background are not used normally in the English games. Characters with a light gray background are holdovers from the Japanese game but that are not used in the English game.
:{| style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
:{| style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
Line 66: Line 65:
The full list of characters that are available for user input are: A-Z and a-z, space, and the following: <code>×():;[]<sup>P</sup><sub>K</sub><sup>M</sup><sub>N</sub>-?!♂♀/.,</code>.
The full list of characters that are available for user input are: A-Z and a-z, space, and the following: <code>×():;[]<sup>P</sup><sub>K</sub><sup>M</sup><sub>N</sub>-?!♂♀/.,</code>.


====Tilemap sections====
===Tilemap sections===
The game sections off various areas of the tilemap loaded into {{wp|VRAM}} and each character code directly corresponds to a tile in the tilemap. Not all tiles in the tilemap are accessible via character code, but many are.
The game sections off various areas of the tilemap loaded into {{wp|VRAM}} and each character code directly corresponds to a tile in the tilemap. Not all tiles in the tilemap are accessible via character code, but many are.


Line 77: Line 76:
## The range 0xE0-0xFF includes numbers, some symbols, and more user interface characters. The player-enterable characters {{PK}}, {{MN}}, and gender symbols are also stored here.
## The range 0xE0-0xFF includes numbers, some symbols, and more user interface characters. The player-enterable characters {{PK}}, {{MN}}, and gender symbols are also stored here.


====Character codes====
===Character codes===
Character codes are within the 0x49-0x5F range, with the exception of 0x4D which defaults to tile 4D.
Character codes are within the 0x49-0x5F range, with the exception of 0x4D which defaults to tile 4D.


Control characters work by intercepting the tile that would normally correspond to the control character and instead perform a different action whether it be end the text or print a lengthy message.
Control characters work by intercepting the tile that would normally correspond to the control character and instead perform a different action whether it be end the text or print a lengthy message.


=====Dialogue control codes=====
====Dialogue control codes====
These control codes control dialogue text placement, paging, etc.
These control codes control dialogue text placement, paging, etc.


Line 97: Line 96:
* 0x5F - "dex" - Displays a period and ends the Pokédex entry
* 0x5F - "dex" - Displays a period and ends the Pokédex entry


=====Variable control codes=====
====Variable control codes====
These control codes print text defined elsewhere.
These control codes print text defined elsewhere.


Line 105: Line 104:
* 0x5A - "user" - In battle, the user of a move. Just like "target", "Enemy " will be prepended to the name of opposing Pokémon.
* 0x5A - "user" - In battle, the user of a move. Just like "target", "Enemy " will be prepended to the name of opposing Pokémon.


=====Text control codes=====
====Text control codes====
These control codes print a hardcoded string. They are used to decrease the number of bytes to write common strings while still rendering as the correct number of characters.
These control codes print a hardcoded string. They are used to decrease the number of bytes to write common strings while still rendering as the correct number of characters.


Line 116: Line 115:
* 0x5E - "rocket" - Prints "ROCKET"
* 0x5E - "rocket" - Prints "ROCKET"


===French & German===
==French & German==
 
:{| style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
:{| style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
|-
|-
Line 169: Line 167:
|}
|}


===Italian & Spanish===
==Italian & Spanish==
 
:{| style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
:{| style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
|-
|-
Line 225: Line 222:
The lowercase 'm' (0xAC) in the French, German, Italian & Spanish version is stylized differently compared to the English version.
The lowercase 'm' (0xAC) in the French, German, Italian & Spanish version is stylized differently compared to the English version.


===Japanese===
==Japanese==
Technically all characters under 0x60 are control characters, the majority of which have the behavior of causing a specific character from the main font (0x80-0xFF) to be printed with a diacritic in the space above it. Those characters that have different, more complicated functions are detailed below.
Technically all characters under 0x60 are control characters, the majority of which have the behavior of causing a specific character from the main font (0x80-0xFF) to be printed with a diacritic in the space above it. Those characters that have different, more complicated functions are detailed below.