Update 2.127
6/16/2026
v2.127.0.0BETAMINOR
Seymour
Capture Cascade Cap-1 Phase C: 1-byte `capturable` writer (`MonsterCaptureFlagWriter`) + `--monster-capture-bit-rt0` gate PASS 361/361 across the vanilla corpus
- (new capability: first writer for the
Capture Cascade/Yoke of Spirafeature; library + gate, still NO UI). Implements Phase C of the Cap-1 plan (Phase Bv2.123.3.1located the byte; Phase C writes to it). Writer (FFXProjectEditor/FfxLib/Monster/MonsterCaptureFlagWriter.cs): byte-level (noMonster_File.Read(...).Write()full struct round-trip), operates directly onbytes[StatSheetPointer + 0x78]withStatSheetPointer = uint32_le(bytes[0x0C]). API:TryGetStatSheetPointer,GetCaptureFlagFileOffset,ReadCaptureFlag,ReadPaddingByte,WriteCaptureFlag(monBin, newSlot)(clones the array, flips the byte, keeps padding0x00, refuses monsters with non-zero padding as an unknown variant); helpersIsUncapturable/IsVanillaArenaSlot/IsSidecarArenaSlot. ConstantsUncapturable = 0xFF,VanillaArenaSlotMin/Max = 0x00..0x67,SidecarArenaSlotMin/Max = 0x68..0xFE(vanilla MA = 104 slots, sidecar = Capture Cascade region with no bestiary collision). Gate (FFXProjectEditor/Tools/MonsterCaptureFlagRt0.cs): invoked viaFFXProjectEditor.exe --monster-capture-bit-rt0 [monsterRoot], proves 3 properties per monster: (1) same-value byte-identity —WriteCaptureFlag(bin, current)==bin(writer is a no-op when newSlot==current); (2) slot-only diff —WriteCaptureFlag(bin, target)differs frombinin exactly 1 byte, at[StatSheetPointer + 0x78], with padding0x00, every other byte byte-identical; (3) flip-and-restore RT0 —WriteCaptureFlag(WriteCaptureFlag(bin, target), original)==bin(full idempotence). Target is chosen out-of-band per category: uncap (0xFF) flips to 0x68 (sidecar), vanilla MA flips to 0xFF, etc. Result againstFFX Extracted\...\jppc\battle\mon(vanilla): VERDICT PASS — 361/361 monsters, 251 uncap (0xFF), 110 vanilla MA slot, 0 sidecar, 0 non-zero padding, header parse 361/361, same-value RT0 361/361, slot-only diff 361/361, flip-and-restore RT0 361/361. Exceeds the 58-sample Phase B evidence corpus 6×. Wired intoRuntimeTools/offline_ci.ps1$editorGates(betweenmonsterandencounter) — permanent internal gate. New files:FfxLib/Monster/MonsterCaptureFlagWriter.cs,Tools/MonsterCaptureFlagRt0.cs. Touched:Program.cs(wired--monster-capture-bit-rt0),RuntimeTools/offline_ci.ps1($editorGates). Does not touch:m###.bin(gate is read-only — only reads vanilla files, never writes to disk), DLL, runtime, save, hook. C# Release build PASS (0 errors, 384 baseline warnings). Phase C UI not wired in this deliverable — still library + gate, no public button. Next safe step: Phase D (UICapturablecheckbox inMonEditor+ bulk writer for Dark Aeons + Penance) or in-game RT2 (Halyson edits 1 disposable monster0xFF→0x68in a realm###.bin, saves, launches the game, captures the monster to confirm the engine accepts slot outside the vanilla 0x00..0x67 range). Doc:docs/reverse/FFX_SPIRA_REFORGE_CAPTURE_BIT_M_HEADER_RE_RESULT_2026-06-16.md§5.1
v2.126.0.0