mirror of
https://github.com/jkdansereau/goldeneye-pc-port.git
synced 2026-10-23 15:52:42 +02:00
Root cause H2 confirmed: the gun-barrel / file-select vertical gradient is built from 0.75-native-pixel-tall gSPTextureRectangle row strips (title2.c (<<2)-1 bottom idiom). On the N64 RDP the scan converter floors the U10.2 edges to whole scanlines, so each strip rasterizes to exactly one scanline; gfx_draw_rectangle passed the fractional edges straight to the GPU's continuous rasterizer, aliasing the 0.75px pitch into a periodic 'comb' (fixed ~3-native-row period; window period = 3*scale — confirmed by a 3-scale 640/1024/1280 GE_PCDUMP test). Fix (port-layer, surgical): after the sub-pixel offset, floor the top edge to its scanline and the bottom edge to the last covered scanline (the RDP scanline range [top_scan, bot_scan+1]) before NDC conversion. No-op for whole-pixel rects (edges already 4k/4k-1), so only sub-pixel strips change and normal fills are untouched. Also: remove the temporary GE_D397SH / D397SHM env-gated shader probes (gfx_opengl.cpp, gfx_pc.cpp) now that the root cause is settled. Docs: findings.md D397 -> RESOLVED (+3-scale confirmation + fix record), findings-index.csv regenerated, porting-notes.md section D15 marked resolved with the landed fix. Verified by playtest: gun-barrel + file-select gradient render clean, comb gone.