Files
goldeneye-pc-port/docs/dev/findings-index.csv
T
James Dansereau b3b0ff74db v0.3.0 release review: watchdog re-arm, rule-2 sign-offs, GPL source removal, repo hygiene
Per the 2026-09-19 adversarial pre-ship review (findings.md M-192):

- d318watchdog.c: one-shot per OCCURRENCE, not per process -- re-arm after
  600 ticks of signature absence so a Facility replay in the same session
  (AllUnlocked) is still covered.
- model.c: RULE-2-SIGNOFF records for the retained M-183/M-185 and D311
  defensive clamps (user-approved retention as the stability-maximizing
  option; stale 'Threshold: 50.0' comment corrected to 10.0f; both marked
  post-release removal candidates pending full cutscene re-verification).
- reference/mouse-injector/: removed from the public repo (GPLv2 source +
  prebuilt discord-rpc.lib in an MIT project; never compiled here).
  Provenance stub README remains; path gitignored for local re-vendoring.
  AGENTS.md / GEPD-INPUT-PLAN.md / optionsoverlay.c refs updated.
- scratch/: untracked + gitignored (19 session logs/probe sources were
  committed in the release window).
- findings-index.csv: D317 (and 5 other stale rows) now CLOSED -- added
  CLOSED to gen_findings_index.py's verdict vocabulary.
- docs: D310 perf gauge (no change warranted), GE_DEBUG_UNLOCKALL noted in
  security-and-fidelity-status.md, release notes gain the missing D318
  watchdog bullet + FOV-clamp clarification.

Build verified: ./build-pc.sh ntsc-final clean; gen_findings_index.py
--check and gen_env_probes.py --check pass.
2026-09-20 10:51:12 -04:00

31 KiB

