List of Control Characters
This article is unfinished. You can help expanding it.
Lowercase Text Tags
<TODO: parameters, (technical) descriptions, potential organization>
| Tag | Description |
|---|---|
| [area:#] | |
| adverb | Unused. |
| [bank:#] | |
| [bank_left:#] | |
| [c_kind:<actor>] | Prints the Pokémon species of the specified actor, using the light green text color for species (see [CS:K]). |
| [c_i:#] | |
| [c_name:<actor>] | |
| [c_stammer:<actor>] | Prints the first character of the specified actor's name. Used only in JP. |
| class | Unused. |
| [digits:#] | |
| [digits_c:#] | |
| [dungeon:#] | |
| [equip_list] | |
| [experience:#] | |
| [floor:0] | Prints the job's destination floor. |
| [gadget_bag] | Prints the current name of the player's inventory. Used in practice to specify the One-Item Inventory in Beach Cave prior to obtaining the Treasure Bag. |
| [gender:#] | |
| [gold:#] | |
| [gold_left:#] | |
| [hero] | Prints the hero's name, using the blue text color for leaders (see [CS:Y]). Special Episodes instead use [c_name:NPC_HERO_FIRST] for a cyan text color.
|
| [item:#] | |
| [kind:] [kind:#] |
|
| [move:] [move:#] |
|
| [me_play:#] | |
| [move_hit_ratio] | |
| [move_power] | |
| [name:#] | |
| [now_team] | |
| [partner] | Prints the partner's name, using the yellow text color for team members (see [CS:F]). Special Episodes instead use [c_name:NPC_PARTNER_FIRST] for a cyan text color.
|
| partner2 | Unused. |
| [player] | Prints the current leader's name using a blue text color. |
| purpose | Unused. |
| [rank:#] | |
| range | Unused. |
| [s_item:#] | |
| [string0] | |
| [string:#] | |
| [se_play:#] | |
| [type:#] | |
| [trap:#] | |
| [tactics:#] | |
| [team] [team:] [team:#] |
|
| [time:#] | |
| [value0:#:#] | |
| [value:#:#] | |
| value_i | Unused. |
| [weather:#] | |
| [wiseness:] [wiseness:#] |
Capitalized Text Tags (Parse-on-Print)
All text tags that begin with a capital letter are parsed immediately before they would be printed. They typically apply formatting, insert objects, or adjust print control flow. There is a hard limit on how many can be in one text string, but that limit is not currently known.
Object Insert Tags
These text tags draw something that isn't text in the textbox.
| Tag | Description |
|---|---|
| [BAR] | Inserts a bar covering the entire line, then applies a line break. |
| [LINE:X:#] | Inserts a line of type (135,139) [type X=0] or (135,140) [type X=1], with thickness #. Used only in JP. Functional in other regions, but only produces redacted text. |
| [M:X], [M:#] | Inserts an icon from markfont.dat as specified by X. Alternatively, a raw index for the icon can be provided. See the [M:X] Icon Table for more info. |
As a side note, [D:0], [D:1] and [D:2] are intended to display the , and icons respectively, but this functionality has been deliberately disabled in all available versions of the base game, which will simply ignore the debug tags. The tags can still be widely seen in many of the game's unused strings.
[M:X] Icon Table
A detailed table of all [M:X]/[M:#] subtags.
Text Formatting Tags
These text tags alter the properties of normal text characters that follow them.
| Tag | Description |
|---|---|
| [CS:X],[CS:#,X] | Sets colored text with color code X. Or more accurately, adds one layer of colored text. Has an optional numerical param "#" with an unknown use. See the [CS:X] Color Set Table for specifics on the types of colors and their vanilla usages. |
| [CR], [CR:#] | Reverts colored text. Or more accurately, reverts the top-most layer of colored text. Has an optional numerical param "#" with an unknown use. |
| [FT:#] | Sets the current font to the #th font. 0 = Normal, 1 = Unown, 2 = Credits Small, 3 = Credits Large. Fonts 2 and 3 do not function as intended outside of the credits sequence, with 2 being entirely icons, and 3 being empty characters. |
| [LS:#] | Starts a link to another text string. Used in move/item/status/etc. descriptions for subtopics. Ex: Sleep Seed may link the description of the Sleep status. |
| [LE] | Ends a link to another text string. Used in move/item/status/etc. descriptions for subtopics. Ex: Sleep Seed may link the description of the Sleep status. |
[CS:X] Color Set Table
A detailed table of all [CS:X] subtags and their intended purpose in the base game.
The colors are stored in FONT/text_pal.pal, and are stored slightly brighter than they appear in-game. When loaded in-game, the last three bits of each value (R, G, & B) are trimmed off to make the whole color fit within 2 bytes rather than 4, so a number like FF (0b11111111) would become F8 (0b11111000). The colors as coded in FONT/text_pal.pal are listed in the "Internal Color" column, and their location in the file is also provided.
| Tag | Color | Use Case | Identical to | FONT/text_pal.pal Offset | Internal Color |
|---|---|---|---|---|---|
| [CS:A] | Cream #F8C8C8 |
Effectively unused; described in ADEBUG as "Identified Item". | [CS:I] | 0x58 | #FFCFCF |
| [CS:B] | Red #F80000 |
Forbidden choice. | [CS:r], [CS:W] | 0x4C | #FF0000 |
| [CS:C] | Yellow #F8F800 |
Used for rare miscellaneous and debug messages. | [CS:F], [CS:U] | 0x24 | #FFFF00 |
| [CS:D] | White #F8F8F8 |
Standard text color. This is also the default case in GetColorCodePaletteOffset, so if an invalid CS code is used, it will be treated as this.
|
None | 0x1C | #FFFFFF |
| [CS:E] | Cyan #00F8F8 |
Used by subjects, stats, abilities, weather, etc. Described in ADEBUG as "Bold Text". | [CS:G], [CS:N], [CS:V] | 0x20 | #00FFFF |
| [CS:F] | Yellow #F8F800 |
Names of other members of the player's team, including the partner. However, this is not used for Special Episode allies in cutscenes. | [CS:C], [CS:U] | 0x34 | #FFFF00 |
| [CS:G] | Cyan #00F8F8 |
Money. | [CS:E], [CS:N], [CS:V] | 0x64 | #00FFFF |
| [CS:H] | Pink #F87878 |
Trap names. | None | 0x70 | #FF7F7F |
| [CS:I] | Cream #F8C8C8 |
Item names. In cutscenes, this is not used for unobtainable story objects such as Perfect Apples or Time Gears, but is used for items the player could obtain themselves. | [CS:A] | 0x58 | #FFCFCF |
| [CS:j] | Dark Cream #F8C060 |
The color is used by already-recruited Pokémon species whenever one requests to join within dungeons, and Chimecho uses the tag while explaining this text color. | [CS:P] | 0x44 | #FFC767 |
| [CS:J] | Light Yellow #F8F8A0 |
Status effects. | None | 0x74 | #FFFFA7 |
| [CS:K] | Light Green #00F800 |
Pokémon species names, including those in shop names. Should not be used to refer to a character ([CS:N]), even if they use the name of their species as their personal name. | [CS:M] | 0x3C | #00FF00 |
| [CS:L] | Green #00E060 |
The tag itself is effectively unused in the base game, but the same text color is used for [LS:#] hyperlinks in item/move descriptions. The kiosk demo uses the tag to note the title of the game. | None | 0x6C | #00E767 |
| [CS:M] | Light Green #00F800 |
Move names. Also commonly used on the word "move" itself in non-dialogue strings. | [CS:K] | 0x40 | #00FF00 |
| [CS:N] | Cyan #00F8F8 |
Regular character names. The hero and partner will also fall back to this if they're not in a primary story role, as seen in Special Episode 5's intro scene. | [CS:E], [CS:G], [CS:V] | 0x38 | #00FFFF |
| [CS:O] | Dark Green #009800 |
Unused. | None | 0x78 | #009F00 |
| [CS:P] | Dark Cream #F8C060 |
Dungeon names and other destinations such as Fogbound Lake and Shaymin Village. Not used in the base game for other location names such as Treasure Town or the Hot Spring in dialogue. | [CS:j] | 0x44 | #FFC767 |
| [CS:Q] | Blue #0080F8 |
Unused. | None | 0x54 | #0087FF |
| [CS:r] | Red #F80000 |
Unused. | [CS:B], [CS:W] | 0x14 | #FF0000 |
| [CS:R] | Pale Green #40F840 |
The tag itself is effectively unused, but the text color is used for displaying the selling price at shops. Described in ADEBUG as "Selling Price". | None | 0x68 | #47FF47 |
| [CS:S] | Purple #6080E0 |
Effectively unused. Described in ADEBUG as "Multiple Items Selected", but doing this in shop or storage menus changes the color of the surrounding background rather than the text itself. | None | 0x50 | #6787E7 |
| [CS:T] | Transparent | Unused and seemingly useless, as it makes the text unreadable. | None | N/A | N/A |
| [CS:U] | Yellow #F8F800 |
Effectively unused. Described in ADEBUG as "Unidentified Item". | [CS:C], [CS:F] | 0x5C | #FFFF00 |
| [CS:V] | Cyan #00F8F8 |
Used for "bold" numbers. Base game example: You can get only [CS:V]two wrong[CR], OK?
|
[CS:E], [CS:G], [CS:N] | 0x48 | #00FFFF |
| [CS:W] | Red #F80000 |
Used by item-boosted stats in a Pokémon's summary and a few debug messages, particularly warnings. | [CS:B], [CS:r] | 0x28 | #FF0000 |
| [CS:X] | Bright Pink #F8A0F8 |
Any team's name, not including the word "team". Also used by the names of other players in multiplayer-related strings. | None | 0x2C | #FFA7FF |
| [CS:Y] | Light Blue #0098F8 |
Used for the current leader's name, including the hero and Special Episode protagonists. Regular recruited Pokémon will also use this color if set as the leader, even if spoken to in Spinda's Café. | None | 0x30 | #009FFF |
| [CS:Z] | Light Purple #8080F8 |
Exclusive item names. This includes the Water Float and Defend Globe when referred to in cutscenes. | None | 0x60 | #8787FF |
Language Based Insertion Tags
These text tags insert different characters depending on the system language.
| Tag | Description |
|---|---|
| [MP] | Inserts the language-appropriate equivalent for the thousands-place separator: comma, period, space, etc. |
| [GP] | Seems to be a carbon copy of [MP]? Only exists in EU, will crash NA and JP. |
| [F:X] | Displays certain "Foreign" characters by abbreviation. Can differ by language in EU, see the [F:X] Character Insertion Table for more info. |
[F:X] Character Insertion Table
A detailed table of all available [F:X] subtags.
| [F:X] Text Tag | Character | Hex Id | Description | |||
|---|---|---|---|---|---|---|
| Tag | Abbrev. | German | Other | German | Other | |
| [F:ER] | - | er | 0x96 | 0x96 | e and r condensed into one superscript character, a masculine ordinal indicator for number 1. Used in French when referring to Sky Peak Station Pass 1. | |
| [F:RE] | - | re | 0x97 | 0x97 | r and e condensed to one superscript character, a feminine ordinal indicator for number 1. Unused | |
| [F:O] | - | º | 0xBA | 0xBA | Masculine ordinal indicator for numbers 2+. Unused? | |
| [F:E] | - | ᵉ | 0x8D | 0x8D | Superscript "e", a feminine ordinal indicator for numbers 2+. Used in French when referring to Sky Peak Station Pass 2+ | |
| [F:RQ] | Reverse Question? | ¿ | 0xBF | 0xBF | Reverse question mark. Unused, as the Spanish script simply writes out the character regularly. | |
| [F:S1] | Start 1? | ‚ | ‘ | 0xB8 | 0x91 | Start of a single quote. Differs in German, to match the language's quotation mark convention. Unused. |
| [F:E1] | End 1? | ‘ | ’ | 0x91 | 0x92 | End of a single quote. Differs in German, to match the language's quotation mark convention. Unused. |
| [F:S2] | Start 2? | „ | “ | 0xB7 | 0x93 | Start of a double quote. Differs in German, to match the language's quotation mark convention. Used frequently in EU. |
| [F:E2] | End 2? | “ | ” | 0x93 | 0x94 | End of a double quote. Differs in German, to match the language's quotation mark convention. Used frequently in EU. |
Control Flow Tags
These text tags alter the rate that text is printed, and/or create a line break.
| Tag | Description |
|---|---|
| [K] | Pauses text printing until the player makes an input with A, B, or the Touch Screen. |
| [W:#] | Waits # frames before continuing to print text. |
| [C] | Begins the next page of text, erasing the current block of text instantly. |
| [P] | Scrolls the currently printed text off the window, then begins the next page of text. A pause in dialogue. |
| [STS] | Ends instant text printing for the line prematurely. |
| [STE] | Begins instant text printing, until the next line break. |
| [R] | Two characters longer than an actual new line, or one if "\n" is used. Redundant. |
| [HR] | Does a line break, but only moves down by half the normal amount. |
Position Adjustment Tags
These text tags alter the printing position of characters that follow them.
| Tag | Description |
|---|---|
| [CN] | Begins text centering, until the next line break. |
| [CLUM_SET:#] | Moves the cursor left or right to the #th pixel in the window. Can be used to move backwards horizontally in a textbox. |
| [CLUM_OFFSET:#] | Offsets the cursor's current horizontal position by #. Most likely identical to [S:#]. |
| [MS:#] | Inserts 6*# horizontal pixels of space. |
| [S:#] | Inserts # horizontal pixels of space. |
Audio Based Tags
These text tags create audio effects when they are parsed, but do not affect the textbox visually.
| Tag | Description |
|---|---|
| [ME_PLAY:#] | Plays the #th me_effect directly! |
| [SE_PLAY:#] | Plays the #th sound effect directly! |