mirror of
https://github.com/jkdansereau/goldeneye-pc-port.git
synced 2026-10-24 00:02:45 +02:00
- D318 (RESOLVED): as-authored latent race — gas bit mid-monologue derails c78's pre-aim hold into a permanent ACT_ATTACK anim pin (actor_fire_or_aim_at_target_update moves only the endframe, never re-inits; N64-identical). NOT a port bug. Port-side watchdog port/src/d318watchdog.c (hooked in lv.c after g_GlobalTimer += ) detects the pinned state and re-inits the attack on confirm; GE_D318T=1 timeline diagnostic included. random.c gains an env-gated probe (GE_RANDPROBE) for bit-exact PRNG verification. Scratch evidence (dis/seqcmp scripts, addr dumps, session handoff) parked per house practice. - D320 (OPEN): swept every level's AI scripts for the same aim-hold -> _update shape: 17 lists in 8 levels. Facility ai_19 and Control ai_9 are HIGH (non-self-healing, same as ai_22); Depot ai_12 MED-HIGH (objective bit gated behind a stop-check). Bond-combat loops likely safe (sustained fire stays inside the shoot window by design; exercised every playtest). Classified as-authored latent race(s), faithfully reproduced. Probe-verify path + generalize-the-watchdog recommendation documented in findings.md. - gfx_pc.cpp: GE_D116 debug printf used %f for uint32_t args and %d for unsigned tile fields; casts added, build warning-free. Full ntsc-final configure+compile+link PASS. Accuracy sweep write-up in docs/dev/ACCURACY-AUDIT-2026-09-20.md (PRNG bit-exact; A1/shift32/wrapv/ PORT-hygiene/Gfx-Vtx/osVirtualToPhysical sweeps all clean or already fixed).
28 lines
805 B
Python
28 lines
805 B
Python
import re, sys
|
|
|
|
def seq(p):
|
|
out = []
|
|
for line in open(p, encoding="utf8", errors="replace"):
|
|
m = re.search(r"n=(\d+) t=(\d+) ra=([0-9a-f]+)", line)
|
|
if m:
|
|
out.append((int(m.group(2)), m.group(3)))
|
|
return out
|
|
|
|
a = seq(sys.argv[1])
|
|
b = seq(sys.argv[2])
|
|
print("draws:", len(a), len(b))
|
|
n = min(len(a), len(b))
|
|
first = None
|
|
for i in range(n):
|
|
if a[i] != b[i]:
|
|
first = i
|
|
break
|
|
if first is None:
|
|
print("FULL SEQUENCE IDENTICAL over", n, "draws (tick, caller)")
|
|
else:
|
|
print("first divergence at draw index", first)
|
|
for j in range(max(0, first - 2), min(n, first + 3)):
|
|
tag = "same" if a[j] == b[j] else "DIFF <=="
|
|
print(" [%d] A t=%4d ra=%s B t=%4d ra=%s %s"
|
|
% (j, a[j][0], a[j][1], b[j][0], b[j][1], tag))
|