Mise à jour 2.223
02/08/2026
v2.223.0.0BETAMINOR
Seymour2 août 2026
F7 KEYSTONE CÂBLÉ : le menu natif APPLIQUE désormais les leviers RAM (effet immédiat à l'écran) + règle HOOKS-IN-ENGLISH
- Câblage keystone :
NativeMenu_PumpHook(dllmain) consomme désormais le résultat du menu natif (g_ourClosed/g_ourResult/g_rowValue) et ferme le menu tout seul — les lignes interactives F7 ont un VRAI effet en jeu. F7_LeverApply(dllmain) : leviers RAM immédiats — Musique (F7_MusicPreview— joue la piste MAINTENANT, sans persistance), Debug Invincible (octet0xD2A8F8+1), Forcer le combat (nouveauF7_ForceFieldBattle(field, group)— champ arbitraire depuis le stepper, basé sur ticks), échange d'opcode AI (octet+0xF78du premier ennemi vivant viag_BattleEnemyList0xD37634) et Difficulté (levier léger — appliqué au prochain début de bataille).F7_ForceFieldBattle(F7InLive.h/.cpp) : même machine basée sur ticks queF7_ForceLastBattleavec le field/groupe du levier (aucune dépendance à la dernière bataille capturée).- Correctif de compilation :
NativeMenuShell.hest désormais autonome (#include <stdio.h>— le_snprintf_sde l'en-tête exigeait l'include dans l'unité de traduction). - RÈGLE EXTRA (CLAUDE.md) : hooks/runtime C++ — TOUT le texte (labels de menu, lignes de statut, logs, chaînes d'export) en ANGLAIS ; les chaînes PT restantes dans
ArenaPlusComposePicktraduites. - Porte : build Release 0 erreurs ; déploiement Steam OK (
deploy-arena-plus-compose.ps1). RT2 en attente : F7 → choisir un levier → confirmer l'effet immédiat à l'écran. ### PATCH
v2.222.2.0
v2.223.1.0BETAPATCH
Seymour2 août 2026
StudioWebServer : POST /api/edits (infra gizmo F3.5) + TABLE DE DISPATCH PPP VÉRIFIÉE DANS LA BASE CANONIQUE (RE)
- POST
/api/edits/<encId>surStudioWebServer(le serveur n'acceptait que GET/HEAD) : corps{ slot, position?, heading?, scale? }→ fusion viaSidecarEditsWriterdans<serveRoot>/data/FinalFantasyX/edits/<encId>.json(la jonction data/ écrit dans la vraie racine noclip). Validations : encId décimal ≤10, slot 0-7, corps ≤64Ko, JSON valide. Fondation pour le gizmo de drag (F3.5 partie 2 : le TS noclip sauvegarde via fetch POST — aucun processus externe, même origine). 4/4 nouveaux tests (write+merge, mauvais encId, mauvais slot, corps vide). - RE — table de dispatch PPP vérifiée en direct dans la base canonique (
ffxoficial.exe.i64, ida-pro-mcp) : 4 tables d'entrées 0x28 octets prouvées par octets+chaînes+décompiles — variante0xC3A800(name@+0x20, fn@+0x04), canoniques0xC3BEC8/0xC3FC88/0xC863F0(name@+0x00, fn@+0x0C) ; raffinement vs le doc MAGIC du 2026-07-31 :0xC3A500est le VECTEUR DE POINTEURS de NOMS ppp* (pas la table principale — main=0, terminateur 0xFFFFFFFF) ; vraie sémantique : +0x04=fnExtra, +0x0C=fnMain, +0x18=fnCleanup ; 273 noms d'ancres ; extracteur autonome reproductiblescripts/ppp_dispatch_extractor.py(parse PE propre, sans IDA/verrou) régénèrescripts/ppp_dispatch_table.json(773 entrées, slots 0-2 validés contre IDA sur chaque table) ; renames appliqués À LA BASE CANONIQUE (PPP_Table_DrawKe_Variant/DrawKe/MatrixKeDMat/ZCrct). Doc :docs/reverse/PPP_DISPATCH_TABLE_RECONCILED_2026-08-02.md. C2 reprenable avec un vrai catalogue nom→fn. - Porte : tests ViewerHub 17/17 PASS ; build 0 erreurs.
- En attente : consommateur de table (qui la scanne — pas de xrefs directes ; candidat HostContextTable 0xC64CE8) ; gizmo de drag sur canvas (utilise le POST ci-dessus) ; propager les renames MAGIC-07-31 de la copie vers la base canonique. ### MINOR
v2.223.0.0