mirror of
https://github.com/jkdansereau/goldeneye-pc-port.git
synced 2026-10-24 00:02:45 +02:00
The water quad's fan was the one skyPortBeginFan() caller passing allowShift=FALSE, on the theory that a matched tc-shift on both texunits would flatten the sinf()-driven cross-fade the effect depends on. That theory was wrong: skyPortEmitTileShift() replays both tiles' SETTILE commands with the identical k, rescaling both texunits' decoded S/T by the same factor before each tile's own (unshifted) uls/ult offset is applied by the RDP -- the offset between tile 0 and tile 1's sample points is preserved, not flattened. Confirmed with the GE_D227V probe on Frigate (-level_26): a water fan vertex spans S=-166..299317, T=-6451..288410 in S10.5 units (same order of magnitude as D227's pre-fix sky overflow), now correctly getting kS=4 kT=4 instead of being forced to 0. verify.sh frigate and "surface 2" (the two IsWater levels) both PASS crash-free. Live playtest of the mouse-tracking seam itself still owed. Claude-Session: https://claude.ai/code/session_016DQUKGLZxFtPy52MkKXXog