diff --git a/emulator/firmware-decomp/IGC-ENCODING-DERIVATION.md b/emulator/firmware-decomp/IGC-ENCODING-DERIVATION.md index 75fb2996..80d9934b 100644 --- a/emulator/firmware-decomp/IGC-ENCODING-DERIVATION.md +++ b/emulator/firmware-decomp/IGC-ENCODING-DERIVATION.md @@ -335,3 +335,15 @@ classic VWE building scene) with correct z-occlusion; u/v gradients shown as false colour (fx_render/fx_depth.png in the scratchpad). Remaining polish: op-0x2c edge exact semantics (treated as winding-agnostic edge) + real texel sampling via the TXDN stream. + +## op-0x2c pinned down (2026-07-19 late am) +The fx setup packets carry TWO 0x2c edge groups (19w block = SETENABS + 2x4w +edges + clmp(texz,24) + SCMEMA_IMM + hdr + 4w z-test + ENABintoMEM(118) + +1w z-write) => op 0x2c primitives are EDGE-BOUNDED STRIPS (two half-planes), +matching ground planes/box faces. Edge-op family: op 0x42 aux 0x69 = +TREEltZERO_L3, op 0x0d aux 0x68 = TREEgeZERO_L3, op 0x2c aux 0x6b = the strip +variant (exact compare TBD; winding-agnostic acceptance renders correctly). +Emitters: `or 0x2c00,r0,r11` at 0xf041b414/b614/bf34/cbf4/cd54 (the five +primitive-compile paths). The per-draw preamble builder at 0xf0400eb8-0xf0400f1c +constructs {0x100, 0x3caa433a(TREEintoMEM_L3 texu+1), f,0,f, 0x3caa4340(texu+7), +0,f,f, 0x80009146} — matches the captured prelude verbatim.