mirror of
https://github.com/jkdansereau/goldeneye-pc-port.git
synced 2026-10-24 00:02:45 +02:00
Root cause (HIGH confidence): pure variable-timestep frame pacing, not PRNG/uninit state. osGetCount() is wall-clock on PC (libultra.c:88), and frametiming.c waitForNextFrame advances game logic by however many 60Hz ticks of real time elapsed per render -> two runs diverge 32-69% of pixels by frame 200-440. random.c seeding verified deterministic and correct; the PRNG stream only diverges as a victim of the pacing jitter. GE_DETERM fixed-tick mode: assessed NOT narrow (frame-coupled virtual clock deadlocks the boss.c retrace gate / pre-first-frame waits; robust version redesigns VI retrace + pacemaker semantics). Deferred with a full design in PCPortResearch.md F/D117 per AGENTS.md. tools_pc/framediff.py: structural/tolerant frame compare (16x12 grid mean-colour delta + non-clear-% swing + 16x16 aHash), --mask for the animated HUD, --exact for a future deterministic build, --update to refresh tools_pc/golden/. Reads .ppm and .png (built-in PNG decoder). Validated: two nondeterministic re-runs pass structural, --exact reports the real 32-69%, a wrong-frame pair fails. No game-logic or port-layer C changes; no probes left in tree.