IGC decode: colour-instr layout (5-word Gouraud planes) + SCMEMA lead for the bars
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -229,6 +229,26 @@ the ramp/eof machinery (the stubbed ops). NEXT: name the 11 stubbed ops from the
|
||||
builder disasm (writer pcs in builder_trace2.log, builder = 0xf041ee30-f7b0
|
||||
straight-line) + implement the texture/ramp lookup; then bars.
|
||||
|
||||
## Colour instruction layout (this firmware rev) + SCMEMA lead (2026-07-18)
|
||||
|
||||
Triangle-packet colour instr = **5 words**: {clmp-hdr(op 0x5a, addr 118/126/134),
|
||||
pword 0x00080000, A.f32, B.f32, C.f32} — a full Gouraud plane per channel (the
|
||||
death-cam object is genuinely red: G/B planes are -0.0). render_wide30 with
|
||||
z-scan + relative colour offsets: 85 packets, colours 0-255 correct.
|
||||
|
||||
eof-colour builder tail (0xf041f684+): op words constant; OPERANDS loaded from
|
||||
globals (eofr background value @0x1f788, 0x6c operand @0x1f784) = per-frame
|
||||
background/fog colours are firmware globals, not per-tile data.
|
||||
|
||||
**SCMEMA lead:** op 0x39 (the 0x3e013991/0xec00 pair in the SEND(4)/33 blocks)
|
||||
is likely I_SCMEMA (P_SCMEMA(LSB,LEN,ADDR) exists in ADDR/SUPCODES) = select
|
||||
pixels by SCREEN-ADDRESS bits — the coordinate-variation mechanism that can
|
||||
paint x-banded patterns (bars!) without tree coefficients; 0xec00 -> x=236
|
||||
immediate (=.8 fixed 236.0, the old "edge constant" reading). NEXT: pin
|
||||
SCMEMA's exact field semantics (LSB/LEN/ADDR) from PXPL5TST.S (the test source
|
||||
that printed DUMP) and implement; that + the eof globals should produce the
|
||||
bars pattern.
|
||||
|
||||
## NEXT (the miner)
|
||||
Write `eofs_mine.py`: parse EOF.S per function; track `st.l`/`fst.l` stores
|
||||
through the coeff pointer; recover, in order, each emitted word (int literals
|
||||
|
||||
Reference in New Issue
Block a user