Files
goldeneye-pc-port/docs/dev/findings-index.csv
T
James Dansereau 50d73c519c D217 (M-90): align texpool arena bases to 8 bytes on PC — fixes solid wrong-colour weapon/model CI tiles (#47)
* D217 (M-90): align texpool arena bases to 8 bytes on PC — fixes solid wrong-colour weapon/model CI tiles

Root cause: texAlignIndices pads CI index rows to ABSOLUTE 8-byte
boundaries, and model-DL G_LOADTLUT palette offsets are a formula that
only matches the real layout when the texpool base is 8-aligned. On N64
the memp bump allocations feeding these pools happened to be 8-multiples;
PC pointer bloat (D36/D37-class struct growth) made some STAGE-bank sizes
not, so weapon-pool bases land %8==4 (e.g. FACILITY). Every palette in a
misaligned pool then sits 4 bytes early inside its allocation while the
draw reads the N64 offset: the PP7 grip's count=1 TLUT lands on the next
tenant's 8-byte header slot (texnum=26 -> LE s16 -> 0x1A00 = the green),
and larger loads read a 2-entry zero pad then the real palette (the M-86
'leading zero pad' tell). BUNKER1 was clean only because its bases
happened to be aligned.

Fix: texInitPool rounds the arena base up to 8 under #ifdef PORT; end
unchanged (pool loses <=7 bytes). No-op on N64 where bases were already
aligned. ABI/layout-class edit per AGENTS.md rule 2 narrow exception —
no game logic touched.

Verified: FACILITY 188/188 decodes %8==0, draw reads pal0=0001 (was
1a00), 0 green pixels in frames 250-450 (pre-fix ~1300); BUNKER1 + DEPOT
still clean; full verify.sh sweep 21/21 PASS. Pending: human playtest
eyeball of the M-87 weapon matrix (closes defect 1). Defect 2 (CI cache
content-hash key, fix/d217-model-texture-palette) remains separate/parked.

findings.md: new section H 'D217 - M-90' + D217 row update; GRAPHICS-BACKLOG
D217 status.

* docs(D217): M-92 - human playtest of PR #47 confirms PP7/PPK/watch fixed; AK47 + NPC-held world-model weapons are a distinct, still-open white-texture residual

Claude-Session: https://claude.ai/code/session_016TaKy6AAsVUTfjkhrX6CjG

* docs(D217/D228): M-97 human playtest - green FIXED, AK47 white patches split out as D228

Second independent playtest (after M-92) of PR #47 on FACILITY, this
time with the branch merged up to date with main. Confirms the same
split the M-90 write-up predicted: PP7/PPK grip+hammer, watch face and
world-model green are all fixed by the texpool alignment; NPC-held
AK47 white missing-texture patches are untouched.

White is a different signature from wrong-colour -- a wrong palette
binds a real TLUT with wrong contents, white means the texture was
never decoded/uploaded at all -- so this is a separate mechanism, not
an incomplete fix. Split out as D228 so D217 can close on the green
mechanism it actually describes instead of carrying an unrelated open
failure mode indefinitely.
2026-09-11 18:06:03 -04:00

15 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 · D164PROPOSEDdisclaimer/legal screen only draws line 1 —fix proposed (not applied —
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, port/src/input.c):FIXED
15D180 · D181PARTIALnative-PC input pass (QoL run, qol/native-pc-input-menu):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
20D190OPENLinux -level_45 SIGSEGV at load in add_ptr_to_objective (objective.c:64) (M-48, open).OPEN — not investigated (M-48)
21D191FIXEDWindows -O2 release-bundle crash:FIXED + PLAYTEST-VERIFIED (M-79).
22D193FIXEDNPC AI locomotion is too slow —FIXED + user-playtest-verified (M-81) —
23D194?Mouse input needs another tuning pass —
24D195OPENTransparency / alpha surfaces broken on Control (M-49, user playtest) —OPEN — not investigated (M-49), needs a capture
25D197OPENCharacter face/head textures wrap around the head, seen on Silo (M-49, user playtest).OPEN — not investigated (M-49), needs a capture
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)
29D196OPENOS mouse cursor stays visible after closing the F10 options overlay in click-to-lock mode (M-49, user playtest).OPEN — root-caused, 1-line fix identified, not applied (M-49)
30D192OPENFront-end mission/level-select grid pointer still can't reach the outer cells —OPEN — root-caused, not fixed (M-49)
31D221FIXEDSELECT FILE screen: the mouse hit-box for a file slot is vertically offset from its visible box —FIXED (M-91) — root cause was NOT a coordinate/origin mismatch:
32D222OPENHigh Video.FovScale breaks culling —OPEN — root cause known, not fixed.
33D223OPENQoL ask: mouse-wheel weapon cycling should be directional like a normal PC shooter —OPEN — root cause + fix mechanism known, not implemented.
34D224FIXEDQoL gap (M-87, from a PD-PC-port survey):DEPRIORITIZED (M-87, user call).
35D225OPENDev-tooling QoL (M-87, user ask):OPEN — root-caused, not implemented.
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.
37D228OPENAK47 (and other) weapon models still show WHITE missing-texture patches after D217's texpool-alignment fix —OPEN — newly split out, not investigated.
38D204FIXEDPC audio ran ~2 % below real time permanently:FIXED (port/src/audio.c, port/src/libultra.c, port/include/audio.h) —
39D203OPENSteam Deck (SteamOS, x86_64 Linux) v0.1.0 release bundle:OPEN — negative idle repros only; not yet reproduced with input.
40D201FIXEDsrc/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) —
41D202RESOLVEDSilenced PPK plays a "slap" instead of a gunshot, PLUS user reports broader real-time audio corruption (M-52 → M-59 → REOPENED M-60 → M-61/M-62 closed the data…ROOT CAUSE ESTABLISHED (M-66); DISPOSITION C IMPLEMENTED + MEASURED (M-66b) —
42D206FIXEDPC played every SFX one bank slot too high —FIXED (M-76, src/snd.c:1001, #ifdef PORT → soundArray[soundIndex - 1], N64 line verbatim under #else).
43D207PROPOSEDAlarm klaxon starves combat SFX and (per user) doesn't recover after it stops —MONITORING (M-77c: user reports the alarm is acceptable in play after D206; no fix shipped) —
44D208FIXEDPlayer weapon-fire sound goes permanently silent mid-firefight (all other SFX unaffected) —FIXED + user playtest-verified (M-78d) —
45D209FIXEDEvery AI character in the game is locked to a *walk* animation regardless of the speed the ailist commands —FIXED + user-playtest-verified (M-81).
46D210FIXEDchrToPatrol() leaves act_patrol.lastvisible60 uninitialised on PC —FIXED (chraction.c:3872, #ifdef PORT → self->act_patrol.lastvisible60 = -1;, N64 line under #else).
47D205RESOLVEDPC plays wrong/extra SFX for gameplay events the user can A/B against N64:CLOSED (M-78) — root cause was D206; all four symptoms resolved + user-confirmed by ear vs N64.
48D152+FIXEDD152 addendum (M-31):FIXED (src/snd.c, port/src/libultra.c, #ifdef PORT) —
49D168FIXEDGE_PCDUMP / F12 PPM captures were vertically flipped —FIXED (port/fast3d/gfx_opengl.cpp); D114 / D116 reclassified as capture-orientation artifacts (below).
50D169FIXEDFront-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).
51D178FIXEDPre-mission briefing screen:FIXED (M-36) — high confidence
52D175?In-game stutter / brief hang during normal play (user QA report):Observed, not investigated
53D176PARTIALSurface exterior renders wrong (-level_36), two independent defects.(a) root-caused, fix owed / (b) open.
54D177FIXEDLadders non-functional —FIXED (M-36) — high confidence; interactive climb test owed
55D172FIXEDBullet-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):
56D174?"No blood effect" (user QA report).Observed; first step = BUNKER1 firefight with regenerated sidecars
57D183OPENM-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
58D173?Third-person Bond model spawns too high (user QA report):Observed, not investigated.
59D179FIXEDPackaged build crashes after the logos —Diagnosed, not fixed —
60D180PARTIALNative-PC input pass (M-XX QoL run, qol/native-pc-input-menu, port-only).LANDED, port-only, no #ifdef PORT.
61D181PARTIALGame.ScreenShakeIntensity —LANDED behind config, default = original.
62D184PARTIALF10 port-layer options overlay —LANDED, port-only, no #ifdef PORT in src/.
63D211PARTIALPC FOV slider — Video.FovScale (M-83 QoL wave, port-only, WIDESCREEN-FOV-PLAN.md Phase 4).PARTIAL — M-84 refix:
64D212PARTIALAnisotropic-filtering config wiring —LANDED, port-only. Build clean.
65D213PARTIALOn-screen FPS readout —LANDED, port-only. Build clean; bunker1 no-op confirmed.
66D214PARTIALKeyboard 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.
67D215FIXED1P weapon viewmodel never drew in-level —FIXED (src/game/gunfire.c, #ifdef PORT).
68D216PARTIALGame.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.
69D217OPEN1P weapon viewmodel + third-person Bond model textures render garbled —OPEN — root cause characterised (M-86); needs an upstream/asset-pipeline fix.
70D218PROPOSEDWide FOV exposes the per-level draw-distance / fog boundary —Logged (M-84), fix proposed + parked.
71D219OPENPPK explosions render purple on Dam (M-87, user QA, "not 3D but noting").OPEN — observed, not investigated.
72D220?1P 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.
73D85OPENroom primary/secondary DL → texLoadFromGdl garbageOPEN (safety-netted; widen/pool fixes landed, geometry now renders)
74D86 · D87RESOLVEDmodelInitRwData truncated ptr · attract-demo BE ramromfilestructureresolved
75D88.4RESOLVEDpropDefs polymorphic record stream not byteswapped → setupDoor crashresolved (d88_propdefs.py); layout audit M-20 → D132
76D132PROPOSEDD88 propDefs layout audit (M-20):proposed fix (not applied) —
77D157FIXEDCampaign never unlocks the next level (M-30, user bug —FIXED (src/bondtypes.h, #ifdef PORT —
78D160?Dam level-end cutscene (Bond off the dam / bungee) never plays —DIAGNOSTIC SHIPPED, not root-caused (c95713f5, #ifdef PORT + GE_D160=1):
79D89-D92RESOLVEDstage-load→frame: stan zero-fill overrun, portal address trunc, chr/AI spawn ptrsresolved
80D93-D102RESOLVEDstruct-pun / hardcoded-size pass:resolved (D95 pool bump partial)
81D103-D107RESOLVEDBUNKER1 viewport height, depth-buffer clear (G_CLEAR_DEPTH_EXT), portal near-plane, LOD mip tileresolved
82D108-D112RESOLVEDskeletal models: d43_emit.py put_f32 byte-reversal bugresolved
83D113-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):
84D117OPENframe nondeterminism root-caused; GE_DETERM deferred; framediff.py structural.OPEN (mode attempted, not achieved)
85D118RESOLVEDSDL input layer (port/src/input.c); M-24 mouse-look rework:resolved (D118a residual)
86D150FIXEDwatch OBJECTIVES / BRIEF page crash:FIXED (src/str.c #ifdef PORT); interactive re-verify pending
87D137FIXEDright-mouse (aim-sight) crash:FIXED (src/game/gunfire.c #ifdef PORT —
88D119 · D120FIXEDguard-attack weapons_held[]->chr pun crash · blood-stain PointUsage[] chain hangD119 fixed · D120 FIXED (M-30)
89D120FIXEDBlood-decal PointUsage[] chain —FIXED (tools_pc/d43_emit.py).
90D121RESOLVEDWS1 frictionless per-level boot:resolved
91D122FIXEDper-level prop/item model-load crash (Dam/Facility/Runway modelLoad/modelInitRwData):converter fixed; residual chr/fast3d crashes on those levels are separate
92D123FIXEDcrash 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)
93D125RESOLVEDcrash 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).
94D126RESOLVEDcrash 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.
95D124FIXEDcrash class C2: fast3d bad texture pointer.Jungle fixed (port/src/gimgfixup.c); Facility → D130
96D131RESOLVEDcrash 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).
97D133?intro render triage (M-20):not a regression — parked (D75/D76, GRAPHICS-BACKLOG.md)
98D134FIXEDFrame-2 boot hang / sweep "NO-FRAMES" flakiness —FIXED (port/src/libultra.c)
99D135FIXEDFirefight crash — bgTestHitOnObj (propobj.c:8446) is an unported N64 GBI parser (M-22, WS6 playtest).FIXED (src/game/propobj.c, #ifdef PORT —
100D136?Stage-unload crash — objFree obj->prop reads float garbage (M-22, WS6 Facility playthrough).ROOT-CAUSED → D139 (it was NOT a layout bug —
101D139FIXEDStage-unload crash root cause + fix (M-23).FIXED (src/game/cleanup_objects.c, #ifdef PORT —
102D140FIXEDPause-menu crash (M-23 open → M-27 fixed).FIXED (src/game/bondview.h, src/game/bondview2.c; #ifdef PORT).
103D141FIXEDWatch-menu item-model crash (M-27), exposed by D140.FIXED (src/game/gunfire.c, #ifdef PORT).
104D152OPENMission-failed / objective-failed → permanent black screen (M-28, user bug report —MITIGATED (port/src/libultra.c, M-28, #ifdef PORT/port-only).
105D154FIXEDbg.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).
106D156?Facility outro-cutscene "hang" —GUARDED (src/game/model.c, #ifdef PORT):
107D155FIXEDFacility outro-cutscene end → "hang" = unclamped deltaFrames spiral (M-29, user bug report).FIXED (src/game/frametiming.c, #ifdef PORT —
108D153?-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.
109D151FIXEDWatch data all blank —FIXED (src/bondtypes.h, #ifdef PORT —
110D130RESOLVEDcrash class C2 (Facility -level_34, Runway -level_35):resolved — stage all 6 N64 fields in a local f[6] before writing any.
111D164PROPOSEDDisclaimer / legal screen only draws the first line (D76 root cause, M-31).FIX PROPOSED, NOT APPLIED (front.c is owned by another agent this session).
112D165FIXEDFront-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).
113D166FIXEDHipfire mouse pitch is digital while yaw is analog —FIXED (port/src/input.c).