Files
retroDE_ps2/docs/ch433_uv_optimized_stq_closeout.md
T
thejayman77 ba74bbd5aa Snapshot: fog implementation + fidelity tooling baseline (pre bilinear-clamp fix)
Per-vertex GS fog end-to-end (gs_stub emit incl. persp_emit5, gs_prim_list_feeder
XYZ2->XYZF2 on PRIM.FGE, gs_make_sh3_scheduler_fixture.py F/FGE packing), new fog
TBs, fidelity attribution tooling. Functional baseline before removing the dead
bilinear lerp8 clamps (Codex: 161-node comb loop -> -0.042ns setup fail).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-20 19:56:46 -04:00

3.1 KiB

Ch433 — UV-optimized STQ packing

Root cause

The repaired Ch432 sampler restored the missing perspective-bilinear samples, but the f19 base scene still showed granular spatial misregistration against its independent floating-point reference. Post-repair isolation rejected a 13-bit reciprocal table and rejected nearest filtering: both worsened the software-reference and PCSX2 scores.

The remaining fixture path used --fast-fit-scale. That shortcut selected the largest representable common S/T/Q scale, normally 6144, even though the scheduler generator already had a per-triangle search that scores packed RTL UVs against authentic floating-point UVs. A common scale cancels only at infinite precision; vertex quantization, integer gradients, and reciprocal quantization make the choice observable.

One-variable repair

zsrt139f43 retains f19's exact 766-draw population, 254 chronological state groups, 125 capacity epochs, native 12.4 geometry, textures, palettes, fog, bilinear reference, Z state, and alpha state. Only --fast-fit-scale was removed. The optimizer selected scales from 0.375 through 6144 rather than forcing almost every triangle to 6144.

The coverage planner no longer emits the shortcut by default. It remains available through an explicit planner --fast-fit-scale option for quick diagnostic fixture generation.

Production result

The full registered-gradient f43 replay passed all 125 epochs:

  • 282,363 fragments fed and 232,326 passed Z;
  • zero drops, color overflows, and AXI errors;
  • 125 complete markers and drains;
  • final Z mismatch 0/307,200 and color mismatch 0/176,888.

Against its independent software reference, f43 improves from f19's MAE/RMSE 8.7494/18.7008 to 4.1633/11.9970. Its mapped PCSX2 score improves from 18.3393/25.8374 to 17.7172/24.8787.

zsrt139f44 substitutes the optimized f43 base slices into the complete f42 composition while preserving the chronology-correct PSMT4 character, direct-color highlights, and alpha/postprocess population. The production replay passed all 292 epochs with 2,339,405 fragments fed, 2,285,783 passed, zero drops/errors, and exact final Z and color scoreboards. Relative to f42, 87,282 pixels change. The mapped PCSX2 score improves from 15.0765/21.9717 to 14.8127/21.5567.

Silicon acceptance

No compile was required. The timing-clean Ch432 RBF ran both asset-only fixtures. f43 passed all 125 runtime gates and matched simulation byte for byte at SHA-256 f4ae82153791a66ae8ed7c4b3dd01f609b9706e826e971311c602181f8a08bc7.

The complete f44 board run passed all 292 texture, palette, staging, drain, and zero-drop gates. It reported 240,492 nonzero words, bounds (0,0)..(511,479), sum32 0x96f07662, xor32 0x0a031310, and selected the HDMI line-buffer source. Its 307,200-word framebuffer is byte-identical to production simulation at SHA-256 3f492ab65c12415f4d0cd1aeafc64072870fd43bed237be4a923efbce30d2081.

The accepted board image is captures/gs/silenthill3/extracted/sh3_zsrt139f44_ch433_board.png; the mapped comparison is captures/gs/silenthill3/extracted/recon/sh3_zsrt139f44_ch433_board_mapped.png. Ch433 is accepted, and f44 is the current live HDMI baseline.