mirror of
https://github.com/jkdansereau/goldeneye-pc-port.git
synced 2026-10-24 00:02:45 +02:00
D243/D173/D292 (Bond cutscene family) -- root cause found and fixed: bondview2.c's cutscene body-model buffer layout reserved space using a hardcoded 32-bit sizeof(Model) literal that never accounted for 64-bit pointer widening (real size 232 vs reserved ~188 bytes), so the model's own animation-data buffer overlapped its tail fields (playspeed/animrate/ unkac/unkb0/unkb4), corrupting them on every cutscene body-model creation. Fixed by computing the real sizeof(Model), matching the identical idiom already used one line above for ModelFileHeader. User-confirmed live. Follow-up camera-tracking fix: replaced the old shake-workaround freeze (which also blocked legitimate per-shot tracking) with a write-every-tick scheme plus an instant re-seed of the look-at filter's accumulator at each teleport, eliminating the old catch-up shake without freezing anything. Second bug found in the same review: mouse-look was never gated during scripted/no-control camera states (an already-documented but never implemented safety gate in port/src/input.c's hipDirectCompute). Fixed by adding the missing check, reusing gameScriptedCameraActive() (renamed from D243's d243mCutsceneActive, since it's no longer D243-specific -- also used by model.c's M-183/M-185 clamps, which were separately found to be dead code for real players (gated on the diagnostic env var, not just camera mode) and fixed to be unconditionally active. D236 (Surface tree wall) pass 12: new mechanism found (both competing texture classes are Z_UPD=0 decal-mode draws, so on-screen precedence is decided by draw order, not depth) and a headless capture finally landed on the actual bugged view -- but that view has zero tree-class triangles present, so the mechanism couldn't be tested there. Two new env-gated diagnostic probes (GE_D236ORDER, GE_D236ZFIX) left in tree for the next pass; not a fix, not v0.3.0-blocking. All findings.md summary-table rows touched this session cross-checked against their full entries and corrected where stale (D219/D252/D246/D247 had been fixed in a prior session but their index rows still said OPEN/NOT-A-BUG).