1# GENERATED by tools_pc/gen_findings_index.py -- do not hand-edit.
2# Grep this to pick which findings.md entries to read; it is not authoritative.
3labelbucketone_linerstatus_raw
4D24-D30RESOLVEDgreen threads / kernel / crash handlerresolved
5D31-D42RESOLVEDboot ABI: ANIM_DATA, music seq-table, libaudio banks, Globalimagetable rebase, GL context, rsp toggleresolved
6D43-D50RESOLVEDmodel-file loading → offline sidecar "Plan B" (d43_emit.py); D50.6 texCopyGdls full-slot copyresolved
7D51-D58RESOLVEDfont pixeldata, osGetCount tick rate, model RW pools, cseq BE header, synth slots, RLE menu bg, watch raw offsets, gun-barrel DLresolved
8D59-D68RESOLVEDintro render: blood-RLE clobber, DMA validate, OSMesgQueue, HEADS/BODIES sentinels, romCopy width, image_entry, Globalimagetable BE→LEresolved
9D70-D74RESOLVEDintro-logo pixels: C-array bswap, UV path, sinf/cosf DVAL(), texture-import truncationresolved
10D75OPENfront-end 3D model transforms (D77 audio split out below —OPEN (parked). M-32 triage (see §F "D75 ADDENDUM"):
11D76 · D164FIXEDLegal screen only draws line 1 —FIXED — this row and the ## D164 entry below were stale; the proposed one-line #ifdef PORT fix was actually committed 8dfc578f4 (2026-08-31), well before this correction (2026-09-18).
12D159FIXEDfront-end wallet-Bond photo "interlaced"/combed (RC1 / D149) —FIXED (#ifdef PORT no-op the swap in image.c)
13D161FIXEDDepot (-level_30) ceiling = bright-blue speckle + radial rays (B2).FIXED (port/fast3d/gfx_pc.cpp)
14D165 · D166FIXEDInput-layer polish (M-31, port-only):FIXED
15D180 · D181PARTIALNative-PC input pass (QoL run):LANDED, config-gated, feel-checks owed
16D186PARTIALVideo.FpsCap throttles the sim, not just presentation (M-39 diag, M-42 clamp).CLAMP LANDED (port/fast3d/gfx_sdl2.cpp, port/src/video.c); real fix owed
17D187FIXEDHUD ammo-type/weapon icon vanished at -O2 (M-46 root-cause, M-47 fix + verify).FIXED (src/game/gunfire.c, #ifdef AVOID_UB); PR #19
18D188FIXEDLinux -O2 boot crash:FIXED (src/libultrare/libc/xprintf.c, src/sprintf.c, #ifdef PORT); PR #22
19D189FIXEDLinux -fstack-protector aborts on the decomp's latent stack-buffer overruns (M-48) —FIXED (CMakeLists.txt, src/game/stan.c #ifdef PORT); PR #23
20D190CLOSEDLinux -level_45 SIGSEGV at load in add_ptr_to_objective (objective.c:64) (M-48, open).CLOSED — not a port bug; level 45 is MP-only and has no solo setup file in the ROM (root-caused M-105, reproduced on Windows).
21D191FIXEDWindows -O2 release-bundle crash:FIXED + PLAYTEST-VERIFIED (M-79).…
22D193FIXEDNPC AI locomotion is too slow —FIXED + user-playtest-verified (M-81) —…
23D194PARTIALMouse input needs another tuning pass —PARTIAL — M-120 human playtest…
24D195FIXEDTransparency / alpha surfaces broken on Control (M-49, user playtest) —FIXED (port/fast3d/gfx_pc.cpp, gfx_sp_vertex) —…
25D197CLOSEDCharacter face/head textures wrap around the head, seen on Silo (M-49, user playtest).CLOSED — user playtest v0.2.0-pre
26D198FIXEDalAdpcmPull/_decodeChunk used K0_TO_PHYS (an unconditional & 0x1FFFFFFF mask) on 64-bit heap pointers (src/libultra/audio/load.c).FIXED (src/libultra/audio/load.c) —
27D199PARTIALPhase-3 software audio mixer:LANDED (port/src/mixer.c, port/include/mixer.h, include/PR/abi.h) —
28D200FIXED-level_09 segfault: reverb's ALDelay.input/output are u32 —FIXED — 5-line cast in reverb.c (this session)
29D196FIXEDOS mouse cursor stays visible after closing the F10 options overlay in click-to-lock mode (M-49, user playtest).FIXED (6e758f1d, merged to main) —…
30D192CLOSEDFront-end mission/level-select grid pointer still can't reach the outer cells —CLOSED — the buggy mode 0 was removed entirely in the v0.2.0 prep pass (see D239); click-to-lock is now the only capture mode, so the unreachable-cells path no longer exists
31D221FIXEDSELECT FILE mouse hit-box offset —FIXED (M-91) — explicit {min,max} coord2d pairs under #ifdef PORT; human mouse-playtest confirmed.
32D222FIXEDHigh Video.FovScale breaks culling —FIXED, awaiting visual verification (M-121).
33D223FIXEDQoL ask: mouse-wheel weapon cycling should be directional like a normal PC shooter —FIXED (M-105, port/src/input.c) —…
34D224?QoL gap (M-87, from a PD-PC-port survey):DEPRIORITIZED (M-87, user call).
35D225FIXEDDev-tooling QoL (M-87, user ask):FIXED (2026-09-18) — GE_DEBUG_UNLOCKALL=1 short-circuits fileGetIsCheatUnlocked() (src/game/file2.c, #ifdef PORT, cached getenv) to always return TRUE; default off, no save mutation.
36D226OPENQoL ask: player-adjustable HUD scale for the ammo counter, bottom-left pickup/item status text, and top-of-screen dialogue/subtitle text.OPEN — root cause / call sites identified, not designed or implemented.
37D227FIXEDSky renders as two independently-moving halves —FIXED (M-100b, PR #43) —
38D229FIXEDIsWater-level water renders green, pulses blue<->green (M-101; Frigate -level_26).FIXED (port-layer) — ZLIB+CI8 water image now imports via the CI8 palette path (gfx_pc.cpp); Frigate verified live ("looks better"); sweep + Surface 2 by-eye still owed.
39D230FIXEDIn-level music quality:FIXED (M-121, v0.2.0) —
40D233FIXEDAll levels (intermittent):FIXED (port/fast3d/gfx_pc.cpp, gfx_sp_tri1) —…
41D234FIXEDDam: guard towers along the dam structure invisible except the first one (M-106, user QA report).VISUALLY VERIFIED FIXED (M-108) —…
42D244OPENSelf-hosted CI runner (corpyvt6agent01) link failure:OPEN, not yet fixed. Next…
43D228FIXEDAK47 white missing-texture patches after D217's texpool fix —FIXED (port/fast3d/gfx_pc.cpp, palette_to_rgba32) —
44D204FIXEDPC audio ran ~2 % below real time permanently (AI feedback loop's 3 ms setpoint vs PC jitter).FIXED (port/src/audio.c, port/src/libultra.c, port/include/audio.h) —
45D203CLOSEDSteam Deck (SteamOS, x86_64 Linux) v0.1.0 release bundle:CLOSED — root cause + fix in D253.
46D201FIXEDsrc/libultra/audio/bnkf.c bank/instrument/sound/wavetable relocation offsets were s32, truncating the real 64-bit base pointer.FIXED (src/libultra/audio/bnkf.c) —
47D202?Silenced PPK "slap" + broader real-time mixer corruption (M-52→M-67).ROOT CAUSE ESTABLISHED (M-66); Disposition C implemented + measured (M-66b) —
48D206FIXEDPC played every SFX one bank slot too high —FIXED (M-76, src/snd.c:1001, #ifdef PORT) —
49D207?Alarm klaxon starves combat SFX and doesn't recover after it stops (surfaced by D206, M-77).MONITORING (M-77c: user reports the alarm is acceptable in play after D206; no fix shipped) —
50D208FIXEDPlayer weapon-fire sound goes permanently silent mid-firefight (all other SFX unaffected) —FIXED + user playtest-verified (M-78d) —
51D209FIXEDEvery AI character in the game is locked to a *walk* animation regardless of the speed the ailist commands —FIXED + user-playtest-verified (M-81).
52D210FIXEDchrToPatrol() leaves act_patrol.lastvisible60 uninitialised on PC —FIXED (chraction.c:3872, #ifdef PORT → self->act_patrol.lastvisible60 = -1;, N64 line under #else).…
53D205CLOSEDPC plays wrong/extra SFX for gameplay events (gunfire slap layer, explosion→scream, armour pickup, melee→Klobb idx 106) —CLOSED (M-78) — root cause was D206; all four symptoms resolved + user-confirmed by ear.
54D152+FIXEDD152 addendum (M-31):FIXED (src/snd.c, port/src/libultra.c, #ifdef PORT) —
55D168FIXEDGE_PCDUMP / F12 PPM captures were vertically flipped —FIXED (port/fast3d/gfx_opengl.cpp); D114 / D116 reclassified as capture-orientation artifacts (below).
56D169FIXEDFront-end mouse pointer can't reach the outer cells of the mission/level-select grid —FIXED (M-33, port/src/input.c, port-only, no #ifdef PORT).
57D178FIXEDPre-mission briefing screen:FIXED (M-36) — high confidence
58D175OPENIn-game stutter / brief hang during normal play —OPEN — observed, not investigated
59D176FIXEDSurface exterior renders wrong (-level_36), two independent defects.(a) scroll-speed FIXED (fidelity pass; HIGH confidence on root cause, MODERATE on N64 parity); M-93 playtest + M-98 Defect-2 starburst screenshot in the sections.
60D177FIXEDLadders non-functional —FIXED (M-36) — high confidence; interactive climb test owed
61D172FIXEDBullet-impact / blood / spark particles render magenta or cyan instead of dark red (M-82, ROOT CAUSE FOUND + FIXED).FIXED (port/fast3d/gfx_pc.cpp gfx_lod_tile_offset)…
62D174OPEN"No blood effect" (user QA report).OPEN — observed; first step = BUNKER1 firefight with regenerated sidecars
63D183OPENM-36 Family A ("texture line/pitch shear") is DISPROVEN for the Surface repro (-level_36).Hypothesis DISPROVEN + diagnostics shipped; D176(b)/D182(2) still OPEN
64D173FIXEDThird-person Bond model spawns too high —MOSTLY FIXED as a side effect of D243 (2026-09-18, user-confirmed).
65D179FIXEDPackaged build crashes after the logos —Diagnosed, not fixed —
66D180PARTIALNative-PC input pass (M-XX QoL run, qol/native-pc-input-menu, port-only).LANDED, port-only, no #ifdef PORT.…
67D181?Game.ScreenShakeIntensity —Menu row pulled (v0.2.1, user testing).
68D184PARTIALF10 port-layer options overlay —LANDED, port-only, no #ifdef PORT in src/.
69D211PARTIALPC FOV slider — Video.FovScale (M-83 QoL wave, port-only, WIDESCREEN-FOV-PLAN.md Phase 4).PARTIAL — M-84 refix…
70D212PARTIALAnisotropic-filtering config wiring —LANDED, port-only. Build clean.
71D213PARTIALOn-screen FPS readout —LANDED, port-only. Build clean; bunker1 no-op confirmed.
72D214PARTIALKeyboard rebinding — [Input.Bind] config section (M-83, port-only, PD parity, Phase 4 debt).PARTIAL — M-84: code PASS (alt/ctrl); one doc-only fix.
73D215FIXED1P weapon viewmodel never drew in-level —FIXED (src/game/gunfire.c, #ifdef PORT).
74D216PARTIALGame.SkipIntro — boot straight to the file-select menu (M-83, port + one #ifdef PORT game-code line, PD parity, Phase 4 quick win).LANDED + VERIFIED this session.
75D217FIXED1P weapon viewmodel + 3P Bond model textures garbled —FIXED + merged (PR #47 + PR #49); white residual split out as D228.
76D218PROPOSEDWide FOV exposes the per-level draw-distance / fog boundary —Logged (M-84), fix proposed + parked.
77D219RESOLVEDPPK explosions render purple on Dam (M-87, user QA, "not 3D but noting").RESOLVED (M-115, 2026-09-12) for the original PPK-purple symptom.
78D220PARTIAL1P muzzle flash position shifts upward at higher Video.FovScale (M-87, user QA, Jungle/M16).ANALYZED (M-91) — the suspected unscaled-viewmodel root does NOT hold; this is correct perspective behavior, likely cosmetic/QoL.
79D85OPENRoom primary/secondary DL → texLoadFromGdl garbage.OPEN (safety-netted; widen/pool fixes landed, geometry now renders)
80D86 · D87RESOLVEDmodelInitRwData truncated ptr · attract-demo BE ramromfilestructure.resolved
81D88.4RESOLVEDpropDefs polymorphic record stream not byteswapped → setupDoor crash.resolved (d88_propdefs.py); layout audit M-20 → D132
82D132PROPOSEDD88 propDefs layout audit (M-20):proposed fix (not applied) —
83D157FIXEDCampaign never unlocks the next level (M-30, user bug —FIXED (src/bondtypes.h, #ifdef PORT —…
84D160PARTIALDam level-end cutscene (Bond off the dam / bungee) never plays —DIAGNOSTIC SHIPPED, not root-caused (c95713f5, #ifdef PORT + GE_D160=1)…
85D89-D92RESOLVEDstage-load→frame: stan zero-fill overrun, portal address trunc, chr/AI spawn ptrsresolved
86D93-D102RESOLVEDstruct-pun / hardcoded-size pass:resolved (D95 pool bump partial)
87D103-D107RESOLVEDBUNKER1 viewport height, depth-buffer clear (G_CLEAR_DEPTH_EXT), portal near-plane, LOD mip tileresolved
88D108-D112RESOLVEDskeletal models: d43_emit.py put_f32 byte-reversal bugresolved
89D113-D116FIXEDportal BFS ok · matrix chain ok · player raw-offset audit + gunfire.c THROW* · HUD text X-mirrorD114/D116 CLOSED — NOT A BUG (M-33, see D168):
90D117OPENFrame nondeterminism root-caused; GE_DETERM attempted, not achieved.OPEN (mode attempted, not achieved)
91D118RESOLVEDSDL input layer; M-24 mouse-look rework (mode-aware map, real INI); D118b/c FIXED.resolved (D118a residual)
92D150FIXEDwatch OBJECTIVES / BRIEF page crash:FIXED (src/str.c #ifdef PORT); interactive re-verify pending
93D260-D265PARTIALv0.2.1 hotfix batch: D260 wheel direction swap (fixed) · D261 watch-menu nav auto-repeat (fixed, feel-check owed) · D262 watch item-preview model missing → roo…partial — see rows
94D266-D269OPEND236/D265 wall, second pass:OPEN (the wall itself) —
95D270?Backfilled (M-132) — this label was never given its own row; only code comments and the HANDOFF archive documented it.dead-ended into D271/D272; infrastructure kept in tree
96D271FIXEDD236 wall, third pass —FIXED-but-insufficient (src/game/bg.c #ifdef PORT) —
97D276OPEND236 wall, eighth pass —REFRAMED — oml=0xc81049d8/fmt=3 is the primary suspect now, not D269's CI8 pair; 0x0c184b50 unattributed; wall still open, see D236
98D279?Backfilled — this label was consumed by an undocumented partial session (2026-09-14 ~23:00) that left artifacts in scratch/ (d279_run.log… —undocumented — artifacts only
99D281OPENGame.AllUnlocked (D257) still breaks audio, and can also break right-mouse aim, when enabled before any save has ever been written (v0.2.1 user testing… —OPEN — user-reported regression, not root-caused; mitigation is user-facing guidance only (release notes:
100D282FIXEDQoL ask (v0.2.1 user testing, 2026-09-15):FIXED (port/src/input.c, #ifdef not needed —
101D283OPENSteam Deck first-run preset (D-unnumbered in port/src/video.c/main.c, videoApplySteamOSDefaults()) did not apply for a user who added the game via Steam… —OPEN — mechanism understood, root cause (Desktop-vs-Game-Mode STEAMOS env var difference) unverified on real hardware; user-facing workaround documented in README/release notes.
102D280?D236 wall, ninth pass —REFRAMED again — no fix; next steps in detail section, see D236
103D275?D236 wall, eighth pass —done — probes live, uncommitted; see D276 for what they found
104D274OPEND236 wall, seventh pass —d267_slot_addr fix live (always-on); content/decode question CLOSED; mip-presence CLOSED; wall still open, see D236/D276
105D273OPEND236 wall, fifth pass —RULED OUT (port/fast3d/gfx_pc.cpp palette_to_rgba32, pre-existing/uncommitted GE_D273) —
106D272OPEND236 wall, fourth pass —OPEN — probe GE_D272 added to port/fast3d/gfx_pc.cpp (env-gated, uncommitted); wall still open, see D236
107D137FIXEDright-mouse (aim-sight) crash:FIXED (src/game/gunfire.c #ifdef PORT —
108D119 · D120FIXEDguard-attack weapons_held[]->chr pun crash · blood-stain PointUsage[] chain hangD119 fixed · D120 FIXED (M-30)
109D120FIXEDBlood-decal PointUsage[] chain —FIXED (tools_pc/d43_emit.py).
110D121RESOLVEDWS1 frictionless per-level boot (bare -level_XX injects its -m* row).resolved
111D122FIXEDper-level prop/item model-load crash (Dam/Facility/Runway modelLoad/modelInitRwData):converter fixed; residual chr/fast3d crashes on those levels are separate
112D123FIXEDcrash class C1: chrIsNotDeadOrShot NULL deref on 6 levels (Dam/Runway/Frigate/Statue/Streets/Cradle).converter fixed (OBJ_ID_WORDS); C1 cleared on all 6, residual crashes are fast3d (C2)
113D125RESOLVEDcrash classes C3+C6 (Aztec/Bunker2/Surface2):resolved (M-16b) — line 374 → 8 NULs; all 21 sidecars regen'd; Aztec -level_28 now PASSES (was C3 CRASH).
114D126RESOLVEDcrash classes C3r/C4/C6 (Bunker2 -level_27 door7F054FB4 propobj.c:13523, Depot -level_30 prop.c:902, Surface2 -level_43 loadobjectmodel.c:393):resolved — d88_propdefs.py PROPDEF_PC_BYTES[30/32/33/35]=24 + typed handler; loadobjectmodel.c sizepropdef PORT returns 6.
115D124FIXEDcrash class C2: fast3d bad texture pointer.Jungle fixed (port/src/gimgfixup.c); Facility → D130
116D131RESOLVEDcrash class C2m (Jungle -level_37):resolved — seg_addr() restores the module high word for any fallthrough w1 in [0x40000000, 0x70000000) (module fixed-based at 0x140000000, no ASLR; DRAM/KSEG0/segmented/phys all handled earlier).…
117D133RESOLVEDintro render triage (M-20):RESOLVED — not a regression, parked (D75/D76, GRAPHICS-BACKLOG.md)
118D134FIXEDFrame-2 boot hang / sweep "NO-FRAMES" flakiness —FIXED (port/src/libultra.c)
119D135FIXEDFirefight crash — bgTestHitOnObj (propobj.c:8446) is an unported N64 GBI parser (M-22, WS6 playtest).FIXED (src/game/propobj.c, #ifdef PORT —…
120D136RESOLVEDStage-unload crash — objFree obj->prop reads float garbage (M-22, WS6 Facility playthrough).ROOT-CAUSED → D139 (it was NOT a layout bug —
121D139FIXEDStage-unload crash root cause + fix (M-23).FIXED (src/game/cleanup_objects.c, #ifdef PORT —…
122D140FIXEDPause-menu crash (M-23 open → M-27 fixed).FIXED (src/game/bondview.h, src/game/bondview2.c; #ifdef PORT).
123D141FIXEDWatch-menu item-model crash (M-27), exposed by D140.FIXED (src/game/gunfire.c, #ifdef PORT).
124D152?Mission-failed / objective-failed → permanent black screen (M-28, user bug report —MITIGATED (port/src/libultra.c, M-28, #ifdef PORT/port-only).…
125D154?bg.c room-geometry ray/hit-test GBI parser port (M-28, WRITTEN / UNVERIFIED / UNCOMMITTED).M-30 re-audit + fixes (still playtest-gated for final verify).
126D156PARTIALFacility outro-cutscene "hang" —GUARDED (src/game/model.c, #ifdef PORT)…
127D155FIXEDFacility outro-cutscene end → "hang" = unclamped deltaFrames spiral (M-29, user bug report).FIXED (src/game/frametiming.c, #ifdef PORT —…
128D153RESOLVED-level_09 frame ~900–1400 0xc0000005 = D117/D134 load flakiness, NOT a bug (M-28).NOT A BUG — closed. Run anchors on a quiet machine.
129D151FIXEDWatch data all blank —FIXED (src/bondtypes.h, #ifdef PORT —…
130D130RESOLVEDcrash class C2 (Facility -level_34, Runway -level_35):resolved — stage all 6 N64 fields in a local f[6] before writing any.
131D164FIXEDDisclaimer / legal screen only draws the first line (D76 root cause, M-31).FIXED — corrected 2026-09-18:
132D165FIXEDFront-end menu cursor doesn't feel like a mouse pointer (M-31, user bug B5 follow-up).FIXED (port/src/input.c; Input.MenuPointerMode, Input.HipfirePitchSpeed added).
133D166FIXEDHipfire mouse pitch is digital while yaw is analog —FIXED (port/src/input.c).…
134D235OPENWrong textures load after dying/restarting a level —OPEN — needs: does it repro on a *fresh* level boot (rules out reload-state) vs only after death/restart (confirms it); which surfaces; a screenshot.…
135D236OPENSurface 1: 2D billboard trees render as a wall/sheet of tree texture instead of discrete camera-facing tree sprites (M-106, user QA report).OPEN, sixteenth pass (2026-09-18) —
136D237OPENQoL ask (M-106, user QA):OPEN — not designed; port-only
137D238OPENQoL ask (M-106, user QA):OPEN — not designed; port-only (port/src/input.c + config.c)
138D239CLOSEDQoL ask (M-106, user QA):CLOSED — executed in the v0.2.0 prep pass (port-only)…
139D240OPENPlayer gunshot SFX timing/cadence reportedly does not match the N64 original's rate (M-106, user QA report).OPEN — not root-caused; static call-site tracing only, no runtime verification possible in this environment.
140D241OPENPlayer gunshot SFX goes silent under some conditions —OPEN — not newly root-caused; high confidence this is D207 reproduced, not an independent bug.
141D242?Player-death sequence UX regression vs N64 original:NOT A PORT-LOGIC BUG as far as static analysis can tell.
142D243FIXEDDam end-of-level cutscene (the abseil/bungee sequence, D148/D160's subject):FIXED, live-confirmed by the user (M-189/M-190, 2026-09-18).
143D245OPENIsWater water: two competing patterns with a visible seam that moves as the player looks around (mouse/aim) —OPEN — REOPENED, M-142 headless probe found the tc-shift k measurably flips during ordinary view rotation (new root-cause evidence); an opt-in GE_D245_FIXEDSHIFT candidate is build-verified but needs…
144D246FIXEDTiny pixel strips at the left and right edges of the screen, "like overscan" —FIXED (2026-09-18 session, port-only, Video.SafeAreaCrop).
145D247FIXEDBlack bars top and bottom of screen —FIXED (2026-09-18 session, port-only, Video.SafeAreaCrop).
146D248FIXEDPort runs a stable 30 FPS instead of 60 FPS game-wide (M-117, user asked to verify FPS after the D209 timing-keystone fixes).FIXED, root-caused to a genuine pointer-width ABI bug in src/sched.c (compiled for the PC build, not excluded).
147D249OPENLOD/culling breaks down on large open levels (Streets, Egyptian named specifically) at *default* FOV —OPEN — M-142 static review ruled out the unscaled-far-clip and LOD-multiplier suspects (both already correct); narrowed to the portal/room-visibility BFS, needs a live screenshot+location, not more c…
148D250FIXEDFPS is inconsistent/low on many levels after 60 Hz shipped (M-119, user QA; D248 follow-on).FIXED — per-call getenv() cost was the bottleneck; rock-steady 60-61 fps after, user re-tested 1440p/4K clean.
149D251FIXEDF10 options overlay QoL pass:FIXED (port-only, port/src/optionsoverlay.c).
150D252PARTIALParticle effects cycle through a rainbow palette (M-124, user playtest of the v0.2.0-pre candidate).PARTIALLY FIXED — a real, distinct manifestation was found and fixed, but the bug family is not fully closed, and is intermittent on BOTH platforms, not Deck-specific (corrected 2026-09-18).
151D253FIXEDFacility (and any level with a FORCECROUCH/LADDER linked special tile) SIGSEGV on Linux/Steam Deck —FIXED — Deck-verified:
152D254FIXEDLinux crash handler destroyed its own logs:FIXED — field-verified.
153D255FIXEDFacility firefight SIGSEGV on Steam Deck (v0.2.0-pre CI bundle; D253 fix confirmed working).FIXED (M-140) — D3x-class 32-bit pointer truncation (vtxstore_fix_refs read Model* through the mistyped ChrRecord.chrflags 4-byte-enum alias instead of ObjectRecord.model), not the destroy-path race…
154D256FIXEDSaves (and config) silently failed to persist on Linux whenever the game was not launched from the directory containing data/ —FIXED (path half) — save-flow detail still owed from the user.
155D257FIXEDNew Game.AllUnlocked option (F10; default flipped OFF for v0.2.0 —FIXED — verified by user playtest (PR #79 merged); default flipped OFF for v0.2.0 (D259).
156D259FIXEDGame.AllUnlocked (D257) breaks audio on a fresh save:FIXED in v0.2.1 —…
157D260FIXEDv0.2.1 (user request):FIXED — build green; one-line branch swap, trivially reviewable.
158D261FIXEDv0.2.1 (user request:FIXED — feel-check received; W/S sensitivity follow-up logged above.
159D262FIXEDv0.2.1 (user report):FIXED (primary cause, D264) —
160D264FIXEDD262's root cause (ABI/layout class, cf.FIXED — build green, probes removed; visual confirmation pending.
161D263RESOLVEDv0.2.1 (user report):RESOLVED (not a bug), refined (v0.2.1 further user testing, 2026-09-15).
162D265?D236 investigation (port-layer, port/fast3d/gfx_pc.cpp):PARKED — reverted to baseline; evidence + suspect list above.
163D258OPENPAL/JP asset conversion is broken at the source-data level —OPEN — repair path verified, not applied (out of v0.2.0 scope).
164D284FIXEDport/src/random.c's MIPS64 dsll32/dsrl32 shift helpers were backwards —FIXED, 21-level sweep clean, no crashes —
165D285PARTIALSteam Deck SIGSEGV during D255 live-testing = SEPARATE bug:PARTIALLY FIXED, RECURRED PAST THE FIX (see D305, 2026-09-18).
166D286OPENUser-confirmed real ~8s frame freeze on Caverns, Steam Deck —OPEN — one confirmed occurrence, no repro trigger identified, not root-caused; distinct from D255/D285.
167D287OPENUser-confirmed real, non-self-recovering freeze on Windows (M-141, 2026-09-15/16) after ~15-20 minutes with no input, triggered by clicking back into the… —OPEN — one confirmed occurrence, real (not self-recovering), not root-caused; gfxFrameMsgQ full is a lead, not a confirmed cause.
168D288OPENSilo intro: a huge, flat-shaded, untextured brown/tan triangle sweeps across the frame during the camera pan down the missile shaft (M-141, user report —… —OPEN — visually confirmed and precisely bounded (frames ~562-741 of a bare -level_20 boot), root cause not yet identified; promoted from the long-parked GRAP… |
169D289OPENDam: a crash in the computer room, not reproducible on a second attempt (M-141, Steam Deck user playtest).OPEN — needs a human re-test specifically on a build with the D255 fix (this session's release/v0.3.0, not any earlier build) to see if it still happens.…
170D290OPENWatch's in-game "controller" section shows no control-pad graphic (M-141, Steam Deck user playtest).OPEN — observed, not investigated.
171D291OPENDam: texture glitches when the truck drives past (M-141, Steam Deck user playtest).OPEN — observed, not investigated.
172D292FIXEDDeath animations are glitched —MOSTLY FIXED as a side effect of D243 (2026-09-18, user-confirmed alongside D173) —
173D293FIXEDQoL ask: no discoverable way to quit the game from the UI (M-141, Steam Deck user playtest —FIXED (M-141) — "Quit to desktop" row added to the F10 overlay; build-verified Win+Linux, not yet live-confirmed.…
174D294OPENStatue: ground geometry near the large CCCP/hammer-and-sickle monument briefly renders solid black over a wide area, then self-recovers 10-30 seconds later… —OPEN — not investigated.…
175D295FIXEDCampaign-halting crash at the end of Control Center on 00 Agent difficulty, then a crash on every subsequent relaunch/resume (GitHub #87, user campaign playtes…FIXED (M-149) — M-148 root-caused + reproduced on HEAD; fix landed:
176D296OPENControl Center, 00 Agent:OPEN — single live report, un-triaged; observed only under a gdb-attached debug-harness launch (tools_pc/debug.ps1), not the packaged release artifact —
177D297FIXEDv0.3.0 silently wipes ALL pre-fix player saves on first launch (D284 side effect; found during D295/M-148).FIXED (M-150) — migration shim landed:
178D298?Full HUD (not just the aim-mode crosshair) missing in a v0.3.0 dev build —s — regression reported 2026-09-16 during v0.3.0 work (build ce8427cf); user says "don't fix, just for context"; not yet investigated —
179D299FIXEDGame.SkipIntro crashed selecting any save slot except one —FIXED — fileValidateSaves() (only called from the skipped legal screen) never ran under SkipIntro, leaving saves[] all-zero; added the missing call to the SkipIntro shortcut (src/game/lv.c, #ifdef PO…
180D300FIXEDHipfire look feels non-uniform (issue #89):FIXED, user-confirmed live —
181D301FIXEDfileGetIsCheatUnlocked() NULL-deref, unguarded on every call site, not just the D299/SkipIntro one (GitHub #87, two reports with an identical crash PC/fault ad…FIXED locally on release/v0.3.0 (not pushed) —
182D302FIXEDRender FPS regression to ~40-45fps on release/v0.3.0 (user QA on the local v0.3.0 pre-release build, 2026-09-18) —FIXED — 4 uncached getenv() calls added by D236 passes 10/12/14/16 directly inside gfx_sp_tri1 (port/fast3d/gfx_pc.cpp, per-triangle) cached with the same static int x = -1 pattern D250 established e…
183D303OPENSome muzzle flashes (M16 named specifically, "and some others") draw wrong —OPEN — reported only, not yet investigated.
184D304FIXEDMouse sensitivity menu overhaul (user request, 2026-09-18):FIXED — see full entry for both the range/parity pass and the same-day follow-up (collapsed to a single Input.MouseSensitivity menu row + fixed overlayUpdateScroll()'s unconditional bottom-anchor, th…
185D305FIXEDSteam Deck SIGSEGV on the v0.3.0 pre-release build (Cavern, early in the level, Game.AllUnlocked previously enabled on the session/save) —FIXED (defensive guard) —
186D306OPENDam intro/truck wheels render with odd transparent-looking areas, possibly z-fighting (user QA, 2026-09-18).OPEN — reported only, not investigated.
187D307OPENIn-level security camera entities can be flipped facing the wrong direction (backwards) on some levels, e.g.OPEN — reported only, not investigated.
188D308OPENOccasional z-fighting confirmed on some levels' geometry, general/broader than the D306 truck-wheel instance (user QA, 2026-09-18).OPEN — reported/confirmed by the user, not investigated.
189D309FIXEDComplete non-self-recovering freeze (Windows) returning from Caverns to the intro screen —FIXED via D310 — user-playtest-confirmed 2026-09-18 (Caverns→intro clean; the spin record itself observed resuming correctly in the post-fix probe log).
190D310FIXEDRULE-2-SIGNOFF: chraiitemsize() mis-sizes 1-byte AI_PRINT records (NUL-scans forward), corrupting AI execution for any list containing an active PRINT —FIXED — user-playtest-confirmed 2026-09-18 (v2:
191D311PARTIALComplete freeze in modelSetAnimFrame2WithChrStuff root-motion loop —GUARDED (#ifdef PORT, D156-guard extension in the same file) —
192D312FIXEDThrowable items (mines, grenades, etc.) can clip through walls in certain spots (user report, v0.3.0 pre-release playtest, 2026-09-18).FIXED — bgBuildRoomVtxBounds mis-reads the G_VTX vertex count on PC (Gfx_le.dma.par bit-layout shift):
193D313FIXEDBullet impacts do not appear on some walls/surfaces —FIXED — same root cause as D312, merged diagnosis; same one-line fix.
194D314OPENF10 menu items flicker randomly/intermittently (reported on the main-menu context, user report, v0.3.0 playtest build, 2026-09-18).OPEN — confirmed still present post-D316 fix (2026-09-18); user deprioritized chasing it further for now.
195D315OPENMenu scaling differs between main menu and in-game —OPEN — disclosed as a known issue, deferred to v0.3.1 (bigger design question, not a mechanical fix).
196D316FIXEDMouse-clicking some menu items glitches and lands on the item below instead (user report, v0.3.0 playtest build, 2026-09-18).FIXED — root-caused to two compounding bugs (naive mouse->logical mapping ignoring the safe-area crop; asymmetric row hit-test band) in port/src/optionsoverlay.c + port/fast3d/gfx_pc.cpp.
197D317CLOSEDCrash when toggling Game.AllUnlocked back and forth in-game (user report, v0.3.0 playtest build, 2026-09-18) —CLOSED — symptom of D316 (confirmed instant window close, no WER report; the D316 hit-band bias let a click on "All unlocked" fall through to the adjacent "Quit to desktop" row).
198D318RESOLVEDFacility (regular play path):RESOLVED (2026-09-19):
199D319FIXEDFrame cap slider was mostly a dead zone; replaced with a plain 30/60 toggle (user ask, 2026-09-18).FIXED — new ROW_FPSCAP cycle (30/60 only) in port/src/optionsoverlay.c; default changed to 60 in port/src/video.c.
200D320OPEND318-class sweep: aim-hold → _update AI lists in 8 levels carry the same as-authored softlock race (static analysis, 2026-09-20).OPEN — static sweep complete (Facility ai_19, Control ai_9, Depot ai_12 flagged high/med-high; Bond-combat loops likely safe); no live confirmation beyond D318 itself; probe-verify path + generalized…