Atualização 2.127
16/06/2026
v2.127.0.0BETAMINOR
Seymour
Capture Cascade Cap-1 Fase C: writer de 1 byte `capturable` (`MonsterCaptureFlagWriter`) + gate `--monster-capture-bit-rt0` PASS 361/361 no corpus vanilla
- (nova capacidade: primeiro writer para a feature
Capture Cascade/Yoke of Spira; biblioteca + gate, ainda NO UI). Implementa a Fase C do plano Cap-1 (a Fase Bv2.123.3.1localizou o byte; a Fase C escreve nele). Writer (FFXProjectEditor/FfxLib/Monster/MonsterCaptureFlagWriter.cs): byte-level (semMonster_File.Read(...).Write()struct completo round-trip), opera direto embytes[StatSheetPointer + 0x78]comStatSheetPointer = uint32_le(bytes[0x0C]). API:TryGetStatSheetPointer,GetCaptureFlagFileOffset,ReadCaptureFlag,ReadPaddingByte,WriteCaptureFlag(monBin, newSlot)(clona o array, inverte o byte, mantém padding0x00, recusa monstros com padding non-zero como variante desconhecida); helpersIsUncapturable/IsVanillaArenaSlot/IsSidecarArenaSlot. ConstantesUncapturable = 0xFF,VanillaArenaSlotMin/Max = 0x00..0x67,SidecarArenaSlotMin/Max = 0x68..0xFE(MA vanilla = 104 slots, sidecar = região Capture Cascade sem colisão de bestiário). Gate (FFXProjectEditor/Tools/MonsterCaptureFlagRt0.cs): invocado viaFFXProjectEditor.exe --monster-capture-bit-rt0 [monsterRoot], prova 3 propriedades por monstro: (1) same-value byte-identity —WriteCaptureFlag(bin, current)==bin(o writer é um no-op quando newSlot==current); (2) diff slot-only —WriteCaptureFlag(bin, target)difere debinem exatamente 1 byte, em[StatSheetPointer + 0x78], com padding0x00, todo outro byte byte-identical; (3) flip-and-restore RT0 —WriteCaptureFlag(WriteCaptureFlag(bin, target), original)==bin(idempotência total). O alvo é escolhido out-of-band por categoria: uncap (0xFF) inverte para 0x68 (sidecar), vanilla MA inverte para 0xFF, etc. Resultado contraFFX Extracted\...\jppc\battle\mon(vanilla): VERDICT PASS — 361/361 monstros, 251 uncap (0xFF), 110 slot vanilla MA, 0 sidecar, 0 padding non-zero, parse de header 361/361, same-value RT0 361/361, diff slot-only 361/361, flip-and-restore RT0 361/361. Excede o corpus de evidência da Fase B (58 amostras) em 6×. Ligado aoRuntimeTools/offline_ci.ps1$editorGates(entremonstereencounter) — gate interno permanente. Novos arquivos:FfxLib/Monster/MonsterCaptureFlagWriter.cs,Tools/MonsterCaptureFlagRt0.cs. Tocados:Program.cs(wired--monster-capture-bit-rt0),RuntimeTools/offline_ci.ps1($editorGates). Não toca:m###.bin(o gate é read-only — só lê arquivos vanilla, nunca escreve em disco), DLL, runtime, save, hook. Build Release C# PASS (0 erros, 384 avisos de baseline). Fase C UI não ligada nesta entrega — ainda biblioteca + gate, sem botão público. Próximo passo seguro: Fase D (checkbox UICapturableemMonEditor+ writer em massa para Dark Aeons + Penance) ou in-game RT2 (Halyson edita 1 monstro descartável0xFF→0x68numm###.binreal, salva, inicia o jogo, captura o monstro para confirmar que o engine aceita slot fora da faixa vanilla 0x00..0x67). Doc:docs/reverse/FFX_SPIRA_REFORGE_CAPTURE_BIT_M_HEADER_RE_RESULT_2026-06-16.md§5.1
v2.126.0.0