업데이트 2.199
2026. 8. 1.
v2.199.0.0BETAMINOR
Seymour2026년 8월 1일
아우르오르아: F1 / 프아흐르느흐에이트 / F6 수식어 분석을 기반으로 한 뷰어 기능 강화 (noclip.website–Spira)
- F1 per-anchor scale/pose: 오버레이가 이제
anchor.scale(실제 ATEL scaleOwnSize 0x7028 통해AuroraSceneRenderer.GetMonsterScale) × 전역 계수를 적용합니다; per-monsterflipX; 슬라이더 이름이 “Scale global”로 변경되었습니다. - F2 실제 지면:
getGroundY(하향 메쉬 레이캐스트, per-cell 캐시); drag-to-place는 메쉬 히트를 우선시함; 평면 폴백은 ANCHOR의 자체 Y에서 처리됨(더 이상 y=0이 아님 — klyt00_00 Y=2.9인 경우로 입증됨) + 정직한 배지;G키 = ground-snap (POST /drag). - F3 .ath 카탈로그:
FfxLib/Monster/MonsterAthAnimCatalog.cs(game-named 애니메이션 사이클; 출처: fahrenheit .ath 테이블 — m109/m117/m124 + m001 모션); 오버레이의 "🎬 애니메이션 (.ath)" 패널 (드롭다운, 재생/정지/T-pose, 이름↔클립 토큰 일치). - F4 엔카운터 존(정직한 인프라):
BuildEncounterZones는jppc/map/{area}/{mapKey}/bin/mapout.vpa을 해석하고zones+zonesNote을 직렬화하며, 오버레이는 토글 기능을 통해 다각형을 그립니다. 사실: MAP1 디코더는 여전히 아님 방식으로 코퍼스(NoZonesParsed)를 디코딩합니다 — 가짜 영역은 없으며, 패널에 ‘정직한’ 메모가 있습니다 (문서FFX_MAPOUT_VPA_MAP1_BLOB_LAYOUT_NOTE_2026-08-01.md: 디스패치 테이블에는 2가지 레이아웃이 있으며, 블롭은 sentinel-terminated가 아닙니다 = 다음 단계 RE). - F5 자산:
THREE.Cache.enabled(세션 내에는 re-download가 없음);fetchCached(API 캐시, 앵커용 network-first); "📦 N MB 로드됨" 카운터 (리소스 타이밍); 모델 폴백 캐스케이드_animated.gltf→.gltf→ 성능 저하 모드; GLB 변환기 (GltfContainerWriter내 PhyreModelExportLab —glb하위 명령어, 실제 지도에서 약 25% 더 작음; 뷰어/에디터는.glb를 선호함). - F6 UI: 단축키 P/V/S/F/T/B/G/ 1-9 (카메라 세이브스테이트 Shift+N); Focar/Topo/Frente/Fit/Reset 버튼; 앵커 인스펙터 (클릭 → 선택 → 편집 가능 X/Y/Z + POST /drag를 통해 적용; ATEL 스케일/flipX/degraded 표시).
- Gates:
--filter AuroraOverlayEnrichment7/7 PASS; 전체 제품군 275/275 PASS; 빌드 오류 0개;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. Status:Needs Testing(visual smoke 내 해당 viewer; in-game RT2 아님 promoted). ### PATCH
v2.198.4.2
v2.199.0.1BETAREVISION
Seymour2026년 8월 1일
PPP 편집자 담당 영역에 대한 PPP 업무 인계 완료
docs/reverse/PPP_EDITOR_HANDOFF_2026-08-01.md(신규, 약 236줄): 모든 PPP/Phyre/magic_.dll (HD) 관련 지식 통합 — PPP의 정의 (587개의 magic_.dll; PE32 .텍스트 브트에이블 + .데이터 브르오브), 검증된 16B C1 슬롯 (fp.h 내의 handler_table_index; 0x7170F0에서 입증된 argument_relative), 3개의 물리적 디스패치 테이블 (0xC3A500/418pppSysProgTbl, 0xC3E798/246, 0xC86080/32; +4/+8/+0xC/+0x1C/+0x20/+0x24 필드; 재현 가능한 추출기), U1 핸들러 10/10 (FFX_BoneAnim, 16B/8B 윈도우, byte-identical 클론 그룹), 드로우 체인 (BuildVfxTexture_TypeK → lppEnv 0xC3A4C4 → TextureSlotCache 0xCCCA64 → Phyre_Map_LowerBound), PppMem 62개 함수 (pppKeThRes32=0x736A20 확인됨), C2 FULL 184개 패밀리 (27개의 노브 + 157; 226/226 프이트에스트), 에그오브姆/HostContextTable (0xC64CE8 기준 512개 슬롯), 이오느이시이 (84개 패밀리/51,378개 샘플), 583/587개 DLL 디컴파일 (1,907,920 라인), T3/T4 증명 (Power Break에서 시각적 검증 3/3), F4 검증 완료, 크아트아크오姆브스, 느오크르이프/프아흐르느흐에이트 상호 참조, 편집기 골든 룰 (pppColor 최하위 우선순위; 이름 ≠ 진실; 백업+SHA), 누락된 항목 (C3/경로 B, T1/T2 프로브). 행동 변화 없음 — 기준선(기준선)은 그대로 유지됨. ### REVISION ### MINOR
v2.199.0.0
v2.199.0.2BETAREVISION
Seymour2026년 8월 1일
F1: ATEL codec cross-validation × fahrenheit (인코딩 + 오프코드 테이블)
docs/reverse/FFX_FAHRENHEIT_ATEL_ENCODING_CROSSCHECK_2026-08-01.md(신규): 확인됨를 당사FfxLib/Ai와 화씨(Fahrenheit) 간 1:1로 인코딩함(비트 7 = u16 피연산자; 하위 7비트 = 오프코드 0..0x7A; 크기는 1/3B); 19 연산 코드 우리 사용 확인됨 통해 그들의AtelOp열거형을 통해 확인된, 우리가 사용하는 19개의 명령어 코드 (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 (우리의 가드 분기), CALLPOPA 0xD8); comparison-name 발산 re-documented (그들의 0x0A "GT" =A<=B실행 가능한 진리에서); 그들이 가지고 있고 우리가 가지고 있지 않은 것들의 목록 (REQ 계열 0x36–0x53, PUSHN/PUSHT/PUSHVP/PUSHFIX 0xC1–0xC4, LABEL/TAG 0x9D/0x9E, 지역 변수 POPI/POPF/PUSHI/PUSHF 0x59–0x74, CJMP/NCJMP 0xB1/0xB2); 컴파일러 상태 (을엑스어+파서+AST 완료, 에姆이트트어 아님 구현됨 — 컴파일러 round-trip 해당 측에서 차단됨; C# 빌드, C++ 로더 필요 VC 툴셋이 여기에는 없음). 아티팩트:work/fahrenheit_atel_opcodes.txt(123개 오프코드). 동작 변경 없음 — 기준 버전은 변경되지 않음. ### REVISION ### REVISION
v2.199.0.1
v2.199.1.0BETAPATCH
Seymour2026년 8월 1일
Sphere Grid Canvas: SUPERMD cleanup (encoding, dead Stamps, Square legacy, hook/compiler texts, Open* from corpus, re-baseline on Save)
- 인코딩 (§4.1):
SphereGridCanvas_Control.axaml을 pt-BR에서 처음부터 다시 작성함 — 402CP1252-mojibake개의 문자 / 29가지 유형은 복구 불가 (“Ícones”, “Salvar cópia”, “referência”, "POSIÇÃO", "CONTEÚDO", "LINKS DESTE NÓ", "편집á-lo", "≥320", "índice cru", "Remover nó", "nó #", "✕"); code-behind 모지바케 오류 수정됨;SphereGridBuilder_Control.axaml확인됨 정리됨 (변경 없음). Post-fix 스캔: 30 non-ASCII = 정상 pt-BR 악센트 및 기호 (◎ ✕ ≥ ≤ —). - 사용되지 않는 스탬프 삭제 (§4.2):
PlaceStamp,StampShape,CurrentStamp,Mode.Stamp,SetStampDiamond/SetStampLine,ToolMode.StampDiamond/StampLine. - Square 레거시 제거됨 (§4.3):
SphereGridSquarePackageWriter.cs삭제됨 (SHA256 매니페스트는 폐기된 v5 hook에서만 소비됨); Save Square/Export Square 버튼 +ExportSquarePackage()/RetailBaseline/ResolveHookConfigDir/SquareModeSummary제거됨;SaveToProject는 이제 저장 후 re-baselines임 (이전에는 SaveSquare-only). - New-theory 텍스트 (§4.4/§4.7): Banner, Validate, SaveCopy,
SphereGridDeployPolicy, TopologySafetySummary 업데이트됨 — 개수가 1024 이하인 경우 없음 후크가 필요합니다 (header-driven 엔진; struct 1024/1024/128; save 1280/1280); 이전의 861/882 오류는 v5 훅 및 비정상적인 그리드 때문이었으며, 정상적인 배포로 인한 것이 결코 아니었습니다; "훅/컴파일러" → "RT2 테스트 (일회용 저장)". - 말뭉치의 Open (§4.6):*
ResolveAbmapDir가 바닐라 말뭉치(FFX Extracted\...\abmap) FIRST를 해결함 (저장 시에만 프로젝트); 프로젝트가 말뭉치와 다를 때 새로운 경고 "프로젝트에 이 그리드가 수정됨 (≠ 바닐라)" 표시. - 툴바 간소화 (§4.5): "사각형 모드 (dat0X + dat1X)" → "토폴로지 편집 (개수)"; "RT2" 확인란을 '저장' 옆으로 이동; 중복된 버튼 제거.
- 검증: 릴리스 build 0 오류; SphereGrid 테스트 2/2 PASS (
SphereGridAddNodeRepro); 게이트--spheregrid-layout-rt0/--spheregrid-build-rt0/--spheregrid-edit-rt0PASS; 기준선 276/277 (스오을 실패 =MagicDllCorpusSmokeTests, MagicDll 레인, 외부 의 범위). 레코드 수정: 해당 ".크스 문자 깨짐 (687/693/694)" 크이트드 에서 해당 SUPERMD 브어이프이크아션 였음 a 표시 아르트이프아크트 — 바이트 임 유효한 UTF-8 (→=E2 86 92, Á=C3 81, 에姆오즈이스 F0 9F...); 오직 텍스트 의미론 였음 고정된. ### REVISION
v2.199.0.2
v2.199.1.1BETAREVISION
Seymour2026년 8월 1일
Knowledge-Bases ‘FFX.EXE’ 작전을 위한 재고 목록
docs/ai/KNOWLEDGE_BASES_2026-08-01.md에는 11개의 저장소가 색인되어 있습니다: 5개의 Fahrenheit 저장소(main/excel/save-ui-rework + local-settings (ATEL 어셈블러 포함) + managed-loader (주소 정보 포함), Spira Modifier 0.73 (Spira Modifier 0.73 (발견됨: 전체 ATEL RE 도구 — C#로 디컴파일됨work/_spira_modifier_decomp/; 에 수록됨; AtelCallTargets 카탈로그 298개 항목 ID 95..28967; 오프셋이 포함된 커널 형식: AttackData 92/96B: aability, SphereTypeForSphereGrid@93 (MonsterStat 128B), EncounterTable 14B/항목, EncounterTable 14B/entry (btl.bin), MonsterLoot/Treasure/WeaponName/PlayerSaveFile), PhyreEngine (헤더 901개 + 코어 모듈 23개 — DB용 구조체), PS3 SDK (3.40/3.70/4.00 + TrueBlueGaryOPA + SuperExtra).- 주소 규칙 검증 완료: managed-loader 주소는 RVA입니다 →
VA = RVA + 0x400000(증거:ToBtlPadScrollWait로더 0x498DB0 대 Ghidra 0x898DB0;get_global_value의 DB). - 수술 전 DB 백업:
backups_ffxoficial\*.before_operacao_total_20260801_055545.i64. ### PATCH
v2.199.1.0
v2.199.1.2BETAREVISION
Seymour2026년 8월 1일
FFX.EXE 작업: 1차 이름 변경 작업 적용 (+2,674 캐노니컬 / +1,995 COPY) + Spira 수정자 형식 문서
docs/reverse/SPIRA_MODIFIER_FORMATS_2026-08-01.md: Spira 수정자0.73의 디컴파일 결과에서 추출한 형식 —AttackData(a_ability: 92/96B, 25× StatusChance,SphereTypeForSphereGrid@93),MonsterStat(128B),MonsterLoot(280B),TreasureEntry(4B — 본 자료와 일치),EncounterTable(btl.bin, 항목당 14B), ATEL 카탈로그 (298개 항목, ID 95..28967 →atel_call_targets.json).- 1차 이름 변경:
fahrenheit-managed-loader주소 (RVA → VA+0x400000; 검증된 관례) +call.g.cs(__addr_*): canonical에 2,674건 적용 + COPY에 1,995건 적용 (MCP를 통해), default-only (27,138건 중 2,797건의 already-named 보존). 스크립트: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
Seymour2026년 8월 1일
sphere.bin `activates` 비트 순서 PROVEN (출처 3곳) + 0xc0000374 그리드 충돌 포렌식 (02:38 당시 그리드 상태는 CLEAN — SUPERMD §5 수정) + 깨끗한-RT2 사전 검증
docs/reverse/FFX_SPHERE_BIN_ACTIVATES_BIT_ORDER_PROVEN_2026-08-01.md(신규):Sphere.activates@+0x0A — 11개 카테고리 확인됨 (STRENGTH=bit0, DEFENSE=1, MAGIC=2, MAGIC_DEFENSE=3, AGILITY=4, LUCK=5, EVASION=6, ACCURACY=7, HP=8, MP=9, ABILITY=10; 전체=0x07FF) 3개의 독립적인 출처를 통해: 프아흐르느흐에이트sphere.cs열거형 (이미SphereTargets에 동일한 순서로 존재); 구문 분석된 JP PC 코퍼스 (3/3/3/1/1비트 그룹: 항목0 0x0103=STR+DEF+HP=프아우어, 항목1 0x020C=Mana, 항목2 0x00D0=속도, 항목3 0x0400=능력, 항목4 0x0020=Luck, 항목9 0x07FF=프르이에느드, 키 L1–L4 특수 8..11, 반환/트에을프오르트/지우기/마스터 특수 1..4); panel.bin 효과 비트 (SphereGridNodeSphereRequirement: PowerSphere→0x0001=STR, ManaSphere→0x0004=MAG, SpeedSphere→0x0010=AGL, AbilitySphere→0x0400) — 런타임에서는activates & effect를 수행합니다.SphereTargets주석 수정 (이전에는 "입증되지 않음"이라고 표기되어 있었으며, 0x0103를 Ability에 귀속시켰음). 기록 수정: v2.198.3.4 “인덱스 = SphereGridNodeSphereRequirementKind”는 오해의 소지가 있었습니다(테이블 인덱스 ≠ 요구 사항 열거형).docs/reverse/SPHERE_GRID_CRASH_GRID_FORENSICS_2026-08-01.md(신규): 배포된dat02.dat의 바이트 단위 분석 02:38:29 (98/861/882; node 860 = (129,-172) U3=0 Red=0x19 Cl=64 U6=170 = correct bucket; dat10 content 0x19 matches) — grid 였음 CLEAN; SUPERMD §5 values (Cluster=851/Redundant=854/Unused3=855/Unknown6=0/content=0x07) came 에서 a wrong-offset parse. 해당 truly anomalous grids live 내 해당 June backups (repair-node860-meta17/06 U6=0;corrupt20/06 clusters=1). 해당 02:39/02:40 crash ran 와 hooks active (ffx-hooks+ffx-probe loaded) + clean grid → hypothesis: v5 hook (guard pad/canary); decisive test = RT2 와 hooks OFF.- Clean-RT2 프리플라이트 적용:
work/_sg_rt2_preflight/rt2_hooks_toggle.ps1 -Off(ffx-hooks.dll/ffx-probe.dll → .RT2OFF; 레거시 사이드카 → .legado;ff10-file-loader.dll+dinput8.dll는 오버레이용으로 유지됨). 복원:-On또는FFX-RESTORE.bat. - 검증: 릴리스 build 0 오류; 기준선 283/283 PASS (MagicDllCorpusSmokeTests 실패 그오느에 — MagicDll 레인 fixed); offline_ci 스오을 FAIL =
BattleCompanionActivationLab(드르이프트 스에느트이느에르mcyt00_21— 주석이 달린 other-lane pending, 외부 의 범위). 없음 제품 동작 변경 (문서 + 크오姆먼트 + 작업/ 스크립트). ### REVISION
v2.199.1.2
v2.199.1.4BETAREVISION
Seymour2026년 8월 1일
F2–F5 의 해당 fahrenheit plan: ATEL data import + high-level assembler feasibility
docs/reverse/PPP_FAHRENHEIT_ATEL_IMPORT_2026-08-01.md(F2+F3+F4): 화씨 call-target 테이블 추출 (11개 네임스페이스: VAs 0x850050 Common/0x842618 Battle/... + 개수 616/296/145/138...; 핸들러 구조체 IDENTICAL를 당사의 EBP — cross-validation에 매핑함); 129개의 FFX auto-abilities (0x8000+) 및 487개의 FFX-2 명령 ID (주의: FFX-2 ≠ FFX; 0x3049 = pcom_seed_cannon, 당사의 피처에서는 Firaga); REQ 방언 문서화됨 (0x36–0x3B: REQ/REQSW/REQEW/PREQ/PREQSW/PREQEW + F/T/B/P 접두사 + SW/EW 접미사 — EVENT/field 계열, 전투에서는 사용되지 않음 AiFile); AtelOp 열거형은 당사의 표를 확인해 줍니다 (POPXCJMP=0xD6/POPXNCJMP=0xD7/CALLPOPA=0xD8/PUSHII=0xAE). 아티팩트:work/f2_fahrenheit_calltargets.json+work/f3_fahrenheit_ability_names.json.docs/reverse/PPP_ATEL_ASSEMBLER_F5_FEASIBILITY_2026-08-01.md(F5): high-level ATEL 어셈블러 프이스이브이르이티 — 3 옵션 (참조 프아흐르느흐에이트 LGPL 대비 프오르트 해당 스이느트아엑스 대비 아우느 언어); 르크오姆姆에느드아션: 프오르트 해당 스이느트아엑스 (옵션 B — 우리의 고정된 연산 코드 표, 0 드에프에느드에느크이, 작은 범위); 4-일괄 처리 로드맵 (L1 을엑스어/파서 → L2 에姆이트트어 통해 고정된AiVarConditionBuilder→ L3 동안/프우느크 → L4 UI 와 함께 3-레이어 미리보기); 위험 (LGPL, semantic-bug 반복).docs/reverse/PPP_EDITOR_HANDOFF_2026-08-01.md(+10 르이느에스 에서 해당 PPP 편집기 레인 — 에姆프이르이크얼 수정함: 해당 4 "크오르르우프트" 드르르스 열기 위해 프아르스잉; 576/581 편집 가능한; 키 임 GLOBAL host-table 인덱스 — 드에프에느드 위에 a 런타임 프르오브에). 없음 동작 변경 — 기준선 283/283 변경되지 않은. ### REVISION ### REVISION
v2.199.1.3
v2.199.1.5BETAREVISION
Seymour2026년 8월 1일
Jarvis-WIRE lane 생성됨 (훅 전문가, lane 2) + Operation Demonio: F8 메뉴 (UnX 0.9.1.9 + dxgi.dll SpecialK 0.8.36 포크) code-review 계획 + 당사의 훅 지식 기반
docs/ai/agents/JARVIS-WIRE.md(신규): lane-2 훅 전문가의 정체성 (Jarvis-Hook 아님): 도메인, 필독 자료, 핵심 진리 (WireInstance는 아님이며, C++<->C# 패턴 - MMF는; CreateRemoteThread은 더 이상 사용되지 않음; 호출 규칙을 항상 확인해야 함), 출력 형식, 안전 장치 (명시적인 명령 없이는 게임에 아무것도 기록되지 않음).docs/reverse/HOOKS_WIRE_KNOWLEDGE_BASE_2026-08-01.md(신규): 후크 아키텍처 통합: 4개 계층 (dinput8 ffgriever 로더 -> ff10-file-loader/ffx-probe/ffx-hooks -> 에디터), 2개의 MMF 블록 (FFXProbeBlock_v1 580B + FFXHooksBlock_v1 256B), 20개 이상의 훅을 포함하는 InstallHooks 팩토리 테이블 (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 비활성화됨; BootSkip WIRE-ME), F7 플래그 시스템 (env + .flag + config), 강의 (retn4 double-pop; NulWard x NovaClamp 충돌; TrueNewNode x FullGrid), 관련 실습 (63 RuntimeTools 폴더).docs/reverse/F8_UNX_CODEREVIEW_PLAN_2026-08-01.md(신규): 5단계로 구성된 '오퍼레이션 데모니오'(오프어아션 드에姆오느이오) (F0 포렌식 정찰 -> F1 PDB를 활용한 후크 맵 -> F2 메뉴 호출 목록 item-by-item -> F3 11가지 불일치 유형 -> F4 read-only 동적 검증 -> F5 배포), 기반 자료 (바이너리+PDB, 2019년 7월 19일 실제 로그, Fahrenheit 5 저장소, 느오크르이프, IDA MCP 13338), 문자열에서 추출한 메뉴 트리 (Boost.FFX/SpeedHack.FFX/Fun.FFX PlayableSeymour/언어 리디렉션/시그 스캔 기능이 포함된 치이트 엔진 + "姆에姆 b D2A8E2 2" 패치).docs/reverse/F8_UNX_INCONSISTENCY_REGISTER_2026-08-01.md(신규): 템플릿 + 8개의 시드가 포함된 라이브 레지스터: INC-001 7월 19일 05:54 부팅 오류 (dxgi.log가 D3D11 hooks/nvapi 이후 중단됨); INC-002 F8 DI8_GetDeviceState_Override x GetDeviceState 후크 (동일한 대상); INC-003 D3D11/Present x Aurora 오버레이; INC-004 버전 제한 없이 하드코딩된 치트 오프셋; INC-005 게임 디렉토리 내의 고아 UnX.ini; INC-006 언어 리디렉션 x ff10-file-loader; INC-007 SuspendThread/Thread32 x MH_ApplyQueued; INC-008 WININET auto-update.- 정찰 결과:
work/f8_recon/(pe_scan.py, manifest.txt, SHA256 + PE 분석, unx_strings_ascii.txt 798 / utf16 253). PE 분석 결과: unx.dll 는SKPlugIn_Init(SpecialK 플러그인), ImGui 메뉴를 내보내고, keybd_event/SuspendThread/Thread32를 가져옵니다; dxgi.dll .SK_Hook/.tls/.rsrc 4.3MB 섹션, WININET + d3dx9_43 + VCOMP140 임포트; PDB 포함 (dxgi.pdb 62MB, unx.pdb 6MB). 동작 변경 없음 - 기준값은 변경되지 않음.
v2.199.1.4