Update 2.127
16.6.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 über das Vanilla-Korpus
- (neue Fähigkeit: erster Writer für das
Capture Cascade/Yoke of Spira-Feature; Bibliothek + Gate, noch KEINE UI). Implementiert Phase C des Cap-1-Plans (Phase Bv2.123.3.1lokalisierte das Byte; Phase C schreibt darauf). Writer (FFXProjectEditor/FfxLib/Monster/MonsterCaptureFlagWriter.cs): Byte-Ebene (keinMonster_File.Read(...).Write()-Full-Struct-Round-Trip), operiert direkt aufbytes[StatSheetPointer + 0x78]mitStatSheetPointer = uint32_le(bytes[0x0C]). API:TryGetStatSheetPointer,GetCaptureFlagFileOffset,ReadCaptureFlag,ReadPaddingByte,WriteCaptureFlag(monBin, newSlot)(klont das Array, flippt das Byte, hält Padding0x00, verweigert Monster mit Non-Zero-Padding als unbekannte Variante); HelferIsUncapturable/IsVanillaArenaSlot/IsSidecarArenaSlot. KonstantenUncapturable = 0xFF,VanillaArenaSlotMin/Max = 0x00..0x67,SidecarArenaSlotMin/Max = 0x68..0xFE(Vanilla-MA = 104 Slots, Sidecar = Capture-Cascade-Region ohne Bestiarium-Kollision). Gate (FFXProjectEditor/Tools/MonsterCaptureFlagRt0.cs): aufgerufen viaFFXProjectEditor.exe --monster-capture-bit-rt0 [monsterRoot], beweist 3 Eigenschaften pro Monster: (1) Same-Value-Byte-Identity —WriteCaptureFlag(bin, current)==bin(Writer ist No-op, wenn newSlot==current); (2) Slot-only-Diff —WriteCaptureFlag(bin, target)unterscheidet sich vonbinin genau 1 Byte, bei[StatSheetPointer + 0x78], mit Padding0x00, jedes andere Byte byte-identisch; (3) Flip-and-Restore-RT0 —WriteCaptureFlag(WriteCaptureFlag(bin, target), original)==bin(volle Idempotenz). Ziel wird out-of-band pro Kategorie gewählt: Uncap (0xFF) flippt zu 0x68 (Sidecar), Vanilla-MA flippt zu 0xFF usw. Ergebnis gegenFFX Extracted\...\jppc\battle\mon(Vanilla): VERDICT PASS — 361/361 Monster, 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. Übertrifft die 58-Stichproben-Phase-B-Beweiskorpus 6×. Eingebunden inRuntimeTools/offline_ci.ps1$editorGates(zwischenmonsterundencounter) — permanentes internes Gate. Neue Dateien:FfxLib/Monster/MonsterCaptureFlagWriter.cs,Tools/MonsterCaptureFlagRt0.cs. Berührt:Program.cs(verdrahtet--monster-capture-bit-rt0),RuntimeTools/offline_ci.ps1($editorGates). Berührt nicht:m###.bin(Gate ist read-only — liest nur Vanilla-Dateien, schreibt nie auf Disk), DLL, Laufzeit, Save, Hook. C#-Release-Build PASS (0 Fehler, 384 Baseline-Warnungen). Phase-C-UI nicht in diesem Deliverable verdrahtet — noch Bibliothek + Gate, kein öffentlicher Button. Nächster sicherer Schritt: Phase D (UICapturable-Checkbox inMonEditor+ Bulk-Writer für Dark Aeons + Der Richter) oder In-Game-RT2 (Halyson editiert 1 Wegwerf-Monster0xFF→0x68in einem echtenm###.bin, speichert, startet das Spiel, fängt das Monster, um zu bestätigen, dass die Engine den Slot außerhalb des Vanilla-0x00..0x67-Bereichs akzeptiert). Doc:docs/reverse/FFX_SPIRA_REFORGE_CAPTURE_BIT_M_HEADER_RE_RESULT_2026-06-16.md§5.1
v2.126.0.0