# `IXUD` โ€” the game's localised text, decoded Status: โœ… enumeration, structure and content; โœ… six languages confirmed; ๐Ÿ”ด two of 94 keys unresolved. The container and its hash are in [idxd-tag-hash](idxd-tag-hash.md). This is what is **inside** them โ€” the text the port needs. ## โœ… Where they are **534 IXUD entries, 94 distinct TOC keys, 92 resolved by name.** | pak | entries | |---|---| | `GP_MAIN_GAME_{D,E,F,I,J,S}` | 86 each = **516** | | `GP_CHALLENGE`, `GP_HANGAR_ARSENAL` | 6 each | | `GP_DIALOG`, `GP_LEADERBOARD`, `GP_SAVE_LOAD` | 2 each | Two naming conventions: language paks use `language\` (the `` comes from the `LocalStringFiles` records of the IDXD manifests in the same pak); other paks use `\`, e.g. `eng\Strings.tbl`. ## โœ… What the text is * `MissionDialog_local_string.tbl` โ€” mission objective / lose / hint panels * `SUBObjective_local_string.tbl` โ€” 91 bonus-objective banners, two lines each * `ScriptMessage_S` / `โ€ฆguide` โ€” scripted in-mission radio, and the tutorial voice * `DemoMessage_S` โ€” cutscene dialogue * `PresetMessage_S` โ€” the bulk: reactive combat chatter keyed by speaker class (`MSG_ADAN` 23,236 fields, `MSG_RHIN` 21,196, `MSG_TCAF` 17,148, โ€ฆ) * `Mes_hokyu_*` โ€” resupply/docking barks (*hokyu* = ่ฃœ็ตฆ, resupply) * `CharacterName_string.tbl` โ€” 63 speaker labels * the hangar `Strings.tbl` โ€” per-weapon `Name` / `Desc` / `Condition` ## โœ… Stage 02's objectives, verified here `S02_P1_OBJECTIVE` and friends โ€” the five-name groups in the `.ssb` symbol tables โ€” are **not** IXUD keys. They are record names in an **IDXD** map, `message\MissionDialogMessage.tbl`, whose positional fields list the *lowercase* per-line IXUD names. `*_GRAPH` is the odd one: a single named field holding a texture, `pgmsg_stg02_1.t32`. Decoded independently here (600 fields, trailer identity holds): ``` S02_P1_Objective_00 'Shoot down all invading enemy fighters' S02_P1_Objective_01 'while watching out for attacks' S02_P1_Objective_02 'on the ACROPOLIS.' S02_P2_Objective_00 "Protect the Admiral's ship the CALIBAN" S02_P3_Objective_00 'Destroy the interstellar cruise missiles' ``` ๐Ÿ”‘ **Phase 1's objective is "shoot down all invading enemy fighters โ€ฆ while watching out for attacks on the ACROPOLIS"** โ€” which matches the script exactly: the condition polls three enemy squadrons, and the escort's loss is the fail branch. And phase 2's is *"protect the CALIBAN until it enters the safe zone"* โ€” positional, which is why no kill count appears there. ## โœ… Structure * 528 of 534 objects hold **one** record; the six hangar files hold 63 each. * **624,440 named fields, 48 positional** (only the hangar `CATEGORY_DESC`). * A logical message is split across **fields**, not inside a string: `__` with `` = `00`โ€“`03`. **55 % of all fields are the empty string** โ€” unused line slots. * **No control characters anywhere.** The only escape is a literal two-character `\n`, and only in block-text tables (hangar, challenge, dialog). Per-line mission tables never use it. `%s` appears 18 times, all in the hangar. * `[โ€ฆ]` is display text, not markup โ€” the HUD marker labels `[HO]`, `[GA]`, `[TA]`, `[OB]`, `[WP]`. **That is where `[OB]` comes from**, the marker the earlier `REMAINING OB` work chased. * Records and fields are stored in **ascending key/tag order**, so lookup is a binary search โ€” no roster scan needed. ## โœ… Six languages: D/E/F/I/J/S = German, English, French, Italian, Japanese, Spanish Same TOC key, same record key, same field tags; only values differ. Verified on `S02_P1_Objective_00`: English *"Shoot down all invading enemy fighters"*, Japanese *ใ€Œๆฏ่‰ฆใ€Šใ‚ขใ‚ฏใƒญใƒใƒชใ‚นใ€‹ใธใฎๆ”ปๆ’ƒใซใ€*. D/E/F/I/S share identical field name-sets; **J differs in 78 of 86 objects** because it omits the trailing empty line slot. ## ๐Ÿ”ด Not resolved * **Two keys** โ€” `0x298964b2` (981 fields) and `0xee019650` (135) โ€” appear in all six language paks and are in no manifest. They decode fine and are **byte-identical across all six**, i.e. Japanese-only `MSG_VOICE_*` transcripts that were never localised. Their names are unknown. * `GP_DIALOG`'s `eng` and `jpn` objects are byte-identical Japanese, and `GP_SAVE_LOAD`'s "English" table is half Japanese โ€” shipped untranslated, not a decoding error.