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