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>
This commit is contained in:
2026-07-20 19:56:46 -04:00
parent ec82764bef
commit ba74bbd5aa
476 changed files with 696247 additions and 130119 deletions
+44
View File
@@ -0,0 +1,44 @@
# Ch365 Audit Log - Two-Frame Motion Sequence
## Scope
- Native 640x480 persistent-Z presentation of two adjacent authentic SH3 capture states.
- Frame A is Ch364's 28-draw mixed-rebind/residency composite (`zs640m28`); frame B is the adjacent capture's
24-draw texture cluster (`zs640b24`).
- The production bootlet preloads the union of their six relocated CLUTs at CBPs `480,484,488,492,496,500`.
- The host sequencer clears color and Z at every frame boundary, then presents the A/B tables in order.
## Compile Provenance
- The GUI build loaded `bios_sh3_zs640motionab.mem` and `payload_sh3_zs640motionab.mem`.
- Quartus reports `Timing requirements were met`: setup `+0.095 ns`, hold `0.000 ns`, recovery `+1.042 ns`,
removal `+0.185 ns`, and minimum pulse width `+0.200 ns`.
- The loaded RBF was produced after the motion bootlet and QSF inputs.
## Frame-B Simulation And Board Proof
- Capture/residency: PASS. One CRC-verified fill, seven verified reuses, eight ordered fresh drains, no writer
overflow or scanout underflow, and 38,400 scanout beats/frame.
- Texture oracle: ALL `101111/108647` (93.1%), MULTI `66968/69063` (97.0%), `clut_bad=0`.
- Persistent-Z integration: PASS. 664,865 fragments fed, 252,657 Z updates, zero drops, exact Z `0/307200`, and
exact color `0/108435`. Per-epoch request-FIFO high-water was `546,297,393,498,32,572,617,592`, below the
1024-entry production depth.
- Board host gate: all eight drains were fresh with 204 records, the one fill and all seven reuses passed CRC,
and every epoch reported zero fragment drops.
- Board framebuffer: 108,435 nonzero pixels, bounds `(12,128)..(633,469)`, sum `0xdd9faa5a`, xor `0x80e70a5e`.
- Board and integration-simulation framebuffer SHA-256 match exactly:
`3191d75983e72a158f91f15cc1f57b6ff7c5e40d5bbb4a49957db06db4e2fded`.
- Replay-color is exact: 664,865 fragments, 252,657 Z-pass updates, 108,435 covered pixels, no stray coverage,
and `307200/307200` exact framebuffer pixels.
## Two-Way Sequencer Gate
- A one-loop run established the A-to-B boundary and captured the final B framebuffer above.
- A subsequent two-loop run exercised A-to-B, B-to-A, A-to-B again. All 40 epoch drains were fresh, all expected
record counts matched, every texture fill/reuse CRC gate passed, and every fragment-drop gate remained zero.
## Result
Ch365 is closed on silicon: two authentic 640x480 persistent-Z frame states are sequenced in both directions by the
host without reconfiguration. Each endpoint has independent integration-simulation and replay-oracle framebuffer
proof, and the hardware frame-boundary protocol has passed across a full A/B/A/B loop.