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.2 KiB
Markdown
70 lines
3.2 KiB
Markdown
# Ch432 — perspective palette-bilinear handshake repair
|
|
|
|
## Result
|
|
|
|
Ch432 removes the alternate-sample loss in the serialized perspective
|
|
palette-bilinear raster path. It restores a broad missing surface population
|
|
in the unchanged 292-epoch f42 composition and is accepted on silicon.
|
|
|
|
The mapped PCSX2 score improves from Ch431's MAE 18.9405 / RMSE 27.6301 to
|
|
MAE 15.0765 / RMSE 21.9717. This is a fidelity improvement from corrected
|
|
RTL coverage, not an increase in draw count or a fixture substitution.
|
|
|
|
## Root and repair
|
|
|
|
Dense perspective epochs emitted almost exactly half of the independently
|
|
rasterized coverage. Isolated f19 epoch 74 produced 7,301 fragments against
|
|
14,371 reference pixels. The sampler advanced once when launching the held
|
|
S1 pixel and again on `PB_RELEASE`, skipping the next S1 sample.
|
|
|
|
Launch is now the single normal advance, `PB_WAIT` holds while the four-tap
|
|
sample returns, and `PB_RELEASE` contributes a final hold cycle. Perspective
|
|
valid is qualified by the existing Z and texture-alpha advance enables so a
|
|
frozen beat cannot resubmit the same pixel. The expensive triangle-inside
|
|
result remains off the global pipeline-enable path.
|
|
|
|
An ALWAYS-Z diagnostic had previously added only 571 lit pixels and worsened
|
|
the reference score, independently ruling out Z as the large coverage root.
|
|
|
|
## Simulation acceptance
|
|
|
|
The focused perspective PSMT8 regression emits all 31/31 independently
|
|
covered samples, with no missing pixels, valid colors, correct alpha metadata,
|
|
and correct MODULATE behavior. The isolated production epoch-74 regression
|
|
passes its explicit 14,341-fragment count, up from 7,301, with zero drops and
|
|
exact scoreboards. The affine palette-bilinear regression remains clean.
|
|
|
|
The complete unchanged f42 replay passes:
|
|
|
|
- 2,339,405 fragments fed and 2,285,783 passed;
|
|
- 292 markers and drains;
|
|
- zero fragment drops, color overflows, and AXI errors;
|
|
- Z mismatch 0/307,200 and color mismatch 0/245,760;
|
|
- framebuffer SHA-256
|
|
`31d21fb5c38816ef99ace1d7b55186dc749720e874ecb055a68b21584ec27037`.
|
|
|
|
The repaired f19 scene improves against its independent software reference
|
|
from MAE 11.7491 / RMSE 24.6649 to MAE 8.7494 / RMSE 18.7008. Its mapped
|
|
PCSX2 score improves from 20.9469 / 29.7626 to 18.3393 / 25.8374.
|
|
|
|
## Fit and silicon acceptance
|
|
|
|
The owner GUI fit is timing-clean. Runtime-fabric audit reports 38,367 ALMs,
|
|
336 RAM blocks, required feeder/texture/Z hierarchy present, and 310 MHz setup
|
|
met at +0.069 ns. Hold is nonnegative. The deployed RBF SHA-256 is
|
|
`69b1f91b26d0d78ba654b3d0ccc48f747fa3249f08e2a23535007ff3df40d63e`.
|
|
|
|
After explicit loader confirmation, 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 dumped 307,200 words with sum32 `0x8304eb9b`, xor32
|
|
`0x89a68e4f`, 240,414 nonzero 32-bit words, and bounds `(0,0)..(511,479)`.
|
|
|
|
The board dump is byte-identical to the production-gradient simulation at the
|
|
framebuffer SHA above. The accepted board image is
|
|
`captures/gs/silenthill3/extracted/sh3_zsrt139f42_ch432_board.png`; its PNG
|
|
SHA-256 is
|
|
`45d7f3eed485ab4650bcf61e849598423c46302c42465dbd2a2579ae4518fab3`.
|
|
|
|
Ch432 is accepted and is the current live HDMI baseline.
|