Aggiornamento 2.88
13/06/2026
v2.88.0BETAMINOR
Lulu
Magic DLLs (FFX): Value Workbench per modifiche candidate di colore, velocità, timer e vettori
Extras -> Magic DLLs (FFX) / Role Candidatesora include unCandidate Value Workbenchmodificabile che esegue la scansione della DLL selezionata per valorifloat32,vec3f/vec4fepush imm8/imm32, classifica i candidati come alpha/colore/scala/velocità/timer/flag/conteggio, e consente all'utente di inserire un nuovo valore decimale/float/vettore-virgola, (letterale tecnico: comma-vector)Stage Patch, o emettere una DLL di output tramiteApply To Output. Anche il bloccoHost Context / InitMagicPRX Fieldsè ora assistito: seleziona un campo host, elenca le occorrenze u32 concrete nella DLL, e applica una patch a un riferimento di offset reale. Guardrail: i nomi restano candidati e ogni modifica richiede ancora test RT2 per confermare la semantica visiva/gameplay. Editor aggiornato a2.88.0.0. Validazione:dotnet build FFXProjectEditor\FFXProjectEditor.csproj -c Release -o work\_build_magicdll_value_workbench_probe --no-restorewith 0 errors / 366 baseline warnings
v2.87.1
v2.88.1BETAPATCH
Lulu
Magic Viewer Web: Runtime Simulation Candidate nel palco centrale
- il viewer ora ha una modalità
Simulateche sostituisce il comportamento di slideshow delle texture con un loop continuo guidato dalla catena strutturale invertita (sub_800530/590/950,sub_80CD60,sub_817200,root+84/root+88, slot overlay e payload Phyre). Le textureps3data\magicsono trattate come materiale visivo, non come clock/elenco frame; l'HUD mostra fasi, cursore root, callback code/data e alias DLL ripetuti. Guardrail: questo è unRuntime Simulation Candidate, meno finto diCycle Surface, ma ancora non un timing frame-accurate, non un interprete opcode completo, né una correlazione RT2 di callback/frame in-game. Editor aggiornato a2.88.1.0. Validazione:node --check RuntimeTools\FFXMagicViewerWeb\app.js; HTTPhttp://loopback:8766/index.html?magic=0688200; Chromium headless clickedSimulateon desktop and 390px mobile with no page errors/console errors, no mobile horizontal overflow, screenshots atwork/magic_viewer_runtime_simulation_0688.pngandwork/magic_viewer_runtime_simulation_0688_mobile.png; builddotnet build FFXProjectEditor\FFXProjectEditor.csproj -c Release -o work\_build_magic_runtime_sim_2881 --no-restorewith 0 errors / 366 baseline warnings
v2.88.0
v2.88.1.1BETAREVISION
Wakka
Arena+ pre-RT2: pacchetto di ricerca versionato per una nuova opzione NPC via DLL
- ricerca/RE persistita nel repository, senza cambiamenti al comportamento del prodotto. Versione il set di dossier Monster Arena/Arena+: nuove schede/creazioni, inserimento DLL, flag di sconfitta di Dark Aeon/Der Richter, instradamento delle opzioni NPC, scout finale e il dossier pre-RT2 (letterale tecnico: repo-persisted)
nagi0700. Risultato chiave: il proprietario della Monster Arena vive nell'eventonagi0700;w0E::f05costruisce il menuNow what?tramiteCommon.displayFieldChoice [013B]string[4A],w0E::f07apre il selettore tramiteSgEvent.showModularMenu [401D], lancia le battaglie tramiteBattle.launchBattle [7002], e marca le creazioni sconfitte0x0300..0x0322tramiteCommon.setMonsterArenaUnlocked [0210]. Editor aggiornato a2.88.1.1. Guardrail:research-only/pre-RT2; non espandereArenaUnlocks[35+], non modificarenagi0700.ebp, e non iniettare una riga di menu vanilla prima del tracciamento live. Validazione:Test-Path+rgcontro dossier, KB e ancore di handoff; builddotnet build FFXProjectEditor\FFXProjectEditor.csproj -c Release -o work\_build_versioning_28811 --no-restorewith 0 errors / 366 baseline warnings
v2.88.1
v2.88.1.2BETAREVISION
Lulu
Magic DLLs: ricerca pattern di spell simili per una caccia colore/velocità più sicura. (letterale tecnico: similar-spell)
- ricerca/RE persistite nel repo, senza cambi di comportamento prodotto. Incrocia (letterale tecnico: repo-persisted)
AiCommandMetadataCatalog.Generated.cs(979righe,689conmoveAnim), l'overlay CSV (581righe) e i binarimagicFiles\FFX\magic_####.dllper raggruppare per carrier visivo reale invece che per solo nome spell. Finding chiave:Power/hits/status vivono nella riga del comando; i visual vivono inmoveAnim; Fire/Thunder/Idro di base usano la famiglia più semplicenz9/u5, mentre gli effetti Ice/cura/Flare-like usano famiglie PPP più larghe; Energia/Pozione e molti Mix riusano i visual;Deathprova che spell con lo stesso nome possono puntare a DLL diverse; la (letterale tecnico: same-name)Deathcomunemagic_0098eMega Deathmagic_0351condividono slot/size di overlay+texture ma non hash/payload; i clone0714/0715restano il percorso giusto per Prism Flare senza toccare Fira/Thundara vanilla. Guardrail:pppColor/pppColMove/pppAccele, i float e le push restano candidati finché RT2/probe non prova la semantica di colore, velocità o timing. Editor portato a2.88.1.2. Validazione: ancoraggi doc viaTest-Path/rg; buildwork\_build_magic_patterns_28812con 0 errori / 366 warning di base
v2.88.1.1
v2.88.1.3BETAREVISION
Seymour
Ricerca 60fps / FPS unlock: separare frame generation, frame pacing e 60 engine-exact
- ricerca/RE persistite nel repo, senza cambi di comportamento prodotto. Il dossier (letterale tecnico: repo-persisted)
docs/reverse/FFX_60FPS_UNLOCK_FEASIBILITY_RESEARCH_2026-06-13.mdconclude che non c'è evidenza di un unlock 30→60 sicuro a un solo valore; i percorsi onesti sono (letterale tecnico: one-value)visual 60tramite frame generation/interpolazione esterna, un frame pacing 30fps migliore, rendering 60Hz sopra simulazione 30Hz con interpolazione interna, e ilengine-exact 60fpscompleto come moonshot/lane solo-ricerca. Evidenza incrociata: UnX implementa speed hack moltiplicando (letterale tecnico: research-only)FFX_GameTick, non preservando il tempo normale a 60fps; Qualità K/UnX avverte che i cap 30fps esterni possono influenzare i load e che alcuni menu girano a 60; questo repo ha già DINPUT8/main-thread, un hook Present e MSEQframeRate=7680 (30fps*256), ma il timing di magic/battaglia/cutscene non è ancora frame-accurato. Prossimo passo sicuro: uno (letterale tecnico: frame-accurate)fps-scoutread-only inFfxHooksDll/FfxDinput8Probeche misura Present, tick, cursore MSEQ e modalità di gioco prima di qualsiasi patch. Editor portato a2.88.1.3. Validazione: ancoraggi doc viaTest-Path/rg; buildwork\_build_fps_research_28813con 0 errori / 366 warning di base
v2.88.1.2
v2.88.1.4BETAREVISION
Seymour
Ricerca deep gameplay-60 con cutscene/FMV che possono restare a 30fps
- ricerca/RE persistite nel repo, senza cambi di comportamento prodotto. Il dossier (letterale tecnico: repo-persisted)
docs/reverse/FFX_GAMEPLAY_60FPS_DEEP_RESEARCH_2026-06-13.mdrisponde al nuovo scope dell'utente: le cutscene possono restare a 30fps, il gameplay è il target. Verdetto: questo rimuove una classe importante di sync audiovisivo dal primo milestone, ma non trasforma il problema in un semplice swap di cap; il gameplay richiede comunque gestione separata per field, battaglia, MSEQ, camera, CTB, magic/VFX, menu, load e minigiochi. La ricerca dettaglia quattro rotte:visual 60tramite frame generation/interpolazione, frame pacing/VRR/Present doctor, rendering 60Hz sopra simulazione 30Hz con interpolatore interno, e ilengine-exact 60fpscompleto come moonshot finché lo scout non prova clock isolabili. Prossimo passo tecnico sicuro: unofps-scoutread-only con CSV/summary per cadenza Present, heartbeat/tick, modalità di gioco, cursore MSEQ e compatibilità UnX/SpecialK prima di qualsiasi patch. Editor portato a2.88.1.4. Validazione: ancoraggi doc viaTest-Path/rg; buildwork\_build_gameplay60_research_28814con 0 errori / 366 warning di base
v2.88.1.3
v2.88.1.5BETAREVISION
Lulu
Magic DLLs: la decompilazione Hex-Rays reale rivela DUE architetture di effetto + campi host provati. (letterale tecnico: TWO)
- RE persistita nel repo (decompile + rename/comment nei (letterale tecnico: repo-persisted)
.i64), senza cambi di comportamento prodotto. Andando oltre il naming basato su posizione (l'euristica (letterale tecnico: position-based)MagicDllSemanticAnalyzer), ho decompilato davveromagic_0084emagic_0148in IDA. Finding chiave: il corpus ha ≥2 architetture distinte che la firma slot-kind NON separa (entrambe hanno (letterale tecnico: NOT)codein ogni slot): famiglia A "particella auto-contenuta" (letterale tecnico: self-contained) (magic_0084: pool locale di 1023 particelle + ring di 256 pacchetti, nessuna rootdat_et; lo slot 1 è il tick di draw; lo slot 4 riscrive la propria overlay table per avanzare la fase — confermato anche inmagic_0688) e famiglia B "root/record-interpreter" (magic_0148: alloca la root da 1,024,000 byte via host+3212, materializza via host+2860 e chiama host+2864=sub_80CD60e host+2884=sub_80BEA0direttamente). Promossi ~20 campi host dacandidatea provati tramite call cross-DLL decompilata (host+672 actor, +884/+888 timer, +900/+904/+908 phase/start/progress, +2860 materialize, +2864 interpreter, +2872/+2876 Ego obj, +2908 make-packet) e trovato il nuovo host+3216 (free) accoppiato a host+3212. Doc:docs/reverse/FFX_MAGIC_DLL_DECOMPILED_FAMILIES_2026-06-13.md. Editor portato a2.88.1.5. Guardrail: è ancora RE a livello byte, i nomi descrivono il ruolo (non il simbolo originale); la firma slot-kind è un proxy debole — il vero classificatore di famiglia è "lo slot 0 chiama host+2860?". Validazione: 2 (letterale tecnico: byte-level).i64salvati inmagicFiles\FFXcon rename+comment; rename17/17(0084) e10/10(0148) OK
v2.88.1.4