Update 2.214
8/2/2026
v2.214.0.0BETAMINOR
SeymourAug 2, 2026
i18n pipeline based on the game's official corpus (8 regions) + 7-language bases + official translations applied (ES/FR/DE/IT)
- Phase 1 — Editor extraction:
work/_extract_editor_strings.py→Text\editor_strings.json(251 resx keys + 2,414 hardcoded literals across 96.axaml). - Phase 2 — Game corpus:
RuntimeTools/TextCorpusLab(uses production FfxLib parsers) extracts 117 files / 14,832 lines from 8 regions (new_uspc,new_sppc,new_frpc,new_depc,new_itpc,jppc/new_jppc,new_krpc,new_chpc) × 13 tables (btl_txt, name/item/menu/status/summon/arms/mmain/save/config/build/btlend_txt, w_name) →Text\game_{region}\. - Phase 3 — Smart linking:
work/_linker.py(inverted word index → (file,index,slot) + exact/substring/rare-word matching) →Text\linkage.json(57 strong links) +linkage_weak.json(523 candidates). - Phase 4 — Application:
work/_apply_translations.pyapplies the game's OFFICIAL translations toStrings.{es,fr,de,it}.resx(e.g. "Sphere Grid"→ES Desarrollo/FR Sphérier/DE Sphärobrett/IT Sviluppo; "Overdrive"→ES/IT Turbo/DE Ekstase) + generatesterms_latin.json(34 terms). - 7-language bases created:
Strings.{es,fr,de,it,ja,ko,zh}.resx(full structure, EN fallback). - Honest limitations: JA/KO/ZH =
<K:n>tokens (font-bank still open, existing doc); slot alignment has gaps in some regions (e.g. IT "Niente"); 2,414 hardcoded literals await key migration (dictionary ready). - Doc:
docs/ai/I18N_GAME_CORPUS_PIPELINE_2026-08-02.md. Build 0 errors (lab + editor). ### MINOR
v2.213.0.0
v2.214.0.1BETAREVISION
SeymourAug 2, 2026
Event-text code→glyph link PROVEN in the EXE (unlocks the JP/KO/ZH decoder)
FFX_EventText_AdvanceCharGlyph(0x8B92E0) decompiled — contains the full code→glyph mapping that the 2026-06-06 doc marked as open: 1-byte (≥0x30→idx = byte-0x30on the current slot) + 2-byte pairs (leads0x2C-0x2F→slot 0,0x2A-0x2B→slot 1,0x28-0x29→slot 2,0x26-0x27→slot 3,0x06→slot 5) with linear formulas208*lead + next - K; width =*(char*)(SlotGlyphMeta + idx) * 0.25.FFX_Font_GetSlotGlyphMeta(0x8AC380) = pointer atbyte_183FA78[16*slot + 8940](6-slot table at 0x183FA78).- GOLDEN RULE: comments applied on the canonical db (0x8B92E0, 0x8AC380, 0x183FA78 — OK1/OK2/OK3 True). Doc:
docs/reverse/FFX_EVENTTEXT_GLYPH_ELO_PROVADO_2026-08-02.md. - Unlocks: resolving the
<K:n>tokens of the JA/KO/ZH corpus (i18n pipeline v2.214.0.0) — only the RT2 probe to capture the SlotGlyphMeta pointers at runtime is still missing. ### MINOR
v2.214.0.0
v2.214.0.2BETAPATCH
SeymourAug 2, 2026
Remiem RT2 (2nd test): VANILLA positions preserved + camera computed from real geometry
- RT2 lesson: kino00_00 (Mushroom Rock) has a top-down camera — a camera-derived forward has an undefined horizontal direction (eye above → XZ component is noise) → auto-layout spread party/monsters wrong (packed). Fix: for scenarios with NATIVE positions in the bin (remiem), the compose preserves the vanilla positions (party right / monsters left — the scenario truth) and only adjusts count/chunk2/camera.
BuildVanillaMonsterPositions(new): native monLive anchors + extras derived from the group centroid for counts above capacity. - Remiem x4 camera computed from geometry (
ApplyRemiemX4BehindPartyCamerarefactored): h now comes from the party→monsters forward of chunk3 (h 12.9→−83.9 on kino00_00) — before it was the fixed −104.6 + elevation −25 (what made the camera top-down). Elev −11.3 and dist 122.1 vanilla preserved. - Surgical diff: 73 bytes (was 132) — only chunk2 IDs + count + splice (+16) + re-stamped pointers + camera h; monLive positions byte-identical to vanilla (x4:
grew 4→4with the 4 native coords). - Camera-derived auto-layout stays as an inspection tool (
--auto-layout-check); the compose uses the bin truth (the hook keeps passing--auto-layout— the lab decides). - RT2
Needs Testing: Custom Mix → Mushroom Rock x4 → Launch → battle should open with the camera behind the party (not top-down), party/monsters at native scenario positions, and the 4 aeons in slots. ### PATCH
v2.214.0.1
v2.214.1.0BETAPATCH
SeymourAug 2, 2026
i18n Wave 1: official game terms migrated to resx keys with official ES/FR/DE/IT translations (game corpus)
- 25
Term*keys created in all 9 resx files (Strings.{,pt,es,fr,de,it,ja,ko,zh}.resx) with the official translations from theText\terms_latin.jsonpipeline (Weapon→Armas/Armes/Waffe/Arma; Overdrive→Turbo/Overdrive/Ekstase/Turbo; Status→Condición/Etat/Status/Status; Scan→Libra/Scan/Analyse; Distill*/Shield/Boost/Doom etc.). IT slot gaps (Niente) fall back to EN honestly (documented misalignment). PT/JA/KO/ZH = EN (no official PT corpus; JA/KO/ZH await font-bank — code→glyph link proven in v2.214.0.1, RT2 probe pending). - 41 hardcoded literals replaced with
{x:Static res:Strings.TermX}across 9 active modules (KernelCommands 16, MonEditor 17, CustomBossCreator 1, InventoryTracker 2, LiveBattleLab 1, MonsterAiEditor 1, SaveEditorCharacter 1, SaveEditorItems 1, WeaponGear 1) +xmlns:resadded to headers missing it.MonsterAiEditor2untouched (discontinued, hard rule). - Reusable script:
work/_i18n_onda1_migrate.py(resx + axaml, exact attribute/value substitution — no false positives like "Cost Overdrive"). - Gate: Release build 0 errors; suite 381/381 PASS (includes lane's
StringsTests). Wave 1 pending: manual smoke in the editor (switch PT/EN and open the 9 modules). ### PATCH
v2.214.0.2
v2.214.2.0BETAPATCH
SeymourAug 2, 2026
i18n Wave 2: 261 repeated literals migrated to 51 common EN/PT keys (sweep across 91 modules)
- 51
Common*keys created in all 9 resx (EN neutral + PT translated; ES/FR/DE/IT/JA/KO/ZH = EN — no official corpus for editor UI) covering the 56 values with ≥3 occurrences (herdado27x,Fechar20x,valor8x,Aplicar7x,Foco6x,Prévia humana5x,BIBLE OF SPIRA4x,Pesquisar habilidade por nome ou hex4x,+ fase comum/+ última fase/remover fase3x,Exigir HP <3x,Comando (0x####)3x, PosX/PosY, US Description...). - Reuse of existing keys:
Session Controls→SessionControls(20x),Salvar→ActionSave(6x) — zero duplication. - 261 replacements across 91 .axaml files with
{x:Static res:Strings.X}+xmlns:resguaranteed.MonsterAiEditor2*excluded from the sweep (discontinued hard rule — 0 diffs verified). - Scripts:
work/_i18n_onda2_migrate.py(centralized COMMON/REUSE, recursive walk with exclusion) +_i18n_onda2_check.py(0 residual literals). - Gate: Release build 0 errors; suite 381/381 PASS. Waves 1+2 cumulative: 302 literals migrated (2,414 → 2,112).
- Pending: manual PT/EN smoke in the editor; Wave 3 (unique per-file literals) in progress. ### PATCH
v2.214.1.0