Files
retroDE_ps2/docs/ch427_complete_alpha_family_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

65 lines
2.8 KiB
Markdown

# Ch427 — complete authentic alpha family
## Objective
Replace Ch426's hand-selected 53-draw alpha subset with every captured PSMT8
alpha-fan draw in the chronological post-process range, while retaining strict
RTL and silicon equality and admitting the result only on measured PCSX2
fidelity improvement.
## Precision control
Before expanding the family, a controlled replay increased the shared
reciprocal table from 11 to 13 bits. It changed 32,173 output pixels, but the
mapped PCSX2 score was effectively flat: MAE 20.0716 / RMSE 28.9629 versus
20.0713 / 28.9639 at 11 bits. The extra table cost therefore had no useful
fidelity return and was rejected.
## Complete family and epoch packing
The captured interval contains 93 authentic PSMT8 alpha-fan draws, not the 53
draws selected by the older Ch405 fixture. The omitted 40 include captured
anchor alpha as high as `0x11`; they are real atmospheric contributions, not
transparent no-ops.
An initial one-triangle expansion produced 408 alpha epochs. It also exposed
a valid marker corner: a fully Z-rejected epoch emits no color write, leaving
the host's stale `frame_drained` observation high and preventing a new drain
edge. The acceptance gate was not weakened. Instead, the same ordered draws
were safely capacity-packed into 129 productive alpha epochs, with maximum
coverage 14,497 fragments. `zsrt139f28` is Ch424's 125 scene epochs, the 20
captured CT32 darken epochs, and those 129 alpha epochs: 274 total.
## Production RTL acceptance
The complete replay passed:
- 1,325,665 fragments fed; 1,306,030 passed;
- 274 markers and drains;
- zero fragment drops, color overflows, and AXI errors;
- Z mismatch 0/307,200 and color mismatch 0/245,423;
- framebuffer SHA-256
`2aaaabfbe4054b6445458eb43dffb5bcb9d7989c3121875c64fcf0839478d976`.
Against the PCSX2 reference using the accepted display mapping, the result is
MAE 18.9384 / RMSE 27.6464. That is a material improvement over Ch426's
20.0713 / 28.9639. The complete family changes 142,182 pixels relative to the
53-draw subset and restores broad captured atmosphere without the former
white-frame failure.
## Silicon acceptance
No new Quartus compile was required. The timing-clean Ch423 RBF
(`17d1c1b49aac4d893ed56285cf0703bf375db2ee9f472ea36862cca376ae63fe`)
ran all 274 epochs on the DE25. Every texture CRC, palette checksum, staged
record count, ordered drain, and zero-drop gate passed; the host returned
`rc=0` and enabled the HDMI line-buffer source.
The board dumped all 307,200 words with 212,213 nonzero pixels, bounds
`(0,0)..(511,479)`, sum32 `0x9c2fcd95`, and xor32 `0x6e7390f3`. Board and RTL
framebuffer dumps are byte-identical and share the SHA-256 above. The accepted
board image is preserved as
`captures/gs/silenthill3/extracted/sh3_zsrt139f28_ch427_board.png`.
Ch427 is accepted on silicon and is the current live HDMI baseline.