# Ch431 — direct-color character highlights

## Objective

Restore two captured direct-color highlight strips omitted from the foreground
character, preserve their exact interleaving with the accepted PSMT4 body
draws, and extend the scheduler fixture path to PSMCT32 without changing RTL
or the timing-clean RBF.

## Preceding sprite rejection

The three late PSMT8 sprites at indices 198700, 198710, and 198720 were first
recovered as an authentic two-epoch candidate.  A 14,500-sample bound exceeded
the production fresh-drain deadline, so the identical geometry was repacked
into four epochs under a 6,000-sample estimate.  The 294-epoch production
replay then passed with zero drops and exact scoreboards, but the resulting
framebuffer was byte-identical to Ch429: persistent authentic Z rejected the
entire late family.  It was rejected and never deployed.

## PSMCT32 fixture support

The draw census identified two ABE PSMCT32 triangle strips at indices 165358
and 170407.  Both sample a resident 64x64 direct-color texture at TBP 13760,
TBW 1 and write the visible framebuffer around the character torso.

The coverage planner and scheduler generator now accept this direct-color
shape.  Each source texel is reconstructed through the GS PSMCT32 local-memory
reader and placed in the upper-left 64x64 region of the fixed 512-wide,
256-KiB LPDDR cache.  TEX0 keeps the logical 64x64 dimensions and selects
PSMCT32; CLUT staging is deterministic zero data and is ignored by the direct
sampler.  The cache checksum is `0xb0a82094`.

The two draws remain separate singleton epochs.  `zsrt139f42` inserts the
first before the PSMT4 character family and the second between captured draws
170177 and 170637.  The runtime scheduler merge was also hardened so a sliced
input carrying `reuse=1` is forced fresh whenever the immediately preceding
output texture checksum differs.  This prevents false cache residency across
fixture seams.

## Production and fidelity result

The complete 292-epoch production replay passed with:

- 1,331,684 fragments fed and 1,312,049 passed;
- 292 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
  `8bf59d48638c16dc9cd4a96d6ddb1104b919dfcefb514a35c6a3298d192e6eb6`.

The authentic addition changes 14 pixels at `(319,306)..(323,317)`.  Mapped
PCSX2 comparison improves narrowly in both metrics, from MAE 18.9407 / RMSE
27.6303 to MAE 18.9405 / RMSE 27.6301.  This is accepted as exact missing
character detail, not claimed as a broad visual milestone.

## Silicon acceptance

The timing-clean Ch423 RBF remained loaded.  The DE25 completed all 292
epochs with every texture checksum, palette checksum, staged-record count,
ordered drain, and zero-drop gate passing.  The host returned `rc=0`, selected
the HDMI line-buffer source, and reported 212,680 nonzero pixels, bounds
`(0,0)..(511,479)`, sum32 `0x0108df89`, and xor32 `0x962ca2af`.

Board and production RTL framebuffer files are byte-identical at the SHA-256
above.  The accepted board image is preserved as
`captures/gs/silenthill3/extracted/sh3_zsrt139f42_ch431_board.png`.

Ch431 is accepted on silicon and f42 is the current live HDMI baseline.
