Mise à jour 2.199
01/08/2026
v2.199.0.0BETAMINOR
Seymour1 août 2026
Aurora : enrichissement du visualiseur (F1–F6) piloté par l'analyse de noclip.website / fahrenheit / Spira Modifier
- F1 échelle/pose par ancre : l'overlay consomme désormais
anchor.scale(vrai scaleOwnSize ATEL 0x7028 viaAuroraSceneRenderer.GetMonsterScale) × facteur global ;flipXpar monstre ; slider renommé « Scale global ». - F2 vrai sol :
getGroundY(raycast de mesh vers le bas, cache par cellule) ; drag-to-place préfère les hits de mesh ; repli de plan au Y PROPRE de l'ancre (plus y=0 — cas prouvé klyt00_00 Y=2,9) + badge honnête ; toucheG= snap au sol (POST /drag). - F3 catalogue .ath :
FfxLib/Monster/MonsterAthAnimCatalog.cs(cycles d'animation nommés par le jeu ; source : tables .ath de fahrenheit — m109/m117/m124 + mouvements m001) ; panneau « 🎬 Animação (.ath) » dans l'overlay (menu déroulant, Play/Stop/T-pose, correspondance nom↔token de clip). - F4 zones d'encounter (infrastructure honnête) :
BuildEncounterZonesrésoutjppc/map/{area}/{mapKey}/bin/mapout.vpaet sérialisezones+zonesNote; l'overlay dessine des polygones avec un toggle. Vérité : le décodeur MAP1 ne décode TOUJOURS PAS le corpus (NoZonesParsed) — zéro fausse zone, note honnête dans le panneau (docFFX_MAPOUT_VPA_MAP1_BLOB_LAYOUT_NOTE_2026-08-01.md: la table de dispatch a 2 layouts + les blobs ne sont pas terminés par sentinelle = prochaine étape RE). - F5 actifs :
THREE.Cache.enabled(pas de re-téléchargement dans la session) ;fetchCached(Cache API, network-first pour les ancres) ; compteur « 📦 N MB loaded » (resource timing) ; cascade de repli de modèles_animated.gltf→.gltf→ dégradé ; convertisseur GLB (GltfContainerWriterdans PhyreModelExportLab — sous-commandeglb, ~25 % plus petit sur les vraies cartes ; visualiseur/éditeur préfèrent.glb). - F6 UI : raccourcis P/V/S/F/T/B/G/1-9 (savestates de caméra Shift+N) ; boutons Focar/Topo/Frente/Fit/Reset ; inspecteur d'ancres (clic → sélection → X/Y/Z éditables + Apply via POST /drag ; affiche scale/flipX/dégradé ATEL).
- Portes :
--filter AuroraOverlayEnrichment7/7 PASS ; suite complète 275/275 PASS ; builds 0 erreurs ;node --checkOK. Docs :FFX_AURORA_VIEWER_ENRICHMENT_2026-08-01.md,FFX_ATH_ANIM_CATALOG_IMPORT_2026-08-01.md,FFX_MAPOUT_VPA_MAP1_BLOB_LAYOUT_NOTE_2026-08-01.md. Statut :Needs Testing(smoke visuel dans le visualiseur ; RT2 en jeu non promu). ### PATCH
v2.198.4.2
v2.199.0.1BETAREVISION
Seymour1 août 2026
Passation PPP complète pour la voie de l'éditeur PPP
docs/reverse/PPP_EDITOR_HANDOFF_2026-08-01.md(nouveau, ~236 lignes) : consolidation de TOUTES les connaissances PPP/Phyre/magic_.dll (HD) — ce qu'est le PPP (587 magic_.dll ; .text PE32 vtable + .data blob), slot C1 16B validé (handler_table_index local à fp.h ; argument_relative prouvé dans 0x7170F0), 3 tables de dispatch physiques (0xC3A500/418pppSysProgTbl, 0xC3E798/246, 0xC86080/32 ; champs +4/+8/+0xC/+0x1C/+0x20/+0x24 ; extracteur reproductible), handlers U1 10/10 (FFX_BoneAnim, fenêtre 16B/8B, groupes de clones byte-identiques), chaîne de Draw (BuildVfxTexture_TypeK → lppEnv 0xC3A4C4 → TextureSlotCache 0xCCCA64 → Phyre_Map_LowerBound), PppMem 62 fonctions (pppKeThRes32=0x736A20 confirmé), C2 COMPLET 184 familles (27 knobs + 157 ; 226/226 pytest), EgoVM/HostContextTable (512 slots @ 0xC64CE8), Yonishi (84 familles/51 378 échantillons), 583/587 DLL décompilées (1 907 920 lignes), preuves T3/T4 (3/3 visuels sur Power Break), F4 validé, catacombes, crossrefs noclip/fahrenheit, règles d'or de l'éditeur (pppColor priorité la plus basse ; noms ≠ vérité ; backup+SHA), ce qui manque (C3/Chemin B, sonde T1/T2). Aucun changement de comportement — baseline intacte. ### RÉVISION ### MINOR
v2.199.0.0
v2.199.0.2BETAREVISION
Seymour1 août 2026
F1 : cross-validation du codec ATEL × fahrenheit (encodage + table d'opcodes)
docs/reverse/FFX_FAHRENHEIT_ATEL_ENCODING_CROSSCHECK_2026-08-01.md(nouveau) : encodage CONFIRMÉ 1:1 entre notreFfxLib/Aiet fahrenheit (bit 7 = opérande u16 ; 7 bits bas = opcode 0..0x7A ; taille 1/3B) ; 19 opcodes que nous utilisons confirmés par leurAtelOpénum (LAND 0x02, EQ 0x06, NE 0x07, ADD 0x14, SUB 0x15, MUL 0x17, DIV 0x16, MOD 0x18, POPI0 0x59, PUSHI0 0x67, PUSHV 0x9F, POPV 0xA0, PUSHII 0xAE, JMP 0xB0, CALL 0xB5, RET 0x3C, POPXCJMP 0xD6, POPXNCJMP 0xD7 (notre branche de garde), CALLPOPA 0xD8) ; divergence de noms de comparaison re-documentée (leur 0x0A « GT » =A<=Bdans la vérité exécutable) ; inventaire de ce qu'ils ont et nous non (famille REQ 0x36–0x53, PUSHN/PUSHT/PUSHVP/PUSHFIX 0xC1–0xC4, LABEL/TAG 0x9D/0x9E, locals POPI/POPF/PUSHI/PUSHF 0x59–0x74, CJMP/NCJMP 0xB1/0xB2) ; leur état de compilateur (lexer+parser+AST complets, emitter NON implémenté — le round-trip du compilateur bloqué de leur côté ; les builds C# marchent, les loaders C++ ont besoin d'un toolset VC absent ici). Artefact :work/fahrenheit_atel_opcodes.txt(123 opcodes). Aucun changement de comportement — baseline intacte. ### RÉVISION ### RÉVISION
v2.199.0.1
v2.199.1.0BETAPATCH
Seymour1 août 2026
Sphere Grid Canvas : nettoyage SUPERMD (encodage, Stamps morts, Square hérité, textes des hooks/du compilateur, Open* issu du corpus, rebasage lors de Save)
- Encodage (§4.1) :
SphereGridCanvas_Control.axamlréécrit de zéro en pt-BR — 402 caractères CP1252-mojibake / 29 types non récupérables (« Ícones », « Enregistrer une copie », « référence », « POSITION », « CONTENU », « LIENS DE CE NŒUD », « le modifier », « ≥320 », « índice cru », « Supprimer le nœud », « nó # », « ✕ ») ; mojibake de commentaires code-behind corrigé ;SphereGridBuilder_Control.axamlCONFIRMÉ propre (intact). Scan post-correctif : 30 non-ASCII = accents pt-BR légitimes + symboles (◎ ✕ ≥ ≤ —). - Stamps morts retirés (§4.2) :
PlaceStamp,StampShape,CurrentStamp,Mode.Stamp,SetStampDiamond/SetStampLine,ToolMode.StampDiamond/StampLine. - Square hérité retiré (§4.3) :
SphereGridSquarePackageWriter.cssupprimé (le manifeste SHA256 n'était consommé que par le hook v5 retiré) ; boutons Save Square/Exporter Square +ExportSquarePackage()/RetailBaseline/ResolveHookConfigDir/SquareModeSummaryretirés ;SaveToProjectre-baseline désormais après la sauvegarde (était SaveSquare-only). - Textes de nouvelle théorie (§4.4/§4.7) : Banner, Validate, SaveCopy,
SphereGridDeployPolicy, TopologySafetySummary mis à jour — les comptes ≤ 1024 ne nécessitent AUCUN hook (moteur piloté par en-tête ; struct 1024/1024/128 ; sauvegarde 1280/1280) ; l'ancien crash 861/882 était le hook v5 / une grille anormale, jamais un déploiement propre ; « hook/compilateur » → « test RT2 propre (sauvegarde jetable) ». - Open depuis le corpus (§4.6) :*
ResolveAbmapDirrésout le corpus vanilla (FFX Extracted\...\abmap) EN PREMIER (projet seulement à la Sauvegarde) ; nouvel avertissement « project has this grid modified (≠ vanilla) » quand le projet diverge du corpus. - Barre d'outils simplifiée (§4.5) : « Square Mode (dat0X + dat1X) » → « Edit topology (counts) » ; case RT2 déplacée à côté de Save ; boutons dupliqués retirés.
- Validation : build Release 0 erreurs ; tests SphereGrid 2/2 PASS (
SphereGridAddNodeRepro) ; portes--spheregrid-layout-rt0/--spheregrid-build-rt0/--spheregrid-edit-rt0PASS ; baseline 276/277 (seul échec =MagicDllCorpusSmokeTests, voie MagicDll, hors périmètre). Correctif de record : le « mojibake .cs (687/693/694) » cité dans la vérification SUPERMD était un artefact d'affichage — les octets sont de l'UTF-8 valide (→=E2 86 92, Á=C3 81, emojis F0 9F...) ; seule la sémantique du texte a été corrigée. ### RÉVISION
v2.199.0.2
v2.199.1.1BETAREVISION
Seymour1 août 2026
Inventaire des bases de connaissances pour l'Opération FFX.EXE
docs/ai/KNOWLEDGE_BASES_2026-08-01.mdindexe les 11 bases : 5 dépôts fahrenheit (main/excel/save-ui-rework + local-settings avec assembleur ATEL + managed-loader avec adresses), Spira Modifier 0.73 (découvert : outil RE ATEL complet — décompilé en C# danswork/_spira_modifier_decomp/; catalogue AtelCallTargets de 298 entrées ids 95..28967 ; formats kernel avec offsets : AttackData 92/96B (a_ability, SphereTypeForSphereGrid@93), MonsterStat 128B, EncounterTable 14B/entrée (btl.bin), MonsterLoot/Treasure/WeaponName/PlayerSaveFile), Phyre_Engine (901 en-têtes + 23 modules Core — structs pour la base), SDKs PS3 (3.40/3.70/4.00 + TrueBlueGaryOPA + SuperExtra).- Convention d'adresse prouvée : les adresses de managed-loader sont des RVA →
VA = RVA + 0x400000(preuve :ToBtlPadScrollWaitloader 0x498DB0 vs Ghidra 0x898DB0 ;get_global_valuesur la base). - Backups de base avant l'opération :
backups_ffxoficial\*.before_operacao_total_20260801_055545.i64. ### PATCH
v2.199.1.0
v2.199.1.2BETAREVISION
Seymour1 août 2026
Opération FFX.EXE : 1re vague de renames appliquée (+2 674 canonique / +1 995 COPY) + doc des formats Spira Modifier
docs/reverse/SPIRA_MODIFIER_FORMATS_2026-08-01.md: formats extraits de la décompile de Spira Modifier 0.73 —AttackData(a_ability : 92/96B, 25× StatusChance,SphereTypeForSphereGrid@93),MonsterStat(128B),MonsterLoot(280B),TreasureEntry(4B — correspond au nôtre),EncounterTable(btl.bin, 14B/entrée), catalogue ATEL (298 entrées ids 95..28967 →atel_call_targets.json).- 1re vague de renames : adresses de
fahrenheit-managed-loader(RVA → VA+0x400000 ; convention prouvée) +call.g.cs(__addr_*) : 2 674 appliqués sur le canonique + 1 995 sur la COPY (via MCP), défaut-only (27 138/2 797 déjà nommés préservés). Scripts :work/_fahrenheit_probe/{extract_loader_renames.py, ida_apply_renames_from_json.py, apply_json_in_gui.py}. ### RÉVISION
v2.199.1.1
v2.199.1.3BETAREVISION
Seymour1 août 2026
Ordre des bits `activates` de sphere.bin PROUVÉ (3 sources) + forensics du crash de grille 0xc0000374 (grille 02:38 PROPRE — correction SUPERMD §5) + preflight clean-RT2
docs/reverse/FFX_SPHERE_BIN_ACTIVATES_BIT_ORDER_PROVEN_2026-08-01.md(nouveau) :Sphere.activates@+0x0A — 11 catégories prouvées (STRENGTH=bit0, DEFENSE=1, MAGIC=2, MAGIC_DEFENSE=3, AGILITY=4, LUCK=5, EVASION=6, ACCURACY=7, HP=8, MP=9, ABILITY=10 ; All=0x07FF) via 3 sources indépendantes : énum de fahrenheitsphere.cs(même ordre déjà dans notreSphereTargets) ; corpus jppc parsé (groupes 3/3/3/1/1-bits : entrée0 0x0103=STR+DEF+HP=Power, entrée1 0x020C=Mana, entrée2 0x00D0=Speed, entrée3 0x0400=Ability, entrée4 0x0020=Luck, entrée9 0x07FF=Friend, Key L1–L4 spéciaux 8..11, Return/Teleport/Clear/Master spéciaux 1..4) ; bits d'effet panel.bin (SphereGridNodeSphereRequirement: PowerSphere→0x0001=STR, ManaSphere→0x0004=MAG, SpeedSphere→0x0010=AGL, AbilitySphere→0x0400) — le runtime faitactivates & effect. Commentaire deSphereTargetscorrigé (disait « not proven », attribuait 0x0103 à Ability). Correctif de record : « indices = SphereGridNodeSphereRequirementKind » de v2.198.3.4 était trompeur (l'index de table ≠ l'énum d'exigence).docs/reverse/SPHERE_GRID_CRASH_GRID_FORENSICS_2026-08-01.md(nouveau) : parse d'octets dudat02.datdéployé 02:38:29 (98/861/882 ; nœud 860 = (129,-172) U3=0 Red=0x19 Cl=64 U6=170 = bon bucket ; contenu dat10 0x19 correspond) — la grille était PROPRE ; les valeurs SUPERMD §5 (Cluster=851/Redundant=854/Unused3=855/Unknown6=0/content=0x07) venaient d'un parse à mauvais offset. Les grilles vraiment anormales vivent dans les backups de juin (repair-node860-meta17/06 U6=0 ;corrupt20/06 clusters=1). Le crash 02:39/02:40 a tourné avec hooks actifs (ffx-hooks+ffx-probe chargés) + grille propre → hypothèse : hook v5 (pad/canary de garde) ; test décisif = RT2 avec hooks OFF.- Preflight clean-RT2 appliqué :
work/_sg_rt2_preflight/rt2_hooks_toggle.ps1 -Off(ffx-hooks.dll/ffx-probe.dll → .RT2OFF ; sidecars hérités → .legado ;ff10-file-loader.dll+dinput8.dllconservés pour l'overlay). Restauration :-OnouFFX-RESTORE.bat. - Validation : build Release 0 erreurs ; baseline 283/283 PASS (l'échec de MagicDllCorpusSmokeTests a disparu — la voie MagicDll l'a corrigé) ; seul FAIL d'offline_ci =
BattleCompanionActivationLab(sentinelle de dérivemcyt00_21— annoté autre-voie en attente, hors périmètre). Aucun changement de comportement produit (docs + commentaire + scripts work/). ### RÉVISION
v2.199.1.2
v2.199.1.4BETAREVISION
Seymour1 août 2026
F2–F5 du plan fahrenheit : import de données ATEL + faisabilité d'assembleur de haut niveau
docs/reverse/PPP_FAHRENHEIT_ATEL_IMPORT_2026-08-01.md(F2+F3+F4) : tables de call-targets de fahrenheit extraites (11 namespaces : VAs 0x850050 Common/0x842618 Battle/... + comptes 616/296/145/138... ; struct de handler IDENTIQUE à notre EBP — cross-validation) ; 129 auto-abilities FFX (0x8000+) + 487 ids de commandes FFX-2 (réserve : FFX-2 ≠ FFX ; 0x3049 = pcom_seed_cannon là-bas vs Firaga dans notre fixture) ; dialecte REQ documenté (0x36–0x3B : REQ/REQSW/REQEW/PREQ/PREQSW/PREQEW + préfixes F/T/B/P + suffixes SW/EW — famille EVENT/field, pas utilisée dans l'AiFile de bataille) ; l'énum AtelOp confirme notre table (POPXCJMP=0xD6/POPXNCJMP=0xD7/CALLPOPA=0xD8/PUSHII=0xAE). Artefacts :work/f2_fahrenheit_calltargets.json+work/f3_fahrenheit_ability_names.json.docs/reverse/PPP_ATEL_ASSEMBLER_F5_FEASIBILITY_2026-08-01.md(F5) : faisabilité d'assembleur ATEL de haut niveau — 3 options (référencer le fahrenheit LGPL vs porter la syntaxe vs propre langage) ; recommandation : porter la syntaxe (Option B — notre table d'opcodes fixée, zéro dépendance, petit périmètre) ; feuille de route en 4 lots (L1 lexer/parser → L2 emitter viaAiVarConditionBuilderfixé → L3 while/func → L4 UI avec aperçu 3 couches) ; risques (LGPL, répétition de bug sémantique).docs/reverse/PPP_EDITOR_HANDOFF_2026-08-01.md(+10 lignes de la voie éditeur PPP — correctifs empiriques : les 4 DLL « corruptes » s'ouvrent au parse ; 576/581 éditables ; les clés sont des indices GLOBAUX de table d'hôtes — dépendent d'une sonde runtime). Aucun changement de comportement — baseline 283/283 intacte. ### RÉVISION ### RÉVISION
v2.199.1.3
v2.199.1.5BETAREVISION
Seymour1 août 2026
Voie Jarvis-WIRE créée (spécialiste de hooks, voie 2) + Opération Demonio : plan de revue de code du Menu F8 (UnX 0.9.1.9 + dxgi.dll fork SpecialK 0.8.36) + notre base de connaissances de hooks
docs/ai/agents/JARVIS-WIRE.md(nouveau) : identité de spécialiste de hooks voie-2 (pas Jarvis-Hook) : domaine, lectures requises, vérités centrales (WireInstance n'est PAS le motif C++<->C# — les MMF le sont ; CreateRemoteThread retiré ; toujours vérifier la convention d'appel), format de sortie, garde-fous (rien d'écrit dans le jeu sans ordre explicite).docs/reverse/HOOKS_WIRE_KNOWLEDGE_BASE_2026-08-01.md(nouveau) : consolidation de l'architecture de hooks : 4 couches (dinput8 loader ffgriever -> ff10-file-loader/ffx-probe/ffx-hooks -> éditeur), 2 blocs MMF (FFXProbeBlock_v1 580B + FFXHooksBlock_v1 256B), table de fabrique InstallHooks avec 20+ hooks (MusicHook, NovaSuperDamage, RonsoMana, NulWard, GridTeach v4.5, KimahriLancetDualGrant, TrueNewNode, FullGridCompiler, ItemStackCap 99->255, DoubleTripleDrop, Element, AbilitySfx, ResolverLog, FieldScout/WireInstance, FieldProbe, BattleEnd, ArenaProgressSidecar, SinCurse, ArenaPlus* ; PhaseTurnEdge désactivé ; BootSkip WIRE-ME), système de drapeaux F7 (env + .flag + config), leçons (retn4 double-pop ; conflits NulWard x NovaClamp ; TrueNewNode x FullGrid), labs frères (63 dossiers RuntimeTools).docs/reverse/F8_UNX_CODEREVIEW_PLAN_2026-08-01.md(nouveau) : Opération Demonio en 5 phases (F0 recon forensique -> F1 carte de hooks avec PDBs -> F2 inventaire d'appels de menu item par item -> F3 11 classes d'incohérences -> F4 vérification dynamique en lecture seule -> F5 livraison), bases (binaires+PDBs, vrais logs 19/07, 5 dépôts fahrenheit, noclip, IDA MCP 13338), arbre de menu extrait des chaînes (Boost.FFX/SpeedHack.FFX/Fun.FFX PlayableSeymour/redirections de langue/Cheat Engine avec scan de signature + patches « mem b D2A8E2 2 »).docs/reverse/F8_UNX_INCONSISTENCY_REGISTER_2026-08-01.md(nouveau) : registre vivant avec modèle + 8 graines : INC-001 crash de boot 19/07 05:54 (dxgi.log s'arrête après les hooks D3D11/nvapi) ; INC-002 F8 DI8_GetDeviceState_Override x notre hook GetDeviceState (même cible) ; INC-003 D3D11/Present x overlay Aurora ; INC-004 offsets de cheat codés en dur sans porte de version ; INC-005 orphelin UnX.ini dans le dossier du jeu ; INC-006 redirections de langue x ff10-file-loader ; INC-007 SuspendThread/Thread32 x MH_ApplyQueued ; INC-008 auto-update WININET.- Recon :
work/f8_recon/(pe_scan.py, manifest.txt avec SHA256 + analyse PE, unx_strings_ascii.txt 798 / utf16 253). Constats PE : unx.dll exporteSKPlugIn_Init(plugin SpecialK), menu ImGui, imports keybd_event/SuspendThread/Thread32 ; dxgi.dll sections .SK_Hook/.tls/.rsrc 4.3MB, imports WININET + d3dx9_43 + VCOMP140 ; PDBs inclus (dxgi.pdb 62MB, unx.pdb 6MB). Aucun changement de comportement — baseline intacte.
v2.199.1.4