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>
2.7 KiB
2.7 KiB
Ch363 Audit Log - Five-Texture Persistent-Z Scheduler
Scope
- Native 640x480 persistent-Z scene with five ordered authentic SH3 draws:
5328,11671,77112,89164,119471. - Five distinct texture/CLUT bindings, relocated at CBP
480,484,488,492,496. - The cache is intentionally refilled for every epoch; this chapter proves rebinds rather than shared-texture residency.
Root Cause And Fix
- The generated five-CLUT bootlet is 350 qwords. The shared simulation harness had inherited the 256-qword EE RAM default, so
$readmemhtruncated the payload. Epoch 3 consequently read partial CLUT data and produced 195 palette-invalid pixels. - The production
GS_SH3_LPDDR_FBboard profile already allocates 32 KiB of EE RAM. Both shared 640 harnesses now explicitly use that sameRAM_SIZE_BYTES(32 * 1024)capacity. - The earlier CLAMP investigation was rejected by trace evidence: all sampled epoch-2/3/4 coordinates were within the 512x512 texture bounds. No feeder or sampler RTL change is retained.
Simulation Gates
tb_top_psmct32_sh3_zs640mt5_cap: PASS.- Five texture CRC fills:
55070afa,26a88b77,a727234d,fbdeaa32,cf4cae27. - Five fresh drains, records
54,68,68,68,68, no writer overflow or scanout underflow. - Scanout: exactly 38,400 beats/frame.
- Oracle: ALL
61595/63749(96.6%), MULTI7701/7877(97.8%),clut_bad=0.
- Five texture CRC fills:
tb_top_psmct32_sh3_zint640mt5: PASS.- Z preclear: 19,200 beats.
- 129,752 fragments fed, 118,355 Z passes, zero fragment drops.
- Exact final scoreboards: Z
0/307200mismatch; COLOR0/63617mismatch. - Request FIFO depth 1024 high-water by epoch:
415,401,64,222,47.
GUI Fit And Board Closure
- The authoritative QSF points to
bios_sh3_zs640mt5.memandpayload_sh3_zs640mt5.mem; the Quartus 26.1 flow report and synthesis report both resolve those exact images. - The July 11 GUI compile is signoff-clean: setup
+0.095 ns, hold0.000 ns, recovery+1.042 ns, removal+0.185 ns, and minimum pulse width+0.200 ns. The generatedretroDE_ps2.core.rbfwas written after the QSF update. - The RBF loaded successfully on the DE25 (
fpga0: operating). The five-epoch host run passed all transfer, CRC, preclear, drain, and zero-drop gates. Its final framebuffer summary wasnonzero=63617, bounds(36,10)..(562,360). - The board framebuffer and a fresh
tb_top_psmct32_sh3_zint640mt5dump have identical SHA-256:9e87678c0c88e3e2e90a187e69991069d58e88187d360d560df59f25219b99c5. - Independent replay-color verification is exact:
307200/307200pixels, zero mismatches. Ch363 is closed: five authentic SH3 draws, five texture/CLUT rebinds, native 640x480 scanout, and persistent-Z are proven on silicon for this fixture.