diff --git a/emulator/firmware-decomp/IGC-ENCODING-DERIVATION.md b/emulator/firmware-decomp/IGC-ENCODING-DERIVATION.md index fe5e0725..129a96f4 100644 --- a/emulator/firmware-decomp/IGC-ENCODING-DERIVATION.md +++ b/emulator/firmware-decomp/IGC-ENCODING-DERIVATION.md @@ -271,3 +271,14 @@ MEMintoENAB, SHIFTL-family, send_em's DMA emit). Output: the op table - Next suspect: OPF2 = 0x3a90f291 reads addr 145 (the SCMEMA x-target!) with a following 0/1 parameter word, right before the eof CPY pairs {0<-69}/{6<-89} vs {0<-68}/{7<-88} — a bit-select/TBLENTRY moving x-bits toward io/eof. + +## ACCEPTANCE 1: SMPTE BARS VIA THE PIPELINE (2026-07-18 ~04:30) +With texz seeded = global-x (the one unpinned seed op, documented approximation) +the REAL captured per-tile programs compute texu = x per pixel through the +firmware's bit-serial sweep cascade, across all 52 tiles of the real DMA stream; +texu -> SMPTE ramp LUT (the display-stage palette, 2nd documented approximation) +reproduces the reference bars exactly (scratchpad bars_pipeline.png; script = +the session log's full-frame texu readout). The OPF2+CPY groups in block33 are +video-FIELD readout (odd/even bit-selects into the io port) - output colour is +ramp(texu), consistent with the solved pvision texture-value ramp. +Remaining to full purity: name the texz seed op + extract the real ramp table.