Aggiornamento 2.214
02/08/2026
v2.214.0.0BETAMINOR
Seymour2 ago 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 — Linking intelligente:
work/_linker.py(indice parole invertito → (file,index,slot) + matching esatto/sottostringa/parola-rara) → (letterale tecnico: rare-word)Text\linkage.json(57 link forti) +linkage_weak.json(523 candidati). - Phase 4 — Applicazione:
work/_apply_translations.pyapplica le traduzioni UFFICIALI del gioco a (letterale tecnico: OFFICIAL)Strings.{es,fr,de,it}.resx(es. "Sphere Grid"→ES (letterale tecnico: e.g)Desarrollo/FR Sphérier/DE Sphärobrett/IT Sviluppo; "Overdrive"→ES/IT Turbo/DE Ekstase) + generaterms_latin.json(34 termini). - Basi 7 lingue create:
Strings.{es,fr,de,it,ja,ko,zh}.resx(struttura completa, fallback EN). - Limiti onesti: JA/KO/ZH = token
<K:n>(font-bank ancora aperta, doc esistente); l'allineamento slot ha gap in alcune regioni (es. IT "Niente"); 2.414 letterali hardcoded attendono la migrazione chiave (dizionario pronto). (letterale tecnico: e.g) - Doc:
docs/ai/I18N_GAME_CORPUS_PIPELINE_2026-08-02.md. Build 0 errori (lab + editor). ### MINOR
v2.213.0.0
v2.214.0.1BETAREVISION
Seymour2 ago 2026
Link code→glyph del testo evento PROVATO nell'EXE (sblocca il decoder JP/KO/ZH). (letterale tecnico: Event-text) (letterale tecnico: PROVEN)
FFX_EventText_AdvanceCharGlyph(0x8B92E0) decompilata — contiene il mapping code→glyph completo che la doc del 2026-06-06 marcava come aperto: 1 byte (≥0x30→idx = byte-0x30sullo slot corrente) + coppie a 2 byte (lead0x2C-0x2F→slot 0,0x2A-0x2B→slot 1,0x28-0x29→slot 2,0x26-0x27→slot 3,0x06→slot 5) con formule lineari208*lead + next - K; larghezza =*(char*)(SlotGlyphMeta + idx) * 0.25.FFX_Font_GetSlotGlyphMeta(0x8AC380) = puntatore abyte_183FA78[16*slot + 8940](tabella 6-slot a 0x183FA78).- GOLDEN RULE: commenti applicati sul db canonico (0x8B92E0, 0x8AC380, 0x183FA78 — OK1/OK2/OK3 True). Doc:
docs/reverse/FFX_EVENTTEXT_GLYPH_ELO_PROVADO_2026-08-02.md. - Sblocca: risolvere i token
<K:n>del corpus JA/KO/ZH (pipeline i18n v2.214.0.0) — manca solo la probe RT2 per catturare i puntatori SlotGlyphMeta a runtime. ### MINOR
v2.214.0.0
v2.214.0.2BETAPATCH
Seymour2 ago 2026
Remiem RT2 (2° test): posizioni VANILLA preservate + camera calcolata dalla geometria reale
- Lezione RT2: kino00_00 (Mushroom Rock) ha una camera top-down — un forward derivato dalla camera ha una direzione orizzontale (letterale tecnico: camera-derived)indefinita (occhio sopra → la componente XZ è rumore) → l'auto-layout spargeva party/mostri in modo sbagliato (impacchettati). Fix: per gli scenari con posizioni NATIVE nel bin (remiem), il compose preserva le posizioni vanilla (party a destra / mostri a sinistra — la verità dello scenario) e regola solo count/chunk2/camera.
BuildVanillaMonsterPositions(nuovo): ancora monLive native + extra derivati dal centroide del gruppo per i conteggi sopra la capacità. - Camera Remiem x4 calcolata dalla geometria (
ApplyRemiemX4BehindPartyCamerarefactored): h ora viene dal forward party→mostri di chunk3 (h 12.9→−83.9 su kino00_00) — prima era il fisso −104.6 + elevazione −25 (ciò che rendeva la camera dall'alto). Elev −11.3 e dist 122.1 (letterale tecnico: top-down)vanilla preservate. - Diff chirurgico: 73 byte (era 132) — solo id chunk2 + count + splice (+16) + pointer ri-timbrati + camera h; le posizioni monLive byte-identiche alla vanilla (x4: (letterale tecnico: re-stamped) (letterale tecnico: byte-identical)
grew 4→4con le 4 coordinate native). - L'auto-layout derivato dalla camera resta come (letterale tecnico: Camera-derived)strumento di ispezione (
--auto-layout-check); il compose usa la verità del bin (l'hook continua a passare--auto-layout— decide il lab). - RT2
Needs Testing: Custom Cocktail → Mushroom Rock x4 → Launch → la battaglia dovrebbe aprirsi con la camera dietro al party (non dall'alto), party/mostri nelle posizioni native dello scenario e i 4 aeoni negli slot. (letterale tecnico: top-down) ### PATCH
v2.214.0.1
v2.214.1.0BETAPATCH
Seymour2 ago 2026
i18n Wave 1: termini di gioco ufficiali migrati a chiavi resx con traduzioni ufficiali ES/FR/DE/IT (corpus di gioco)
- 25 chiavi
Term*create in tutti i 9 file resx (Strings.{,pt,es,fr,de,it,ja,ko,zh}.resx) con le traduzioni ufficiali della pipelineText\terms_latin.json(Armi→Armas/Armes/Waffe/Arma; Overdrive→Turbo/Overdrive/Ekstase/Turbo; Status→Condición/Etat/Status/Status; Scan→Libra/Scan/Analyse; Distill*/Shield/Boost/Doom ecc.). I gap slot IT (Niente) cadono su EN con onestà (disallineamento documentato). PT/JA/KO/ZH = EN (nessun corpus PT ufficiale; JA/KO/ZH aspettano la font-bank — link code→glyph provato in v2.214.0.1, probe RT2 in sospeso). - 41 letterali hardcoded sostituiti con
{x:Static res:Strings.TermX}in 9 moduli attivi (KernelCommands 16, MonEditor 17, CustomBossCreator 1, InventoryTracker 2, LiveBattleLab 1, MonsterAiEditor 1, SaveEditorCharacter 1, SaveEditorItems 1, WeaponGear 1) +xmlns:resaggiunto agli header che ne erano privi.MonsterAiEditor2intatto (discontinuato, regola dura). - Script riutilizzabile:
work/_i18n_onda1_migrate.py(resx + axaml, sostituzione esatta attributo/valore — niente falsi positivi tipo "Cost Overdrive"). - Gate: build Release 0 errori; suite 381/381 PASS (include gli
StringsTestsdella lane). Wave 1 in sospeso: smoke manuale nell'editor (passa a PT/EN e apri i 9 moduli). ### PATCH
v2.214.0.2
v2.214.2.0BETAPATCH
Seymour2 ago 2026
i18n Wave 2: 261 letterali ripetuti migrati a 51 chiavi comuni EN/PT (sweep su 91 moduli)
- 51
Common*chiavi presenti in tutti i 9 resx (EN neutrale + PT tradotto; ES/FR/DE/IT/JA/KO/ZH = EN — nessun corpus ufficiale per la UI dell’editor) che coprono i 56 valori con ≥3 occorrenze (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...). - Riuso di chiavi esistenti:
Session Controls→SessionControls(20x),Salvar→ActionSave(6x) — zero duplicazione. - 261 sostituzioni in 91 file .axaml con
{x:Static res:Strings.X}+xmlns:resgarantito.MonsterAiEditor2*escluso dallo sweep (regola dura discontinuata — 0 diff verificati). - Script:
work/_i18n_onda2_migrate.py(COMMON/REUSE centralizzato, walk ricorsivo con esclusione) +_i18n_onda2_check.py(0 letterali residui). - Gate: build Release 0 errori; suite 381/381 PASS. Waves 1+2 cumulative: 302 letterali migrati (2.414 → 2.112).
- In sospeso: smoke manuale PT/EN nell'editor; Wave 3 (unici per file) in corso. (letterale tecnico: per-file) ### PATCH
v2.214.1.0