Aggiornamento 2.223
02/08/2026
v2.223.0.0BETAMINOR
Seymour2 ago 2026
F7 KEYSTONE CABLATO: il menu nativo ora APPLICA le leve RAM (effetto immediato a schermo) + regola HOOKS-IN-ENGLISH. (letterale tecnico: F7 KEYSTONE WIRED) (letterale tecnico: APPLIES RAM) (letterale tecnico: on-screen)
- Cablaggio keystone:
NativeMenu_PumpHook(dllmain) ora consuma il risultato del menu nativo (g_ourClosed/g_ourResult/g_rowValue) e chiude il menu da solo — le righe interattive F7 hanno un effetto REALE in-game. F7_LeverApply(dllmain): leve RAM immediate — Music (F7_MusicPreview— suona la traccia ORA, senza persist), (letterale tecnico: NOW)Debug Invincible (byte0xD2A8F8+1), Force Battle (nuovaF7_ForceFieldBattle(field, group)— campo arbitrario dallo stepper, basata su tick), (letterale tecnico: tick-based)AI Opcode swap (byte+0xF78del primo nemico vivo viag_BattleEnemyList0xD37634) e Difficulty (leva leggera — si applica al prossimo inizio battaglia).F7_ForceFieldBattle(F7InLive.h/.cpp): stessa macchina a tick di (letterale tecnico: tick-based)F7_ForceLastBattlecon il campo/gruppo della leva (nessuna dipendenza dalla battaglia catturata).- Fix compile:
NativeMenuShell.hora è self-contained (#include <stdio.h>— lo_snprintf_sdell'header richiedeva l'include nel TU). - REGOLA EXTRA (CLAUDE.md): (letterale tecnico: EXTRA RULE) hook/runtime C++ — TUTTO il testo (etichette menu, righe di stato, log, stringhe export) in ENGLISH; le stringhe PT rimaste in (letterale tecnico: ALL)
ArenaPlusComposePicktradotte. - Gate: build Release 0 errori; deploy Steam OK (
deploy-arena-plus-compose.ps1). RT2 in sospeso: F7 → scegli una leva → conferma l'effetto immediato a schermo. (letterale tecnico: on-screen) ### PATCH
v2.222.2.0
v2.223.1.0BETAPATCH
Seymour2 ago 2026
StudioWebServer: POST /api/edits (infra gizmo F3.5) + TABELLA DISPATCH PPP VERIFICATA NEL DB CANONICO (RE). (letterale tecnico: PPP DISPATCH TABLE VERIFIED IN THE CANONICAL DB)
- POST
/api/edits/<encId>suStudioWebServer(il server accettava solo GET/HEAD): body{ slot, position?, heading?, scale? }→ merge viaSidecarEditsWriterin<serveRoot>/data/FinalFantasyX/edits/<encId>.json(la junction data/ scrive nella vera root noclip). Validazioni: encId decimale ≤10, slot 0-7, body ≤64KB, JSON valido. Fondazione per il gizmo di drag (F3.5 parte 2: il TS noclip salva via fetch POST — nessun processo esterno, stessa origin). 4/4 nuovi test (write+merge, encId cattivo, slot cattivo, body vuoto). - RE — tabella dispatch PPP verificata nel DB canonico live (
ffxoficial.exe.i64, ida-pro-mcp): 4 tabelle di voci da 0x28 byte provate da byte+stringhe+decompilazioni — variante0xC3A800(name@+0x20, fn@+0x04),0xC3BEC8/0xC3FC88/0xC863F0canoniche (name@+0x00, fn@+0x0C); raffinamento vs la doc MAGIC del 2026-07-31:0xC3A500è il VETTORE PUNTATORI NOME ppp* (non la tabella principale — main=0, terminatore 0xFFFFFFFF); semantica reale: +0x04=fnExtra, +0x0C=fnMain, +0x18=fnCleanup; 273 nomi ancora; (letterale tecnico: NAME POINTER VECTOR)estrattore standalone riproducibilescripts/ppp_dispatch_extractor.py(parse PE proprio, senza IDA/lock) rigenerascripts/ppp_dispatch_table.json(773 voci, slot 0-2 validati contro IDA su ogni tabella); rename applicati AL DB CANONICO ( (letterale tecnico: TO THE CANONICAL DB)PPP_Table_DrawKe_Variant/DrawKe/MatrixKeDMat/ZCrct). Doc:docs/reverse/PPP_DISPATCH_TABLE_RECONCILED_2026-08-02.md. C2 riprendibile con un vero catalogo name→fn. - Gate: test ViewerHub 17/17 PASS; build 0 errori.
- In sospeso: il consumer della tabella (chi la scansiona — nessun xref diretto; candidato HostContextTable 0xC64CE8); gizmo drag canvas (usa la POST sopra); propagare i rename MAGIC-07-31 dalla copia al DB canonico. ### MINOR
v2.223.0.0