Atualização 2.199
01/08/2026
v2.199.0.0BETAMINOR
Seymour1 de ago. de 2026
Aurora: enriquecimento do viewer (F1–F6) guiado por análise de noclip.website / fahrenheit / Spira Modifier
- F1 per-anchor scale/pose: overlay agora consome
anchor.scale(ATEL real scaleOwnSize 0x7028 viaAuroraSceneRenderer.GetMonsterScale) × fator global; per-monsterflipX; slider renomeado "Scale global". - F2 chão real:
getGroundY(mesh raycast para baixo, cache per-cell); drag-to-place prefere hits de mesh; fallback de plano no próprio ANCHOR do Y (não mais y=0 — caso klyt00_00 Y=2.9 provado) + badge honesto; chaveG= ground-snap (POST /drag). - Catálogo .ath F3:
FfxLib/Monster/MonsterAthAnimCatalog.cs(game-named ciclos de animação; source: tabelas .ath do fahrenheit — m109/m117/m124 + motions do m001); painel "🎬 Animação (.ath)" no overlay (dropdown, Play/Stop/T-pose, matching nome↔token de clip). - F4 zonas de encontro (infra honesta):
BuildEncounterZonesresolvejppc/map/{area}/{mapKey}/bin/mapout.vpae serializazones+zonesNote; overlay desenha polígonos com um toggle. Verdade: o decoder MAP1 ainda não NOT decodifica o corpus (NoZonesParsed) — zero zonas falsas, nota honesta no painel (docFFX_MAPOUT_VPA_MAP1_BLOB_LAYOUT_NOTE_2026-08-01.md: a tabela de dispatch tem 2 layouts + blobs não são sentinel-terminated = próximo passo RE). - Assets F5:
THREE.Cache.enabled(sem re-download na sessão);fetchCached(Cache API, network-first para âncoras); contador "📦 N MB loaded" (timing de recurso); cascata de fallback de modelo_animated.gltf→.gltf→ degradado; conversor GLB (GltfContainerWriterem PhyreModelExportLab — subcomandoglb, ~25% menor em mapas reais; viewer/editor preferem.glb). - F6 UI: atalhos P/V/S/F/T/B/G/1-9 (savestates de câmera Shift+N); botões Focar/Topo/Frente/Fit/Reset; inspector de âncora (click → select → X/Y/Z editáveis + Apply via POST /drag; mostra ATEL scale/flipX/degradado).
- Gates:
--filter AuroraOverlayEnrichment7/7 PASS; suíte completa 275/275 PASS; builds com 0 erros;node --checkOK. Documentos: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. Status:Needs Testing(teste visual no viewer; RT2 no jogo ainda não promovido). ### PATCH
v2.198.4.2
v2.199.0.1BETAREVISION
Seymour1 de ago. de 2026
Handoff completo PPP para a lane do editor PPP
docs/reverse/PPP_EDITOR_HANDOFF_2026-08-01.md(novo, ~236 linhas): consolidação do conhecimento ALL PPP/Phyre/magic_.dll (HD) — o que PPP é (587 magic_.dll; PE32 vtable .text + blob .data), slot C1 de 16B validado (handler_table_index local a fp.h; argument_relative provado em 0x7170F0), 3 tabelas físicas de dispatch (0xC3A500/418pppSysProgTbl, 0xC3E798/246, 0xC86080/32; campos +4/+8/+0xC/+0x1C/+0x20/+0x24; extractor reproduzível), handlers U1 10/10 (FFX_BoneAnim, janela 16B/8B, grupos de clone byte-identical), cadeia de Draw (BuildVfxTexture_TypeK → lppEnv 0xC3A4C4 → TextureSlotCache 0xCCCA64 → Phyre_Map_LowerBound), PppMem 62 funções (pppKeThRes32=0x736A20 confirmado), C2 FULL 184 famílias (27 knobs + 157; 226/226 pytest), EgoVM/HostContextTable (512 slots @ 0xC64CE8), Yonishi (84 famílias/51.378 amostras), 583/587 DLLs descompiladas (1.907.920 linhas), provas T3/T4 (3/3 visual em Power Break), F4 validado, catacombs, crossrefs noclip/fahrenheit, regras de ouro do editor (pppColor menor prioridade; nomes ≠ verdade; backup+SHA), o que falta (C3/Path B, probe T1/T2). Sem mudança de comportamento — baseline intocado. ### REVISION ### MINOR
v2.199.0.0
v2.199.0.2BETAREVISION
Seymour1 de ago. de 2026
F1: codec ATEL cross-validation × fahrenheit (encoding + tabela de opcodes)
docs/reverse/FFX_FAHRENHEIT_ATEL_ENCODING_CROSSCHECK_2026-08-01.md(novo): encoding CONFIRMED 1:1 entre nossoFfxLib/Aie o fahrenheit (bit 7 = operando u16; 7 bits baixos = opcode 0..0x7A; tamanho 1/3B); 19 opcodes que usamos confirmados pelo enumAtelOpdeles (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 (nosso branch de guard), CALLPOPA 0xD8); divergência comparison-name re-documented (o 0x0A deles "GT" =A<=Bna verdade executável); inventário do que eles têm e nós não (família REQ 0x36–0x53, PUSHN/PUSHT/PUSHVP/PUSHFIX 0xC1–0xC4, LABEL/TAG 0x9D/0x9E, locals POPI/POPF/PUSHI/PUSHF 0x59–0x74, CJMP/NCJMP 0xB1/0xB2); estado do compilador deles (lexer+parser+AST completo, emitter NOT implementado — compilador round-trip bloqueado no lado deles; builds C#, loaders C++ precisam de toolset VC ausente aqui). Artefato:work/fahrenheit_atel_opcodes.txt(123 opcodes). Sem mudança de comportamento — baseline intocado. ### REVISION ### REVISION
v2.199.0.1
v2.199.1.0BETAPATCH
Seymour1 de ago. de 2026
Sphere Grid Canvas: limpeza SUPERMD (encoding, Stamps mortos, legado Square, textos de hook/compiler, Open* do corpus, rebaseline no Save)
- Encoding (§4.1):
SphereGridCanvas_Control.axamlreescrito do zero em pt-BR — 402 chars CP1252-mojibake / 29 tipos irrecuperáveis ("Ícones", "Salvar cópia", "referência", "POSIÇÃO", "CONTEÚDO", "LINKS DESTE NÓ", "editá-lo", "≥320", "índice cru", "Remover nó", "nó #", "✕"); comentário code-behind mojibake corrigido;SphereGridBuilder_Control.axamlCONFIRMED limpo (intocado). Scan Post-fix: 30 non-ASCII = acentos pt-BR legítimos + símbolos (◎ ✕ ≥ ≤ —). - Stamps mortos removidos (§4.2):
PlaceStamp,StampShape,CurrentStamp,Mode.Stamp,SetStampDiamond/SetStampLine,ToolMode.StampDiamond/StampLine. - Legado Square removido (§4.3):
SphereGridSquarePackageWriter.csdeletado (o manifest SHA256 só era consumido pelo hook v5 aposentado); botões Save Square/Export Square +ExportSquarePackage()/RetailBaseline/ResolveHookConfigDir/SquareModeSummaryremovidos;SaveToProjectagora re-baselines após salvar (era SaveSquare-only). - Textos New-theory (§4.4/§4.7): Banner, Validate, SaveCopy,
SphereGridDeployPolicy, TopologySafetySummary atualizados — contagens ≤ 1024 precisam de hook NO (engine header-driven; struct 1024/1024/128; save 1280/1280); o crash antigo 861/882 era o hook v5 / grid anômalo, nunca um deploy limpo; "hook/compiler" → "teste RT2 limpo (save descartável)". - Open do corpus (§4.6):*
ResolveAbmapDirresolve o corpus vanilla (FFX Extracted\...\abmap) FIRST (projeto só no Save); novo aviso "projeto tem este grid modificado (≠ vanilla)" quando o projeto diverge do corpus. - Toolbar simplificada (§4.5): "Square Mode (dat0X + dat1X)" → "Editar topologia (contagens)"; checkbox RT2 movido para perto do Save; botões duplicados removidos.
- Validação: build Release 0 erros; testes SphereGrid 2/2 PASS (
SphereGridAddNodeRepro); gates--spheregrid-layout-rt0/--spheregrid-build-rt0/--spheregrid-edit-rt0PASS; baseline 276/277 (única falha =MagicDllCorpusSmokeTests, lane MagicDll, fora do escopo). Fix de record: o "mojibake .cs (687/693/694)" citado na verificação SUPERMD era artefato de exibição — os bytes são UTF-8 válidos (→=E2 86 92, Á=C3 81, emojis F0 9F...); só a semântica de texto foi corrigida. ### REVISION
v2.199.0.2
v2.199.1.1BETAREVISION
Seymour1 de ago. de 2026
Inventário Knowledge-Bases para a Operação FFX.EXE
docs/ai/KNOWLEDGE_BASES_2026-08-01.mdindexa as 11 bases: 5 repos fahrenheit (main/excel/save-ui-rework + local-settings com assembler ATEL + managed-loader com endereços), Spira Modifier 0.73 (descoberto: ferramenta ATEL RE completa — descompilada para C# emwork/_spira_modifier_decomp/; catálogo AtelCallTargets 298 entradas IDs 95..28967; formatos de kernel com offsets: AttackData 92/96B (a_ability, SphereTypeForSphereGrid@93), MonsterStat 128B, EncounterTable 14B/entrada (btl.bin), MonsterLoot/Treasure/WeaponName/PlayerSaveFile), Phyre_Engine (901 headers + 23 módulos Core — structs para o DB), SDKs PS3 (3.40/3.70/4.00 + TrueBlueGaryOPA + SuperExtra).- Convenção de endereço provada: endereços managed-loader são RVAs →
VA = RVA + 0x400000(prova: loaderToBtlPadScrollWait0x498DB0 vs Ghidra 0x898DB0;get_global_valueno DB). - Backups DB antes da operação:
backups_ffxoficial\*.before_operacao_total_20260801_055545.i64. ### PATCH
v2.199.1.0
v2.199.1.2BETAREVISION
Seymour1 de ago. de 2026
Operação FFX.EXE: 1ª onda de rename aplicada (+2.674 canônico / +1.995 COPY) + doc de formatos do Spira Modifier
docs/reverse/SPIRA_MODIFIER_FORMATS_2026-08-01.md: formatos extraídos do decompile 0.73 do Spira Modifier —AttackData(a_ability: 92/96B, 25× StatusChance,SphereTypeForSphereGrid@93),MonsterStat(128B),MonsterLoot(280B),TreasureEntry(4B — bate com o nosso),EncounterTable(btl.bin, 14B/entrada), catálogo ATEL (298 entradas IDs 95..28967 →atel_call_targets.json).- 1ª onda de rename: endereços
fahrenheit-managed-loader(RVAs → VA+0x400000; convenção provada) +call.g.cs(__addr_*): 2.674 aplicados no canônico + 1.995 no COPY (via MCP), default-only (27.138/2.797 already-named preservados). Scripts:work/_fahrenheit_probe/{extract_loader_renames.py, ida_apply_renames_from_json.py, apply_json_in_gui.py}. ### REVISION
v2.199.1.1
v2.199.1.3BETAREVISION
Seymour1 de ago. de 2026
ordem de bits sphere.bin `activates` PROVEN (3 fontes) + forense do crash de grid 0xc0000374 (grid 02:38 era CLEAN — correção §5 SUPERMD) + preflight clean-RT2
docs/reverse/FFX_SPHERE_BIN_ACTIVATES_BIT_ORDER_PROVEN_2026-08-01.md(novo):Sphere.activates@+0x0A — 11 categorias provadas (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 fontes independentes: enumsphere.csdo fahrenheit (mesma ordem já no nossoSphereTargets); corpus jppc parseado (grupos de 3/3/3/1/1 bits: entry0 0x0103=STR+DEF+HP=Power, entry1 0x020C=Mana, entry2 0x00D0=Speed, entry3 0x0400=Ability, entry4 0x0020=Luck, entry9 0x07FF=Friend, Key L1–L4 especiais 8..11, Return/Teleport/Clear/Master especiais 1..4); bits de efeito panel.bin (SphereGridNodeSphereRequirement: PowerSphere→0x0001=STR, ManaSphere→0x0004=MAG, SpeedSphere→0x0010=AGL, AbilitySphere→0x0400) — runtime fazactivates & effect. ComentárioSphereTargetscorrigido (dizia "não provado", atribuía 0x0103 a Ability). Fix de record: v2.198.3.4 "indices = SphereGridNodeSphereRequirementKind" era enganoso (índice de tabela ≠ enum de requisito).docs/reverse/SPHERE_GRID_CRASH_GRID_FORENSICS_2026-08-01.md(novo): análise de bytes do deploydat02.dat02:38:29 (98/861/882; node 860 = (129,-172) U3=0 Red=0x19 Cl=64 U6=170 = faixa correta; o conteúdo 0x19 do dat10 coincide) — grid estava LIMPO; valores da SUPERMD §5 (Cluster=851/Redundant=854/Unused3=855/Unknown6=0/content=0x07) vieram de uma análise com offset incorreto. Os grids realmente anômalos estão nos backups de junho (repair-node860-meta17/06 U6=0;corrupt20/06 clusters=1). O travamento de 02:39/02:40 ocorreu com os hooks ativos (ffx-hooks+ffx-probe carregados) + grid limpo → hipótese: v5 hook (guard pad/canary); teste decisivo = RT2 com hooks DESLIGADOS.- Preflight Clean-RT2 aplicado:
work/_sg_rt2_preflight/rt2_hooks_toggle.ps1 -Off(ffx-hooks.dll/ffx-probe.dll → .RT2OFF; sidecars legados → .legado;ff10-file-loader.dll+dinput8.dllmantidos para overlay). Restore:-OnouFFX-RESTORE.bat. - Validação: build Release 0 erros; baseline 283/283 PASS (falha MagicDllCorpusSmokeTests sumiu — lane MagicDll fixed); único FAIL do offline_ci =
BattleCompanionActivationLab(sentinel de driftmcyt00_21— anotado other-lane pending, fora do escopo). Sem mudança de comportamento de produto (docs + comentário + scripts work/). ### REVISION
v2.199.1.2
v2.199.1.4BETAREVISION
Seymour1 de ago. de 2026
F2–F5 do plano fahrenheit: import de dados ATEL + viabilidade de assembler high-level
docs/reverse/PPP_FAHRENHEIT_ATEL_IMPORT_2026-08-01.md(F2+F3+F4): tabelas call-target do fahrenheit extraídas (11 namespaces: VAs 0x850050 Common/0x842618 Battle/... + contagens 616/296/145/138...; struct de handler IDENTICAL ao nosso EBP — cross-validation); 129 FFX auto-abilities (0x8000+) + 487 IDs de comando FFX-2 (caveat: FFX-2 ≠ FFX; 0x3049 = pcom_seed_cannon lá vs Firaga na nossa fixture); dialeto REQ documentado (0x36–0x3B: REQ/REQSW/REQEW/PREQ/PREQSW/PREQEW + prefixos F/T/B/P + sufixos SW/EW — família EVENT/field, não usada em batalha AiFile); enum AtelOp confirma nossa tabela (POPXCJMP=0xD6/POPXNCJMP=0xD7/CALLPOPA=0xD8/PUSHII=0xAE). Artefatos:work/f2_fahrenheit_calltargets.json+work/f3_fahrenheit_ability_names.json.docs/reverse/PPP_ATEL_ASSEMBLER_F5_FEASIBILITY_2026-08-01.md(F5): viabilidade de assembler high-level ATEL — 3 opções (referenciar o LGPL do fahrenheit vs portar a sintaxe vs linguagem própria); recomendação: portar a sintaxe (Opção B — nossa tabela de opcodes fixa, zero dependência, escopo pequeno); roadmap de 4 batches (L1 lexer/parser → L2 emitter viaAiVarConditionBuilderfixo → L3 while/func → L4 UI com preview de 3 camadas); riscos (LGPL, repeat semantic-bug).docs/reverse/PPP_EDITOR_HANDOFF_2026-08-01.md(+10 linhas da lane do editor PPP — fixes empíricos: as 4 DLLs "corruptas" abrem para parse; 576/581 editáveis; chaves são índices GLOBAL host-table — dependem de um probe de runtime). Sem mudança de comportamento — baseline 283/283 intocado. ### REVISION ### REVISION
v2.199.1.3
v2.199.1.5BETAREVISION
Seymour1 de ago. de 2026
lane Jarvis-WIRE criado (especialista de hook, lane 2) + Operação Demonio: plano code-review do Menu F8 (UnX 0.9.1.9 + fork 0.8.36 do SpecialK dxgi.dll) + base de conhecimento dos nossos hooks
docs/ai/agents/JARVIS-WIRE.md(novo): identidade de especialista de hook lane-2 (não Jarvis-Hook): domínio, leitura obrigatória, verdades core (WireInstance é NOT o padrão C++<->C# — MMFs são; CreateRemoteThread aposentado; sempre verificar calling convention), formato de saída, guardrails (nada escrito no jogo sem ordem explícita).docs/reverse/HOOKS_WIRE_KNOWLEDGE_BASE_2026-08-01.md(novo): consolidação da arquitetura de hooks: 4 camadas (loader dinput8 ffgriever -> ff10-file-loader/ffx-probe/ffx-hooks -> editor), 2 blocos MMF (FFXProbeBlock_v1 580B + FFXHooksBlock_v1 256B), tabela de fábrica InstallHooks com 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 desabilitado; BootSkip WIRE-ME), sistema de flag F7 (env + .flag + config), lições (retn4 double-pop; conflitos NulWard x NovaClamp; TrueNewNode x FullGrid), labs irmãos (63 pastas RuntimeTools).docs/reverse/F8_UNX_CODEREVIEW_PLAN_2026-08-01.md(novo): Operação Demonio em 5 fases (F0 recon forense -> F1 mapa de hook com PDBs -> F2 inventário de chamadas de menu item-by-item -> F3 11 classes de inconsistência -> F4 read-only verificação dinâmica -> F5 entrega), bases (binários+PDBs, logs reais 19/07, 5 repos fahrenheit, noclip, IDA MCP 13338), árvore de menu extraída de strings (Boost.FFX/SpeedHack.FFX/Fun.FFX PlayableSeymour/redirects de Language/Cheat Engine com sig scan + patches "mem b D2A8E2 2").docs/reverse/F8_UNX_INCONSISTENCY_REGISTER_2026-08-01.md(novo): registro vivo com template + 8 seeds: INC-001 crash de boot 19/07 05:54 (dxgi.log para após hooks D3D11/nvapi); INC-002 F8 DI8_GetDeviceState_Override x nosso hook GetDeviceState (mesmo alvo); INC-003 D3D11/Present x overlay Aurora; INC-004 offsets de cheat hardcoded sem gate de versão; INC-005 UnX.ini órfão no dir do jogo; INC-006 redirects de Language x ff10-file-loader; INC-007 SuspendThread/Thread32 x MH_ApplyQueued; INC-008 WININET auto-update.- Recon:
work/f8_recon/(pe_scan.py, manifest.txt com análise SHA256 + PE, unx_strings_ascii.txt 798 / utf16 253). Achados PE: exports unx.dll (plugin SpecialK)SKPlugIn_Init, menu ImGui, imports keybd_event/SuspendThread/Thread32; seções dxgi.dll .SK_Hook/.tls/.rsrc 4.3MB, WININET + d3dx9_43 + VCOMP140 imports; PDBs incluídos (dxgi.pdb 62MB, unx.pdb 6MB). Sem mudança de comportamento — baseline intocado.
v2.199.1.4