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

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 $readmemh truncated the payload. Epoch 3 consequently read partial CLUT data and produced 195 palette-invalid pixels.
  • The production GS_SH3_LPDDR_FB board profile already allocates 32 KiB of EE RAM. Both shared 640 harnesses now explicitly use that same RAM_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%), MULTI 7701/7877 (97.8%), clut_bad=0.
  • 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/307200 mismatch; COLOR 0/63617 mismatch.
    • 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.mem and payload_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, hold 0.000 ns, recovery +1.042 ns, removal +0.185 ns, and minimum pulse width +0.200 ns. The generated retroDE_ps2.core.rbf was 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 was nonzero=63617, bounds (36,10)..(562,360).
  • The board framebuffer and a fresh tb_top_psmct32_sh3_zint640mt5 dump have identical SHA-256: 9e87678c0c88e3e2e90a187e69991069d58e88187d360d560df59f25219b99c5.
  • Independent replay-color verification is exact: 307200/307200 pixels, 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.