更新 2.127
2026/6/16
updatemonster-ai
Capture 級聯 Cap-1 階段 C:1 位元組 `capturable` 寫入器(`MonsterCaptureFlagWriter`)+ `--monster-capture-bit-rt0` 關卡 PASS 361/361 遍及原版資料集。 工作線 Jarvis-CAPCAS-WRITE。MINOR(新功能:`Capture Cascade` / `Yoke of Spira` 功能的第一個寫入器;函式庫 + 關卡,仍為 NO UI)。實現 C 計畫的 Cap-1 階段(B 階段 `v2.123.3.1` 定位到位元組;C 階段對其寫入)。寫入器(`FFXProjectEditor/FfxLib/Monster/MonsterCaptureFlagWriter.cs`): byte-level(無 `Monster_File.Read(...).Write()` 完整結構 round-trip),藉由 `bytes[StatSheetPointer + 0x78]` 直接對 `StatSheetPointer = uint32_le(bytes[0x0C])` 進行操作。API:`TryGetStatSheetPointer`, `GetCaptureFlagFileOffset`, `ReadCaptureFlag`, `ReadPaddingByte`, `WriteCaptureFlag(monBin, newSlot)`(複製陣列、翻轉位元組、保留填補 `0x00`、拒絕具有 non-zero 填補的怪物,視為未知變體);輔助函式 `IsUncapturable`/`IsVanillaArenaSlot`/`IsSidecarArenaSlot`。常數 `Uncapturable = 0xFF`, `VanillaArenaSlotMin/Max = 0x00..0x67`, `SidecarArenaSlotMin/Max = 0x68..0xFE`(原版 MA = 104 個插槽,側車 = Capture 級聯區域,無怪物圖鑑衝突)。關卡(`FFXProjectEditor/Tools/MonsterCaptureFlagRt0.cs`): 透過 `FFXProjectEditor.exe --monster-capture-bit-rt0 [monsterRoot]` 呼叫,對每個怪物證明 3 個性質:(1) same-value byte-identity — `WriteCaptureFlag(bin, current)` == `bin`(當 no-op==current 時,寫入器為 newSlot);(2) slot-only 差異 — `WriteCaptureFlag(bin, target)` 與 `bin` 在 恰好 1 個位元組 處不同,位於 `[StatSheetPointer + 0x78]`,填補為 `0x00`,其餘每個位元組 byte-identical;(3) flip-and-restore RT0 — `WriteCaptureFlag(WriteCaptureFlag(bin, target), original)` == `bin`(完全冪等)。目標按類別選定 out-of-band:解除上限(0xFF)翻轉為 0x68(側車),原版 MA 翻轉為 0xFF,依此類推。針對 `FFX Extracted\...\jppc\battle\mon`(原版)的結果: VERDICT PASS — 361/361 隻怪物,251 解除上限(0xFF),110 個原版 MA 插槽,0 側車,0 non-zero 填補,標頭解析 361/361,same-value RT0 361/361,slot-only 差異 361/361,flip-and-restore RT0 361/361。超出 58 個樣本的 B 階段證據資料集 6 倍。 接入到 `RuntimeTools/offline_ci.ps1` `$editorGates`(介於 `monster` 與 `encounter` 之間)— 永久內部關卡。新檔案:`FfxLib/Monster/MonsterCaptureFlagWriter.cs`, `Tools/MonsterCaptureFlagRt0.cs`。受影響:`Program.cs`(已接線 `--monster-capture-bit-rt0`),`RuntimeTools/offline_ci.ps1`(`$editorGates`)。未觸及: `m###.bin`(關卡為 read-only — 僅讀取原版檔案,永不寫入磁碟),DLL,執行時期,存檔,鉤掛。C# 發布建構 PASS(0 錯誤,384 個基準警告)。C UI 階段 未 在此交付項目中接線 — 仍為函式庫 + 關卡,無公開按鈕。下一步安全步驟: D 階段(UI `Capturable` 核選框在 `MonEditor` + 針對黑暗召喚獸的批量寫入器 + Penance)或 in-game RT2(Halyson 編輯 1 隻可拋棄怪物 `0xFF→0x68` 在一個真實的 `m###.bin` 中,儲存,啟動遊戲,捕獲該怪物以確認引擎接受在原版 0x00..0x67 範圍之外的插槽)。文件:`docs/reverse/FFX_SPIRA_REFORGE_CAPTURE_BIT_M_HEADER_RE_RESULT_2026-06-16.md` §5.1。[上一章:`v2.126.0.0`]
閱讀說明