mirror of
https://github.com/jkdansereau/goldeneye-pc-port.git
synced 2026-10-23 15:52:42 +02:00
D236 pass 10: refute "nondeterministic instantiation", it's room occlusion
Per the rule-2-clarification pass-10 brief in findings.md, applied the new three-bucket taxonomy to D280's leading theory that the 0x0c184b50 discrete-tree-card render-mode class instantiates inconsistently across runs of the deterministic -level_36 boot (~4 tris vs ~720). Added a small env-gated diagnostic (GE_D236RM, port/fast3d/gfx_pc.cpp gfx_sp_tri1) counting that class's per-frame triangle count, heartbeat- logged every 300 frames even at zero. Three independent -level_36 launches (one with sustained GE_INPUTSCRIPT camera rotation) produced byte-identical per-frame counts, falsifying the "run-to-run dependent" premise outright. Cross-referencing with the existing GE_D104 room-census probe in the same run shows the count drops to zero at the exact frame the player's curRoom transitions from 12 (17-20 rooms drawn, an outdoor vista) to 18 (1-5 rooms, an enclosed indoor space) via the boot's own scripted intro camera — ordinary portal/room occlusion, not a bug. None of buckets (a)/(b)/(c) apply; no src/game or port/ fix made or warranted. The original "wall not discrete sprites" symptom is untouched by this pass — narrowed the real next step to getting a camera into room 12 facing the tree line directly, in docs/dev/findings.md. Added the generalisable "deterministic boot flag != deterministic camera path" quirk to porting-notes.md §E. findings-index.csv regenerated.
This commit is contained in:
1 parent
1c60da6f46
commit
23da815dda
5 files changed
+114
-4
No files matched your search
@@ -1129,6 +1129,22 @@ made mutually acceptable (dual validation / one-time migration).
|
||||
fixed-tick mode was assessed not-narrow (redesigns retrace/tick
|
||||
semantics); design is in §F D117 if someone picks it up, after which
|
||||
`framediff.py --exact` becomes usable.
|
||||
- **A "deterministic boot" flag (`-level_XX`) pins the level and starting
|
||||
state, but NOT the camera's later path through it — don't assume two
|
||||
captures from the same boot flag are comparing the same view.** D236
|
||||
pass 10 (M-155) found a render-mode-class triangle count that looked
|
||||
"run-to-run dependent" across separate captures using the same
|
||||
`-level_36` boot; three independent re-launches (including one with a
|
||||
full `GE_INPUTSCRIPT` sustained-rotation sweep) actually produced
|
||||
byte-identical, fully deterministic per-frame counts — the real
|
||||
variance was the boot's own scripted intro camera walking from an
|
||||
outdoor room into an indoor one at a fixed frame, and the two captures
|
||||
being compared had sampled before vs. after that walk (or against an
|
||||
unrelated live/free-play session entirely). **Before concluding a
|
||||
count/state is nondeterministic across runs of the same boot flag,
|
||||
correlate against a room/position probe (`GE_D104`-style) in the SAME
|
||||
run** to rule out "the camera simply isn't where you assumed it was
|
||||
yet" before chasing an instantiation or streaming bug.
|
||||
- **Anything blocking on the scheduler thread throttles the whole sim**
|
||||
(D186, cf. D134). The gfx task runs synchronously on `src/sched.c`'s
|
||||
thread, and that same thread delivers VI-retrace events; any `sysSleep` /
|
||||
|
||||
Reference in new issue
Block a user