# Ch429 — native PSMT4 character recovery

## Objective

Recover visible captured geometry that was still absent from the accepted
Ch428 frame, while preserving authentic draw order and refusing additions
that merely increase epoch count or worsen the presentation.

## Deferred PSMT4 postprocess

`zsrt139f34` appended the existing 18-epoch tiled PSMT4 overlay after the
Ch428 frame, in its authentic late-frame position.  Its 295-epoch production
RTL replay passed every structural gate and produced framebuffer SHA-256
`7b167db3927c6e765c464d0e8ddbfb37f23d5b980d87ebdfc9af97b20128e044`.

The replay also established that the captured overlay is a real contrast
operation, not an opaque texture: its alpha equation is
`(Cd-Cs)*0xdc/128 + Cs` with COLCLAMP enabled and source RGB values of 0 or
24.  Applied to the still-underlit reconstructed base, it crushes most of the
scene to black and worsens the mapped PCSX2 score to MAE 24.0034 / RMSE
32.9396.  The overlay is therefore deferred until the missing illumination
and base-color population is present; f34 was not deployed.

## Native 512x1024 PSMT4 support

A separate captured family of 19 opaque PSMT4 triangle strips covers the
foreground character body at draw indices 165536 through 172233.  The draws
share TBP 9216, TBW 8, a logical 512x1024 texture, and several authentic CLUT
banks.

The coverage planner now accepts explicit PSMT4 selection.  The fixture
generator reconstructs the canonical GS-swizzled 512x1024 PSMT4 local-memory
image, packs its nibbles into the fixed 262,144-byte texture cache, preserves
PSM/TBW/TW/TH in TEX0, and samples packed nibbles in the independent software
reference.  Fast-fit scaling now uses the logical texture dimensions.

Generation is fail-closed.  An independent host check confirmed that all
262,144 emitted texture bytes exactly match the local-memory reconstruction;
the emitted TEX0 decodes to TBP 1024, TBW 8, PSM `0x14`, TW 9, TH 10.  The
texture CRC is `0x9ecc08f5`.

## Accepted f36 result

`zsrt139f35` groups the 19 strips into 13 exact-state/asset epochs.
`zsrt139f36` inserts those epochs at their authentic position before the
final opaque draws, CT32 darken, and complete alpha family.  The resulting
frame has 290 epochs.

Production RTL replay passed with:

- 1,331,626 fragments fed and 1,311,991 passed;
- 290 markers and drains;
- zero fragment drops, color overflows, and AXI errors;
- Z mismatch 0/307,200 and color mismatch 0/245,437;
- framebuffer SHA-256
  `102bf7925b859bcacc91172ecdcd1755b4f01210f327ac918a1c8d7954905d2b`.

Relative to Ch428, the recovered family changes 3,099 source pixels within
`(319,242)..(361,479)` and restores the visible foreground character-body
silhouette.  On the mapped changed-pixel support its RMSE improves from 15.10
to 12.82.  Whole-frame mapped RMSE improves from 27.6458 to 27.6303, while
MAE moves narrowly from 18.9378 to 18.9407.  This is accepted as authentic
structural fidelity with a mixed scalar-score result, not described as a
broad color-fidelity win.

## Silicon acceptance

No new compile or RBF was required; the timing-clean Ch423 image remained
loaded.  The DE25 completed all 290 epochs with every texture CRC, palette
checksum, staged-record count, ordered drain, and zero-drop gate passing.
The scheduler returned `rc=0`, selected the HDMI line-buffer source, and
reported 212,673 nonzero pixels, bounds `(0,0)..(511,479)`, sum32
`0x00e0b761`, and xor32 `0x9622a8a3`.

The board and production RTL framebuffer files are byte-identical at the
SHA-256 above.  The mapped board score is MAE 18.9407 / RMSE 27.6303, and the
accepted board image is preserved as
`captures/gs/silenthill3/extracted/sh3_zsrt139f36_ch429_board.png`.

Ch429 is accepted on silicon and f36 is the current live HDMI baseline.
