ba74bbd5aa
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>
70 lines
3.1 KiB
Markdown
70 lines
3.1 KiB
Markdown
# 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.
|