Korean character encoding (Generation II): Difference between revisions

From Bulbapedia, the community-driven Pokémon encyclopedia.
Jump to navigationJump to search
No edit summary
m (Text replacement - "}}<br>↵{{Project Games notice" to "}} {{Project Games notice")
 
(12 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{main|Character encoding (Generation II)}}
{{main|Character encoding (Generation II)}}
This is the '''[[character encoding]]''' used in the Korean version of {{game|Gold and Silver|s}}.
==Character map==
==Character map==
All control characters print characters that are two tiles high. (A single character's width is always one tile. A "tile" is an 8x8 pixel square; for comparison, the player occupies a 2x2-tile square.)
All control characters print characters that are two tiles high. (A single character's width is always one tile. A "tile" is an 8×8 pixel square; for comparison, the player occupies a 2×2-tile square.)


Those characters marked with two asterisks (**) are the first byte of two-byte characters (detailed below), which primarily print Korean characters. Those marked with a single asterisk are control characters which are explained below.
Those characters marked with two asterisks (**) are the first byte of two-byte characters (detailed below), which primarily print Korean characters. Those marked with a single asterisk are control characters which are explained below.
Line 7: Line 10:
The character map also contains some tiles that contain bits and pieces of Korean characters.
The character map also contains some tiles that contain bits and pieces of Korean characters.


:{| style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
{| class="wikitable" style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
|-
|-
! || -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
Line 89: Line 92:
| 0x47 || Prints <code>포켓몬</code> ([[Pokémon]]).
| 0x47 || Prints <code>포켓몬</code> ([[Pokémon]]).
|-
|-
| 0x48 || Prints <code>{{j|⋯⋯}}</code>.
| 0x48 || Prints <code>{{j|……}}</code>.
|-
|-
| 0x49 || Prints <code>컴퓨터</code> ([[PC]]).
| 0x49 || Prints <code>컴퓨터</code> ([[PC]]).
Line 143: Line 146:
Many byte pairs will print an empty space, but most are unused. In most dialogue, 0x7F is used to display a space, while in user-input strings, <code>0B FF</code> is inserted when the player uses a space. (This seems to be because the game requires that all user-input strings use pairs of bytes; if they didn't, the "maximum" length could vary significantly.) Similarly, while byte pairs starting with 0x00 and 0x0B have identical outputs, the game only naturally uses 0x0B pairs.
Many byte pairs will print an empty space, but most are unused. In most dialogue, 0x7F is used to display a space, while in user-input strings, <code>0B FF</code> is inserted when the player uses a space. (This seems to be because the game requires that all user-input strings use pairs of bytes; if they didn't, the "maximum" length could vary significantly.) Similarly, while byte pairs starting with 0x00 and 0x0B have identical outputs, the game only naturally uses 0x0B pairs.


For the most part, the Korean characters appear in a consistent order based on their makeup (their initial, medial, and final consonants/vowels). There are some exceptions, however (such as 쓔 and 쓩).
For the most part, the available Korean characters match the 2,350 hangul syllables present in the {{wp|KS X 1001}} standard, as well as the 40 jamo and 5 additional syllables (뢔, 쌰, 쎼, , ) necessary to input them. The 5 additional syllables are placed in what would otherwise be empty slots between the 94-character rows from KS X 1001. The only other changes are that 겸 and 겹 are swapped, 굄 is replaced by 괻, 댜 is removed, 돐 is removed, and 읊 is replaced by 읆.
 
This encoding does not include jamo that are exclusively as final consonants.


===0x00===
===0x00===
:{| style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
{| class="wikitable" style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
|-
|-
! || -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
Line 169: Line 174:
|-
|-
! 6-
! 6-
| 「 || 」 || 『 || 』 || ( || ) || ! || ? || - || ~ || ・・・ || , || . ||  ||  ||
| 「 || 」 || 『 || 』 || ( || ) || ! || ? || - || ~ || {{j|…}} || , || . ||  ||  ||
|-
|-
! 7-
! 7-
Line 200: Line 205:


===0x01===
===0x01===
:{| style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
{| class="wikitable" style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
|-
|-
! || -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
Line 254: Line 259:


===0x02===
===0x02===
:{| style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
{| class="wikitable" style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
|-
|-
! || -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
Line 308: Line 313:


===0x03===
===0x03===
:{| style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
{| class="wikitable" style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
|-
|-
! || -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
Line 362: Line 367:


===0x04===
===0x04===
:{| style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
{| class="wikitable" style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
|-
|-
! || -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
Line 416: Line 421:


===0x05===
===0x05===
:{| style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
{| class="wikitable" style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
|-
|-
! || -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-
|  || 벙 || 벚 || 베 || 벡 || 벤 || 벧 || 벨 || 벰 || 벱 || 벳 || || || 벼 || 벽 || 변
|  || 벙 || 벚 || 베 || 벡 || 벤 || 벧 || 벨 || 벰 || 벱 || 벳 || || || 벼 || 벽 || 변
|-
|-
! 1-
! 1-
| 별 || 볍 || 볏 || 병 || 볕 || 볐 || 볘 || 볜 || 보 || 복 || 본 || 볼 || 봄 || 봅 || 봇 || 봉
| 별 || 볍 || 볏 || 볐 || 병 || 볕 || 볘 || 볜 || 보 || 복 || 볶 || 본 || 볼 || 봄 || 봅 || 봇
|-
|-
! 2-
! 2-
| || 봐 || 봔 || 봤 || 봬 || 뵀 || 뵈 || 뵉 || 뵌 || 뵐 || 뵘 || 뵙 || 뵤 || 뵨 || 부 || 북
| || 봐 || 봔 || 봤 || 봬 || 뵀 || 뵈 || 뵉 || 뵌 || 뵐 || 뵘 || 뵙 || 뵤 || 뵨 || 부 || 북
|-
|-
! 3-
! 3-
| 분 || 붇 || 불 || 붐 || 붑 || 붓 || 붕 || 붙 || 붚 || 붉 || 붊 || 붜 || 붤 || 붰 || 붸 || 뷔
| 분 || 붇 || 불 || 붉 || 붊 || 붐 || 붑 || 붓 || 붕 || 붙 || 붚 || 붜 || 붤 || 붰 || 붸 || 뷔
|-
|-
! 4-
! 4-
Line 470: Line 475:


===0x06===
===0x06===
:{| style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
{| class="wikitable" style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
|-
|-
! || -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
Line 524: Line 529:


===0x07===
===0x07===
:{| style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
{| class="wikitable" style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
|-
|-
! || -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
Line 578: Line 583:


===0x08===
===0x08===
:{| style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
{| class="wikitable" style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
|-
|-
! || -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
Line 632: Line 637:


===0x09===
===0x09===
:{| style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
{| class="wikitable" style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
|-
|-
! || -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
Line 686: Line 691:


===0x0A===
===0x0A===
:{| style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
{| class="wikitable" style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
|-
|-
! || -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
Line 740: Line 745:


===0x0B===
===0x0B===
:{| style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
{| class="wikitable" style="text-align: center; border-collapse: collapse" cellpadding="2px" width="375px"
|-
|-
! || -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
Line 763: Line 768:
|-
|-
! 6-
! 6-
| 「 || 」 || 『 || 』 || ( || ) || ! || ? || - || ~ || ・・・ || , || . ||  ||  ||
| 「 || 」 || 『 || 』 || ( || ) || ! || ? || - || ~ || {{j|…}} || , || . ||  ||  ||
|-
|-
! 7-
! 7-
Line 793: Line 798:
|}
|}


{{data structure}}<br>
{{data structure}}
{{Project Games notice|data structure}}
{{Project Games notice|data structure}}

Latest revision as of 17:32, 16 September 2024

Main article: Character encoding (Generation II)

This is the character encoding used in the Korean version of Pokémon Gold and Silver.

Character map

All control characters print characters that are two tiles high. (A single character's width is always one tile. A "tile" is an 8×8 pixel square; for comparison, the player occupies a 2×2-tile square.)

Those characters marked with two asterisks (**) are the first byte of two-byte characters (detailed below), which primarily print Korean characters. Those marked with a single asterisk are control characters which are explained below.

The character map also contains some tiles that contain bits and pieces of Korean characters.

-0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -A -B -C -D -E -F
0- ** ** ** ** ** ** ** ** ** ** ** ** F G H I
1- J K L M N O P Q R S T U V * *
2- Z ( ) : w x y z Korean Ä Ö
3- Ü ä ö * * * * *   Korean Z ( )
4- :   Korean * * * * * * * * * *
5- * * * * * * * * * * * * * * * *
6- Character 0x62 ii.png D E F G H I V S L M :
7- PO Ké text box borders  
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 Korean
C- Ä Ö Ü ä ö ü     Korean
D- 'd 'l 'm 'r 's 't 'v       Korean
E- ' PK MN -     ? ! . & é  
F- × . / , 0 1 2 3 4 5 6 7 8 9

Control characters

Character Function
0x1E A "half" line break (moves the print position to the place one tile below the start of the current line).
0x1F Prints ᆨtzx (mojibake for こうげき attack; appears to be a leftover from the English version code).
0x33 Prints POKé.
0x34 Nothing
0x35 Nothing
0x36 Nothing
0x37 Nothing
0x46 Prints PKMN.
0x47 Prints 포켓몬 (Pokémon).
0x48 Prints …….
0x49 Prints 컴퓨터 (PC).
0x4A Prints 기술머신 (TM).
0x4B Prints 로켓단 (Team Rocket).
0x4C ? (May break)
0x4D Prints 레드 (Red).
0x4E Prints 그린 (Blue).
0x4F Prints the opposing Trainer's name (including their Trainer class). (Outside of battle, this may not terminate properly.)
0x50 String terminator.
0x51 Prints the player's name.
0x52 Prints the rival's name.
0x53 Prints the inactive Pokémon's name.
0x54 Active Pokémon's name?
0x55 Prints 트레이너 (Trainer).
0x56 Prompts the player to press a button, after which the top line of the text window is replaced by the bottom, the bottom line is cleared, and the print position moves to the start of the bottom line.
0x57 Shifts text in the dialogue box up a line (so the top line is “lost”) without a prompt or a pause.
0x58 Prints PK.
0x59 Same as 0x5A?
0x5A Dialogue line break (moves the print position to the expected start of the second line in a standard dialogue box).
0x5B Prints 어머니 (Mom).
0x5C Prompts the player to press a button, after which the text window is cleared to make way for the following text.
0x5D 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.
0x5E Marks the end of dialogue, with no visual prompt to the player.
0x5F Marks the end of dialogue, with a visual prompt to the player.

Two-byte characters

If the game tries to read a character and the byte read matches any of the following values (as seen in the section headers), then the game must also read the next byte in order to determine what character to print. The tables in each section describe which character is printed depending on the value of the second byte.

Many byte pairs will print an empty space, but most are unused. In most dialogue, 0x7F is used to display a space, while in user-input strings, 0B FF is inserted when the player uses a space. (This seems to be because the game requires that all user-input strings use pairs of bytes; if they didn't, the "maximum" length could vary significantly.) Similarly, while byte pairs starting with 0x00 and 0x0B have identical outputs, the game only naturally uses 0x0B pairs.

For the most part, the available Korean characters match the 2,350 hangul syllables present in the KS X 1001 standard, as well as the 40 jamo and 5 additional syllables (뢔, 쌰, 쎼, 쓔, 쬬) necessary to input them. The 5 additional syllables are placed in what would otherwise be empty slots between the 94-character rows from KS X 1001. The only other changes are that 겸 and 겹 are swapped, 굄 is replaced by 괻, 댜 is removed, 돐 is removed, and 읊 is replaced by 읆.

This encoding does not include jamo that are exclusively as final consonants.

0x00

-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 1 2 3 4 5 6 7 8 9

0x01

-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- 꼿

0x02

-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-

0x03

-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-

0x04

-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-

0x05

-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-

0x06

-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-

0x07

-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-

0x08

-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-

0x09

-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-

0x0A

-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-

0x0B

-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 1 2 3 4 5 6 7 8 9


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
Project Games logo.png This data structure article is part of Project Games, a Bulbapedia project that aims to write comprehensive articles on the Pokémon games.