更新 2.207
2026/8/2
v2.207.0.0BETAMINOR
Seymour2026年8月1日
F5-L4: high-level ATEL 腳本面板位於怪物 AI 編輯器(dry-run 含差異比對)
MonsterAiEditor_DataModel.AtelScriptLab.cs(新的部分): 可觀察的AtelScriptText/AtelScriptResult/AtelScriptDiffSummary/AtelScriptDiffLines+CompileAtelDryRun()— 解析/編譯腳本對照 SELECTED 怪物(AiAutomation.PickCombatWorker/PickMainEntrypoint)並顯示差異(AiScript_Diff.Compare,新增/修改/移除)。Dry-run:不會儲存任何內容(儲存仍停留在編輯器現有的頻道上)。可操作的錯誤(語法/發射)。MonsterAiAtelScriptLab_Window.axaml+.cs(新的): 包含腳本編輯器(Consolas)的視窗、「編譯(dry-run)」按鈕、摘要 + 差異 ListBox。「腳本 ATEL(F5)」按鈕已新增至MonsterAiEditor_Control工具列。- 基準線:332/332 PASS(329 + 3 來自另一條工作線)。 ### MINOR ### MINOR
v2.206.0.0
v2.207.0.1BETAREVISION
Seymour2026年8月1日
F6: 戰鬥/儲存結構 cross-validation (華氏 PS2 × 我們的 HD 偏移量)
docs/reverse/PPP_FAHRENHEIT_STRUCTS_CROSSREF_F6_2026-08-01.md: 華氏庫存 (PS2 ChrRam 0x1EC 帶有屬性 @0x68–0x77 和裝備 @0x52/0x53; CtbEntry 4B + CtbBaseData 刻速度; 儲存實作/玩家儲存) 對比我們的 (HD MemoryChr 帶有腳本指標 +0xF78.., FfxSaveSphereGrid 帶有邊界守衛, 反編譯的 HD CTB 佇列). 據實判斷: PS2 ≠ HD (這個 HD MemoryChr 包含了腳本/VM 層; PS2 執行 MIPS) — PS2 屬性是針對 field-by-field 聚合器 (HD) 的 0x7B2DD0 驗證候選; CtbBaseData 是 CTB 佇列的語義參考; 沒有 HD 證明就不會晉升。Read-only — 基準 332/332 未改動。 ### REVISION ### MINOR
v2.207.0.0
v2.207.0.2BETAREVISION
Seymour2026年8月1日
F7: cross-validation 的 ATEL 編解碼器(華氏 ↔ 我們的)— 3/3 已驗證
docs/reverse/PPP_FAHRENHEIT_CODEC_CROSSVALIDATION_F7_2026-08-01.md: F7-A 我們的語法 → 他們的解析器(var x = 0;已接受;他們的詞法分析器 EOF 錯誤已記錄——在結尾換行時崩潰,lexer.cs:74);F7-B 我們生成的 AiFile(透過 AtelLangLab 的 324 條指令)→ 按照他們的提取規則走訪(位元 0x80 = 運算元):完全閉合,0 個操作碼在其 AtelOp 列舉之外;F7-C 我們的 KnownOpcode (49) ⊆ 他們的列舉 (123):0 缺失。限制:他們的編譯器會 NOT 發出位元組(AtelAssembler 從未被呼叫);驗證涵蓋方言/提取/表格,而非完整的工作線佈局。結論:兩個編解碼器使用相同的方言——我們的固定語義(v2.198.4.1)是可執行的真理。 Read-only — 基準 332/332 未受影響。 ### REVISION ### REVISION
v2.207.0.1
v2.207.0.2BETAREVISION
Seymour2026年8月1日
惡魔行動第2階段:新F8的完整清單 (InGameMenu 之 FfxHooksDll)
docs/reverse/F8_UNX_INCONSISTENCY_REGISTER_2026-08-01.md(+45 行): 新F8 = 我們的生態系統插件交換器 (在我們鉤子層之上的 UnX 重新實作)。架構對應於 dllmain.cpp:閘道ingame_menu.flag/FFXHOOKS_ENABLE_INGAME_MENU/Aurora 設定;基礎設施 = AuroraD3D11 覆蓋層 (Present vtable[8]);輸入 = GetAsyncKeyState (輪詢 Present) + WndProc 子類別 (WM_KEYDOWN/SYSKEYDOWN, 90/150 毫秒去抖) - 無 DirectInput, 與探測器零衝突 (對比舊版 UnX 會在 GetDeviceState 上崩潰);第0-2行 = Aurora 標籤/詳細/重新整理, 第3行以上 = 插件 (執行中/Disk-on/Disk-off/不存在);插件切換 READ-ONLY (透過編輯器暫存;即時卸載已封鎖);1.5 秒重新整理;純 GDI 在 memDC 上繪製。- 結論: 新F8執行 NOT寫入遊戲記憶體 (零寫入 - 無舊版 UnX 的 Btl.battle_trigger/HP/.text 修補) - offset/ABI/save-corruption類別不適用。風險 R-ING-01..05 (低): 每幀在 Present 上的 GetAsyncKeyState; WndProc子類別 vs third-party覆蓋層 (DiscordHook/SpecialK); F8/INSERT始終被消耗; 1.5 秒重新整理 I/O; R-ING-05 (RT2待定): Present vtable[8] = 與 UnX SK_BeginBufferSwap 相同目標 - 共存未測試。已知的軟鎖閘道已在程式碼中記錄: field_scout* x native_menu = titl00。無行為變更。
v2.207.0.1
v2.207.0.3BETAREVISION
Seymour2026年8月1日
IDA GOLDEN RULE: ATEL call-target 表格已於標準資料庫驗證 + cross-reference 註解 + F2 文件修正
- 驗證(無名稱即無證據): Fahrenheit 地址(0x850050 Common、0x842618 Battle…)屬於 PS2 二進位檔 — 查詢標準資料庫顯示空名稱 + non-pointer DWORD → NOT 已於 HD 重新命名。真正的 HD 表格已命名:
AtelCallTargetsCommon@0xC50050、AtelCallTargetsBattle@0xC42618、AtelCallTargets@0x1328518(Fahrenheit 命名已由另一條工作線套用 — 驗證了命名慣例,而非地址)。 - Cross-reference 註解已套用於 3 張 HD 表格(16B 結構 +0 init/+4 exec/+8 ret_float/+0xC ret_int;PS2 引用含計數)— GOLDEN RULE 已滿足。
docs/reverse/PPP_FAHRENHEIT_ATEL_IMPORT_2026-08-01.md已搭配驗證註記修正(PS2 地址 = 來自另一二進位檔的參考,並非 HD 重新命名目標)。基準 332/332 未觸動。 ### REVISION ### REVISION
v2.207.0.2
v2.207.0.4BETAREVISION
Seymour2026年8月1日
F6.1: stats field-by-field verification PS2×HD on the aggregator (0x7B2DD0) + IDA 工作
- 上一個:
v2.207.0.3反編 - 譯
FFX_Battle_PoolActorByTargetType_structural(0x7B2DD0) — READ/WRITE dispatcher with 346 actor-property cases。 Cases 0x0A–0x13 在 8 bytes atpad_0764[331..337/348]處累積 8 位元組HDFFXBattleActorRecordregion +0x79B候選 8 屬性區 塊 (力量/防禦/ 魔力/魔法防禦/ - 速度/運氣/迴避/ 命中)。已確認: PS2 offsets (ChrRam +0x68..0x77) do NOT match HD (HD record is much larger; the dispatcher indexes by CASE ID, not offset).
- GOLDEN RULE: cross-reference comment applied at case 0x0A (0x7B2F9D) on the canonical db.
PPP_FAHRENHEIT_STRUCTS_CROSSREF_F6已更新 (§4b)。待辦:確定 8 屬性順序 (分支名稱——未來工作)。基準 332/332 未更動。 ### REVISION ### REVISION
v2.207.0.5BETA
Seymour2026年8月1日
F6.2:FULL 調度器案例映射 0x7B2DD0 + 修正 F6.1
- 修正先前交付內容: 實際的 8 屬性候選區塊是 338..345(案例 0x12C–0x135,8 個連續位元組) — 而非「331..337/348」(7B + 來自另一個區塊的 1B)。
- 實際函式語義: 每種目標類型的屬性之 AVERAGE(結尾處的
total /= counter),而非原始屬性總和。 - 完整案例→偏移映射已記錄(14 個區塊:331..337, 338..345, 346–351, 380–383, 426–434, 436–438, 483–508, 606–643, 674, 698/699, 82–93, 158–176, 326...)於文件 F6 §4b。
- GOLDEN RULE: IDA 註解已套用(函式 0x7B2DD0 + 案例 0x0A 0x7B2F9D)。⚠️ MCP 13337 在
set_func_cmt後忙碌/儲存中 — 驗證 post-save;如有需要,重新套用work/_ida_set_comments.py。 - 基準線 332/332 未更動。 ### REVISION ### REVISION
v2.207.0.4
v2.207.0.6BETAREVISION
Seymour2026年8月1日
F7/F8 調和計畫 (交接至 Jarvis-HOOK 工作線)
docs/reverse/F7F8_RECONCILIATION_PLAN_2026-08-01.md(新增, 約250行): 最終整合惡魔行動的發現,提供給鉤子工作線。P1 (已證實): 新的 F8 (儀錶板, 56行, UnX/ProjectX) 已從 dllmain 中移除,提交於53d82b2a(07/27),且目前活躍的 09:05 建置沒有儀錶板 - F8 回退到 InGameMenu 切換板 (舊版); 原始碼可復原 (二進位大型物件c66aa478/a14f8732/76887427/d9516135+RT2OFF/pre_magic_ppp_trace建置 + .obj)。P2-P8: F7 金鑰爭用 (NativeMenu x LabMenu) 和 F8 (儀錶板 x InGameMenu), 重複閘門 (ingame_menu_v2.flag), field_scout x native_menu 閘門待驗證, ffx-hooks.ini 遺失於遊戲目錄中, Present vtable[8] 跳轉順序。6步驟復原地圖 (git show + 11 diff blocks + vcxproj + config + lab build + gates), target architecture with single key owner (F7=NativeMenu RAM untouched; F8=dashboard; InGameMenu=fallback), classified UnX parity (port cheats/dialog-skip/language via clean hooks; NEVER hardcoded .text patches 0x392930/0x30B040/Btl.battle_trigger/Sleep-5s thread), 4 waves with gates (RT2 on _isolated, baseline 283/283). No behavior change - baseline untouched.
v2.207.0.5
v2.207.0.7BETAREVISION
Seymour2026年8月1日
外部幻光盤知識 cross-checked (fahrenheit-crew Discord 與 FFXRando) + 2 個錨點回歸測試
docs/reverse/SPHERE_GRID_EXTERNAL_KNOWLEDGE_2026-08-01.md(新增): Discord 討論串 (Titan/Dragoon/peppy) cross-checked 與我們的 RE:(1) 錨點索引 = 該連結的曲線控制 node (ourAnchorNode;Validate()catches OOB;RemoveNodefixes anchors — link anchored on the removed node becomes straight 0xFFFF); (2) LOCK 3 = content 0x00 is the game's default when it can't find the node (sgelems.cs L215) — our flow never emits it (EmptyContent=0xFF + validated picker); (3) header↔structs coherence (Dragoon) = what our WriteLayout/Validate already guarantee; (4) limits are per-grid (peppy "per-grid") = confirms our RE (static LpAbilityMapEngine 1024/1024/128 per grid); (5) FFXRando (nyterage/FFXRando, MIT, C++):SphereGridRandomizer.cppshuffles CONTENT only (topology/counts preserved; NODE_NULL=skip) — validates the Safe Transplant directive (content edit = safe; new topology = risk, gated by DeployPolicy).- 在
SphereGridAddNodeReproTests.cs中的 2 個新測試(該區域上 4/4 PASS):RemoveNode_WithAnchorLinks_KeepsGraphValid(標準原版有 411 條曲線連結;移除錨點 node keeps the grid valid, no orphan anchors, round-trip OK) +Validate_CatchesOutOfRangeAnchor. No product behavior change. ### REVISION
v2.207.0.6
v2.207.0.8BETAREVISION
Seymour2026年8月1日
Sphere Grid editor write audit formalized ("the secret to not exploding")
- 先前:
v2.207.0.7] docs/reverse/SPHERE_GRID_EDITOR_WRITE_AUDIT_2026-08-01.md(新 ): YES answer to "does our editor do exactly the safe thing?" — operation→bytes map (drag = pos + recomputed Unknown6; content = 1 byte in dat1X + RedundantContent; cluster; add/remove node/link with full reindex; link repoint) and the 7 invariants enforced byValidate()before ANY 7 個不變量 RedundantContent == content; (4) cluster < clusterCount; (5) Node1/Node2 < nodeCount; (6) AnchorNode 0xFFFF or < nodeCount; (7) content in range (0xFF=empty). Single write path: UI → builder → Build() (throws if invalid) → WriteLayout → project; nothing is written unvalidated. Safe Transplant = byte-local (counts preserved) = proven safe zone; new topology = gated by DeployPolicy until the clean RT2. Residual risks: SphereGridAdapter writes sphere.bin (different file), PanelGrowWriter extends panel.bin. No behavior change. ### REVISION
v2.207.1.0BETAPATCH
Seymour2026年8月2日
F7 In-Live v2: multi-column DIFF (預設 + BASE + AUTO + WEAK + RESIST + ABSORB multi-select), 數字輸入, HP 最高10倍, 音樂包含預覽/真實名稱/儲存/重置, black-screen 修正, LabMenu → F6
- DIFF 重新設計 (multi-column): 預設改為頂部的醒目晶片 (關閉/獵人/Sombra de Sin/真實 Nightmare); side-by-side 欄位 BASE STATUS (HP..LCK — 9 項屬性, ACC/EVA/LCK 現在也可編輯) / AUTO STATUS (25 種狀態, multi-select 核取方塊) / WEAK / RESIST / ABSORB (各 5 個元素, multi-select); ACTIONS 欄位 (立即套用/儲存/返回); L/R 導覽欄位, U/D 導覽列; HP 範圍最高 10 倍 (100..10000), 屬性最高 5 倍 (100..5000)。
- 數字輸入: 確認在某個 BASE 屬性上會開啟編輯模式 — 輸入 0-9、Backspace,確認後套用 (會限制範圍),Esc 取消 (變為「自訂」)。
- 音樂: 新增列 預覽 (透過 lab-proved 覆寫 + SOUNDCMD 播放音樂鎖定曲目)、儲存 (保留 f7_inlive.json) 及 重置 (回到預設: 無鎖定/戰鬥/隨機化/淡出); 確認「音樂鎖定」/「戰鬥進入」也會進行預覽; 181 首曲目的真實名稱 (F7TrackName 現在委派給
LabMusicRuntimeName對照表: 「戰鬥主題」、「Thunder 平原」、「危機」……)。 - Black-screen 修正: 子選單→中樞返回現在使用泵送路徑 (
g_nativeWantSpawn),而非直接SpawnMenu();F7_DifficultyApplyNow增加了 enemy-list 驗證 (範圍檢查) +__try/__except— 絕不在無效的上下文終止泵送 (記錄 SEM-LISTA/LISTA-INVALIDA/EXCECAO)。 - 舊版 LabMenu 移至 F6 (原為 F7/F8,視 InGameMenu 而定) — F7 現在專屬於 FFX 編輯器 In-Live; F8 即為 InGameMenu (插件切換板)。
- 新的 F7InLive API:
F7_MusicPreview(track)、F7_ResetMusic()、F7_StatusName(i)+GetArenaBattleMusicSoundCmdFn()取得器於 MusicHook 中。 - 建置
-WithPolyHook -ReleasePASS; LabDeploy 至 Steam; RT2Needs Testing(DIFF 欄位、數字編輯、可聽預覽、在戰鬥中套用)。 ### REVISION
v2.207.0.8
v2.207.2.0BETAPATCH
Seymour2026年8月1日
星盤編輯器: 移除了在新真相下不合理的內容(死 v5 程式碼)+ 為 Jarvis-HOOK 工作線凍結交接
- 從編輯器中移除:
SaveSquareToProject()(死程式碼——在 SUPERMD 清理中失去其唯一呼叫者;SaveToProject搭配 re-baseline 已涵蓋它)+ dev-path 死備用work/nul_ward_pack/command.bin位於ResolveCommandBinPath(檔案不存在;語料庫已涵蓋)。星盤編輯器區域現在 100% 不含 v5 概念(掛鉤/清單/側車/方塊)。 docs/ai/HANDOFF_JARVIS-HOOK_SPHEREGRID_V5_FREEZE_2026-08-01.md(新增): 給 Jarvis-HOOK 工作線的指示 to 凍結 v5 堆疊(SphereGridFullGridCompilerHook.{cpp,h}+SphereGridTrueNewNodeHook.{cpp,h}→legacy/)而不破壞其他掛鉤的工廠;DllMain 接觸點(包含 L49-50、外部變數 L97-98、已啟用 L870-876、安裝 11900-11931、移除 12168-12169);RT2 標準(通過 → 刪除;失敗 → 隔離實驗室);ffx-probe.dll 是 NOT 一個掛鉤(保留)。- 驗證: 發行版建置 0 個錯誤;SphereGrid 測試 4/4 PASS(帶有錨點)。
v2.207.1.0
v2.207.2.1BETAREVISION
Seymour2026年8月2日
Sphere Grid 工作線 closure (交接 + PORT_STATUS)
docs/ai/SESSION_HANDOFF.md: lane-closure 交接 — 該階段的 5 次提交 (SUPERMD 清理、sphere.bin 位元 PROVEN、崩潰鑑識、撰寫審計 7 個不變量、移除無效 v5 程式碼) + 狀態 (編輯器 100% v5-free、遊戲已準備好進行乾淨的 RT2) + 待辦事項 (人工清理 RT2、UI 冒煙測試、在 Jarvis-HOOK 工作線上 v5 堆疊凍結) + 安全下一步。PORT_STATUS.md: 收尾更新 — 區域狀態已整合;清理 RT2Needs Testing。 ### PATCH
v2.207.2.0
v2.207.3.0BETA
Seymour2026年8月2日
F7 In-Live 修正:AUTO 版面(25 個狀態可見)、tick-based 強制(無 Sleep)、離線 RT0 閘門
- Layout fix: AUTO STATUS column with rowH 0.020 — all 25 statuses now fit on screen (Haste/Slow 強制
- 修 正:
F7_ForceLastBattle現在根據時脈週期排程(g_forceRepeatLeft+ 每次強制之間約 10 幀,在F7_TickMainThread) — the main-threadSleep(120)(重複 9 次時約停 - 頓 1 秒)已消除。 RT0 gate:
RuntimeTools/FfxHooksDll/f7_config_rt0.ps1— 在不啟動遊戲的情況下驗證f7_inlive.jsoncontract (24 keys, clamp ranges, status/element masks, key-value round-trip) without launching the game. PASS。 - Build PASS + LabDeploy to Steam (together with 2.207.4.0). ### REVISION
v2.207.2.1
v2.207.4.0BETA
Seymour2026年8月2日
幻光球盤掛鉤堆疊 v5 FROZEN(舊版)
- 凍結已執行(交接
HANDOFF_JARVIS-HOOK_SPHEREGRID_V5_FREEZE_2026-08-01.md): 4 個 v5-stack 檔案(SphereGridFullGridCompilerHook.{cpp,h}+SphereGridTrueNewNodeHook.{cpp,h})已移至RuntimeTools/FfxHooksDll/legacy/spheregrid_v5/;dllmain.cpp已清理(包含、外部符號、Enabled()、安裝、移除、fault-handler 呼叫)— 零殘留引用;vcxproj+build_hooks.ps1已清理。針對0xc0000374當機(08-01,掛鉤啟用 + 清除網格)的嫌疑 #1 已從建置中移除。 - 全域錯誤 VEH 現在始終啟用(
FaultProbe VEH armed (global fault diagnosis))— 保留當機診斷資訊,與 SG 掛鉤無關。 - RT2 條件保留: 清除 RT2(可拋棄存檔,計數+1)PASS → 刪除
legacy/spheregrid_v5/+sg_*標記 + 清單;FAIL → 回到隔離實驗室(FFXHOOKS_SG_861_LAB_OVERRIDE)。 - 建置
-WithPolyHook -ReleasePASS;LabDeploy 至 Steam。 ### PATCH
v2.207.3.0
v2.207.5.0BETA
Seymour2026年8月2日
DIFF 子選單 black-screen 修正:在原生的選單物件上,假 O_COUNT >0
- 根本原因 (我的 v2.207.1.0 錯誤): multi-column DIFF 設定了
g_f7RowCount = 0(無 1D 列),而F7Sub_SpawnMenu在原生選單物件上寫入了O_COUNT = 0——遊戲的繪製心跳看到計數為 0,從未呼叫我們的繪製 → 子選單「開啟」但不可見 → 黑畫面 (強制閘門,無 3D 渲染且無選單) → 僅 F7 (強制關閉) 回到遊戲。 - 修正: 在生成時
O_COUNT = g_f7RowCount > 0 ? g_f7RowCount : 8(針對 DIFF 設假計數 8——我們的 multi-column 繪製/輸入不使用 O_COUNT)。 - 額外 (記錄診斷): 全域 VEH 在啟動時捕獲了 2 個真實存取違規 (
FAULT AV READ pc=0x796B11D7/0x796B3908 accessed=0x10CDCDCD——已釋放堆積;模組 0x796B = 可能是 fmodex 在相對虛擬位址 FFX 處呼叫 0x291488 回呼) —— 使用者的閒置當機的首要嫌疑 #1 (「遊戲在閒置時隨機關閉」);下一輪在0x291488中調查 IDA。 - 建置 PASS + LabDeploy 至 Steam (15:32→v4)。 ### PATCH
v2.207.4.0
v2.207.6.0BETAPATCH
Seymour2026年8月2日
F7 DIFF: 真正的 2D 空間導航 (預設值搭配 L/R,向下至 BASE,在第 0 列按上返回) + 從零開始的數值編輯 + 自訂晶片
- 導航已修正 (使用者心智地圖): PRESETS 現在使用 L/R (水平晶片) 進行導航,向下會前往 BASE 欄;在資料欄上,L/R 切換欄位,U/D 移動列;在 BASE 第 0 列按上返回預設值。之前:L/R 即使在預設值上也會切換欄位 (你必須橫向移動才能「向下」)。
- 數值編輯已修正: 進入時欄位 歸零 (從頭輸入 NEW 值 — 之前它會累加在當前值上:輸入 '0' 變成 10000/最大值);無數字 + 確認 = 保留當前值;
>> value _佔位符在輸入前顯示當前值;上下文提示列 ("輸入 0-9 / Backspace / X 套用 / Esc 取消")。 - 「自訂」晶片 (第 5 個): 可見且可導航 — 任何手動調整 (切換/編輯) 後會變成 ACTIVE (之前:無晶片亮起 = 令人困惑)。選取它會保留當前值。關閉 (vals[0]=0) = 停用;自訂 (4) = 提交時啟用。
- 建置 PASS + LabDeploy 至 Steam。 ### PATCH
v2.207.5.0