更新 2.224
2026/8/6
v2.224.0.0BETAMINOR
Seymour2026年8月2日
OPERATION DEMON WAVE 1+2: F8 DASHBOARD RESTORED + F7/F8 KEY ARBITRATION
- F8 儀表板已恢復(原始已在樹中;缺少連接線):
StartInGameMenuDashboard()+StartUnXBoosterHook()在InstallHooks中(閘門[dashboard] enabled默認 ON — 已新增至kDefaultIni在 Config.cpp);InGameMenuDashboard.cpp/UnXBoosterHook.cpp/Config.cppre-added 至 vcxproj(Config.cpp 從未在項目中 —dashboard.enabled閘門從未被讀取)。 - 關鍵仲裁(第2波): 使用
dashboard.enabled,F8/INSERT 屬於 DASHBOARD(單一擁有者);InGameMenuProcessKey消耗 F8/INSERT 而不切換(儀表板關閉時的後備方案)。F7(NativeMenu/F7_LeverApply)UNTOUCHED。 - 舊版 UnX REMOVED 從部署中移除(INC-002 — 已驗證 3/3 崩潰):
unx.dll/dxgi.dll/dxgi.ini/dxgi.dll.055508/dinput8 - Copia.dll移至modules\_unx_legacy_removed_20260802_*(可恢復備份)在 Steam AND_isolated中。 - 在 ffx_addresses.h 中的新定義:
RVA_FFX_DEBUG_FLAGS(0xD2A8F8),RVA_FFX_PERMANENT_SENSOR,RVA_FFX_BATTLE_PARTICIPATION/RVA_FFX_AP_EARN(來自 UnX 的 0x1F10EA0/0x1F10EC4)。可玩的 Seymour OFF(隊伍結構地址未驗證 — 等待 RE;應用已從加速器中移除)。 - 應用於儀表板的 Hooks-EN 規則: "F8 關閉","開啓/關閉","開啓/關閉";儀表板
Log→DashLog(OutputDebugStringA — dllmain 的Log是靜態的)。 - ffx-hooks.ini 模型 在
RuntimeTools/FfxHooksDll/ffx-hooks.ini創建(包含[dashboard] enabled=1)。 - 閘門: 發佈版本 0 錯誤;儀表板字符串在二進制文件中(4/4);Steam +
_isolated部署(備份.bak_20260802_184354)。RT2 待處理:F8 打開儀表板,F7 完好,儀表板作弊功能正常。 ### MINOR
v2.223.1.0
v2.224.0.1BETAPATCH
Seymour2026年8月2日
OPERATION DEMON WAVE 3: DIALOG SKIP 安全移植(掛鉤,非修補)
DialogSkipHook.{h,cpp}(新增): UnX 舊版硬編碼ret 8修補程式的安全移植(RVA 0x30B040 —FFX_FmodVoice_ReadEventData@ 0x70B040,__thiscall 於 IDA 中驗證):目標上的 MinHook/PolyHook2;使用input.dialog_skip=1時立即返回 0(與 ret 8、REVERSIBLE 和 config-gated 效果相同)。- 儀錶板:
Dialog Skip (voices)項目於輸入標籤中(input.dialog_skip,預設關閉)。 - 線路:
InstallDialogSkipHook(g_base, LogLine)於 InstallHooks 中(在儀錶板閘門內)。 - 定義:
RVA_FFX_FMODVOICE_READ_EVENT_DATA(0x30B040)於 ffx_addresses.h 中。 - 閘門: 發行版建置零錯誤;字串於二進位檔中;Steam +
_isolated部署(備份185543)。RT2:使用項目 ON 時,語音對話跳過(無崩潰);OFF = 原始行為。 ### MINOR
v2.224.0.0
v2.224.0.2BETA
Seymour2026年8月2日
OPERATION DEMON:第四波文件結案 + RT2 腳本
run_f8_rt2.ps1(新增): 啟動煙霧 + F8 檢查(儀錶板/F7/作弊碼/對話跳過)— 需關閉編輯器、一次性存檔、前後雜湊值。F8_UNX_INCONSISTENCY_REGISTER(工作階段 3): INC-002/005 + P1/P2/P5/P7 RESOLVED;P3 部分(v2.flag 已不存在);never-port 已記錄(KillMeNow/auto-update/紋理注入/sig-scan)。- SESSION_HANDOFF + PORT_STATUS: F8
Needs Testing— in-game RT2 待使用者(編輯器已關閉)。 - 清理:
ingame_menu_v2.flag已從部署中移除(P3 確認乾淨)。 ### PATCH
v2.224.0.1
v2.224.0.3BETAREVISION
Seymour2026年8月2日
OPERATION DEMON: post-F8 計畫 — 第二層 透過 ffx-probe (§9) + RT2 檢查
- F7F8_RECONCILIATION_PLAN §9: 在 UnX 脫離部署的情況下,vtable[9] (GetDeviceState) 回歸至 ffx-probe.dll — in-process main-thread 探測器 (FORCEBATTLE/SETINPUT/SOUNDCMD/READ/WRITE/CALL — 第二層: a_ability/arms_rate/遭遇表/IA/極光校準). 目前狀態: OFF 在部署中 (
.RT2OFF); 載入器存在; 儀錶板已有plugins.ffx_probe項目. run_f8_rt2.ps1: 探測器心跳檢查 (hooked=1) 當探測器啟用時.- 閘門: doc-only (REVISION); 部署未更動. ### REVISION
v2.224.0.2
v2.224.0.3BETAREVISION
Seymour2026年8月2日
PPP DISPATCH TABLE: CYCLE CLOSED (消費者 + 主表)
- 消費者 PROVEN:
FFX_MagicHost_RelocatePppSection(0x7121D0) —a2 + 40*index(步長 40 = 0x28 在程式中);呼叫端傳入&pppSysProgTbl(0x72a8eapush offset pppSysProgTbl→ 0xC3A500; 0x761b72)。每個槽位的 on-diskhandler_table_index成為表格條目指標;執行期槽位 = 16B ([0]=索引, [1]/[2]=重新定位的指標;計數位於*(int16*)(record+0x26)) — 符合 pppSclMove T3 視窗。 - pppSysProgTbl @0xC3A500 = MAIN 表格 — 「progtbl」佈局 (名稱@+0x00, fnMain@+0x08, fnExtra@+0x20), 418 個條目 (符合 2026-07-31 的 MAGIC 文件);槽位 0-11 = pppAccele..pppColor 包含 Yonishi 排名處理器 (pppSclMove T3 = 0x75C090 @ 槽位 6; pppScale = 0x75D0D0 @ 槽位 10; pppAngle = 0x75CF20 @ 槽位 9; pppSclAccele = 0x75B9F0 @ 槽位 2)。
- 從先前輪次修正:0xC3A500 是 NOT 一個名稱向量 (0xC3A4E0 區塊 = 除錯字串 END/CHR/MAP-G/MAT;
FFX_PppNameVector重新命名 REVERTED)。 - 2026-07-31 MAGIC 重新命名已傳播至 TO THE CANONICAL DB: 0x716D20→FFX_Render_PppProgramProcessor_2, 0x75B830→FFX_PppHandler_Accele, 0x75B900→FFX_PppHandler_Accele_SetFromGlobalQ, 0xC3E798→FFX_PppHostDispatchTable_AltQ, 0xC86080→FFX_PppKeyholeDispatchTable。
- Extractor 已獲得 progtbl 佈局 + 主表:5 個表格, 1191 個處理器 位於
scripts/ppp_dispatch_table.json。文件:docs/reverse/PPP_DISPATCH_TABLE_RECONCILED_2026-08-02.md(第二輪)。 - C2 包含完整鏈結:on-disk 索引 → pppSysProgTbl + 40*索引 → 條目 (名稱+函式)。下一步:16B 磁碟→執行期槽位視窗 (T3) 以及 145 個別名。 ### PATCH
v2.224.0.2
v2.224.0.4BETAPATCH
Seymour2026年8月2日
F8 DISABLED (閘門 `dashboard.enabled=false`) + 合併 F8+探查文件
- 閘門切換在2個位置 (Config.cpp kDefaultIni + dllmain
GetBool×2) — 儀錶板/啟動器/DialogSkipHook 不會啟動;InGameMenu 再次成為 F8/INSERT 的擁有者(自然回退)。可逆轉(重新啟用 = 切換 + 部署)。 docs/reverse/FFX_F8_PROBE_CONSOLIDADO_2026-08-02.md(新):F8(波次 1-3 + 關閉)+ ffx-probe(第二層)+ 如何重新啟用 + 待辦項目。- Steam +
_isolated部署(備份191908);發行版本建置零錯誤。Focus 回到 F7。 ### REVISION
v2.224.0.3
v2.224.0.5BETAPATCH
Seymour2026年8月2日
F7: FLICKER FIXED (槓桿線中的根本原因) + 無原始步進數字 + REAL 難度槓桿
- FLICKER (使用者 RT2 — 透過日誌證據找出根本原因): 確認一行關閉了選單 (
CloseMenu→m.obj=0) BUTg_forceSubsystem保持 ON — 遊戲卡在選單模式 (0x13407E4=1) 且未繪製選單 = 交替渲染 = 畫面閃爍 (日誌:open→ 確認 →close (force-gate off)僅在第二次 F7 →open...)。 修復: 該線現在在確認時清除g_forceSubsystem(與g_nativeWantClose行為相同)。 - F7 切換去抖動 (250ms) 在 PresentTick 中 — 按住 F7 (或卡住的按鍵) 會每次邊緣切換選單 = 閃爍。
- 「不該出現的數字」: RT_STEPPER 行在編輯前顯示了原始
[0]。 修復:g_rowEdited[]— 步進值僅在 AFTER L/R 時出現 (切換 [ON]/[OFF] 保持始終可見)。 - REAL 難度槓桿 (原為存根): 新的
F7_SetDifficultyLevel(0..5)(F7InLive) — 設定g_cfg.diffGlobal(hpMul 1000/1150/1300/1500/1750/2000 — x1.00..x2.00) +F7_SaveConfig()— 由 battle-start auto-apply 拾取。 - 閘門: 發行建置 0 錯誤;Steam +
_isolated部署 (備份193746)。 RT2 待處理: F7 → 確認 → 選單關閉 WITHOUT 閃爍;無初始 [0];難度在戰鬥中生效。
v2.224.1.0
v2.224.1.0BETAPATCH
Seymour2026年8月2日
F3.5 PART 2: DRAG GIZMO in Aurora (drag the monster on the canvas) + RE: T3 工作
- 先前:
v2.224.1.0nocli - p 中的 G izmo (
scenes.ts,?edit=1):點擊選取最近的角色(投影選取 —clipFromWorldMatrix+ w-divide), drag on the ground plane (unproject on the actor's y-plane, FFX↔noclip conversion via matrix inverse), overlay (yellow ring + instructions), keys S = save (POST/api/edits/<encId>— 中樞端點 — 帶有插槽差異)以及 R = reset (back to vanilla). Per-slot vanilla base stored insetUpMonsters中(即使有先前的 sidecar 仍能正確計算差異)。 - ViewerShell:編輯面板中的「Gizmo 3D (arrastar no canvas)」核取方塊 +
&edit=1/0in the battle-preview URL + status showing the gizmo state. - RE :: 16B T3 window PROVEN in the pppSclMove handler (0x75C090 =
FieldMap_AccumulateDoubleLayerDelta_C):讀 取a2+16..+28處的 4 個浮點數 T3record+0x10..+0x1F視窗)並累積到a1+160..+172。別 名已解析 pppSysProgTbl entries = 273 unique names + 145 re-registrations (the MAGIC doc's "145 aliases" = repeated handlers, not alternative names); the extractor gainedfind_all_strings(該區域中的 368 個字串)+isAlias欄位。閘道: - noclip 型別檢查通過;
rsbuildOK套件 bundle461.7bf8f17f.jsdeployed to the serve-dir (包含editUpdate+ POST); C# build 0 errors; ViewerHub tests 17/17 PASS。 - F3.5 COMPLETE:sidecar(第一部分)+ Gizmo(第二部分)— 編輯 → 檢視 → 儲存 → 重新開啟的循環已封閉。 ### REVISION
v2.224.1.2BETA
Seymour2026年8月2日
F7 RT2 ROUND 2:「NOTHING OPENS」FIXED(線路竊取了確認訊號)+ 強制戰鬥無編號 + 釐清作弊標籤 + 子選單解鎖音樂
- BUG 4(關鍵 — NO MENU OPENS): 我的 PumpHook 線路消耗了
g_ourClosedBEFORE 原始泵 —PollMenu從未看到確認訊號 → 子選單 NEVER 開啟。最終修正:線路是 REMOVED — 原始泵(CloseMenu →DispatchConfirm→NativeMenu_OnEdge→ 子選單/重新開啟/force-off)再次完整運行。 - BUG 3(強制戰鬥帶編號): 行原為 RT_STEPPER(0..250)— 現在 RT_NONE(無值;FORCE 子選單執行任務 —
F7_MENU_FORCE)。 - BUG 2(戰鬥作弊混淆): 重新命名為 「隊伍無敵(偵錯)」 — 該開關(0xD2A8F8+1)是遊戲的隊伍無敵旗標。
- BUG 1(無音樂選單): 音樂子選單(Bug 4 曾阻止其開啟)現在可以開啟 — 使用者可在子選單中選擇曲目(
F7_MENU_MUSIC)。 - 開關重新定位:
F7_LeverApply現在由NativeMenu_OnEdge呼叫(ACT_AI_SWAP/ACT_BATTLE_CHEATS 情況 — 直接操作,無需子選單;數值來自g_ourResult)。 - 關卡: 發行版本零錯誤;Steam 與
_isolated部署(備份200713)。RT2:Arena+ 開啟,音樂/強制戰鬥/難度子選單開啟,隊伍無敵開關生效。 ### PATCH
v2.224.1.1
v2.224.1.3BETA
Seymour2026年8月2日
F7 RT2 ROUND 3:MUSIC TRACK 0 = NONE(靜音標題畫面 + CRASH 進入戰鬥)
- 錯誤 1(標題/開場畫面無音樂):
music_lock: 0在f7_inlive.json(由音樂子選單儲存)——F7_MusicApplyLock在啟動時套用了音軌 0 覆寫(靜音/脫離上下文)。 - 錯誤 2(自訂 Mix CRASHED 進入戰鬥):
music_battle: 0——F7_ApplyMusicBattle(battle-start auto-apply)進行了SetArenaBattleMusicPending(0)→ MusicHook 套用音軌 0 → 當機(日誌:FAULT rva 0x4FB05E,緊接在 compose 之後)。 - 修正: 音軌 0 在兩個設定器中均變為 無(
F7_SetMusicLock/F7_SetMusicBattleTrack:<= 0 → -1)+f7_inlive.json已清理(music_lock/music_battle= -1)。 - 閘門: 發行版 0 個錯誤;Steam +
_isolated部署(備份202945)。RT2:標題畫面音樂恢復;自訂 Mix 進入戰鬥時不再當機。 ### PATCH
v2.224.1.2
v2.224.1.4BETAPATCH
Seymour2026年8月2日
F7 RT2 ROUND 4: PREVIEW 回饋 + 自訂 Mix 崩潰 INVESTIGATED (UpdateWindowTitle/DrawUITextElement)
- 錯誤 2 (預覽「什麼都不做」):
F7_MusicPreview使用鎖定-1(無 — 目前設定狀態) 回傳 WITHOUT PLAYING (track < 0防護)。修正: 使用 val<= 0確認預覽時,顯示 on-screen 狀態 "Ajuste a faixa (L/R) antes do Preview";使用有效 val 時則播放。(流程:在「音樂鎖定」上 L/R → 在步進器上確認 = 預覽 — 已存在。) - 錯誤 1 (建構戰鬥時崩潰 — PERSISTS): 映射於 FAULT 的 RVA (相同
0x4FB05EIDA):FFX_System_UpdateWindowTitle(0x4FAE40) →DrawUITextElement(0x640810,void(ctx, text, x, y, slot)— 在視窗標題中繪製 SAVE 文字;被呼叫者FFX_Save_SystemSaveGame) — 崩潰發生在選單 2D 上下文中 ("NoTexture"/ResolveTextureNameForUI)。組合後的二進位檔為 OK (24272 B 對比原版 24080 — 192 B 增長,透過調整後的標頭)。待使用者隔離測試: (a) 一般戰鬥未使用組合 → 崩潰?(b) 使用 1 個召喚獸組合 → 崩潰?(c) 在啟動前使用選單 CLOSED 組合 → 崩潰? - 閘門: 發行建置 0 錯誤;Steam +
_isolated部署(備份205601)。 ### PATCH
v2.224.1.3
v2.224.1.5BETAPATCH
Seymour2026年8月2日
F7 RT2 ROUND 5: PREVIEW CRASH FIXED (探測 OFF = MMF 0xCD) + "預覽" 變為 "儲存並開啟自訂 Mix"
- 預覽 CRASH (由使用者重現 — "在預覽上按 Enter = 崩潰 NOW"):
F7_MusicPreview透過探測呼叫 soundcmd (ArenaPlus_MusicHookProbeSoundCmd→LabProbeSoundCmd→ MMFFFXProbeBlock_v1) — 該探測位於 OFF 在部署中 (.RT2OFF) — MMF 存在,但資料是 0xCD 模式(已釋放/未初始化的記憶體)→ 在AV READ accessed=0x10CDCDCD內部的 ffx-hooks。修正: SEH (__try/__except) 在F7_MusicPreview中(soundcmd 再也不致使遊戲崩潰——僅限覆蓋) + 音軌步進器確認現在 SAVES(不播放)。 - UX(使用者請求): 音樂子選單「預覽」變為 「儲存並開啟自訂 Mix」 — Enter 儲存設定(f7_inlive.json)+ 重新開啟 Arena+ 的原生選單 → 自訂 Mix(標準流程,即 WORKS)。音樂會保留在設定中(鎖定/戰鬥),並在正確的上下文中套用(戰鬥開始),無需探測播放。
- 閘門: 發行版建置無錯誤;Steam +
_isolated部署(備份214436)。RT2:在「儲存並開啟自訂 Mix」上按 Enter 造成 NOT 崩潰;設定已儲存;自訂 Mix 開啟。 ### PATCH
v2.224.1.4
v2.224.1.6BETAPATCH
Seymour2026年8月2日
國際化:原始字面值遷移至 {x:Static} (StringsIntegrityTests 門綠燈)
- F3.5 gizmo 技術債已修復:「Gizmo 3D (arrastar no canvas)」核取方塊與提示(「Clique num monstro para selecionar... S = salvar · R = reset」)在屬性中使用了原始字面值(
Content=/Text=)—NoXamlHasRawHardcodedUiLiteral測試會捕捉屬性。已遷移至{x:Static res:Strings.U_gizmo_3d_drag_on_canvas_1aa7857f}+U_click_monster_to_select_drag_hint_fe907a09(中性 EN + PT + Strings.cs 屬性)。 - 另一條工作線的債項 (MonsterAi):
MonsterAiPhaseRotationAdvanced_Window.axaml有 2 個原始字面值(「Foco ativo」/「Limpar foco」)— 已遷移至U_active_focus_d59334a6/U_clear_focus_91699d35(測試是 project-wide 仲裁者)。 - 門:
StringsIntegrityTests3/3 PASS;建置 0 錯誤。
v2.224.1.5
v2.224.1.7BETAPATCH
Seymour2026年8月2日
Aurora 視覺化:戰鬥中的怪物名稱(標籤 + 小工具)
export const MONSTER_NAMES在monster_studio.ts中(284 個真實名稱——"Raldo"、"Bunyip"...)。- scenes.ts: 編輯模式 (
?edit=1) 現在在 ALL 戰鬥怪物上方繪製標籤(真實名稱以白色顯示;選中的為黃色)+ 小工具覆蓋層顯示 所選怪物的名稱 (e.g. "Dark Flan (第 6 格)") 而不僅僅是 "第 N 格"。 - 閘門: noclip 類型檢查已清理;
rsbuildOK;已部署461.0fe1690d.js套件(包含 "Raldo"/"Bunyip");修補程式版本化於docs/patches/noclip/(scenes.ts + monster_studio.ts)。
v2.224.1.6
v2.224.1.8BETAPATCH
Seymour2026年8月2日
Aurora: AURORA CHAMBER 回歸成為主要 Aurora(戰鬥預覽已退役)+ Aurora 模組的 i18n PT→EN
- Aurora Chamber REACTIVATED 作為目錄「Aurora」:
MenuItem_Aurora和MenuItem_AuroraChamber現在開啟AuroraChamber_Control(BIANCA 目錄 + MapViewer + 開啟 RealGame — 真正的戰鬥)。新的OpenAuroraChamber()輔助工具。戰鬥預覽(noclip)成為舊版程式碼(目錄中的「aurora」條目已停用;ViewerHub/aurora 描述保持凍結)。 - ModuleCatalogPolicy:
aurora-chamber條目重新啟用(「Aurora Chamber」);aurora(戰鬥預覽)標記為 🚫 LEGACY(已註解)。新增case "aurora-chamber"分派。 - i18n PT→EN of the Aurora modules:中性語言(Strings.resx)曾有 PT 值(EN 編輯器顯示 PT)— 修正為 EN:12 個現有鍵(AURORA·戰鬥地圖, 選定地點, 視覺化, 編輯, 工作階段, 在 Aurora Chamber 中開啟競技場, 按場地篩選..., 選定場地, 匯出地圖/..., 場地選取器, 世界地圖, MapViewer 3D)+ 23 個新鍵(房間與場地探索器按鈕:Re-scan, 掛載缺失, 重新掛載全部, 開啟 EditViewer, 開啟 RealGame, 儲存位置, 新增/移除怪物, 匯出錨點, 還原 RealGame, 重新載入戰鬥, Re-export 並開啟, 重新掛載場景, 匯出資料夾, 儲存攝影機, 儲存攝影機參數, 發布偵察兵, 更新標記, 發布並開啟場地, 驗證視覺效果, 開啟場地, Re-export, 瀏覽器)。EN 在中性語言中 + PT 在衛星語言中(已驗證:在 PT 中已存在)+ Strings.cs 屬性。
- 閘門:
StringsIntegrityTests3/3 PASS;建置 0 個錯誤。
v2.224.1.7
v2.224.1.9BETAPATCH
Seymour2026年8月2日
錯誤修正:開啟 RealGame (404) + Aurora 地圖上下顛倒
- 錯誤 1 — RealGame 404:
Aurora3DLauncher.BuildBattleUrl(由密室的「開啟 RealGame」使用) 啟動了一個舊版 python http.server at the noclip root (Downloads) — but the noclip index.html is indist/, so/index.htmlreturned 404 ("page not found"). Fix:BuildBattleUrlnow usesViewerHubService.BuildUrl("aurora", ...)(the in-process StudioWebServer with the noclip serve-dir — the correct index.html). RemovedEnsureViewerServer/IsPortListening(legacy python — retired in F2). The MODULE (RealGame with monsters) keeps working — only the battle-preview PAGE is legacy. - 錯誤 2 — 地圖上下顛倒:
applyAssetOrientation在RuntimeTools/FFXMapViewerWeb/app.js中套用了rotation.x = Math.PI(在 X 上進行 π 翻轉) 用於btlmap(Aurora 密室競技場) — 導致地圖翻轉。地圖 glTF 已經是 Y-up。修正:rotation.set(0,0,0)(不翻轉) 用於所有項目 — 地面在底部,天空在頂部。 - 閘門: 建置 0 錯誤;
node --checkOK on app.js; the MapViewer is served directly from the repo (prefix /map/) — the fixed app.js is already served.
v2.224.1.8
v2.224.1.10BETAPATCH
Seymour2026年8月2日
錯誤修正:將 {x:Static} 作為元素內容時顯示原始字面值(並導致打開編輯器時崩潰)
- 錯誤:Aurora 模組(Chamber + Field Explorer)中那 25 個按鈕,在 I 遷移至 i18n 時,將
{x:Static res:Strings.X}用作元素內容(<Button>{x:Static}</Button>)。Avalonia 不會將{x:Static}解析為元素內容——它會顯示原始字面值("{x:Static res:Strings.U_...}"),並且在使用按鈕時可能於執行階段崩潰(這就是「地圖開啟編輯器時崩潰」的原因)。 - 修正:將全部 25 個轉換為屬性
Content="{x:Static res:Strings.X}"(正確模式)。{x:Static}僅能作為屬性解析(Content=、Text=、Header=、Watermark=、ToolTip.Tip=)。 - 關卡: 建置 0 錯誤;
StringsIntegrityTests3/3 PASS;node --checkOK.
v2.224.1.9
v2.224.1.11BETAPATCH
Seymour2026年8月3日
F7: 子選單中的玻璃面板(單一窗口)+ 組合 CRASH 已修復(啓動前的 force-gate)
- 錯誤 2 (UX — 使用者要求「一個新窗口」):
F7Sub_DrawCb(dllmain ~11580) 獲得了大玻璃面板 (DrawMenuGlassPanel(NX(0.047f), NY(0.20f), NW(0.906f), NH(0.62f), F, 1)) — 音效子選單現在是一個 WINDOW (背景 + 標題 + 行 INSIDE), compose-pick 樣式。 - 錯誤 1 (自訂 Mix battle-start 崩潰 — 根本原因):
ArenaPlus_LaunchComboBattleFromPump(該 MsBattleEncountExe) 以 force-gate ON 運行 (g_forceSubsystem = 0僅在啓動時 AFTER) — 遊戲以 0x13407E4=1 (選單模式) 進入戰鬥 → 戰鬥開始在UpdateWindowTitle中崩潰 →DrawUITextElement(rva 0x4FB05E — AV WRITE 0xBD)。 修復:g_forceSubsystem = 0+ 0x13407E4 將 DIRECTLY BEFOREArenaPlus_LaunchComboBattleFromPump歸零 (啓動 + LaunchCached — 重新啓動)。 - 關卡: 發佈構建 0 錯誤;Steam +
_isolated部署(備份095551)。RT2 待處理:自訂 Mix → 建置 + 啟動 → 戰鬥進入 WITHOUT 崩潰;音效子選單 = 單一窗口。 ### INFRA (CI) ci.yml在任何推送 CI 和 any push tomain(工作線不斷 提交的工作分 支) 時運行codexclaudiocodeffxeditor(the working branch where lanes commit constantly) — 2 jobs on Windows runners ($0.010/min) exhausted the free 3,000 min/month quota (Actions $22.70修復: 推- 送觸發器 現在僅爲
main(branches: [main]). CI still validatesmain(以及對main); the working branch gets no automatic CI (validate locally withdotnet build). - 預估節省: 約90%的Action s運行 (減少經常性分鐘數成本)。 ### PATCH
v2.224.1.10
v2.224.1.12BETAPATCH
Seymour2026年8月3日
LOG: auto-rotation 依開啟次數 (最多10次, `.old1..old9` 歷史記錄)
OpenLog(dllmain ~173) 現在會計數開啟次數 (檔案%TEMP%\ffx-hooks.log.cnt); 每第10次開啟時,將當前日誌移至ffx-hooks.log.oldN(累積.old1..old9歷史記錄;.old1在經過9次輪替後被覆寫) 並重設計數器。主日誌不再累積超過約10個工作階段;使用者視需要刪除.old*。- 閘門: 發行版本 0 個錯誤;Steam +
_isolated部署 (備份102648)。 ### PATCH
v2.224.1.11
v2.224.1.13BETA
Seymour2026年8月2日
RealGame 修正(戰鬥 vs 場景)+ EditViewer 總是開啟 + DEBUG LOG 通用規則(階段 1-4)+ full-editor 分析地圖(階段 5)
- RealGame 修正(戰鬥回歸):
BuildBattleUrl通過了 extraQuery WITH?至ViewerHubService.BuildUrl(該項目已添加?)→ URL 變成了index.html??battle=...→ 無碰撞模式的URLSearchParams沒有讀取battle→ 僅有場景(地圖),無戰鬥。現在 extraQuery 不帶?→?battle=<encId>&map=&actors=1→ 帶有怪物的戰鬥回歸了。 - EditViewer 從此不再「無作用」:當
RenderScene匯出失敗時,WITHOUT 備用機制現在甚至會在 glTF 錨點存在時開啟空場景(網格 + 疊加層)(先前需要錨點——若無錨點,渲染會回報錯誤,按鈕則無作用)。日誌會擷取匯出原因。 - DEBUG LOG — GENERAL RULE (
FFXProjectEditor/Diagnostics/DebugLog.cs):中央Info/Warn/Error輔助程式,附帶[Conditional("DEBUG")](已於發行版中移除——零負擔)。輸出:除錯器 +%LOCALAPPDATA%\FFXProjectEditor\debug.log+work/editor-debug.log。已檢測項目:RealGame(已產生的 URL)、EditViewer(渲染)、SelectSceneByMapKey(bika00_10)、ExportSceneGeometry(失敗)、ViewerHub(BuildUrl/EnsureServer)。 - 永久規則:新增至
AGENTS.md+CLAUDE.md—— 每個新模組 MUST 都必須有除錯回應。文件:docs/ai/DEBUG_LOGGING_RULES.md(規則)+docs/ai/DEBUG_LOGGING_MAP_2026-08-02.md(階段 5 — full-editor 分析:約 51 個模組 + 基礎架構 + 邊界;各領域的除錯欄位表位置/項目;實作優先順序;UI 與日誌的比較)。 - i18n 閘門:5 個來自
MagicDllEditor_Control.axaml的原始字串常數(箭頭 + 上一步/下一步工具提示——另一條工作線的技術債務)已遷移至{x:Static}(測試是 project-wide 的仲裁者)。 - 閘門: 除錯 + 發行版本建置零錯誤;測試 20/20 PASS(StringsIntegrityTests 3/3 + ViewerHub 17/17)。
- 鉤子透過管道擷取實驗室的標準輸出(CreatePipe + STARTF_USESTDHANDLES —— compose 任務讀取輸出並提取 PREV| 行)並在選單中繪製小點面板(左側玻璃面板——此佈局將進入戰鬥)。
- 自訂 Mix 中的新「建置預覽(佈局小點)」按鈕:組合 WITHOUT 啟動(選單保持開啟——狀態顯示「預覽就緒——佈局如上。按『戰鬥最後 Mix』進入。」)→ 使用者看見小點 BEFORE 進入 → 「戰鬥最後 Mix」(既有的按鈕)啟動 already-composed 執行檔。
- 流程:選擇幻光獸 + 情境 → 建置預覽 → 查看地圖(P 右側 / 怪物左側 / 攝影機高度) → 戰鬥最後 Mix → 戰鬥。
- 實驗室建置零錯誤 + ffx-hooks(含 PolyHook)1,113,600 B;LabDeploy 推送至 Steam(真實實驗室 + 鉤子)。
- RT2
Needs Testing: 自訂 Mix → 4 個幻光獸 → 建置預覽 → 檢查左側面板上的地圖 → 戰鬥最後 Mix → 以顯示的佈局進行戰鬥。 ## [未發布] ### MINOR
v2.224.1.12
v2.224.1.14BETAPATCH
Seymour2026年8月2日
DEBUG LOG v2: 3+1 個 per-area 旗標 + 全域自動/開發/生產 + UI 事件追蹤器 + WebView 主控臺橋接 + 全域例外 + 「開啟除錯記錄」功能表項目
- DebugLog v2 (
FFXProjectEditor/Diagnostics/DebugLog.cs): GLOBAL 旗標 (auto=Debug→dev/Release→prod;FFX_DEBUG_MODE=dev|prod強制) + per-area 旗標 (debug_flags.json:0=OFF,1=ACTIVE在區域處理中記錄,2=ALWAYS在任何錯誤時記錄,3=FORCEDEBUG在 Release 中記錄 EVEN)。LOGS ALWAYS IN ENGLISH (在 i18n 之外)。5MB 循環 +.old1..old9(與 C++ 掛鉤工作線對齊)。 - UI 事件追蹤器:
Main_Window攔截 ALL 按鈕點擊 (AddHandler Button.ClickEvent) 並使用當前模組 (UiTracer) 自動記錄 — 無需 per-click 記錄。 - ActiveScope:
SetModule啟用/停用當前開啟模組的區域 (旗標 1 會使用它)。 - WebView 主控臺橋接:
WebView2Host注入一個腳本,將託管console.error/warn/log的 JS (noclip/MapViewer) 重新導向 →WebMessageReceived→DebugLog(WebView.Console) — 檢視器 JS 的錯誤現在會進入記錄。 - 全域例外:
AppDomain.CurrentDomain.UnhandledException+TaskScheduler.UnobservedTaskException→DebugLog.Error("Global", ...)。 - 功能表: 語言選擇器飛出選單中的「開啟除錯記錄」項目 (開啟 debug.log)。
- Test:
DebugLogTests(3/3 — EN 寫入,時間戳+區域+類型格式,附帶類型的例外)。 - 文件:
DEBUG_LOGGING_RULES.md已更新 (旗標模型 + EN + 追蹤器 + 必要的手動最低限度)。 - 閘道: Debug 與 Release 建置 0 錯誤;測試 23/23 PASS (i18n 3/3 + ViewerHub 17/17 + DebugLog 3/3)。
v2.224.1.13
v2.224.1.15BETAPATCH
Seymour2026年8月3日
Custom Mix battle crash: compose-pick draw disabled DURING 工作
- 先前:
v2.224.1.14] - Mechanism (confirmed in IDA): the FAULT (AV WRITE
accessed=0xBD) 落在DrawUITextElement(0x640810, pc 0x6409A5) — thectx(經由FFX_Menu2D_ResolveCaptureCtxCore) 為空/損毀 —UpdateWindowTitle(0x4FAE40) crashes drawing the save text. The crash happens DURING compose (the ArenaMultiBossLab 修 - 正:
ComposePick_Draw(the compose-pick DrawCb) now returns early wheng_jobState == JOB_RUNNING時提前返回 NOT enqueue text into the game's 2D menu during compose (EncodeLabel/DrawStringcorrupted the text pool/cache: cache-hit → pool[cursor-1] no bound check → invalid handle). The menu freezes 1-2s (compose is fast) and returns to normal after. - FIRST WHY COMMENT — this fix already ships with the why-comment 閘門: 發行版建
- 置 0 錯誤; Steam +
_isolated部署 (備份140132). RT2 pending: Custom Mix → Build + Launch → the compose crash should be gone. ### PATCH
v2.224.1.16BETAREVISION
Seymour2026年8月3日
WHY-COMMENT RULE 用於鉤子 + 第 1 次 WHY 遍
- 新規則 (CLAUDE.md): 觸碰鉤子 → 將 WHY 留在程式碼中(英文)—
// WHY: ...(理由,而非內容),// FIX <date>: ...(附帶原因),// KEY <date>: ...(RE 的洞察)。Focus 在 non-obvious 位置(閘門、偏移量、關鍵順序、池/上下文衝突、架構決策)— 不要廢話,不要基礎聖經。 - 第 1 次 WHY 遍: dllmain(native-menu 確認流程 — 為何移除該線路;組合啟動 — force-gate 在 MsBattleEncountExe 之前)+ ArenaPlusComposePick(ComposePick_Draw 在組合期間停用 — 2D 池崩潰)。
- 閘門: 發行版建置 0 個錯誤(註解不會改變行為);不部署(REVISION — 文件/code-comment)。 ### PATCH
v2.224.1.15
v2.224.1.18BETAPATCH
Lulu2026年8月3日
魔法 DLL 編輯器:`pppVertexApAt` 結構已分解(4個實際欄位)+ `pppMatrixLoc` 清理(host-only)+ DebugLog 在 `Magic.Parse`/`Magic.Writer`
- 分解(IDA 反編譯 0x7583D0):
pppVertexApAt現在有 4個可編輯欄位(model_indexu16@+4,vertex_countu8@+6,delay_framesu8@+7,order_modeu8@+8;視窗{4,5},editable=true)。應用於field_map.json+MagicFieldMapEmbeddedData.cs。 - 誠實清理:
pppMatrixLoc(反編譯 0x734200)僅在主機狀態上操作(零a2/record 讀取)— 那3個param_s32_64/68/72欄位是虛構的偏移量 → 已移除,payload_consumer=false,SEM_PAYLOAD(正確)。 - 未應用(RE 發現):
pppKeThRes32/48—a2+12是一個資源指標(鏈式建構器),不是數值旋鈕;以 u32 編輯會損壞指標。已記錄。 - DebugLog v2:
TryLoad(Magic.Parse)+TryGrowRecord(Magic.Writer)已配備DebugLog.Info/Warn/Error(英文,單語)。 - 閘門: 發行版本建置 0 錯誤;MagicDll 測試 76/76 + StringsIntegrity 3/3(79/79)。
- 此當機(在 WITHOUT 合成中重現): 開啟 F7 + 瀏覽選單(在預覽/戰鬥之後)→ FAULT AV WRITE
pc=0x2409A5accessed=0xBD(作為合成的 SAME)—UpdateWindowTitle(0x4FAE40)在DrawUITextElement中當機,因為 2D 選單池/上下文被我們的選單破壞(每幀繪製 MANY 文字:cache-hit → pool[cursor-1] 無邊界檢查)。 - 修復(確定性): 鉤住
FFX_System_UpdateWindowTitle(0x4FAE40)— 當我們的本地選單啟用時(F7/子選單/合成選取),該鉤子回傳 0 — 遊戲會 NOT 繪製標題文字(裝飾性)且不會觸碰已損壞的池 → 無當機。當選單關閉時,標題恢復更新。 - 閘門: 發行版本建置 0 錯誤;Steam +
_isolated部署(備份144123)。RT2:F7 開啟 + 離開戰鬥 → 無當機。 ### REVISION
v2.224.1.17
v2.224.1.19BETAPATCH
Seymour2026年8月3日
LIVE POSITION EDIT (第1部分):掛鉤中的「dot-map」視窗(怪物與玩家)
- 視窗: 在組合挑選(自訂 Mix)中,完成建置預覽後,按下 E → 進入網格編輯模式(16×8 點陣圖 — 每個怪物 = 一個
P,啟用中的 =X)。 - 互動: 方向鍵移動遊標(啟用中怪物的
P);TAB 切換怪物;ENTER 儲存modules\arena_positions.json(每個怪物的網格 gx/gy);Cancel 返回。 SavePositions/ResolvePositionsPath: 模組中的 JSON(16×8 網格 — 組合執行器稍後會讀取它,並將 C#BattleArenaPositionWriter套用至二進位檔 — next-part 連結)。- WHY(在程式碼中): 遊戲從二進位檔的區塊3錨點(
pos = bin + chunk3 + 16×a5)讀取怪物位置 — 儲存編輯過的網格可讓組合套用自訂放置。 - 閘門: 發行建置無錯誤;Steam +
_isolated部署(備份153130)。RT2:在組合挑選中 E(含預覽)→ 點陣視窗開啟;移動 + ENTER 儲存 JSON。 ### PATCH
v2.224.1.18
v2.224.1.20BETAPATCH
Lulu2026年8月3日
魔法 DLL 編輯器:麵包屑(返回/前進)移至分割資料夾/欄位的 FORA — 現在當你到達葉節點(項目/欄位)時也會顯示
- 先前: 返回按鈕僅在資料夾檢視中出現(
IsContainer);到達欄位/葉節點時,它會消失——而且你無法返回。 - 現在: 麵包屑(⬅ 返回 · ➡ 前進 · 路徑)始終在有選取項目時顯示(資料夾 OU 葉節點),允許從任何項目進行返回/前進導航。
- 閘道: 發行版本 0 錯誤;StringsIntegrityTests 3/3。
- A 視窗: 在組合挑選器(自訂 Mix)中,完成建構預覽後,按下 E → 進入網格編輯模式(16×8 點陣圖 — 每個實體 = 一個
P,作用中實體 =X)。 - 互動: 方向鍵移動遊標(作用中實體的
P);TAB 切換實體;ENTER 儲存modules\arena_positions.json(每個實體的網格 gx/gy);Cancel 返回。 SavePositions/ResolvePositionsPath: 模組中的 JSON(16×8 網格 — 組合執行器稍後會讀取並套用 bin 中的BattleArenaPositionWriterC# — 下一部分的連結)。- WHY(在程式碼中): 遊戲從 bin 的 chunk3 錨點讀取實體位置(
pos = bin + chunk3 + 16×a5)— 儲存編輯後的網格可讓組合套用自訂定位。 - 閘道: 發行版本 0 錯誤;部署 Steam +
_isolated(備份153130)。RT2:在組合挑選器中的 E(含預覽)→ 點陣視窗開啟;移動 + ENTER 儲存 JSON。 ### PATCH
v2.224.1.19
v2.224.1.21BETAPATCH
Seymour2026年8月3日
即時位置編輯 LINK: 組合執行器將自訂網格套用至 bin
BattleComposeRunner(即時定位第二部分): 新的ReadCustomPositionsJson(modRoot)(讀取儲存在鉤子中的arena_positions.json) +ApplyCustomPositions(...)(將 16×8 網格轉換為真實的 X/Z — X ±28, Z 30→46 — 並透過BattleArenaPositionWriter.WritePositions套用,保留 Y/W)。- 在組閤中: 如果
arena_positions.json存在,執行器會使用自訂網格 (第一個actorCount= MonsterLive 中的怪物;其餘 = PartyFront 中的隊伍) 而非相機 auto-layout。日誌:[custom-positions] grid do hook aplicado em ...。 - 完整流程 (第一部分 + 第二部分): 組合選取 → 建置預覽 → E → 移動
P(箭頭/TAB) → ENTER 儲存 JSON → 啟動 → 組合將自訂網格套用至 bin → 戰鬥以編輯後的放置開始。 - 閘門: 實驗室 (C#) 建置 0 錯誤;已部署
ArenaMultiBossLab.dll至遊戲 (備份180311)。RT2: 編輯鉤子中的位置 → 啟動 → 使用自訂放置的戰鬥。 ### PATCH
v2.224.1.20
v2.224.1.26BETAPATCH
Lulu2026年8月3日
魔法 DLL 編輯器:第一階段(複製)+ 第二階段(noclip 魔法覆蓋)+ 第三階段(嵌入式鎖定 3D 預覽)
- 第一階段 — 複製按鈕: 新增
CloneMagicCommand+TryCloneMagic(將已編輯的工作位元組複製到新的magic_<id>.dll;.bak 備份;驗證 ID)。工具列中的「複製」按鈕。 - 第二階段 —
MagicOverrideService: 使用自訂的data/FinalFantasyX/11/<id>.bin覆寫 noclip 中的 DLL(原始.magic3d.bak備份;還原)。noclip 已透過BIN.parseMagicFile渲染魔法 — 無需深層 RE。 - 第三階段 — 嵌入式 3D 預覽: 「預覽」按鈕會在編輯器中開啟嵌入式 WebView2Host(迷你瀏覽器),鎖定在正在編輯的魔法上(覆寫
11/<id>.bin+ magic-studio URL)。關閉按鈕(✕)。 - 閘門: 發行版本 0 錯誤;MagicDll 76/76 + StringsIntegrity 3/3。
- 第 A 階段 — 真實類型人性化: 欄位
DetailText現在顯示 ONLY 人類可讀的描述(無[u16]、偏移量、寬度)— 你之前看到的原始類型已消失。Read-only 通知也會出現在資料夾檢視中(non-editable 插槽,例如 pppDrawMatrix 顯示「Read-only」+ 原因)。 - 第 B 階段 — 大量 IDA 研究(已反編譯 23 個處理器): 將 3 個 SEM_PAYLOAD 重新分類為 FECHADO,並帶有真實欄位:
pppKeLnsLpSft(110 個 DLL,2 個 lens-shift 浮點數)、pppDrawHook(10 個 DLL,回呼)、pppKeAcmCic(模式)。確認其餘的(KeShpTail*、KeDMat*、Matrix*、DrawMatrixWood)是 host-only/樁(無分解)— 已記錄。 - 第 C 階段 — 擴充目錄: +19 個人類可讀描述(總計約 94 個操作碼),涵蓋新的 FECHADO + host-only SEM_PAYLOAD。
- 閘門: 發行版本 0 錯誤;MagicDll 76/76 + StringsIntegrity 3/3 (79/79)。
- 欄位檢視重新設計: 一個欄位現在顯示名稱 + 人類可讀描述 + 可讀的類型(例如 e.g。「十進位(浮點數)」)+ 可編輯的值,以卡片形式呈現。偏移量和原始類型(
u16)隱藏 — 玩家不會接觸到它們。 - 清除 read-only: non-editable 欄位會顯示一個高亮的「Read-only」通知 + 原因(例如 e.g。「原始資料 — 編輯器尚無法分解它」)。
- 人類可讀描述目錄(
MagicPppDescriptionCatalog.cs):約 60 個 ppp 操作碼,以玩家語言說明其功能(基於 IDA 反編譯 + RE 文件)。顯示在插槽的 DetailText 中。 - Grow-size 工具提示: 說明 4B/8B/12B/16B = 額外的位元組空間(1/2/3/4 個值)。
- 閘門: 發行版本 0 錯誤;StringsIntegrity 3/3 + MagicDll 76/76 (79/79)。
v2.224.1.25
v2.224.1.28BETAREVISION
Lulu2026年8月4日
Magic DLL: Phase 4 ? deep RE 工作
- 前次:
v2.224.1.27新文 - 件:
docs/reverse/magic_dlls/NOCLIP_PREVIEW_LAYOUT_MAPPING_2026-08-03.md? 映射parseMagicFile?sniffMagic?parseParticleDatapath of noclip.website 結 - 論 : SAFE for preview (noclip re-reads the same offsets; fixed strides 0x28/0x10 unchanged); structural grow in the middle of a record noclip strides over = BREAKS preview; safe grow = count-driven 複製注意事項:
- noclip 僅渲染存在於其
magicTable; id outside the table ?sniffMagicnull?空發射器(no - clip 限制,非覆蓋)。RE only (REVISION) ? NO behavior change. — CUSTOMMIX MUSIC SOLVED: track 145 "Challenge" playing in battle.** Lane Jarvis-HOOK。 前次:
v2.224.1.26成功之處: - 在 4 條 失敗路線後(
SetArenaBattleMusicPending→ 僅競技場+攔截器;PrepBattleTrack→ engine layer, not FMOD;PlayTrackWithPreload→ 設定event_index但未填入tracks_array[].event_ptr),SwitchCrossfade(self, 145, 0, 1)unlocked it — via IDA MCP onffxoficial.exe.i64(FFX.exe pid=49476). - Key discovery (RE, commit
d4fdbc6c) : FFX audio tree has 3 layers —PlayTrackByIndex(0x7097E0) silently skips iftracks_array[track].event_ptr == 0則靜默跳過;PlayTrackWithPreload(0x886980) only setsevent_indexin the engine sub-struct;SwitchCrossfade(0x7089F0, path B) is the ONLY one that populatesevent_ptr,透過ReadEventByRuntimeId→MapRuntimeIdToFevIndex(表格0xB4F1C8)→EventSystem->GetEvent。證明 1 - 45 應播放 的檢查:
dword_B4F1C8[145] = 0x48(FEV index 72, valid ≤181);unk_CEC164 = 0(加載閘門未阻擋);IsValidTrackIndex(145) = true(145 ≤ 0xB5在 - Fix in
MusicHook_Shim中的修復: 在 覆蓋時,呼叫SwitchCrossfade(overrideTrack, 0, 1)(淡入淡出=0,加載標誌=1)而非PlayTrackWithPreload;偏好蹦牀g_trampolineSwitch(跳過墊片,避免遞迴)。 - RT2 confirmed by user: "NOW TRACK 145 WORKS! I'M IN BATTLE WITH THE NEW MUSIC!" — Challenge plays in CustomMix閘門: 發行版本
- 0 個錯誤;部署 Steam +
_isolated;提交d4fdbc6c已推送。
v2.224.1.30BETAPATCH
Seymour2026年8月5日
CustomMix Gil:戰鬥花費 NEVER 已收費(競態條件錯誤) + 組合功能從不覆蓋原始 bin 檔
- CustomMix Gil:
ArenaPlusComposePick_Close()歸零g_pendingLaunchGilCostBEFORELaunchComboBattleFromPump可能讀取到它 — Gil 在選單中已驗證但從未收費(x3/x4/x5,自組合功能實作以來)。總和正確(e.g. Trio 的 325000G)但gilCost=0在記錄中。修正:將零從Close()移到Open()(session-open 重設,而非關閉時)。 - 組合功能覆蓋了原始 bin 檔(d5e56701): 5 個 cross-map 場景(macalania_forest x3, remiem x3/x4/x5, bikanel x4)被部署到範本 bin(
mcfr00_00,kino00_00,bika02_01)而非專用載體(mcyt00_22,nagi05_23,nagi05_22)— 引擎載入了隨機遭遇而非組合好的隊伍。C#:ResolveOutputBattleId回傳carrier.BattleId。C++:鉤子針腳使用route.battleId(載體)作為遭遇名稱。原始 bin 檔保持完整。 - 部署: 鉤子 DLL 已重建 + Steam 部署。閘門:
arena_plus_charge_gil.flag(啟用中)。 - 階段 3?嵌入 ID RE: 比較 magic_0140 與 magic_0141(相同大小,22 個差異),發現 ID does NOT 在 .data 中以 u32 LE 形式存在?僅以 3 個 UTF-16LE 字串("magic_0140" / "magic_0140.dll")存在於偏移量 0x07E3C6、0x07E4B2、0x07E4F2。
- 階段 3?
MagicDllNameRewriter: 將 3 個字串重寫為新 ID inTryCloneMagic(4 位數 zero-padded = 相同長度 = 無偏移位移)。針對真實的 DLL 進行驗證:3 個出現處被重寫,大小差異 = 0(RT0 byte-faithful 在字串外部)。 - 階段 4?
MagicCommandAssociation: 透過設定 command.bin 將一個Anim1Id = newId行關聯到複製體(已驗證鏈:command.Anim1Id ? magic_%04d.dll)。欄位 EDIT(非成長)透過Ability_Command.WriteList(保留文字池)。誠實的侷限:取代原始技能的視覺效果;一個保留原始的 NEW 技能需要成長(參考:CommandGrowWriter.AppendElementWards)。 - 部署: LAB 建置於
FFX\Mods\FFXProjectEditor-v2.224.1.29\。offline_ci:8 個失敗(全部來自 Magic/PhaseManager 的 pre-existing/戰鬥 NONE ? PPP)。
v2.224.1.29
v2.224.1.31BETAPATCH
Seymour2026年8月6日
F7 馬拉松:6 個錯誤 + CustomMix Ultra + 控制器
- 修復 6 個錯誤: 退出 F7 時的黑畫面(所有關閉路徑均已清除 0x13407E4)、Challenge 音樂在 EVERY 戰鬥中外洩(移除 F7_ApplyMusicBattle 預設值 145)、double-input FSM 與選單之間(ClaimModal/ReleaseModal 在 F7 子選單中)、按住確認/取消的輸入幹擾(取消也有冷卻時間)、True Nightmare 元素錯誤(現在為 HP 3 倍,數據約 2 倍,Haste+Regen+Protect+Shell,無弱點/抗性/Absorb)、強制戰鬥捕捉暗黑召喚獸/連擊(F7_SetSkipForceCapture 過濾器)。
- CustomMix Ultra 階段 1+2: 作曲引擎 C#(RunUltra — 1-8 隻怪物,auto-layout,部署)+ 整合 F7 選單(競技場+ → CustomMix Ultra → 建置並啟動)。載體 zzzz00_240,令牌 0x00F000F0。13 筆除錯日誌。
- 在 ComposePick 中的控制器: L2=編輯網格,R2=攝影機,R1=下一個,L1=上一個,透過 PadDir 邊緣偵測 + 鍵盤備援。PS+Xbox 雙標籤(L2-LT、R2-RT、L1-LB、R1-RB)。
- 部署: Hook DLL + 實驗室 C# 已部署至 Steam。計畫:怪物 AI 交換、Ultra 階段 3-4。
v2.224.1.30