Character encoding (Generation II): Difference between revisions

From Bulbapedia, the community-driven Pokémon encyclopedia.
Jump to navigationJump to search
Expanding details on control codes
(Adding additional prose, paralleling Character encoding (Generation I))
(Expanding details on control codes)
Line 92: Line 92:
===Notes===
===Notes===
* 0x00 is a [[wikipedia:null character|null character]], used to mark null values and occasionally used as a delimiter, but displays as <code>?</code> in strings.
* 0x00 is a [[wikipedia:null character|null character]], used to mark null values and occasionally used as a delimiter, but displays as <code>?</code> in strings.
* 0x01-0x4F are mostly leftovers from Japanese diacritic characters (but just print their corresponding base character unmodified in English), although many are overwritten by control characters.
* 0x01-0x4F are mostly leftovers from Japanese diacritic characters (but just print their corresponding base character unmodified in English), although many characters in this range are control characters.
* 0x60-0x6C are bold letters leftover from the Japanese version. Only <code>'''V'''</code> and <code>'''S'''</code> are used in the English version, appearing on the VS screen at the start of a link battle.
* 0x60-0x6C are bold letters leftover from the Japanese version. Only <code>'''V'''</code> and <code>'''S'''</code> are used in the English version, appearing on the VS screen at the start of a link battle.
** 0x60-0x62 are technically bold <code>'''A'''</code>, <code>'''B'''</code>, <code>'''C'''</code> in the base font, but are almost always immediately overwritten with the characters listed in the above table (<code>█</code>, <code>▲</code>, <code>[[File:Character 0x62 ii.png|16px|&#x1F581;]]</code>). Since these characters will almost never render as their base values, the superseding values are used in the table above.
** 0x60-0x62 are technically bold <code>'''A'''</code>, <code>'''B'''</code>, <code>'''C'''</code> in the base font, but are almost always immediately overwritten with the characters listed in the above table (<code>█</code>, <code>▲</code>, <code>[[File:Character 0x62 ii.png|16px|&#x1F581;]]</code>). Since these characters will almost never render as their base values, the superseding values are used in the table above.
Line 126: Line 126:


The circumstances under which this is applied are very inconsistent. For example, the error handling is applied to Pokémon nicknames on the party screen, but not on their own individual summary screens, despite it still being applied to Original Trainer names on this screen. In battle, it is not applied to nicknames in most cases, but is applied when reporting gained [[experience]].
The circumstances under which this is applied are very inconsistent. For example, the error handling is applied to Pokémon nicknames on the party screen, but not on their own individual summary screens, despite it still being applied to Original Trainer names on this screen. In battle, it is not applied to nicknames in most cases, but is applied when reporting gained [[experience]].
===Control characters===
The following are control codes used in the English version of the games. Further details are included in the [[#Control characters|control characters]] section.
{| class="wikitable sortable"
! Code point !! Control type !! Description !! Usage
|-
| 0x00 || Print control || Marks a null value. Displays as <code>?</code> in strings. || Not used in strings.
|-
| 0x14 || Variable display || Prints the player's name (duplicate of 0x52). In Japanese, this prints the player's name with an honorific. || Used in dialogue that refers to the player's name (specifically, dialogue that referred to the player with an honorific in the Japanese version).
|-
| 0x15 || Print control || Can cause the game to hang or prevent the rest of the text from printing. || Unused. In Japanese, its purpose is related to the [[Mobile Game Boy Adapter]].
|-
| 0x16 || Print control || ??? || Unused.
|-
| 0x1F || Print control || '''Breakable space''': Usually prints a space ("<code> </code>"), but prints as a line break (0x22) on the [[Town Map]]. || Used in the names of locations with long names, so that their names are usually displayed with a space, but break across two lines on the Town Map.
|-
| 0x22 || Print control || '''Single-spaced line break:''' Moves the print position one tile below the start of the current line. || Used on the [[Options]] menu, to display battle records on 2F on the [[Pokémon Center]], and in some [[Pokégear]] phone number entries.
|-
| 0x23 || Static display || Prints "<code>&nbsp;tzx</code>" ({{wp|mojibake}} of <code>こうげき</code>, which means "attack"). || Unused. In Japanese, it is used in in-battle text.
|-
| 0x24 || Static display || Prints "<code><sup>P</sup><sub>O</sub><sup>K</sup><sub>é</sub></code>". || Used on the menu in the name of the [[Pokégear]] option.
|-
| 0x25 || Print control || '''Zero-width breakable space:''' Usually prints nothing (zero width), but prints as a line break (0x22) on the [[Town Map]]. || Unused.
|-
| 0x35 || Static display || Print nothing (zero width). || Unused. In Japanese, it printed "<code>ばん どうろ</code>" ("Route №").
|-
| 0x36 || Static display || Print nothing (zero width). || Unused. In Japanese, it printed "<code>わたし</code>" ("I"/"me").
|-
| 0x37 || Static display || Print nothing (zero width). || Unused. In Japanese, it printed "<code>ここは</code>" ("Here is").
|-
| 0x38 || Static display || Prints "<code>RED</code>". || Unused. Relates to unused code for storing a custom name for {{ga|Red}}.
|-
| 0x39 || Static display || Prints "<code>GREEN</code>". || Unused. Relates to unused code for storing a custom name for {{ga|Blue}} (who is called "Green" in Japanese).
|-
| 0x3F || Variable display || Prints the opposing Trainer's name (including their Trainer class). || Used in various in-battle messages.
|-
| 0x49 || Static display || Prints "<code>MOM</code>". || Unused. Relates to unused code for storing a custom name for {{jo|Mom}}.
|-
| 0x4A || Static display || Prints "<code>{{PK}}{{MN}}</code>". || Several usages, including the [[party]] button in battle and on the menu, and the name of the Trainer class {{tc|Pokémon Trainer|{{PK}}{{MN}} Trainer}}.
|-
| 0x4B || Print control || Scrolls the standard text window up one line after player confirmation, then starts writing at the second line. || Implementation of 0x55. Not used directly.
|-
| 0x4C || Print control || '''Autoscroll:''' Scrolls the standard text window up one line without player confirmation, then starts writing at the second line. || Used in messages for [[Stat modifier|stat modification]] by 2 stages.
|-
| 0x4E || Print control || '''Double-spaced line break:''' Moves the print position two tiles below the start of the current line. || Used in multiline text not printed in the standard text box, such as item descriptions and Pokédex entries.
|-
| 0x4F || Print control || '''Second line:''' Moves the print position to the start of the second line of the standard text window. || Used in multiline text printed in the standard text box, such as character dialogue.
|-
| 0x50 || Print control || String terminator || Used as a string terminator. For strings in fixed length fields, it is often used to pad shorter strings to the required length.
|-
| 0x51 || Print control || '''Paragraph:''' Clears the standard text window after player confirmation, then starts printing in a new window. || Used in text split across multiple text boxes, such as character dialogue.
|-
| 0x52 || Variable display || Prints the player's name. || Used in dialogue that refers to the player's name (specifically, dialogue that referred to the player without an honorific in the Japanese version).
|-
| 0x53 || Variable display || Prints the [[rival]]'s name. || Used in dialogue that refers to the rival's name.
|-
| 0x54 || Static display || Prints "<code>POKé</code>". || Frequently used in text that includes "POKé", such as "POKéMON" and "POKéGEAR".
|-
| 0x55 || Print control || '''Scroll:''' Scrolls the standard text window up one line after player confirmation, then starts writing at the second line. || Used in scrolling multiline text printed in the standard text box, such as character dialogue.
|-
| 0x56 || Static display || Prints "<code>……</code>". || Used in dialogue that prints sequential ellipses.
|-
| 0x57 || Print control || '''Done:''' After player confirmation, closes the text window. || Used at the end of dialogue printed in the standard text window.
|-
| 0x58 || Print control || '''Prompt:''' After player confirmation twice, closes the text window. || Used at the end of dialogue which is followed by some kind of choice for the player.
|-
| 0x59 || Variable display || Prints the target of a move. If referring to the opponent's Pokémon, "<code>Enemy </code>" is prepended to the Pokémon's name. || Used in various messages in battle.
|-
| 0x5A || Variable display || Prints the user of a move. If referring to the opponent's Pokémon, "<code>Enemy </code>" is prepended to the Pokémon's name. || Used in various messages in battle.
|-
| 0x5B || Static display || Prints "<code>PC</code>". || Unused.
|-
| 0x5C || Static display || Prints "<code>TM</code>". || Unused.
|-
| 0x5D || Static display || Prints "<code>TRAINER</code>". || Used as the [[Original Trainer]] of [[in-game trade]] Pokémon in Generation I.
|-
| 0x5E || Static display || Prints "<code>ROCKET</code>". || Unused.
|-
| 0x5F || Print control || Prints "<code>.</code>" and ends the Pokédex entry. || Unused. In Generation I, it was used at the end of Pokédex entries; in Generation II, Pokédex entries instead end with a regular period and string terminator.
|}


===Overwriting characters===
===Overwriting characters===
Line 431: Line 512:
|-
|-
! 6-
! 6-
| style="background: #000" | || ▲ || [[File:Character 0x62 ii.png|16px]] || D || E || F || G || H || I || V || S || L || M ||: || ぃ || ぅ
| style="background: #000" | || ▲ || [[File:Character 0x62 ii.png|16px]] || D || E || F || G || H || I || V || S || L || M || : || ぃ || ぅ
|-
|-
! 7-
! 7-
Line 461: Line 542:
|}
|}


==Korean==
===Control characters===
{{main|Korean character encoding (Generation II)}}
 
==Control characters==
{{incomplete|section|Any alternate defaults or functions in Gold and Silver or in other languages}}
The characters on a gray background below are not naturally used in the games.
The characters on a gray background below are not naturally used in the games.


{| border=1 style="border: 1px solid #000; border-collapse: collapse"
{| border=1 style="border: 1px solid #000; border-collapse: collapse"
|- style="background: #ccf;"
|- style="background: #ccf;"
! Character || Japanese || English
! Character !! Function
|-
|-
| 0x14 || colspan=2 | Prints the player's name, including a gendered honorific in Japanese (adds <code>くん</code> for male, <code>ちゃん</code> for female).
| 0x14 || Prints the player's name, including a gendered honorific (adds <code>くん</code> for male, <code>ちゃん</code> for female).
|- style="background: #ddd"
|- style="background: #ddd"
| 0x15 || ''Nothing.'' || May break.
| 0x15 || Related to the [[Mobile Game Boy Adapter]].
|- style="background: #ddd"
|- style="background: #ddd"
| 0x16 || ''Nothing.'' || May break.
| 0x16 || ''Nothing.''
|-
|-
| 0x1D || Prints <code>に </code>. || style="background: #ddd" | Prints <code>;</code>.
| 0x1D || Prints <code>に </code>.
|-
|-
| 0x1E || Prints <code>って</code>. || style="background: #ddd" | Prints <code>[</code>.
| 0x1E || Prints <code>って</code>.
|-
|-
| 0x1F || Prints <code>を </code>. || style="background: #ddd" | Prints <code>&nbsp;</code>.
| 0x1F || Prints <code>を </code>.
|-
|-
| 0x22 || Prints <code>た!</code>. || style="background: #ddd" | A "half" line break (moves the print position to the place one tile below the start of the current line).
| 0x22 || Prints <code>た!</code>.
|-
|-
| 0x23 || Prints <code>こうげき</code>. || style="background: #ddd" | ''Prints <code> tzx</code>, but this appears to be junk data.''
| 0x23 || Prints <code>こうげき</code>.
|-
|-
| 0x24 || Prints <code>は </code>. || Prints <code><sup>P</sup><sub>O</sub><sup>K</sup><sub>é</sub></code>.
| 0x24 || Prints <code>は </code>.
|-
|-
| 0x25 || Prints <code>の </code>. || style="background: #ddd" | ''Nothing.''
| 0x25 || Prints <code>の </code>.
|-
|-
| 0x35 || Prints <code>ばん どうろ</code>. || style="background: #ddd" | ''Nothing.''
| 0x35 || Prints <code>ばん どうろ</code>.
|-
|-
| 0x36 || Prints <code>わたし</code>. || style="background: #ddd" | ''Nothing.''
| 0x36 || Prints <code>わたし</code>.
|-
|-
| 0x37 || Prints <code>ここは </code>. || style="background: #ddd" | ''Nothing.''
| 0x37 || Prints <code>ここは </code>.
|- style="background: #ddd"
|- style="background: #ddd"
| 0x38 || Prints <code>レッド</code>. || Prints <code>RED</code>.
| 0x38 || Prints <code>レッド</code>.
|- style="background: #ddd"
|- style="background: #ddd"
| 0x39 || Prints <code>グリーン</code>. || Prints <code>GREEN</code>.
| 0x39 || Prints <code>グリーン</code>.
|-
|-
| 0x3F || colspan=2 | Prints the opposing Trainer's name (including their Trainer class). ''(Outside of battle, this may not terminate properly.)''
| 0x3F || Prints the opposing Trainer's name (including their Trainer class).
|- style="background: #ddd"
|- style="background: #ddd"
| 0x49 || Prints <code>おかあさん</code>. || Prints <code>MOM</code>.
| 0x49 || Prints <code>おかあさん</code> ("MOM").
|-
|-
| 0x4A || Prints <code>が </code>. || Prints <code><sup>P</sup><sub>K</sub><sup>M</sup><sub>N</sub></code>.
| 0x4A || Prints <code>が </code>.
|-
|-
| 0x4B || colspan=2 style="background: #ddd" | Appears to be the same as 0x55
| 0x4B || style="background: #ddd" | Appears to be the same as 0x55
|-
|-
| 0x4C || colspan=2 style="background: #ddd" | Appears to be the same as 0x55 except without any prompt or pause (immediately shifting the dialogue box's lines upwards)
| 0x4C || style="background: #ddd" | Appears to be the same as 0x55 except without any prompt or pause (immediately shifting the dialogue box's lines upwards)
|-
|-
| 0x4E || colspan=2 | Line break (moves the print position to the space two tiles below the start of the current line (as defined by explicit placements of the print position); mostly used in move descriptions and Pokédex entries).
| 0x4E || Line break (moves the print position to the space two tiles below the start of the current line (as defined by explicit placements of the print position); mostly used in move descriptions and Pokédex entries).
|-
|-
| 0x4F || colspan=2 | Dialogue line break (moves the print position to the expected start of the second line in a standard dialogue box).
| 0x4F || Dialogue line break (moves the print position to the expected start of the second line in a standard dialogue box).
|-
|-
| 0x50 || colspan=2 | String terminator.
| 0x50 || String terminator.
|-
|-
| 0x51 || colspan=2 | Prompts the player to press a button, after which the text window is cleared to make way for the following text.
| 0x51 || Prompts the player to press a button, after which the text window is cleared to make way for the following text.
|-
|-
| 0x52 || colspan=2 | Prints the player's name without an honorific.
| 0x52 || Prints the player's name without an honorific.
|-
|-
| 0x53 || colspan=2 | Prints the rival's name.
| 0x53 || Prints the rival's name.
|-
|-
| 0x54 || Prints <code>ポケモン</code>. || Prints <code>POKé</code>.
| 0x54 || Prints <code>ポケモン</code>.
|-
|-
| 0x55 || colspan=2 | 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.
| 0x55 || 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.
|-
|-
| 0x56 || colspan=2 | Prints <code>......</code> (in the middle of the line in Japanese).
| 0x56 || Prints <code>......</code> (in the middle of the line in Japanese).
|-
|-
| 0x57 || colspan=2 | Marks the end of dialogue, without a visual prompt to the player.
| 0x57 || Marks the end of dialogue, without a visual prompt to the player.
|-
|-
| 0x58 || colspan=2 | Marks the end of dialogue, with a visual prompt to the player.
| 0x58 || Marks the end of dialogue, with a visual prompt to the player.
|-
|-
| 0x59 || colspan=2 | Prints the inactive{{tt|*|In specific circumstances<!--E.g., Rage-->, the game may 'pretend' that the inactive Pokémon is actually active and vice versa.}} Pokémon's name in battle. ''(Outside of battle, this may not terminate properly.)''
| 0x59 || Prints the inactive{{tt|*|In specific circumstances<!--E.g., Rage-->, the game may 'pretend' that the inactive Pokémon is actually active and vice versa.}} Pokémon's name in battle. ''(Outside of battle, this may not terminate properly.)''
|-
|-
| 0x5A || colspan=2 | Prints the active{{tt|*|In specific circumstances, the game may 'pretend' that the active Pokémon is actually inactive and vice versa.}} Pokémon's name in battle.
| 0x5A || Prints the active{{tt|*|In specific circumstances, the game may 'pretend' that the active Pokémon is actually inactive and vice versa.}} Pokémon's name in battle.
|-
|-
| 0x5B || Prints <code>パソコン</code>. || Prints <code>PC</code>.
| 0x5B || Prints <code>パソコン</code>.
|-
|-
| 0x5C || Prints <code>わざマシン</code>. || Prints <code>TM</code>.
| 0x5C || Prints <code>わざマシン</code>.
|-
|-
| 0x5D || Prints <code>トレーナー</code>. || Prints <code>TRAINER</code>.
| 0x5D || Prints <code>トレーナー</code>.
|-
|-
| 0x5E || Prints <code>ロケットだん</code> || Prints <code>ROCKET</code>.
| 0x5E || Prints <code>ロケットだん</code>.
|-
|-
| 0x5F || colspan=2 | Prints a period (0xE8) and simultaneously functions as a string terminator. ''(Only used in Japanese Pokédex entries.)''
| 0x5F || Prints a period (0xE8) and simultaneously functions as a string terminator. ''(Only used in Japanese Pokédex entries.)''
|}
|}
==Korean==
{{main|Korean character encoding (Generation II)}}
==Control characters==
Code points within the 0x00-0x5F range are either control characters or Japanese diacritic characters (or in other languages, [[#Special duplicate characters|leftovers from Japanese diacritic characters]]). When including in a text string, they execute a piece of code instead of printing a single character, unless caught by [[#name error handling|name error handling]].
There are three main categories of control character:
* [[#Static display codes|Static display]]: Prints a fixed string (which may contain multiple characters)
* [[#Variable display codes|Variable display]]: Prints the value of a text variable (which may contain multiple characters)
* [[#Print control codes|Print control]]: Directs where to print text
===Static display codes===
{{incomplete|section|needs=Values printed in French, German, Italian, Spanish}}
The following is a table of what the static display codes print in each language. Entries on a grey background are not static display codes in that language. Entries on a pink background are simply [[#Special duplicate characters|special duplicate characters]] in that language.
Korean control characters do not align with other languages, so are [[Korean character encoding (Generation II)#Control characters|listed separately]].
{| class="wikitable"
! Code point
! Japanese
! English
|-
| 0x1D || <code>に </code> ({{wp|Japanese particles|particle ''ni''}}) ||style="background: #ddd"| <code>;</code>
|-
| 0x1E || <code>って</code> ||style="background: #ddd"| <code>[</code>
|-
| 0x1F || <code>を </code> ({{wp|Japanese particles|particle ''wo''}}) ||style="background: #ddd"| <code>&nbsp;</code>
|-
| 0x22 || <code>た!</code> ||style="background: #ddd"| [[#Line breaks|Single-spaced line break]]
|-
| 0x23 || <code>こうげき</code> ("attack") || <code>&nbsp;tzx</code><ref name="kougeki" group="lower-alpha"/>
|-
| 0x24 || <code>は </code> ({{wp|Japanese particles|particle ''wa''}}) || <code><sup>P</sup><sub>O</sub><sup>K</sup><sub>é</sub></code>
|-
| 0x35 || <code>ばん どうろ</code> ("Route №") || Nothing (zero width)
|-
| 0x36 || <code>わたし</code> ("I") || Nothing (zero width)
|-
| 0x37 || <code>ここは</code> ("Here is") || Nothing (zero width)
|-
| 0x38 || <code>レッド</code> ("Red") || <code>RED</code>
|-
| 0x39 || <code>グリーン</code> ("Green") || <code>GREEN</code>
|-
| 0x49 || <code>おかあさん</code> ("mom") || <code>MOM</code>
|-
| 0x4A || <code>が </code> ({{wp|Japanese particles|particle ''ga''}}) || <code>{{PK}}{{MN}}</code>
|-
| 0x54 || <code>ポケモン</code> ("Pokémon") || <code>POKé</code>
|-
| 0x55 || <code>ポケモン</code> ("Pokémon") || <code>POKé</code>
|-
| 0x56 || <code>⋯⋯</code> || <code>……</code>
|-
| 0x5B || <code>パソコン</code> ("PC") || <code>PC</code>
|-
| 0x5C || <code>わざマシン</code> ("TM") || <code>TM</code>
|-
| 0x5D || <code>トレーナー</code> ("Trainer") || <code>TRAINER</code>
|-
| 0x5E || <code>ロケットだん</code> ("Team Rocket") || <code>ROCKET</code>
|}
<references group="lower-alpha">
<ref name="kougeki" group="lower-alpha">{{wp|mojibake}} of <code>こうげき</code></ref>
</references>
The static display control character 0x5D "TRAINER" is used as the [[Original Trainer]] of Pokémon obtained in [[in-game trade]]s. Due to being a control character, this means that if the Pokémon is traded to a game in a different language, the Original Trainer is automatically updated to display "TRAINER" in that game's own language.
===Variable display codes===
The following are control characters that display a particular variable value.
For variables that are only populated during battle, they may not terminate properly outside of battle; otherwise, they typically retain the last value they held.
{| class="wikitable sortable"
! Code point
! Description
|-
| 0x14 || Prints the player's name, including a gendered honorific in Japanese (adds <code>くん</code> for male, <code>ちゃん</code> for female). Identical to 0x52 in Western languages.
|-
| 0x3F || Prints the opposing Trainer's name (including their Trainer class).
|-
| 0x52 || Prints the player's name, without an honorific. Identical to 0x14 in Western languages.
|-
| 0x53 || Prints the [[rival]]'s name.
|-
| 0x59 || Prints the target of a move. If referring to the opponent's Pokémon, "<code>Enemy </code>" is prepended to the Pokémon's name.
|-
| 0x5A || Prints the user of a move. If referring to the opponent's Pokémon, "<code>Enemy </code>" is prepended to the Pokémon's name.
|}
===Print control codes===
====Line breaks====
Line breaks are manually defined; text usually prints on a single line until a line break is defined.
Most text is printed double-spaced, leaving a one-tile blank row between each line of text. On the rare occasions it is necessary, text can be printed single-spaced using 0x22 (half-line break).
For text printed outside of the standard text window, line breaks are created with 0x4E (next line), or in rare cases that do not use double-line spacing, 0x22 (half-line break). Both of these line breaks move the print head relative to the start of the preceeding line.
For text printed in the standard text window, there is a collection of distinct line breaks that are used. The standard text window only has two lines, so rather than moving the print head relative to the preceeding line, all of the standard text window line breaks move the print head to the start of either the first or second line.
* 0x4F (second line): Continues printing at the start of the second line
* 0x51 (paragraph): After player confirmation, clears the text window and continues printing from the start of the first line.
* 0x55 (scroll): After player confirmation, scrolls the text window one line up then continues printing from the start of the second line.
* 0x4C (autoscroll): Automatically scrolls the text window one line up then continues printing from the start of the second line (without waiting for player confirmation).
* 0x57 (done): After player confirmation, closes the text window.
* 0x58 (prompt): After player confirmation twice, closes the text window.
Additionally, 0x4B contains the implementation of 0x55 (scroll). That is, 0x55 causes 0x4B to be placed at its position, then 0x4B defines the code for actually creating such a line break.
====Breakable static display codes====
In English, there are two characters that normally function as static display codes, but on the [[Town Map]] are turned into a line break (0x22) instead.
* 0x1F (breakable space): Normally prints <code> </code>, but on the Town Map is turned into a line break.
* 0x25 ({{wp|Zero-width space|zero-width breakable space}}): Normally prints nothing (zero width), but on the Town Map is turned into a line break.
====String terminator====
0x50 is the standard string terminator.
In text for the Pokédex's [[Unown Mode]], because 0x50 is used for an Unown letter, 0xFF is used as the string terminator instead.
In Japanese Pokédex entries, 0x5F prints <code>.</code> are marks the end of the Pokédex entry. In English Generation II games, Pokédex entries end with a regular period and the regular string terminator 0x50. (In Generation I, English language games also used 0x5F to mark the end of Pokédex entries.)
====Null====
0x00 is the {{wp|null character}}. It is used to indicate null values.
If included in a string, it renders as <code>?</code>.


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

Navigation menu