更新 2.127
2026/6/16
v2.127.0.0BETAMINOR
Seymour
Capture 級聯 Cap-1 階段 C:1 位元組 `capturable` 寫入器(`MonsterCaptureFlagWriter`)+ `--monster-capture-bit-rt0` 關卡 PASS 361/361 遍及原版資料集
- (新功能:
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 階段(UICapturable核選框在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