From 811e9a62cf96cab792e529428c38b5991b103ca5 Mon Sep 17 00:00:00 2001 From: James Dansereau <106631954+jkdansereau@users.noreply.github.com> Date: Tue, 6 Oct 2026 18:35:38 -0400 Subject: [PATCH] Bug-fix pass for reported issues #114-#119 (D424-D434) Recoil byte order, crouch-tank interactions, auto-fire cadence in ticks, hipfire turret tracking, light-fixture Gfx index parsing, hit-type byte reads. Rule-2 sign-offs recorded for D424 and D427. Documentation re-triaged onto a single tracker (docs/ROADMAP.md). Refs: D424 D425 D426 D427 D428 D430 D431 D432 D434 #114 #115 #116 #117 #118 #119 --- .github/ISSUE_TEMPLATE/bug_report.yml | 5 +- .github/ISSUE_TEMPLATE/config.yml | 2 +- .github/labels.yml | 2 +- .github/release-notes.md | 74 ++-- .github/social-preview.html | 6 +- .github/social-preview.png | Bin 611257 -> 611736 bytes AGENTS.md | 26 +- CLAUDE.md | 2 + README.md | 66 +-- docs/ROADMAP.md | 263 ++++++++++++ docs/_config.yml | 7 +- docs/dev/AUDIO-PLAN.md | 2 + docs/dev/D172-PARTICLE-COLOR-RESEARCH.md | 170 -------- docs/dev/D176a-SKY-NOTES.md | 2 +- docs/dev/F10-GE-STYLE-PLAN.md | 129 ------ docs/dev/GRAPHICS-BACKLOG.md | 51 --- docs/dev/LEVEL-PLAYTEST.md | 2 + docs/dev/LEVEL-STATUS.md | 4 +- docs/dev/LINUX-PORT.md | 91 ---- docs/dev/M-35-PLAYTEST-CHECKLIST.md | 89 ---- docs/dev/M-35-QOL-REVIEW.md | 132 ------ docs/dev/M-36-TRIAGE.md | 94 ----- docs/dev/M7-ALLUNLOCKED-PLAN.md | 45 -- docs/dev/TEXTURE-GLITCH-ANALYSIS.md | 2 + docs/dev/V0.4.0-PLAN.md | 515 ----------------------- docs/dev/VIEWMODEL-RESEARCH.md | 2 +- docs/dev/agentic-development.md | 8 +- docs/dev/findings-index.csv | 60 +-- docs/dev/findings.md | 195 +++++++-- docs/dev/release-dropin-rom-plan.md | 2 + docs/internals.md | 4 +- docs/porting-notes.md | 4 + port/src/input.c | 54 ++- src/game/bg.c | 7 +- src/game/bondview2.c | 19 + src/game/chrprop.c | 11 + src/game/gun.h | 8 + src/game/gunfire.c | 55 ++- src/game/image.h | 9 +- src/game/lightfixture.c | 76 ++++ src/game/lightfixture.h | 7 + src/game/propobj.c | 5 + src/game/tex.c | 3 + tools_pc/gen_findings_index.py | 4 +- 44 files changed, 805 insertions(+), 1509 deletions(-) create mode 100644 docs/ROADMAP.md delete mode 100644 docs/dev/D172-PARTICLE-COLOR-RESEARCH.md delete mode 100644 docs/dev/F10-GE-STYLE-PLAN.md delete mode 100644 docs/dev/GRAPHICS-BACKLOG.md delete mode 100644 docs/dev/LINUX-PORT.md delete mode 100644 docs/dev/M-35-PLAYTEST-CHECKLIST.md delete mode 100644 docs/dev/M-35-QOL-REVIEW.md delete mode 100644 docs/dev/M-36-TRIAGE.md delete mode 100644 docs/dev/M7-ALLUNLOCKED-PLAN.md delete mode 100644 docs/dev/V0.4.0-PLAN.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 1c0d8950..04d3af43 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -7,9 +7,8 @@ body: value: | Thanks for filing a report. First, please check: - - The port is **Phase 2 of 4** — rendering is incomplete and many - cosmetic defects are already tracked in - [`docs/dev/GRAPHICS-BACKLOG.md`](https://github.com/jkdansereau/goldeneye-pc-port/blob/main/docs/dev/GRAPHICS-BACKLOG.md). + - Known open issues (rendering, audio, platform) are tracked in + [`docs/ROADMAP.md`](https://github.com/jkdansereau/goldeneye-pc-port/blob/main/docs/ROADMAP.md). Search open issues and that file before filing. - Only the **Windows / MSYS2 MINGW64** build is tested. Linux and macOS are best-effort — build breaks there are expected. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 2edadabd..2eb0a3bb 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -4,7 +4,7 @@ contact_links: url: https://github.com/jkdansereau/goldeneye-pc-port/blob/main/docs/building.md about: Read this first for build/extraction problems — most are covered here. - name: Known rendering defects - url: https://github.com/jkdansereau/goldeneye-pc-port/blob/main/docs/dev/GRAPHICS-BACKLOG.md + url: https://github.com/jkdansereau/goldeneye-pc-port/blob/main/docs/ROADMAP.md about: Cosmetic / rendering issues already known and tracked. Check before filing. - name: Security vulnerability url: https://github.com/jkdansereau/goldeneye-pc-port/security/advisories/new diff --git a/.github/labels.yml b/.github/labels.yml index 7f260a01..1a15f5b4 100644 --- a/.github/labels.yml +++ b/.github/labels.yml @@ -10,7 +10,7 @@ - name: rendering color: 5319e7 - description: Graphics / fast3d / RSP output defect (see docs/dev/GRAPHICS-BACKLOG.md) + description: Graphics / fast3d / RSP output defect (see docs/ROADMAP.md) - name: audio color: 1d76db diff --git a/.github/release-notes.md b/.github/release-notes.md index 14b1c015..5b4ba7cc 100644 --- a/.github/release-notes.md +++ b/.github/release-notes.md @@ -6,7 +6,7 @@

Platforms: **Windows x86-64** and **Linux x86-64 (including Steam Deck)**. -Region: **NTSC-U (US) only** — see [Things to know](#things-to-know). +Region: **NTSC-U (US) only** — see [Caveats](#caveats). v0.4.0 is a large feature and fidelity release. The full campaign runs at a steady 60 fps with music and SFX throughout, and has been playtested end to @@ -24,7 +24,7 @@ The world now renders natively at your display's aspect ratio instead of stretched 4:3: geometry is undistorted (wider view, same vertical FOV), the in-level HUD keeps its shape and anchors to the screen edges, and the 4:3 front-end menus and ending-credits sequence are pillarboxed. Turn it off -with the **`Native widescreen`** toggle (F10 → Display) to restore the old +with the **`Native widescreen`** toggle (F10 → Graphics) to restore the old stretched frame. (D334/D335) ### A true, stable 60 fps @@ -56,19 +56,18 @@ frame cadence. Fixed at the root; the game now holds a rock-stable 60 fps ### Rebuilt options (F10 overlay + front-end PC Options) - Both options screens are reorganized into functional sections — **Input, - Gameplay, HUD, Graphics, Audio, Display** — each with its own *Reset to + Gameplay, HUD, Graphics, Audio, Video** — each with its own *Reset to defaults*; per-profile settings scoping; and the old "save file" wording is now **profile**. (D353–D356) - The **F10 in-game overlay** was refreshed GE-style: category headers, full controller support (value-adjust with hold-to-repeat), fixed pointer/ keyboard navigation, and new rows: **Show FPS**, **Skip intro - (experimental)**, pad - **Invert look / Southpaw / Deadzone / Trigger threshold**. (D237/D345– - D347/D360–D370) + (EXPERIMENTAL)**, plus pad-only **Invert look / Southpaw / Deadzone / + Trigger threshold**. (D237/D345–D347/D360–D370) - The front end gained a **PC Options screen** beside the file-select bar, and save-file **Copy/Erase** moved into the bottom bar. Long sections - (Input) page within the screen -- a "Page 1/2" marker plus a bottom hint - on every page -- so every row stays on screen and stays reachable; the + (Input) page within the screen — a "Page 1/2" marker plus a bottom hint + on every page — so every row stays on screen and stays reachable; the mouse wheel and W/S also page the list, and the selection clamps at page edges. (D343/D406/D407) - Watch-only settings — **Auto-aim**, **Look ahead** and the rest — are now @@ -79,10 +78,10 @@ frame cadence. Fixed at the root; the game now holds a rock-stable 60 fps ### Crosshair customization *(defaults leave the N64 crosshair untouched)* -**Show crosshair** (on/off), **Crosshair colour** (the original red, -or green / blue / yellow / cyan / magenta / white, or custom RGB), **Crosshair size** -(default 100% of the original drawing), and **Crosshair style** (Original / -Thin cross). (D373/D379/D381/D382) +**Show crosshair** (on/off), **Crosshair colour** (default *Original +(red)*, or Green / Red / Blue / Yellow / Cyan / Magenta / White, or custom +RGB), **Crosshair size** (default 100% of the original drawing), and +**Crosshair style** (Original / Thin cross). (D373/D379/D381/D382) ### In-game key rebinding + new default layout @@ -97,7 +96,7 @@ ones migrate automatically. (D371/D374/D383/D385) - **Sane pad defaults**: **A = use/interact, X = reload, Y = weapon cycle** (v0.3.0 mapped two buttons to crouch and had no in-game use button). (D393) - Crouch uses the engine's real crouch input, with a **`Crouch mode`** - toggle (hold / latched). (D375) + toggle (Hold / Toggle). (D375) - Xbox-variant controller parity, **Southpaw**, and per-stick **deadzone** + **trigger threshold** rows. (D237/D394) - **The N64 Rumble Pak now drives real gamepad haptics** (Steam Deck @@ -199,36 +198,51 @@ distances). (D402/D283) ## Options reference -All settings available in v0.4.0, in both options screens (front-end -**PC Options** and the in-game **F10 overlay**). Defaults in parentheses. +Every setting in v0.4.0's options screens (front-end **PC Options** and the +in-game **F10 overlay**), with the current default. | Setting | Section | Default | |---|---|---| -| `Native widescreen` | Display | On | -| `Frame rate cap` | Display | 60 (30 / 60) | -| `Show FPS` | Display | Off | -| `MSAA` | Display | 2× (1/2/4/8, clamped to driver max) | | `Aim style` | Input | N64 (N64 / Centred (PC)) | -| `Aim range` | Input | PC (shown while Centred) | -| `Mouse horizontal/vertical sensitivity` | Input | calibrated midpoint | -| `Invert look (mouse)` / `Invert look (controller)` / `Southpaw` | Input | Off | -| `X / Y axis look sensitivity (controller)` | Input | 100% (native) | -| `Look smoothing (controller)` | Input | 0 | +| `Aim range` | Input | PC (shown while Centred is selected) | +| `Mouse horizontal sensitivity` / `Mouse vertical sensitivity` | Input | 100% (calibrated midpoint) | +| `Invert look (mouse)` / `Invert look (controller)` | Input | Off | +| `Southpaw` | Input | Off | +| `X axis look sensitivity (controller)` / `Y axis look sensitivity (controller)` | Input | 100% (native) | +| `Look smoothing (controller)` | Input | 0 (off) | | `Tank aim speed` | Input | 100% (`Input.TankAimScale`) | -| `Deadzone (left/right stick)` | Input | 70% | +| `Deadzone (left stick)` / `Deadzone (right stick)` | Input | 70% | | `Trigger threshold` | Input | 23% | | `Vibration` | Input | 50% | -| `Crouch mode` | Input | Hold | -| `Bindings…` (Movement / Actions editors) | Input | GEPD-style preset | +| `Crouch mode` | Input | Hold (Hold / Toggle) | +| `Bindings…` (`Movement…` / `Actions…`) | Input | GEPD-style preset | | `Auto-aim` / `Look ahead` | Gameplay | Off (watch-backed) | -| `Skip intro` / `No hit flash` | Gameplay | Off | +| `Skip intro (EXPERIMENTAL)` / `No hit flash` | Gameplay | Off | | `All unlocked (EXPERIMENTAL)` | Gameplay | Off | +| `Sight on screen` / `Ammo on screen` | HUD | On (watch-backed) | | `HUD scale` | HUD | 100% (75–150%) | -| `Show crosshair` / `Crosshair colour` / `Crosshair size` / `Crosshair style` | HUD | N64-intact (size 100%) | +| `Show crosshair` | HUD | On | +| `Crosshair colour` | HUD | Original (red) | +| `Crosshair size` | HUD | 100% | +| `Crosshair style` | HUD | Original (Original / Thin cross) | +| `Native widescreen` | Graphics | On | +| `Widescreen auto FOV` | Graphics | On | +| `Crop overscan` | Graphics | On | +| `Anti-aliasing` | Graphics | 2× (1/2/4/8, clamped to driver max) | +| `Texture filter` | Graphics | Bilinear (Nearest / Bilinear / 3-Point) | +| `Anisotropic filtering` | Graphics | 4× (1–16) | +| `FOV scale` | Graphics | 100% | +| `Draw distance` / `LOD distance` | Graphics | 250% (100–400%) | +| `Music volume` / `FX volume` | Audio | 100% (watch-backed) | +| `Fullscreen` | Video | Off (windowed) | +| `Resolution` | Video | Auto windowed preset | +| `VSync` | Video | On | +| `Frame rate cap` | Video | 60 (30 / 60) | +| `Show FPS` | Video | Off | --- -## Things to know +## Caveats - **NTSC-U (US) ROMs only.** PAL and JP ROMs are not supported in this version; asset repair for those regions is on the post-release roadmap. diff --git a/.github/social-preview.html b/.github/social-preview.html index 2050c42c..3aa0c427 100644 --- a/.github/social-preview.html +++ b/.github/social-preview.html @@ -124,12 +124,12 @@
REPORT:
-
Status: RELEASED v0.3.0 — WINDOWS · LINUX · STEAM DECK
+
Status: RELEASED v0.4.0 — WINDOWS · LINUX · STEAM DECK
Statistics:All 20 solo missions — full campaign completed in playtesting ~230 game-code units, compiled unmodified - ~24k lines C/C++  ·  ~7k Python (port layer + tools) - 199 findings root-caused  ·  two coding agents, one human, part-time + ~25k lines C/C++  ·  ~14k Python (port layer + tools) + 286 findings root-caused  ·  two coding agents, one human, part-time
diff --git a/.github/social-preview.png b/.github/social-preview.png index 60ae6e0e543cae32b3ad977d99523a71a9a735fa..d9ebd2c9c73f855a5c372c57074b41b27a5d2ab1 100644 GIT binary patch delta 287618 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

uT*AjQ)hx^Q_L~q`H60=N` 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

4S<0J-@hKyaPj2_rd0>GD0)TOu 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
mR4NgV?pgne4rWE(eN-&{P>7leN!ZOaKB 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
An%D3y_8tt!z={xhczjBw|$bpD+h*N5r4SY^z4 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 diff --git a/AGENTS.md b/AGENTS.md index 36ca548b..770746df 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -5,7 +5,8 @@ - `n64decomp/007`: WIP decompilation of GoldenEye 007 (N64), byte-matches US/EU/JP ROMs. - Active work: **PC port** modelled on the Perfect Dark PC port (same Rare "Indy" engine family). - **Reference docs:** `docs/internals.md` — architecture, GE-specific RSP deltas, phased plan (§1–§10). `docs/dev/findings.md` — the `Dxx` finding log (§F + §H). **Look up findings via `docs/dev/findings-index.csv` (label, one-liner, status; regenerate with `tools_pc/gen_findings_index.py`), then read only the specific `## Dxx` entry (multi-pass labels like D202/D176(a) have large sections — grep within the section or read with offset/limit, don't slurp it whole). Never linear-read.** `docs/porting-notes.md` — the recurring N64→PC bug classes (dense; skim the headers, read what's relevant). -- **Current status:** the README "Status" section, and `docs/dev/LEVEL-STATUS.md` for the per-level sweep. Current task + environment: `docs/HANDOFF.md` (a rolling local working file — may be absent in a fresh clone; fall back to the README "Status" section). +- **Open work / known issues:** `docs/ROADMAP.md` — the single tracker; add new items there, never start a new backlog/roadmap file. +- **Current status:** the README "Status" section (`docs/dev/LEVEL-STATUS.md` is a historical per-level sweep record). Current task + environment: `docs/HANDOFF.md` (a rolling local working file — may be absent in a fresh clone; fall back to the README "Status" section). - **Dispatching subagents?** `docs/dev-process.md` — task budgets/deadlines, file partitioning, pre-flight, the standard brief template. Every investigation subagent reads `docs/porting-notes.md` first and appends to it. ## Non-negotiables @@ -23,7 +24,7 @@ | `docs/internals.md` | Architecture + RSP deltas + phased plan (§1–§10). Reference, not a linear read. | | `docs/dev/findings.md` | The `Dxx` finding log (§F/§H); lookups via `docs/dev/findings-index.csv`. | | `CMakeLists.txt` | PC build (parallel to the N64 Makefile). Source list + `REGION_DEFS` live here. | -| `port/src/` | Shims: `libultra.c` (OS API), `gesched.c` (scheduler), `n64stubs.c` (boot/TLB/FPU/rmon), `random.c` (PRNG ported verbatim from `random.s`), `ucode.c` (microcode segment markers), `main.c`, `video.c`, … | +| `port/src/` | Shims: `libultra.c` (OS API; also shims the scheduler's hardware leaf calls and runs the software RSP inline — the game's real `src/sched.c` is compiled), `n64stubs.c` (boot/TLB/FPU/rmon), `random.c` (PRNG ported verbatim from `random.s`), `ucode.c` (microcode segment markers), `main.c`, `video.c`, … | | `port/fast3d/` | Software RSP (adapted from the PD port). The main Phase 2 work. | | `rsp/graphics/gmain.s` | GE's RSP ucode — ground truth for GBI/CC/RM. | | `reference/mouse-injector/README.md` | **Stub only** — the vendored GEPD-Edition Mouse Injector source (GPLv2) was removed from the public repo 2026-09-19 (license hygiene: GPL code + prebuilt binary in an MIT project; it was never compiled here). The stub records provenance + how to re-vendor locally (gitignored). The ported mouse-aim model lives in `port/src/input.c` (D194 lineage); design record: `docs/dev/GEPD-INPUT-PLAN.md`. | @@ -94,25 +95,14 @@ Needs CMake + SDL2 + zlib + OpenGL, and must run from the MSYS2 MINGW64 shell ## Verification ritual (after any build-affecting change) -1. **Undefined symbols.** Every symbol referenced by the compiled set (see `CMakeLists.txt`: `SRC_GAME`, `SRC_ENGINE`, `SRC_LIBAUDIO`, `SRC_LIBULTRARE_AUDIO`, `SRC_LIBULTRARE_DATA`, `SRC_GU`, `SRC_PORT*`) must be defined exactly once in the compiled set or in `port/`. Symbols that live in EXCLUDED files (`libultra/io/*`, `libultrare/io/*` except `vitbl.c`, `libultra/os/*`, `libultrare/os/*`, `sched.c`, `rmon.c`, `vi.c`, `src/*.s`) must be provided by `port/src/libultra.c`, `gesched.c`, `n64stubs.c`, `random.c`, or `ucode.c`. +1. **Undefined symbols.** Every symbol referenced by the compiled set (see `CMakeLists.txt`: `SRC_GAME`, `SRC_ENGINE`, `SRC_LIBAUDIO`, `SRC_LIBULTRARE_AUDIO`, `SRC_LIBULTRARE_DATA`, `SRC_GU`, `SRC_PORT*`) must be defined exactly once in the compiled set or in `port/`. Symbols that live in EXCLUDED files (`libultra/io/*`, `libultrare/io/*` except `vitbl.c`, `libultra/os/*`, `libultrare/os/*`, `sched.c`, `rmon.c`, `vi.c`, `src/*.s`) must be provided by `port/src/libultra.c`, `n64stubs.c`, `random.c`, or `ucode.c`. 2. **Duplicates.** No symbol defined twice across the compiled set (watch `sp_*` stacks, `rmon*`, `os*` shims, segment markers). 3. **Syntax.** Every touched file must parse; `./build-pc.sh` is the final word. Run `/linkcheck` for this sweep. Record new findings in `docs/dev/findings.md` §F/§H style (next `Dxx` label after the last used) and add the label to the §F index. -## Phase status (summary — see README + `docs/dev/findings.md` for detail) +## Phase status -- **Phase 0–1.5:** done. Build system, boot chain, OS-shim layer, fast3d - integration, first frames, full intro rendering. -- **Phase 2 (rendering):** in progress. All 20 solo missions (plus the - ending-credits sequence, `-level_54`) load + render + survive an - unattended window; front end (menu → mission select → briefing → - start) is functional; file-backed EEPROM saves work. Cosmetic defects are - parked in `docs/dev/GRAPHICS-BACKLOG.md`. -- **Phase 3 (audio + input):** input layer done (`port/src/input.c`); polish - bugs open (D118* mouse-look residuals; interactive feel-checks owed). Audio - mixer done (libaudio → SDL software mixer, D198–D201); D204 tempo drift - fixed + measured; D202 stuck door loop root-caused with a port-side - expiration (M-66b) awaiting by-ear verification. -- **Phase 4 (saves + polish):** file-backed EEPROM done; widescreen, config, - rebinding UI outstanding. +Do not keep a status summary here — it goes stale. Open work, known issues +and decisions owed: **`docs/ROADMAP.md`** (the single tracker). Current +release state: the README "Status" section. diff --git a/CLAUDE.md b/CLAUDE.md index 4d4f106d..a0952eb8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -16,6 +16,8 @@ Context is scarce. Load by tier; do not blind-read whole files. `docs/HANDOFF.md` (current state + next task + environment — a rolling local working file; may be absent in a fresh clone, in which case read the README "Status" section instead) — read fully; + `docs/ROADMAP.md` (the single tracker of open work — read the section + relevant to the task); `docs/porting-notes.md` (recurring bug classes) — skim the section headers, read the classes relevant to the task. - **Tier 2 — on demand only, do NOT read start-to-finish:** diff --git a/README.md b/README.md index bfa84066..4fc9442d 100644 --- a/README.md +++ b/README.md @@ -131,32 +131,12 @@ graphics, audio; frame cap, MSAA, filtering, FOV, sensitivity, key rebinding, crosshair, vibration); Windows and Linux, including Steam Deck. -**Known issues:** +**Known issues:** see the **[known-issues table](docs/ROADMAP.md#known-issues)** +(what you'll notice, impact, workarounds). The short version: no multiplayer +yet, NTSC-U ROMs only, no macOS/ARM builds, and a couple of cosmetic defects. -- On Facility, if gas leaks during Ourumov's monologue he can pause for up to - ~10 s before resuming the scripted shootout — a latent race that exists in - the N64 original too (where it softlocks permanently); the port detects and - auto-recovers it (D318). -- With native widescreen on, the F10 options overlay stretches with the - window instead of pillarboxing like the front-end menus (legible; cosmetic; - the F10 *Native widescreen* toggle restores the old stretched frame - throughout). The world/HUD widescreen rendering itself is correct (D335b). -- The Rareware front-end logo shows a subtle texture-filtering artifact - (Nintendo logo and legal page are clean). Cosmetic only (D75). -- This release ships NTSC (US) assets; PAL/JP ROMs are not supported in this - version (D258). -- **`All unlocked` is experimental: back up `data/ge007.eep` before enabling - it.** Any save while ON, even a profile-settings change, can permanently - write artificial cheat unlocks and completion times into the EEPROM; - switching OFF does not undo them (D387). Do not use it on a save whose - original progression you need to preserve. -- Assorted further cosmetic defects are tracked in - [`docs/dev/GRAPHICS-BACKLOG.md`](docs/dev/GRAPHICS-BACKLOG.md). -- No macOS or ARM support. Keyboard/mouse rebinding shipped in v0.4.0; - controller-button rebinding is not supported yet. - -Root causes and fix status for every item: the [release notes](https://github.com/jkdansereau/goldeneye-pc-port/releases) -and the finding log in [`docs/dev/findings.md`](docs/dev/findings.md). +> **Before enabling `All unlocked`, back up `data/ge007.eep`.** Saving with it +> on can permanently write fake unlocks into your save (D387). ### Steam Deck @@ -191,23 +171,23 @@ overlay is `F10` + arrows/Enter. ## Roadmap -No fixed timeline or committed feature list — this is spare-time work — but -directionally, on the way to v1.0: +The goal is a **feature-complete, faithful** port: every mode and region the +N64 cartridge ships, behaving 1:1 with the original. The full list of open +items, and which ones are waiting on a decision, lives in one place: +[`docs/ROADMAP.md`](docs/ROADMAP.md). In brief: -- Working through the [known issues](#status) above and the fuller list in - [`docs/dev/findings.md`](docs/dev/findings.md). -- **PAL and JP ROM support** ([issue #85](https://github.com/jkdansereau/goldeneye-pc-port/issues/85)); NTSC-U is the only supported region today. -- **Controller (pad) button rebinding UI** (keyboard/mouse rebinding shipped - in v0.4.0), and macOS/ARM builds. -- **LAN multiplayer**: reviving GoldenEye's original split-screen/deathmatch - netplay across multiple PCs on a local network. Genuinely under - consideration, but early and not started; no ETA. -- General polish: performance, remaining rendering/audio defects, save/config - robustness. +- **Split-screen multiplayer** (2–4 players), the largest missing N64 feature + ([#99](https://github.com/jkdansereau/goldeneye-pc-port/issues/99)). +- **PAL and JP ROM support**. NTSC-U is the only supported region today. +- The remaining small accuracy differences (audio timbre, a few cosmetic + rendering details). +- **macOS/ARM builds** and controller-button rebinding. -Not currently planned: new game modes GE never shipped (e.g. co-op), online (non-LAN) -multiplayer, ray tracing. If any of these matter to you, open an issue — -it helps prioritize. +This is spare-time work, so there's no timeline. Opt-in extras beyond the N64 +game (LAN play, bots, HD textures) come after feature-complete, if at all. +Not currently planned: co-op or other modes GE never shipped, online +multiplayer, ray tracing. If any of these matter to you, open an issue — it +helps prioritize. --- @@ -387,9 +367,9 @@ The R4300 game code in `src/` is compiled completely unmodified; the decompilation's control flow is ground truth. Everything that would touch N64 hardware is redirected into `port/`: a **software RSP** (`port/fast3d/`, adapted from the Perfect Dark port) that interprets the GBI display list the -game builds each frame and emits OpenGL, bypassing the RDP; a scheduler -replacement (`port/src/gesched.c`) that drives it directly; single-threaded -libultra OS shims (`port/src/libultra.c`); and SDL2/OpenGL/filesystem backends +game builds each frame and emits OpenGL, bypassing the RDP; libultra OS shims +(`port/src/libultra.c`, game threads as real host threads) that let the +game's own scheduler run and drive the software RSP inline; and SDL2/OpenGL/filesystem backends for video, audio, input and storage. The 32→64-bit transition forces a small, cataloged class of mechanical ABI-only edits to ROM-serialized structs (pointer-width reconciliation); these change no behavior and are documented diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md new file mode 100644 index 00000000..770b7a9d --- /dev/null +++ b/docs/ROADMAP.md @@ -0,0 +1,263 @@ +# Roadmap and open items + +**This is the single tracker for high-level work on the port.** If an item +is not here, it is either done or not planned. The README's *Known issues* +and *Roadmap* sections are short summaries of this file. Root-cause detail +for each `Dxx` lives in [`dev/findings.md`](dev/findings.md) (find it via +[`dev/findings-index.csv`](dev/findings-index.csv); that index is generated, +first-line-only, and can lag the entry tail, so read the entry). + +Last full triage: 2026-09-29. Sources: the findings log, all GitHub issues, +PRs and releases, every local backlog/plan/roadmap note, `HANDOFF.md`, all +local and remote branches, and known community forks. + +## How to use this file + +- **One row per item.** Link the `Dxx` and/or GitHub `#issue`. Keep detail + in the finding, not here. +- **Status vocabulary:** `open` · `partial` · `verify` (fixed, a live check + is owed) · `parked` (work exists on a branch or patch, not merged) · + `decision` (blocked on a maintainer call). +- **When an item closes, delete its row.** The history is kept in the + finding and in git. Do not strike rows through. Struck rows are what made + the old backlogs unreadable. +- **New work goes here first.** Do not start a new backlog, roadmap or + plan-of-record file. A design doc for one item is fine; link it from the + row and delete it when the item lands. +- Release scoping (which items go into which version) happens in the + release notes, not here. +- **Known issues** (the player-facing subset) live in the table below. The + README links to it and does not duplicate it. + +## Goal and definition of done + +**Feature complete and faithful to the N64 original.** Every mode and +region the cartridge ships should work and behave 1:1 with the N64, +checked against an accurate emulator (1964/GEPD) or real hardware. On top +of that sits a **modern-remaster layer** (the bar set by Nightdive's +Quake/Turok remasters, the XBLA remaster and GE+/Dab's mod). It must never +change game logic by default, and it must always be possible to get back +to the original look and feel (see the *Original N64 preset* in §5). + +The port is **feature complete** when all of these hold: + +1. Every solo mission (all 20 plus the credits) is completable at every + difficulty, on Windows and Linux. +2. No crash on any level under normal play, on either platform. +3. Audio is complete and faithful: music, positional SFX, menu and weapon + sounds. +4. Cutscenes play correctly (camera, actor positions, timing). +5. AI locomotion and pacing match the N64. +6. Input feels like GoldenEye on a controller, and like a modern FPS on + mouse and keyboard. +7. Rendering has no visible defect versus 1964/GEPD at default settings, + apart from the port's deliberate modern defaults. +8. **Multiplayer (2–4 player split-screen) works.** It is the largest item + left (§1). +9. **PAL and JP ROMs work** (§1, pending a decision). + +**Exit gate:** a full two-platform campaign playthrough at more than one +difficulty, plus a split-screen session, on a build with the §3 +verification debt cleared. + +Where things stand (2026-09-29): 1–7 hold for NTSC-U, with the small +accuracy gaps listed in §2. 8 and 9 are open. + +## Known issues + +What a player will notice in the current release. **This table is the +single list:** the README links here instead of keeping its own copy. When +an issue is fixed and released, delete its row. When a new player-visible +issue is confirmed, add a row here (and its tracking row in the sections +below). + +| Issue | Impact | Workaround | Tracking | +|---|---|---|---| +| Multiplayer isn't available yet | Missing feature | — | #99, §1 | +| PAL and JP ROMs aren't supported | NTSC-U only | Use an NTSC-U ROM | D258, §1 | +| **`All unlocked` can permanently write fake unlocks into your save** | Save corruption | Back up `data/ge007.eep` before enabling it; don't use it on a save you care about | D387, §5a | +| `Game.SkipIntro` also skips the post-mission failure dossier | Minor | Leave SkipIntro off | D408, §2 | +| F10 overlay stretches in native widescreen (menus pillarbox correctly) | Cosmetic | — | D335b, §5a | +| Rareware logo shows a subtle texture-filtering artifact | Cosmetic | — | D75, §2 | +| Steam Deck: a first launch in Desktop Mode skips the Deck preset | Settings | First launch in Game Mode, or delete `ge007.ini` and relaunch | D283, §4 | +| ~30 fps on very low-end GPUs (e.g. Intel HD 400) | Performance | Set `Video.LowEndMode=1` in `ge007.ini` | D339, #92, §4 | +| No macOS or ARM builds | Platform | — | #88, #95, #101, §4 | +| Controller buttons can't be rebound in-game (keyboard/mouse can) | Missing feature | — | #109, §5a | + +--- + +## 1. Feature completeness vs the N64 cartridge + +| Item | Status | Refs | Notes | +|---|---|---|---| +| **2–4 player split-screen multiplayer** | parked | #99, D416–D423, branch `feat/mp-splitscreen-99` | The largest missing N64 feature. 2P has been live-tested (M&K + pad, respawn, 16:9 HUD). Before merge: Rule-2 review of `PROP__PORT_SIGNED` (D417) and a golden gate run on the maintainer's console. Open on the branch: D420 (stats screen shows a large number), D421 (gadget cycling off; needs a Rule-2 game-thread hook), D422 (no centred aim for P2+), D423 (black arrowhead in P2 view), and D428's sway accumulator is player-0-only. Untested: 3P/4P, pads-only mode, pause/watch/F10 during a match, MP audio, most stages, and the full N64 MP setup screens (scenarios, handicaps, teams). Needs per-pad seats (§5). An outside restore exists for reference: birdturtle `feature/local-mp-input`. | +| **PAL and JP ROM support** | decision | D258, D75 (pal/jpn sidecar regen), #85 | Conversion is broken at the source-data level (filelist naming). A repair path has been verified but not applied. Needs PAL/JP ROMs to test. #85 was closed as "retired for now", not won't-do, so public users currently have no tracker. Reopen it or file a fresh one when work starts. | +| Drop-in ROM converter, remaining parts | decision | #6, [`dev/release-dropin-rom-plan.md`](dev/release-dropin-rom-plan.md) | NTSC-U drop-in shipped. Left: per-region output names and re-exec guard (with PAL/JP), native C emitters to replace the PyInstaller converter. | +| Cut content (TCRF weapons/items) | decision | [`dev/CUT-CONTENT-BACKLOG.md`](dev/CUT-CONTENT-BACKLOG.md) | Not part of the shipped game. Tier 0 already works via the debug/cheat menus. Tier 1 (config-toggle grants) is small and port-only. Tier 2/3 (placing props, re-enabling unused MP maps) need game data changes and are out of scope for this repo. | + +## 2. Accuracy (behaviour differs from the N64) + +| Item | Status | Refs | Notes | +|---|---|---|---| +| Auto-fire gunshot sound slightly differs from 1964/GEPD | open | D433, #114 | Cadence now matches the N64 rules exactly. The residual is timbre (resampler / release envelope suspected). Needs a precise by-ear description. | +| SFX voice cap and long-session audio decay | partial | D322, #87 | The Windows periodic garble is fixed. Still open: is the 8-voice cap faithful, and the progressive decay that #87 reported (not reproduced here). The owed GitHub housekeeping is in `docs/dev/notes/ISSUE-87-FOLLOWUP.md` (local). | +| Auto-fire gate at unstable 40–55 fps | partial | D427 | Exact at a steady 60 or 30 fps. At fluctuating rates it can flip between 1× and 2×, because `field_88C` is never rescaled. | +| Third-person Bond offset residual | partial | D173, D292 | Mostly fixed. A small drift remains about 1 time in 10. | +| Statue corner flicker at max FOV | partial | D294 | Room-pool residual after the black-ground fix. | +| Crash on save slots 1/3/4, plus a host BSOD (fltmgr.sys) | open | #94 | Needs a repro. Two maintainer retest requests (v0.3.0, v0.4.0) got no reply. Likely D299/D301 (save-slot crash, fixed) and D344 (BSOD on exit, fixed). Close as stale if there's still no reply, and reproduce locally rather than asking the reporter again. | +| SkipIntro skips the post-mission failure dossier | open | D408, D216 | Only affects the experimental `Game.SkipIntro` option. The audio-break half of D216 is also unrooted. | +| Front-end: Rareware logo filtering, cast-roll models | partial | D75 | Cosmetic. The other front-end logos are fixed. The cast-roll character models have never been verified. | +| Authored mip chains not sampled for explicit-LOD textures | parked | D323 | Distant textures use driver mips instead of Rare's hand-authored chain (heaviest on Statue/Aztec). Parked as a fidelity enhancement. | +| Approximations in the software RSP | open | `gfx_pc.cpp` `G_CCMUX_LOD_FRACTION`; `Video.WrapFix` (§F row `RC3 · D167`, D74 family) | The LOD-fraction CC input is an eyeballed approximation. The non-power-of-two wrap fix is still opt-in (default off), with unknown visible impact. Both need a comparison against 1964. | +| Latent 64-bit ABI hazards | open | #107, #108; ~396 `-Wpointer-to-int-cast` sites (count from a local review note; re-count with a `-Wpointer-to-int-cast` build); AUDIT-M6 `struct player`/`struct hand` raw offsets (porting-notes §A1) | Harmless today, because the arena sits low in the address space. They would bite on macOS/ARM/ASLR. The fixes fall under the AGENTS.md ABI/layout exception. **#108 concern:** widening the `sndPlaySfx` bound disables the guard on every platform; prefer a range check. Check #107 against D430/D431/D434, which touch the same `lightFindVertexBaseForTri` region. A read-only provenance pass over the 396 sites is a good delegate task. | +| Controller preset parity (Xbox "Jinx" 1.1, 1.2/1.3 selector) | partial | D394 | The gadget category and pad-initiated binding capture are still open. | + +## 3. Verification debt (fixed; a live check is owed) + +A single campaign pass with these on the checklist would clear most of them. + +| Item | Refs | Check | +|---|---|---| +| Light-fixture hit-type reads (impact sound + sparks) | D434, #119 | Shoot fixtures on Bunker and Caverns. | +| v0.4.1 batch (unreleased; fixes live on `release/v0.4.1`) | D424–D432; #114 fire rate, #115 tank-crush audio loop, #116 tank movement, #117 sway, #118 GL recoil, #119 light fixtures | All user-verified against GEPD/1964 on 2026-09-29. Close the issues when it ships. | +| FOV-scale edge culling | D222 | Max FOV, pan across NPCs at the screen edge. | +| Water pulse, Surface 2 | D229 | Frigate is verified. Only the Surface 2 by-eye check is owed. | +| Linux save/config path when launched outside the game dir | D256 | Save-flow check on Linux. | +| Settings/F10 batch | D356, D358, D361, D363, D374, D406 | Live accept of each item in the F10 overlay. (D377–D379 residuals were waived.) | +| Controller feel | CONTROLLER-INPUT-PLAN Wave A, D204 | Per-stick deadzone/smoothing feel on a pad and on Deck; D204 tempo by ear; `Input.RumbleScale=0` silences rumble. | +| Widescreen HUD at 21:9 | D334/D335 | One ultrawide HUD playthrough. | +| Older "owed" notes likely cleared by the 2026-09-28 campaign sign-off | D150, D177, D264, D369, D371, D372 | Tick off in findings (bookkeeping only). | + +## 4. Platform + +| Item | Status | Refs | Notes | +|---|---|---|---| +| macOS (Intel + Apple Silicon) / ARM64 Linux | open | PRs #88, #95; #101 | Outside drafts. The maintainer tests firsthand before merging. Needs the ABI-hazard sweep in §2. | +| Linux as a co-equal platform | decision | — | Does Linux carry the same sign-off gate as Windows (a full sweep of all 21 levels)? The last known Linux crash (D190) was closed as not-a-bug. | +| Low-end GPUs (~30 fps on Celeron/HD 400) | open | D339, #92 | Needs `GE_PERFSTAT` data from that class of hardware. The D372 low-end preset is the mitigation. | +| Steam Deck preset skipped when first launched from Desktop Mode | open | D283 | Workaround is documented in the README. Make the fix not depend on the env var. | +| Windows 7 | decision | #98 | Recommend won't-fix (toolchain). | + +## 5. Modern-remaster layer (port features beyond the N64) + +**The bar:** feature parity with a Nightdive-style remaster and with +GE+/Dab's mod where it's practical. Shipped so far: native widescreen and +ultrawide, FOV, MSAA/anisotropic/texture-filter options (including N64 +3-point), draw and LOD distance, VSync and a frame cap, show-FPS, +keyboard/mouse rebinding with a GEPD-style layout, pad deadzone, +sensitivity, smoothing, southpaw and triggers, rumble, crosshair and HUD +customisation, HUD scale, music/FX volume, no-hit-flash, SkipIntro +(experimental), All unlocked (unsafe, see D387), and the F10 overlay. + +The modern defaults (native widescreen, overscan crop, 250% draw/LOD +distance, bilinear filtering) are **deliberate**. They are not a fidelity +defect. + +Background research lives in the maintainer's local notes (gitignored): +`GEPORT-REFERENCE-DEEPDIVE.md`, `MODERN-PORT-FEATURES-BACKLOG.md`, +`MODERN-OPTIONS-PLAN.md` and `PD-LEGACY-SURVEY.md` under `docs/dev/notes/`. + +### 5a. Before 1.0 + +| Item | Status | Refs | Notes | +|---|---|---|---| +| **"Original N64" preset toggle** | open | — | One switch that snaps every value the port has changed back to N64 values: draw/LOD distance, culling, texture filter (3-point), 4:3, no overscan crop, stock FOV, N64 aim. It's cheap, because each is already a config key. This is the port's answer to the XBLA/Nightdive "original vs enhanced" switch. | +| `All unlocked` writes fake unlocks into the real save | open | D387 | **The only data-integrity bug.** Fix it or gate the option harder. Until then, the README warns users to back up the EEPROM. | +| Settings units and values cleanup | decision | D357 ([plan](dev/D357-SETTINGS-VALUES-PLAN.md)) | Awaiting sign-off. Its "Now" column is partly stale: the deadzone is already split L/R, and draw/LOD defaults are 250, not 150. Covers FOV in degrees, sensitivity shown as ×, MSAA 16×, filter naming, volume step and the FPS preset grid. | +| Gamepad button rebinding UI | open | PR #109, D394 | Keyboard/mouse rebinding has shipped. Review #109 under the outside-PR policy. | +| Per-pad tuning (device index, hot-plug seats) | open | — | Needed for split-screen anyway. | +| Full-gamepad menu navigation audit, Xbox/PS button glyphs | open | — | Menus are only partly audited for pad-only use. There are no glyphs yet. | +| Mute and auto-pause on focus loss; PNG screenshots to `screenshots/` | parked | D231, PR #56 (closed unmerged), `docs/dev/notes/parked/0001-QoL-*.patch` (local) | Deprioritised by the maintainer on 2026-09-25. F12 today is the dev PPM dump. | +| F10 overlay polish | open | D335b, #90 | Pillarbox the overlay in widescreen; colour experimental rows red; warn on unknown `ge007.ini` keys (promised in #90; today they are only logged). | +| Master volume, audio output device select | open | — | | +| Frame rate above 60 (120/144/uncapped with interpolation) | decision | [`dev/UNLOCKED-FPS-PLAN.md`](dev/UNLOCKED-FPS-PLAN.md) | The menu cap is {30, 60} (the ini accepts 0 = uncapped, but the sim ticks at the VI rate). The plan's premise predates the D248 real-60 fix, so re-measure first. Must stay compatible with netplay determinism. | + +### 5b. GE+ / Dab's-mod gameplay options (opt-in; touch game code) + +| Item | Status | Refs | Notes | +|---|---|---|---| +| Disable knockback / hitstun, damage sound, endless death cam | decision | hooks at `chraction.c:2233`, `gunfire.c:3334`, `bondview2.c:8354` | Needs one batched Rule-2 sign-off. | +| Bodies stay where they fell | decision | — | | +| Port-native third-person camera | decision | #110 | The 007 Plus ROM patch itself is out of scope. Decide whether a port-native TP camera is in or out. | + +### 5c. Enhanced visuals (optional; after feature-complete) + +The XBLA/Nightdive-style "new look". None of it has started in this repo. +An outside fork has a large Original/Enhanced/Remaster render-mode stack +(see *Community forks* below). Adopting any of it is its own decision and +needs Rule-2 review. + +| Item | Status | Notes | +|---|---|---| +| Post-process chain: FXAA/SMAA, bloom, depth of field, colour grade/LUT, CRT filter, brightness/gamma, colourblind filters, SSAO | decision | Build the framebuffer pass once. Every effect defaults OFF. | +| Render scale / supersampling, integer scaling, "authentic 320×240" mode | open | | +| Dynamic/coloured lighting, dynamic shadows, water reflections | decision | Large. Consult the PD port first. #105 is about the fork's version of reflections, not ours. | +| HD texture packs: loader + texnum dumper; model packs | decision | #100. There is a staged design. Step 1 (texture identity registry) touches `src/game`, so it needs Rule-2 framing. | +| Animation smoothing (keyframe slerp) | open | | + +### 5d. Extras (nice to have) + +In-game console · demo/replay record and playback (doubles as the +determinism harness, §7) · photo mode · benchmark mode · subtitles · HUD +opacity and a flash-intensity slider · a screen-shake slider that covers +every shake source (D181 only scales explosions) · F11 video recording · +in-game patch notes and update check · mod loader (parked: branches +`land/modloader-*`, D413/D414; only the content tier M1/C3′ is viable here) +and a stage loader. + +## 6. Multiplayer beyond the N64 + +| Item | Status | Refs | Notes | +|---|---|---|---| +| LAN netplay | decision | — | Depends on split-screen. Determinism groundwork is D117 (not achieved). | +| MP bots | decision | #111 | Not N64 (GoldenEye's MP is human-only; Simulants are Perfect Dark). birdturtle `simulants` is an outside prototype. | +| Co-op campaign | decision | — | Not N64. thepont `feature/coop` is an outside prototype. Listed under Not planned unless this changes. | +| Cheats beyond the N64 cheat menu | decision | #113 | Only in scope as an opt-in toggle. | + +## 7. Tooling, infrastructure, security + +| Item | Status | Refs | Notes | +|---|---|---|---| +| Security review follow-ups | open | maintainer's local security review | Four open hardening items: one Medium (self-hosted CI workflow input handling), the rest Low (local-input only). Details are kept out of this public file. Also: pin Actions by SHA, pin `pyinstaller`, take the Dependabot action bumps (#1/#2). | +| Deterministic 1964-vs-port comparison harness | open | — | Would replace by-eye/by-ear fidelity checks. Highest-leverage tooling item. | +| Scripted-playthrough harness | open | `GE_INPUTSCRIPT` | Input script + `GE_PCDUMP` + crash-log check, for unattended regression runs. The tool exists; the harness doesn't. | +| Golden baselines | open | `tools_pc/verify.sh`, D117 | bunker1 has been noisy since M-84, so the per-patch gate is unreliable. Re-base it, extend to all 21 levels × both platforms, and finish `GE_DETERM`. | +| Self-hosted CI runner link failure | open | D244 | Needs a `pacman -Syu` on the runner (maintainer-only access). Release tag builds use GitHub runners, so it doesn't block a release. | +| `build-pc.sh` TMP self-heal fails in-script | open | AGENTS.md | A standalone `.ps1` workaround is documented. | +| Remove temporary scaffolding before a release | open | [`dev/GE-ENV-PROBES.md`](dev/GE-ENV-PROBES.md), D302 | Probes: D207S, D157, D252POOL, D245V, D236 (RAW/RM/ORDER/ALPHA/ZFIX/BT), D288, D309, D318B/D320 repro, `GE_OBJT`. Tools: `tools_pc/scan_op12.py`, `scan_op13.py`. Also demote the D318 watchdog to detect-and-log (D329 removed the cause), remove the M-183/M-185 clamps after a full cutscene re-check, and grep hot paths for `getenv` (D302 repeat offender). | +| `crash.c` backtraces | open | — | The EBP walk dies at frame 1. Switch to `CaptureStackBackTrace`/`StackWalk64`. | +| `romdata.c` VirtualAlloc fallback hardening | open | D179 tail | Minor. | +| Findings log and doc size | open | — | `findings.md` is about 2 MB and growing. It needs the deferred porting-notes TOC and docs-budget script (context cost for every session). | +| Branch and PR housekeeping | open | — | Push local `main` (5cccbcef, post-v0.4.0 bookkeeping). Prune the ~20 squash-merged branches: keep `feat/mp-splitscreen-99`, `land/modloader-*` and `research/cut-content-backlog`, and first confirm the single unique commits on `feat/unlocked-fps-phase1-audit` and `docs/m138-security-disclosure` landed. PR #62 (mouse dt-decouple) stays held until mouse feel is fundamentally better. | +| Docs site: Web 1.0 phase 2 | decision | — | Phase 1 shipped. Phase 2 (centred serif page) is plan-only. | + +## Community forks (not ours; reference only) + +| Fork | What it has | Relevance | +|---|---|---| +| thepont/goldeneye-pc-port `feature/graphics-final-stack`, `fix/original-water-fidelity`, `feature/coop` | ORIGINAL/ENHANCED/REMASTER render mode, lighting, post-FX, bump/shadow/DoF, water reflections, vector HUD font, 2P co-op | Source of #105. Heavy `src/game` edits. **Their D323–D326 and "D329" labels clash with ours**, so relabel anything ported. | +| birdturtle `feature/local-mp-input`, `simulants` | Local MP restore; first MP bot | Cross-check for #99 and #111. | +| kaziema `vita` | PS Vita port | Platform reference. | +| mattymattmattmatt/goldeneye-pcvr-port `vr/stereo-headaim` | VR stereo + head aim | Platform reference. | + +## Decisions owed (maintainer) + +1. **PAL/JP:** pursue it (needs those ROMs; also unblocks drop-in Part B), or stay NTSC-only? +2. **Split-screen:** approve the D417 Rule-2 change, then merge `feat/mp-splitscreen-99`. +3. **D387:** fix `All unlocked`'s save leak, or restrict the option? +4. **D357:** sign off the settings units/values plan (after refreshing its stale table). +5. **GE+ gameplay options (§5b)** and a port-native third-person camera: in or out? +6. **Enhanced visuals (§5c):** build our own, adopt parts of thepont's stack, or skip? +7. **Beyond-N64 multiplayer (§6):** netplay, bots, co-op, cheats. In scope after feature-complete, or not? +8. **Linux co-equal status** and **release cadence / tag policy**. +9. **Outside PRs:** #107 and #108 (with the guard concern), #109, #88/#95. Review order. +10. **D433 gunshot timbre, D323 authored mips:** worth chasing, or accept? + +## Not planned + +Online (non-LAN) multiplayer, matchmaking, leaderboards, anti-cheat, +cross-play · Steamworks, achievements, cloud saves (no storefront) · ray +tracing, HDR, frame generation, stereo 3D · remake-scope assets (new +models, music or voice) · new movement mechanics (jump, roll, melee) · the +007 Plus ROM patch as such (#110) · co-op (unless decision 7 changes it) · +Windows 7 (#98, pending decision). diff --git a/docs/_config.yml b/docs/_config.yml index 14895403..0d959a57 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -45,23 +45,18 @@ plugins: exclude: - BACKLOG.md - HANDOFF.md + - ROADMAP.md - SetupGuide.md - StructureGuide.md - StyleGuide.md - dev/AUDIO-PLAN.md - dev/AUDIT-M6-player-offsets.md - - dev/D172-PARTICLE-COLOR-RESEARCH.md - dev/D176a-SKY-NOTES.md - dev/GE-ENV-PROBES.md - - dev/GRAPHICS-BACKLOG.md - dev/HANDOFF-ARCHIVE.md - dev/LEVEL-OBJECTIVES.md - dev/LEVEL-PLAYTEST.md - dev/LEVEL-STATUS.md - - dev/LINUX-PORT.md - - dev/M-35-PLAYTEST-CHECKLIST.md - - dev/M-35-QOL-REVIEW.md - - dev/M-36-TRIAGE.md - dev/MODERN-PORT-FEATURES-BACKLOG.md - dev/OPTIONS-MENU-PLAN.md - dev/QOL-INVENTORY.md diff --git a/docs/dev/AUDIO-PLAN.md b/docs/dev/AUDIO-PLAN.md index 8b6d8853..80ab96ec 100644 --- a/docs/dev/AUDIO-PLAN.md +++ b/docs/dev/AUDIO-PLAN.md @@ -1,5 +1,7 @@ # AUDIO-PLAN — Phase 3 / ROADMAP B3 (libaudio → SDL) +> **Historical record — do not act on status claims in this file.** The audio track shipped (D198–D204); the "gaps" and TODOs described below are closed. Kept for the architecture rationale. Current open work and status: [`docs/ROADMAP.md`](../ROADMAP.md) (2026-09-29). + Status: plan of record for the audio track, 2026-09-05. Companion to `ROADMAP-1.0.md` §B3 ("audio (Phase 3)", "audio track parallel from M-50 → v0.4.0"). Independent of B1/B2 — can start immediately. diff --git a/docs/dev/D172-PARTICLE-COLOR-RESEARCH.md b/docs/dev/D172-PARTICLE-COLOR-RESEARCH.md deleted file mode 100644 index 541410df..00000000 --- a/docs/dev/D172-PARTICLE-COLOR-RESEARCH.md +++ /dev/null @@ -1,170 +0,0 @@ -# D172 — particle/flares wrong color (magenta/cyan blood): ROOT CAUSE FOUND + FIXED (M-82) - -Symptom (user-reported, GRAPHICS-BACKLOG line 31): bullet impacts / flares / blood spatter -render magenta/cyan instead of dark red. - -## TL;DR (M-82) - -**Root cause:** `gfx_lod_tile_offset()` (`gfx_pc.cpp`) returns `0` unconditionally on -the `!gfx_detail_textures_enabled` path (a D107 blurry-ceiling fix — and -`port/src/video.c:225` sets that flag `false` at startup). Particle draws use -`G_CC_INTERFERENCE` (`TEXEL0 * TEXEL1`) with tile 0 = IA8 smoke @ TMEM 0 and -tile 1 = RGBA16 fire @ TMEM 0x188 — but with the offset pinned to 0, **texunit 1 -samples the smoke texture too**. `smoke * smoke` through the rest of the combine -= the magenta/cyan. Confirmed by the `GE_D172` probe on a user Silo firefight: -40/40 particle tris logged `cfg1[tile=1 tmem=392 fmt=RGBA]` but -`SAMPLED1=tile0(tmem=0 fmt=IA)`. - -**Fix (`gfx_pc.cpp` `gfx_lod_tile_offset`):** `return rdp.tex_lod ? 0 : i;` — -fold to the base tile only when LOD is actually active (D107's mip case, -`tex_lod=1`, unchanged); a genuine non-LOD 2-texture combine now gets tile `i`. -`bunker1` verify PASS (the D107 repro level). Committed on PR #34. **Owed: an -in-game eyeball that blood/sparks now read dark red.** - -The 0xB9 / cycle-type false trails and the probe design are kept below for the -record. - ---- - -Original note (superseded): Static audit done; one strong root-cause candidate -with a cheap in-game verification. **No code changed.** - -## 1. How particles get their color state (mechanism) - -Particle triangles (`explosion.c`, `gSPVertex` + `G_TRI_FILL`/`G_TRI_SHADE_TXTR`) carry -**no per-primitive material command**. Their CC/tile state comes from replaying ROM-resident -state records via `gSPDisplayList(gdl++, g_ExplosionDisplayLists[var_s2])` -(`explosion.c:894`, 15-record loop, one record + its particles per iteration). - -- Records: `globalDL_0x078 … globalDL_0x9a8`, a 17-entry table at image-bank offset - 0x28 (`g_pc_gimg_off_globalDL_*`), bank base cart 0x1029D160 (see `image_bank.c:322`). -- Each record is also scanned at load by `texLoadFromDisplayList` (`src/game/image.c:475`) - for its `G_SETTIMG` + ABCD marker word — that part works (textures upload fine). - -## 2. Record layout (decoded from ROM) - -``` -+0x00 E7 C3 FF FE G_RDPPIPESYNC -+0x08 B9 00 03 1D ??? <-- UNHANDLED by fast3d (see §4) -+0x10 second word of the ??? command -+0x18 FC ... G_SETCOMBINE w0 (rgb c0 | alpha c0 <<16) -+0x20 FF ... G_SETCOMBINE w1 (rgb c1 | alpha c1 <<16) -+0x28 FD ... G_SETTIMG w0 (timg pointer) -+0x30 .. 50 50 50 50 G_SETTIMG w1 (ABCD marker) -``` - -Dominant particle combine mode (14 of 17 records), decoded with the standard libultra -bit layout: - -- cycle 0 RGB: `TEXEL0, 0, TEXEL1, COMB_A` -- cycle 0 ALP: `TEXEL0A, COMB_A, SHADE, COMB_A` -- cycle 1 RGB: `COMBINED, 0, SHADE, COMB_A` ← **2-cycle** modulate -- cycle 1 ALP: same as cycle 0 - -## 3. fast3d audit (what is right) - -- `G_SETCOMBINE` bit extraction (`gfx_pc.cpp:2786`) matches the standard libultra layout - exactly (verified field-by-field against the ROM words). Not the bug. -- Store/decode of `rdp.combine_mode` (`gfx_dp_set_combine_mode` vs `gfx_generate_cc` - key shifts) are consistent. Not the bug. -- The generated GLSL combiner implements the RDP formula with the usual special cases; - `SHADER_COMBINED` correctly resolves to the previous cycle's running value. - -## 4. The 0xB9 root-cause candidate is WITHDRAWN (M-82, 2026-09-08) - -The earlier audit claimed fast3d has "no case for opcode 0xB9" and that the D146 -`default:` guard therefore aborts every particle sub-DL. **That is wrong.** - -This build does **not** define `F3DEX_GBI_2` (verified: no `-DF3DEX_GBI_2` in -`CMakeLists.txt`, no `#define` in `include/PR/gbi.h` or anywhere in tree). In the -non-F3DEX2 branch of `gbi.h`, `G_SETOTHERMODE_L = G_IMMFIRST-6 = -71`, and -`(uint8_t)(-71) == 0xB9`. So `gfx_pc.cpp:2731` `case (uint8_t)G_SETOTHERMODE_L:` -**is** `case 0xB9:`. - -Decode of the record word `w0 = 0xB900031D`, `w1 = `: -`gfx_sp_set_other_mode(C0(8,8)=3, C0(0,8)=29, w1)` → sets `other_mode_l` bits -3..31. `sft=3 == G_MDSFT_RENDERMODE`, `len=29` — this is exactly -`gsDPSetRenderMode(w1)`. `w1` values (`0x0C184B50`, `0x00504B50`, …) are -render-mode / blender words. fast3d applies it correctly. - -So the particle sub-DL runs to completion on PC: `E7` RDPPIPESYNC (handled), -`B9` SetRenderMode (handled), `FC` SETCOMBINE (handled), `FD` SETTIMG (handled). -**No D146 abort. No stale-state fallthrough.** The wrong-colour bug is elsewhere. - -## 5. Cycle-type is ALSO ruled out — the real record, and where the bug is (M-82) - -The actual particle records are in **`assets/oddtextures.c`** -(`globalDL_0x078` … , 17 of them). One record verbatim: - -```c -gsDPPipeSync(), -gsDPSetCycleType(G_CYC_2CYCLE), // <-- record DOES set 2-cycle -gsDPSetRenderMode(G_RM_PASS, G_RM_ZB_CLD_SURF2), -gsDPSetTextureLOD(G_TL_TILE), -gsDPSetCombineMode(G_CC_INTERFERENCE, G_CC_MODULATEIA2), -gsSPTexture(..., G_TX_RENDERTILE, G_ON), - // tile 0: IMAGE_SMOKE_0 IA16 image -> loaded/rendered as IA8, 56x56 - // tile 1: IMAGE_FIRE_0 RGBA16, 16x14, loaded to tmem 0x188 -gsDPSetTextureLUT(G_TT_NONE), -gsDPPipeSync(), -gsSPEndDisplayList(), -``` - -So the record **explicitly sets `G_CYC_2CYCLE`** (opcode `0xBA` = -`G_SETOTHERMODE_H` in this build), and fast3d handles `0xBA` correctly: -`gfx_pc.cpp:2734` → `gfx_sp_set_other_mode(52, 2, w1<<32)` sets `other_mode_h` -cycletype = 2CYC. **Confirmed by probe (M-82):** the `GE_D172=1` SETCOMBINE -probe logged the particle combine `w0=fc26a004` (= `G_CC_INTERFERENCE`/ -`G_CC_MODULATEIA2`) with **`cycletype=1 (2CYC)`** every time. The cycle-type -hypothesis is dead too. - -**The bug is the `G_CC_INTERFERENCE` two-tile combine / TEXEL1 path.** -`G_CC_INTERFERENCE` cycle-0 = `TEXEL0 * TEXEL1`; the record binds **two -different tiles of two different formats** (tile 0 IA8 smoke, tile 1 RGBA16 -fire at tmem 0x188). Magenta/cyan = a TEXEL1 sampling/decode fault: wrong tmem -offset for tile 1, RGBA16 (5551) channel/endian misread, or fast3d treating -tile 1 as an LOD mip of tile 0 under `G_TL_TILE`. This needs a visual -render-iterate pass (headless can't see particle colour) — see §6. - -### Probes shipped (M-82, `#ifdef PORT`, `GE_D172=1`, inert when unset) - -- `gfx_pc.cpp` G_SETCOMBINE case — logs each distinct combine + active - cycletype (dedup, 64 max). Confirmed the particle combine `fc26a004` runs - at `cycletype=2CYC`. -- `gfx_pc.cpp` `gfx_sp_tri1` (after the texunit loop) — whenever a **2-cycle - triangle actually consumes TEXEL1**, dumps `combine_mode` + both texunits' - `tile / tmem / fmt / siz`. This is the decisive probe: a Silo close-range - guard kill with `GE_D172=1` should log - `T0[... fmt=3(IA) siz=1(8b)] T1[tmem=392 fmt=0(RGBA) siz=2(16b)]`. - If `T1.tmem != 392`, or `T1.fmt/siz` are wrong, the TEXEL1 bind is the bug. - If they're all correct, the fault is in `import_texture_rgba16` for the - second texunit or the `G_CC_INTERFERENCE` CC generation — pair with - `GE_DTEX=1` / `GE_TEXRAW=1` to dump the fire tile's bytes. - -## 6. Fix path (next session — needs a display) - -1. Get a `-level_XX` capture with visible particle spray (Silo guard kill at - close range per the original report, or any wall-impact spark). Note the - colour. -2. Env-gated probe in `gfx_pc.cpp` `import_texture` / the TEXEL1 bind path: - for tile 1 when combine == the particle key, log format/size/tmem-addr/ - line_size and the first few decoded texels. Compare against the RGBA16 - `IMAGE_FIRE_0` bytes in the extracted asset. -3. Likely fixes, in order of suspicion: (a) tile-1 tmem address 0x188 not - honoured → TEXEL1 reads tile-0 bytes; (b) RGBA16→RGBA32 decode for the - second texunit; (c) `G_TL_TILE` LOD path picking the wrong tile for TEXEL1. -4. Re-decode `G_CC_INTERFERENCE` / `G_CC_MODULATEIA2` as fast3d generates them - (`gfx_cc.cpp`) and confirm the GLSL matches `TEXEL0*TEXEL1` then - `COMBINED*SHADE`. - -## Files - -- `src/game/explosion.c` — record table (165), replay loop (894) -- `src/game/image_bank.c:322`, `src/game/image.c:475` — record offsets / load-time scan -- `port/fast3d/gfx_pc.cpp` — SP walker cases (~2600–2930), D146 default (2920), - SETCOMBINE decode (2786), combine store (2270), cc generation (312+), 2CYCLE flag (1523) -- `rsp/graphics/gmain.s` — N64 ucode ground truth for 0xB9 (dispatch table at dmem 0xbc; - ginit.s missing from repo) - -Note (M-82): 0xB9 is `G_SETOTHERMODE_L` in this non-F3DEX2 build and is already -handled by fast3d — `gmain.s` / `ginit.s` are NOT needed to resolve D172. diff --git a/docs/dev/D176a-SKY-NOTES.md b/docs/dev/D176a-SKY-NOTES.md index 2e728c89..e02044e7 100644 --- a/docs/dev/D176a-SKY-NOTES.md +++ b/docs/dev/D176a-SKY-NOTES.md @@ -1,6 +1,6 @@ # D176(a) Sky — consolidated research notes (read-only) -Companion to `GRAPHICS-BACKLOG.md` D176(a) and findings.md M-37/M-47. +Companion to the (since retired) `GRAPHICS-BACKLOG.md` D176(a) and findings.md M-37/M-47. Purpose: make the next implementation session mechanical. No code changed by this doc. diff --git a/docs/dev/F10-GE-STYLE-PLAN.md b/docs/dev/F10-GE-STYLE-PLAN.md deleted file mode 100644 index ac14238e..00000000 --- a/docs/dev/F10-GE-STYLE-PLAN.md +++ /dev/null @@ -1,129 +0,0 @@ -# F10 visual refresh — GoldenEye dossier styling (proposal) - -Status: **superseded by D363 after user playtest** — the dossier/paper -concept below was implemented as D362, then replaced with a dark -watch-green/Bank Gothic version. This is the historical proposal for a -port-layer F10 overlay proposal, not a replacement for GE's pause watch or the -front-end PC Options screen. Reference surfaces: `src/game/front.c` -`constructor_menu15_cheat`/`frontSetupMenuBackground`, the existing -`port/src/frontoptions.c` cheat-list-inspired options screen, and GE's in-stage -watch. Current overlay: `port/src/optionsoverlay.c` `optionsOverlayEmit`, -`overlayRowAtY`, `sliderBarSpan`, `maxVisibleRows`. - -## 1. Direction and boundaries - -Make F10 read as an **MI6 dossier laid over the game scene**, not a generic -SDL debug panel: dark translucent scrim, warm paper/ivory content card, -black Zurich-style menu text, red for active options/slider fills and an -occasional muted gold title/accent. The front-end PC Options already uses -GE's actual 3D folder and Zurich text; use it as the visual reference, not -as a display-list dependency. In-stage F10 must remain an inexpensive flat -2D overlay: no loading a 3D wallet model, new ROM assets, front-end init -functions or `src/game` modifications. Preserve the current two-level -category -> settings navigation and the shared settings/commit API. - -The initial port-only implementation lives in `optionsOverlayEmit()` and -uses one shared `OvLayout` for both 320x240 stage and 440x330 front canvases. -Headless captures live under `scratch/d362-test/` (not distributed). Manual -visual review on a bright stage and controller/mouse feel-check remain owed. - -## 2. Concrete visual hierarchy - -- **Backdrop/card:** keep an adjustable translucent dim over the scene; - replace the opaque blue-black rectangle with a near-opaque ivory panel - (subtle border and one offset shadow). Do not mimic the actual folder - texture unless a later, measured prototype proves the simple card - insufficient. Preserve legible contrast against both dark and bright - levels, including safe-area crop and widescreen pillarboxes. -- **Masthead:** small gold/black `MI6 / OPTIONS` or `PC OPTIONS` heading, - fine black rule (a restrained `CLASSIFIED` stamp can be added later if - measured text fits) rather than a blue title/instruction block. Keep the - category name on the **same - page above its first setting**, especially INPUT over Mouse sensitivity. -- **Root:** numbered `1. Input` ... `5. Video`, GE's dossier/menu numbering - and title case as on `frontoptions.c`; a narrow translucent dark selection - box behind the focused item. Category order and labels stay unchanged in - the shared row table; casing is presentation-only. -- **Section:** a compact `PREVIOUS`/Back tab, title and optional - `(Profile N)` annotation, then two columns: label at left, value at right. - Unselected values in black, active/toggled values in GE's dark red - (`0xA00000FF` is the cheat-screen reference). Slider tracks are thin - charcoal with a red fill and an obvious knob; show the numerical value - outside the bar. A mixed-scope `(per profile)` marker must remain legible - without colliding with the value column; measure it and, if necessary, - use a small second line rather than silently removing the distinction. -- **Actions:** Reset retains its two-press/three-second confirmation and - displays `CONFIRM` in red only while armed. Quit remains visually distinct - from resets (and retains its existing activation semantics). Back/Close - affordances should match the actual click targets, not become decoration. -- **Footer:** one quiet, short line for mouse/arrows/controller, with an - explicit `ESC: Back / F10: Close` cue. No newly invented glyphs or fonts - that may be missing from the game's text bank. FPS readout is independent. - -Suggested layout sketch (not pixel positions): - -``` - MI6 / PC OPTIONS CLOSE - ----------------------------------------------- - PREVIOUS GRAPHICS - Anti-aliasing 2x - Texture filter Bilinear - Draw distance [------|----] 50/100 - ... - Reset to defaults [ENTER] - ESC Back / F10 Close -``` - -## 3. Implementation boundaries - -1. Extract a port-only layout helper for fonts, palette, - panel rectangles and spacing; preserve `rows[]`, `rowAdjust`, persistence, - file scoping, reset logic and input bindings. Use GE's loaded Zurich Bold - font for body *only after* validating it exists on both stage and front - contexts; Bank Gothic can remain a fallback/header font. Text clipping - must use the whole viewport as `textRender` expects. -2. Replace only the fill/text passes in `optionsOverlayEmit()` first. Emit - fills before text as currently, reset GBI state explicitly and keep - `OV_BUF_CMDS`/DL size bounds. Avoid mutable texture uploads or new assets. -3. One shared geometry calculation must drive panel/card positions, - `maxVisibleRows`, row Y, slider-bar span, close/back hitboxes, and - `overlayRowAtY`. In particular, don't change visual row spacing without - updating hit-testing (D304/D316), and don't use naive OS-window pixel - mapping instead of `gfx_get_ui_screen_rect` (D316/D335). When a page - scrolls, keep its section title visible; a clipped row cannot be clicked. -4. Use measured text widths to reserve space for values, `Confirm`, - `(Profile N)` and restart markers. At 320x240, allow scrolling/short - contextual hints, not overlapping text or tiny glyphs. At 440x330 and - ultrawide, centre or constrain the card rather than stretching the - columns across the entire viewport. -5. Make any GE-like UI sound effects opt-in to a *separate* follow-up: F10 - runs in controller polling, and D361 prohibits game save/audio calls - from that thread. A cosmetic refresh must not reintroduce that lockup. - -## 4. Acceptance gates - -- Compare screenshots with the existing front Options/cheat dossier and the - in-stage watch; user reviews the live palette/layout before closing the task. -- Native 320x240, front-end 440x330, windowed 4:3, 16:9 and 21:9, - fullscreen, safe-area crop on/off: INPUT title visible; no text clipping, - unreadable values, wrong hitboxes, phantom/duplicated bottom rows or - overflow in the display list. Check graphics's longest labels and AUDIO's - per-profile markers with and without a valid file. -- Mouse click/drag/wheel, arrows and D-pad/stick, ESC back, F10/Start/X - close, focused/armed reset, and quit action all behave **exactly** as - before. F10 Audio on file select still commits via D361's game-thread - queue; test both fresh and existing EEPROM without altering the user's - save (backup/restore for probes). -- With overlay closed, append no panel DL and retain existing golden frame - hashes (unless FPS display is explicitly enabled). Run `./build-pc.sh - ntsc-final`, link/duplicate-symbol checks, front-end + stage smoke, - `GE_WSPROBE_F10FRONT` and targeted live playtest. Log the result in - `docs/dev/findings.md` after implementation, not in advance. - -## 5. Explicit non-goals - -No fullscreen 3D folder in gameplay, changes to the N64 watch, new config -keys, row wording/value changes, save-format changes, controller remapping, -new persistent assets, or `src/game` behavioral edits. The front-end PC -Options screen is a **visual reference**, not part of the first styling -patch; harmonizing its tiny decorative details is a later optional pass. diff --git a/docs/dev/GRAPHICS-BACKLOG.md b/docs/dev/GRAPHICS-BACKLOG.md deleted file mode 100644 index c629fae5..00000000 --- a/docs/dev/GRAPHICS-BACKLOG.md +++ /dev/null @@ -1,51 +0,0 @@ -# GRAPHICS-BACKLOG — known cosmetic / rendering issues - -Deferred below level-progression and crash work (user priority, M-11). -Minor graphical glitches are acceptable in the current state. Fix these -once the game is playable start-to-finish without crashes. - -## Open - -| ID | Symptom | Status / notes | -|----|---------|----------------| -| ~~**D114/D116**~~ | ~~HUD text + ammo digits render each glyph individually X-mirrored~~ | **CLOSED — NOT A BUG (M-33, §F D168).** The `GE_PCDUMP` PPM writer never reversed `glReadPixels` rows, so every capture was upside-down; "mirrored" was a misread of inverted asymmetric content. The game renders correctly on hardware (developer-confirmed). Writer fixed (`gfx_opengl.cpp`). "Every stage verified non-mirrored" was correct — there was no mirror. | -| ~~**D74 wrap-block**~~ | ~~`gfx_pc.cpp:1546/1551` PORT block is dead code (guard `cms & G_TX_WRAP` always false; indexes per-texunit arrays with the vertex index → OOB if reached).~~ | **RESOLVED (M-30, RC3/D167).** The in-vertex-loop wrap block was reworked and hoisted to a per-texunit pre-wrap window (`gfx_pc.cpp` ~1574, now `cms`-correct and indexed by texunit not vertex), behind the `Video.WrapFix` knob (default OFF). No longer dead code or OOB. See §F "RC3 · D167". | -| **D392** | In the opening attract-mode Train demo, a soldier consistently looks more hunched on PC than in 1964/GEPD; his hand intersects his body at the wrong position. User comparison: `docs/img/animation-glitch-pc-port.png` and `docs/img/animation-glitch-1964gepd.png`. | **FIXED — user visually verified (D392).** Train's normal opening (`-level_25`) has a central firing guard (`chr=5`) whose torso/shoulder aim offsets reached `aimupback=-0.855`, `shoulder=-0.606,+0.868` radians by tick 100. `chrlvUpdateAimendbackShoulders` used N64 `((f32*)arg1)[12/13/16/17]` offsets into a firing table whose first member widens from a 4-byte to an 8-byte pointer union on PC; it read *other* floats and bent the torso/arms to wrong angles. `#ifdef PORT` now reads `max_up/max_down/free_arm_frac_up/free_arm_frac_down` by name; with the same short Train intro probe the torso offset stays 0, shoulders ~0.028/+0.014 at tick 100. User's original comparison: `docs/img/animation-glitch-pc-port.png` vs `docs/img/animation-glitch-1964gepd.png`. The user subsequently confirmed the soldier's pose looked fixed in-game; this session's image tool itself cannot display PNGs. No ramrom demo override needed; ordinary `-level_25` reproduces. | -| **D75** | ~~Nintendo logo mispositioned; gun-barrel Bond model absent~~; cast-roll character models — status unknown. (Rareware logo OK.) | **Nintendo logo + GoldenEye logo + legal page FIXED (M-197, user-confirmed live 2026-09-21).** Root cause: the D50 sidecar converter (`tools_pc/d43_emit.py`) reserved + remapped the model's embedded texture-blob span but never copied the pixel bytes into the emitted RZ image → TEXEL0 sampled a zeroed buffer → the texture-modulate logo rendered black (M-195/M-196 had proven emission/transform/combiner all correct). Same latent bug hit `PgoldeneyelogoZ` + `PlegalpageZ`. Fix = tooling-only (blob raw-copy + round-trip check); ntsc sidecars regenerated; logo window now renders 23k px (7.59%) vs 0–33 pre-fix. Gun-barrel Bond renders correctly (M-33). Cast roll still unverified — recheck with `GE_PCDUMP="1400-2200:25"`. `findings.md` §F D75 (M-195/M-196/M-197 updates) + M-197 at file tail. | -| **D76** | 2D disclaimer screen only partially drawn. | §F D76. | -| ~~**D77**~~ | ~~No audible music on PC.~~ | **RESOLVED (M-104, PR #42) — in-level music now plays.** Root cause was a D6-class missing `return` in `sub_GAME_7F0C0BF0` (`mp_music.c`) that zeroed the seqp volume on the only in-level trigger path; menu/intro music bypassed it and was always fine. The remaining audio-*quality* gap (wrong-sounding instruments on some tracks — elevator named specifically — plus occasional garbling) is tracked as **D230**. §F D77/D230. | -| ~~**D116 (HUD)**~~ | ~~proportional-font strings + ammo counter mirrored~~ | **CLOSED — NOT A BUG (M-33, §F D168).** Same capture-orientation artifact as D114. | -| **D148** | Level-end cinematics glitch. Dam: the Bond rappelling/bungee cutscene plays but the camera violently shakes and Bond's own model appears to duplicate/glitch. **Cutscenes are buggy in many places across the game** (D173 level-start floating, D292 death-sinking, Cradle spin) — treat D148/D243 as the tracking entry for the whole cutscene-reliability problem, not just Dam. | **2026-09-17 (D243 M-107 through M-168, ~18 session-passes): the mechanism is now understood in real depth, and the camera-shake half is fixed (diagnostically, live-confirmed).** Full history + code citations: `docs/dev/findings.md` `## D243` (long, multi-pass — look up via `findings-index.csv`, read the M-159 through M-168 paragraphs for the current understanding, don't linear-read). Short version for planning purposes: **(1) Root mechanism** — the cutscene teleports the *visible* Bond chr between shot positions correctly (`AI_TRYTeleportingChrToPad`, `chrai.c:4064`), but the actual rappel *animation* commands run on a separate, invisible driver chr (M-145) — the visible chr never gets told to play it, so it just keeps ticking whatever animation it already had equipped before the cutscene grabbed it. Every tick, that stale animation's own root motion gets read back into the chr's render position (`chrUpdateAnim`→`getsuboffset`, `model.c:684`), producing a small repeating cycle that reads as "shaking"/"glitching" on screen. Whether this exact mechanism is itself decomp-faithful (with the real PC/N64 divergence being *which* animation phase Bond happens to inherit at the cutscene boundary, not a code-path bug) is still an open question (M-165/M-166) — not yet answered. **(2) Two independent render paths, not one bug** — the camera's look-at filter reads `field_488.pos` (derived from `render_pos`, the model's animated-skeleton transform); the model's own on-screen draw reads `render_pos` directly (`objecthandler.c`'s `drawjointlist`). Fixing one does not fix the other; two live-test cycles were spent learning this the hard way (M-162/M-163 → M-167). **(3) Camera shake: FIXED at the mechanism level, live-confirmed by the user** ("camera shake is gone now") by freezing `field_488.pos` during the cutscene (`GE_D243X3`, `bondview2.c:10495`) — diagnostic-only, not shippable as-is (see next). **(4) Bond's own model duplication: mechanism-level fix attempted (`GE_D243X4`, `chr.c`, freezing `render_pos`'s contents) — stable after fixing two crashes (model-pointer-reuse hazard, see `porting-notes.md`'s two D11 updates), but freezing unconditionally also breaks the cutscene's *legitimate* per-shot camera/model repositioning** (the camera now looks the wrong direction for later shots; Bond still looks stuck) — not a fix yet. **Next steps for whoever picks this up** (none attempted yet): (a) re-baseline the `GE_D243X3`/`GE_D243X4` freeze on a position-delta threshold (a jump much larger than the observed intra-shot cycling amplitude, already characterized in the M-153/M-160 captures, is very likely a real shot-change teleport, not cycling) instead of freezing forever; or (b) hook the freeze/re-baseline directly to `AI_TRYTeleportingChrToPad` firing, the precise, unambiguous signal for "a legitimate reposition just happened"; (c) separately, find the actual N64-vs-PC divergence point per M-165/M-166 (log `aidx=`/`animframe=`, already wired into `D243M: onscreen`) to determine whether a real, permanent fix is even a `port/`-layer timing correction or needs a rule-2 sign-off for a genuine behavioral difference — this determines which of (a)/(b) is worth turning into a real fix vs. a stopgap. | -| ~~**D149**~~ | ~~Front-end MISSION COMPLETE / mode-select 3D models (dossier, wallets) render as garbled full-screen geometry or not at all.~~ | **CLOSED — user-verified fixed (M-87 playtest).** No longer reproduces; presumably fixed as a side effect of other front-end/D75-family work since M-49. D75 family. §F D146. | -| **D170** | Named-NPC "flee" scripted behavior looks wrong on PC: on Silo, Ourumov breaks into a full run the instant he alerts ("Ourumov: Kill him!") rather than the N64 walk/retreat; developer reports Trevelyan behaves the same way on Cradle. **M-49 full playthrough: escalated — Cradle (`-level_51`) is "bugged out completely" from Trevelyan's behavior; the final level's scripted progression breaks. Now folded into / superseded by §F D193 (NPC AI locomotion too slow).** | **Observed, not investigated** (M-34, from a Silo playtest capture; user bug report — no fix wanted yet). Could be a genuine ailist / `chrTick` divergence, OR the D155/D156 wall-clock `deltaFrames` locomotion-anim speed-up (a catch-up spike playing the walk cycle at 2–3×). **Verify first:** capture the same beat against N64 reference footage before assuming it diverges — Ourumov may be scripted to flee. If it's real, suspect the frametiming clamp (§F D155/D156) or the Cradle-family AI path (§F D123). | -| **D171** | Silo missile-shaft: a large triangle sweeps across the frame while panning down the shaft. **Promoted to `docs/dev/findings.md` §F D288 (M-141)** with a user-reproduced, precisely-bounded, visually-documented repro (frames ~562-741 of a bare `-level_20` boot) — read that entry for the current state, not this row. | See D288. | -| **D172** | Bullet-impact / blood particle spray renders magenta or cyan instead of dark red (visible on guards hit at close range on Silo). | **M-82: ROOT CAUSE FOUND + FIXED (PR #34).** `GE_D172` probe on a user Silo firefight: 40/40 particle tris configure tile 1 = RGBA16 fire @ tmem 392 but fast3d **samples tile 0 (smoke) for both texunits** — `gfx_lod_tile_offset()` returns 0 unconditionally (D107 blurry-ceiling fix; `video.c:225` disables `gfx_detail_textures_enabled`). `G_CC_INTERFERENCE` = `smoke*smoke` → magenta/cyan. Fix: `return rdp.tex_lod ? 0 : i` — only fold to base tile for real LOD/mip draws. (0xB9 + cycle-type were both false trails, ruled out earlier in M-82.) **Owed: in-game eyeball — blood should be dark red.** Detail: `D172-PARTICLE-COLOR-RESEARCH.md`. | -| ~~**D178**~~ | ~~Objectives not listed correctly on the pre-mission briefing screen (the mission overview shown before starting a level).~~ | **CLOSED — user-verified fixed (M-87 playtest): "main menu text is good now."** No longer reproduces. M-36 triage below kept for reference. **M-36 triage: the objective lines are BLANK, not wrong.** `GE_STARTMENU=10` Dam briefing renders the header fine ("OHMSS / Agent: James Bond / Mission 1: Arkangelsk / Part i: Dam / PRIMARY OBJECTIVES:") then just the bullet "a." with no text and no b/c/d. → **D143/D151 blank-text family** (`langGet()` → NULL → silent blank), *not* a propDef walk / difficulty decode. **Family B** in `docs/dev/M-36-TRIAGE.md` — find which lang bank the front-end briefing flow fails to load. Re-confirm the exact shape in a *real* briefing (the `GE_STARTMENU` boot skips real save state). Close relatives: D151 (watch objective text blank — type-35/23 `text` slot u16→u32 fix, M-28; interactive re-verify was still pending), D143 (briefing/objective text blank via `langGet` NULL), D157 (objective difficulty byte offset — could make difficulty-gated objectives appear/disappear wrongly). The pre-start briefing is a *different surface* from the in-level watch, so D151's fix may not cover it. **Next:** ask user which level + what exactly shows vs expected; compare against `docs/dev/LEVEL-OBJECTIVES.md` (regenerated post-D157); if lines are blank → D143/D151 family (`langGet` NULL guard = silent blank), if wrong objectives listed → propDef type-23 record walk / difficulty decode. | -| **D175** | In-game stutter / brief hang during normal play — observed opening a door on Runway (mission 3, `-level_35`) and also on Surface. No backtrace captured (gdb attach missed the window; it self-recovered). | **Observed, not investigated** (user QA report). Matches known transient-hang classes rather than looking new: D155 (post-slow-load catch-up spiral — clamped), D156 (anim NaN loop — guarded, prints one-shot stderr diag if it fires), D134 (SP/DP task-done event swallowed — fixed M-22, Runway was an original victim), D147/D152 (audio `s_imLock` steal = ~2 s hiccup). Door-open specifically = new room first visible → one-off texture-import/frame spike (likely benign). **Next:** reproduce under `tools_pc/debug.ps1` with the box idle; check console for the D156 stderr diag; if it recurs, attach gdb mid-hang and pattern-match `bt` (import_texture = benign slow frame; model.c:3131 spin = D156; pthread_mutex_lock on s_imLock = D147/D152). | -| **D176** | Surface exterior renders wrong (two co-located defects). **(a)** Sky is solid **black** — the skybox / sky gradient does not draw at all (reference: warm sunset cloud gradient). **(b)** The perimeter **tree-line backdrop renders as grey TV-static / comb interlacing** instead of snow-laden pines — the geometry is present and roughly the right silhouette but every tree texture is scrambled noise. Ground, tunnel and the dish/bunker building draw fine. | **Observed, screenshots committed** (M-35, user QA; `docs/img/bugs/d176-surface-exterior-our-build.png` vs `-reference.png`). Level is the shared Surface exterior — user reached it Dam→Surface on Agent so this is **Surface (i) `-level_36`** (confirm it also affects `-level_43`). **(a)** black sky: **M-36 partial (findings.md "D176(a)").** Env data is correct (`Sky.Clouds=1`, `CloudRGB=240,120,30`, `SkyImageId=0`); `skyRender` runs the cloud path and classifies corners correctly (switch case 12), but `skyRenderTri`/`skyRenderFull` emit nothing — not even the `env->RGB` fill shows. Not root-caused: next is probing `sub_GAME_7F097388` projected coords, verifying `skywaterimages[0]` resolves on PC (`image_bank.c` GIMG offset `0xFB4`), and a fast3d sky-tri trace. `GE_D176=1` probe shipped. **M-37: ROOT-CAUSED** — `skyRenderTri`/`skyRenderFull` build geometry *exclusively* as `G_RDPHALF_*` immediates, which `gfx_pc.cpp` deliberately no-ops (identical no-op in the PD port); fix = decode the RDPHALF tri-raster stream in fast3d (~1 session, genuine new code). **M-42: `-level_22` (Statue) confirmed a clean headless repro** — bare boot, frame ~360, upper half pure black; use it to verify the decoder. **M-47 + read-only consolidation:** Path B draft exists (`scratchpad/sky.patch`, `skyPortRenderPoly` PORT hook — geometry+texture reach GL, two unit defects open) and the full RDPHALF wire format is now decoded (S15.1 half-packing, 8-component perspective-interpolated vertex vectors); next session is mechanical per `docs/dev/D176a-SKY-NOTES.md`. `-level_36`/`-43` intro cams face down (not a sky test without `GE_INPUTSCRIPT`). **M-82: PR #18 rebased onto main + Defect-1 fix applied** — cloud tile is `s_skywaterimages[0]` = 64×64 IA8; the patch's `tc = S·32` scale is correct (matches GE's `width<<5` idiom, `glass2.c:678`), the bug was `(s16)` overflow on the ±20k-texel horizon S/T; fix = per-primitive phase-fold to the 64-texel period (`sky.c` `skyPortRenderPoly`, `#ifdef PORT`). Builds clean, no crash (bunker1/statue/surface1 verify PASS). **Unverified visually** — owed: one `-level_22` screenshot (see `D176a-SKY-NOTES.md` "verification ask"). Defect 2 (horizon-band coverage / straddling tris) still open → adaptive tessellation. **(b)** tree/rock static: **M-36 triage — NOT the D159 family.** `texSwapAltRowBytes` is a full `#ifdef PORT` no-op (`image.c:2199`), it cannot cause this. Real cause: `port/fast3d/gfx_pc.cpp` `import_texture_*` assume `line_size_bytes == full_image_line_size_bytes` (`SUPPORT_CHECK`; rgba16's is commented out *"trips ... with a garbage size"* `:658`) → non-PoT / sub-rect tiles get a flat linear read → diagonal row shear = grey static. **Family A** in `docs/dev/M-36-TRIAGE.md`. Fix: honour `line_size_bytes` as the real source pitch. Same defect as D182(2). | -| ~~**D233**~~ | ~~All levels (intermittent): near doors — especially doors you can't see through to the inside — the indoor level geometry vanishes and you can see straight through it into the room, while world objects (computer terminals, furniture) in that space still draw.~~ | **FIXED + VISUALLY VERIFIED (M-107 fix, M-108 verify).** `port/fast3d/gfx_pc.cpp` `gfx_sp_tri1` was trivial-rejecting visible triangles that had a behind-camera (`w<0`) vertex. Status cell here was stale at "not investigated" — corrected M-119. §F D233. | -| ~~**D234**~~ | ~~Dam: the guard towers along the actual dam structure are invisible except for the first one.~~ | **FIXED + VISUALLY VERIFIED (M-108).** Same underlying mechanism as D233. Status cell here was stale at "not investigated" — corrected M-119. §F D234. | -| **D235** | Wrong textures load after dying/restarting a level — clarified: not Facility-specific, seen on multiple levels; trigger is death/restart (level reload), not a general build regression. | **Observed, not investigated** (M-106, user QA report, clarified same session). This is a state-leak on level re-entry, not a one-level texture-decode bug — prime suspect is the texture pool / CI-cache (D217/D228 neighbourhood) not fully resetting between a level teardown and reload (stale arena base, a palette-cache entry keyed by a reused address, or a texpool index not rewound). Needs: confirm it does NOT repro on a fresh level boot (only after death/restart); which surfaces; a screenshot. Next: instrument `texInitPool`/the CI-cache clear path for what does/doesn't reset on reload vs cold boot. | -| **D236** | Surface 1: the 2D billboard trees that appear at the start of the level and around the map don't draw as discrete tree sprites — they render as a wall/sheet of tree texture instead of the proper 2D tree objects. | **FIXED (M-198, pass 26) — awaiting user play-test sign-off.** Root cause was a texture-BINDING bug, not decode/alpha/mip/geometry: GE binds the four Surface 1 treeline cards (`tex1198`-`tex1201`, RGBA5551 64x17 cut-outs) as `TEXTURETYPE_DETAIL`, where `texHandleType1` (`tex.c`) loads the *detail* texture at TMEM 0 and the real base image at TMEM `texGetSizeInBytes(detail,0)` on tiles 1+. fast3d's `gfx_lod_tile_offset` folded every `G_TL_LOD` draw to tile 0 (D107, correct for TEXTURETYPE_LOD/MIPMAP), so the port drew the shared detail texture -- `tex2465`, an opaque 32x32 IA8 noise tile, which is exactly the 'noise painter' D267/D276 measured at 1023/1024 texels opaque -- and never imported the cards at all. Fix: when a tile pair differs in both TMEM address and `fmt`/`siz` under `G_TL_LOD`, sample the base image (tile 1). `Video.DetailBaseTile`, default on. Live-verified on Surface 1 (discrete snow-covered pines) and Surface 2; Depot clean; bunker1 golden bit-identical with the fix on/off; `type=1` bindings exist only in sevx/depo/sevb/sev, so every other level is provably untouched. Full trail: `findings.md` D236 pass 26; generalised as `porting-notes.md` §D12. -| **D249** | Streets and Egyptian (the two biggest/most-open levels) show culling problems on far-away geometry at *default* FOV — distant geometry drops/pops incorrectly. Also a QoL ask: improve LOD in general, but gate it behind a toggle so N64-accurate ("old school") LOD stays selectable. | **Observed, not investigated** (M-119, user QA report). Distinct from D222 (high-FOV near-edge culling) and D218 (fog/far-clip tint). Two candidate mechanisms: (a) portal/room-visibility cutting off too aggressively at range on large multi-room layouts (D233/D234 neighbourhood — check for a far-plane/depth-range sibling to D233's w<0 trivial-reject fix), or (b) GE's own LOD/detail-swap system not ported faithfully (mip-tile / simple-model substitution at distance, `gfx_lod_tile_offset` family). First checks: `GE_PCDUMP` a long sightline on Streets/Egyptian where geometry visibly pops; determine which of (a)/(b) is firing before designing the fix or the requested toggle. §F D249. | -| **D217** | 1P weapon viewmodel + character-model CI textures render with a wrong palette on many levels / multiple weapons — PP7 grip + hand render flat green on Facility & Depot, "weird or missing" gun textures elsewhere; Bond's watch face too. Surfaced by D215 (viewmodel now draws). Clean on Bunker1. | **Defect ① FIXED (M-90), pending human playtest eyeball — full detail in `findings.md` §H "D217 — M-90" and §F D217.** Root cause: weapon texpool arena bases land %8==4 on PC (memp bump drift from pointer bloat); `texAlignIndices` absolute 8-byte row padding then shifts every palette 4 bytes early while model-DL `G_LOADTLUT` reads the N64 offset (grip count=1 load lands on next tenant's header slot → `0x1A00` green; larger loads read a 2-entry zero pad — the M-86 tell). Fix: `texInitPool` rounds the base up to 8 under `#ifdef PORT` (no-op on N64); 21/21 sweep PASS. Two defects: ① **visible green = misaligned texpool arena** (fixed as above). ② **CI texture-cache collision** (no palette-content key) — proven, **fix landed on branch `fix/d217-model-texture-palette` `f6fc0399`** (palette FNV-1a hash in the CI cache key), owes a 21-level `verify.sh sweep`; does not fix ①. | -| **D174** | "No blood effect" — user reports no visible blood when shooting guards / into surfaces. | **User QA report; likely D120, unverified.** Decals: the D120 `PointUsage[]` converter fix (M-30) was never interactively verified and only takes effect after a full sidecar regen (`d43 && d69 && d88 --regen`) — check whether the playtest build had regenerated sidecars before concluding the fix failed. Spray: D172 observed the particle spray *drawing* (wrong color, magenta/cyan) on Silo — if the user sees no spray either, that's new info (different weapon/range, or the D172 decode is worse than "wrong color"). First step: BUNKER1 firefight with regenerated sidecars; if decals still absent, instrument the `chr.c:3328` decal walk. | -| **D173** | Third-person Bond model (the player-representing figure shown at level start) spawns too high — floats well above the ground "a lot of the time" while the actual player spawn is correct. Same symptom on the Cuba end credits: JB stands ~6 ft in the air above Natalya. | **Confirmed still present across the full 21-level playthrough (M-49).** **Observed, not investigated** (user QA report). D75 animated-model family but a *position* defect, not absence — M-33 confirmed the gun-barrel Bond renders fine upright. Suspects: (a) intro/credits puppet chr spawn position vs the model's base transform; (b) anim root-motion accumulation (`modelSetAnimFrame2WithChrStuff`, D156 area) offsetting the rendered joints above the body origin; (c) a `coord3d`/packed-float decode in the intro camera/model setup. "Player spawning is OK" localises it to the render-side model, not `g_CurrentPlayer` state. | -| **D182** | SELECT FILE screen degrades after navigating away and back (main menu → file select, or backing out of file select and re-entering). On the fresh screen the 007 gun-barrel spiral / Bond silhouette renders behind the file boxes; after a round-trip **the Bond image stops drawing entirely** and the whole background gains the **comb / interlacing** artifact (horizontal line scramble). File boxes, text and the Copy/Erase icons still draw. | **Observed, screenshot committed** (M-35, user QA; `docs/img/bugs/d182-file-select-backout-20260902.png`). Two symptoms, likely linked: **(1)** background 3D image stops rendering after re-entry → a front-end model/DL whose `render_pos` / segment binding is only valid on first construction (D149 / D75 `constructor_menuXX` family — the dossier/wallet models have the same "renders once" behavior). **(2)** interlacing = **M-36 triage: Family A**, the `import_texture_*` `line` vs `full_image_line` shear (see D176(b) / `docs/dev/M-36-TRIAGE.md`) — **not** the D159 `texSwapAltRowBytes` path (that is a full PORT no-op). Open question: why only *after* a round-trip — first import may land `line == width`, re-import may not, or the tile descriptor is stale on re-entry. Repro: `GE_STARTMENU` to file-select, back out with ESC/B, re-enter; `GE_DTEX` on the spiral texture across both visits. Shares defect (2) with D176(b). **2026-09-27 (D397):** user re-reported the comb/interlace on the file-select background AND on the **intro gun-barrel** — the latter is a *first-time* render, so the defect is persistent (not only after a round-trip), refuting the "stale descriptor on re-entry" hypothesis. D159 (odd-row swap) is no-op'd and D183 pitch shear is disproven for level_36 + a no-op for the 299×440×1 row-strip. Next step is a live `GE_PCDUMP` capture + ROM ground-truth decode of the gun-barrel RLE image to separate ground-truth dithered content from a GL sampling/texture-cache artifact. See findings.md D397. | -| **D197** | Character face/head textures wrap wrong — the face texture repeats around the side of the head "and continues weird" instead of clamping to the front. Seen on **Silo** (M-49 playtest), intermittent ("sometimes"). Reads as **`G_TX_CLAMP` not honoured** for the character-skin tile in fast3d (→ `GL_REPEAT`, so the face UV region tiles around the skull), or wrong `shifts`/`shiftt` / LOD-tile selection on the head texture, or the D167 non-PoT wrap-period issue (head textures are often non-PoT) hitting skinned models. | **Observed, not investigated** (M-49, user bug report — needs a capture + which chr/level). Distinct from D176(b)/D182(2) (those are *bg wall* pitch shear). Related: RC3/D167 (`Video.WrapFix`, non-PoT wrap period) + the `texWriteTileLods` `shifts=shiftt=lod` note in findings §F "D176(b) → 4. candidate 2". First checks: does `gfx_pc.cpp` map N64 `cms/cmt` `G_TX_CLAMP` → `GL_CLAMP_TO_EDGE` for character DLs; is the head tile getting the base tile vs an LOD tile (D107); try `Video.WrapFix=1` on a repro. | -| **D195** | Transparency / alpha-blended surfaces render wrong — reported on **Control** (Severnaya bunker basement — Natalya's console room; heavy on glass partitions and the translucent projected/holographic wall displays). Exact failure mode not yet pinned by the reporter (M-49 playtest): candidates are alpha-blended geometry drawing fully opaque, translucent panels drawing invisible, or draw-order/sort so translucent surfaces occlude what's behind. | **Observed, not investigated** (M-49, user bug report — needs a `GE_PCDUMP` capture + which surfaces). fast3d render-mode / combiner path. Same neighborhood as D161 (CI8 tile + `G_TT_NONE` → garbage), D172 (particle-sprite channel order), D176(b) (texture pitch shear) — but this is a *blend/alpha* defect, not a texture-decode one. Note D128 already touched Control's `specialportalarray` (portal struct stride) — check whether the affected surfaces are portal-adjacent. First checks: does `gfx_pc.cpp` honour `G_RM_*` XLU render modes + `G_AC_THRESHOLD`/`G_CC` alpha for these DLs; is `gDPSetRenderMode` `w1` being parsed (cf. findings §F "zbuf-clear w1 scribble"); is Z-write-vs-blend ordering right for XLU surfaces. Get the reporter to say: opaque-where-should-be-clear, invisible, or wrong edges? | -| **D252** | Particle effects cycle through a rainbow palette — bullet-impact sparks and lingering smoke/explosion residue drift through the full hue wheel over time (~10 shots to sweep it) instead of holding their intended grey/orange palette (M-124, user playtest). Full mechanism + suspect in findings §F **D252**: colour comes from 15 distinct `IMAGE_SMOKE_N`×`IMAGE_FIRE_N` (RGBA16) pairs the particles age through; prime suspect is `import_texture_rgba16` deriving width/height from the tile line size (32×7 instead of 16×14 for the fire tiles), scrambling each stage's sprite into a different wrong hue. | **Documented only — not fixed for v0.2.0-pre** (user instruction). Confirm with one dumped fire tile vs raw `IMAGE_FIRE_N` bytes, then derive width/height from the LOADBLOCK dtx/dlh. D172/M-82 lineage. | -| **D323** | Distant geometry on 15 levels samples driver-generated mips from the finest texture level; N64 samples Rare's hand-authored mip chain for explicit-LOD textures bound under `G_TL_LOD` (heaviest: Statue 378 binds, Aztec 806). Overwhelmingly CI8/IA8 — subtle fidelity gap, no reported artifact; the only RGBA5551 cut-outs are the D236 set (already handled). | **OPEN / parked** — mechanism confirmed, census in `tools_pc/bg_lod_audit.py`, fix path documented in findings §F **D323** (upload GL mip chains for TEXTLOD-on bindings). Not worth doing speculatively; revisit only if a playtest flags mushy distant detail. | -| **D335a** | **RESOLVED 2026-09-23.** Gun-barrel backdrop (Bond's spotlight) leaked into the pillarbox bars while sliding in from off-canvas. Fix: `menu_jump_constructor_handler` emits a full-canvas `gDPSetScissor` right after the CENTER wrap (only when wider than 4:3), which fast3d squeezes to the pillarbox, so off-canvas draws clip at the 4:3 edge as the N64 RDP clips at the screen edge. Verified with a 16:9 barrel capture. | -| **D335b** | Native widescreen: the F10 options overlay still stretches with the window (legible, pre-existing look). Pillarboxing it needs `optionsoverlay.c`'s click mapping (`gfx_get_ui_screen_rect`) remapped into the centred region in step. Polish, post-playtest. | -| **#105** | Dam: uncovered water-reflection pixels show the procedural cyan fill instead of the stage sky (residual after the water/wall-reflection work; visible boundary between reflected geometry and sky in the settled Enhanced/Remaster capture). | Backlogged 2026-09-28 from [issue #105](https://github.com/jkdansereau/goldeneye-pc-port/issues/105); post-v0.4.0 graphics queue. Note: the issue's "D329" cross-ref is the issue author's own numbering — our D329 is the anim-pinning fix. | -| **1P weapon viewmodel** | **RESOLVED (M-83, D215).** In-level first-person weapon models drew nothing. Root cause: `gunRenderFirstPersonGunModels` built its `ModelRenderData` via `*(ModelRenderData*)&D_80035CC0` — a reinterpret across two separately-declared adjacent globals that only lands right on the N64 linker + 4-byte pointers; on x86-64 `renderdata.flags` read 0, gating every weapon DL node off in `modelRenderNodeGundl`. All 3 ranked suspects in VIEWMODEL-RESEARCH.md were ruled out first by the `GE_DVM=1` probe. Fixed `#ifdef PORT` (explicit field init). `subdraw` 1→153 gfx cmds; owed one BUNKER1 eyeball. | - -## Resolved (for reference) - -- D70–D74: intro-logo pixels (Rareware logo renders correctly). -- D103: viewport / native-resolution half-frame. -- D105: room geometry Z-buffer never cleared (`G_CLEAR_DEPTH_EXT`). -- D106: sky-void through doorways (portal near-plane min>max). -- D107: blurry ceilings/wall-panels (LOD mip tile fabrication). -- D112: skeletal models were "3D lines" (`d43_emit.py put_f32` byte order). diff --git a/docs/dev/LEVEL-PLAYTEST.md b/docs/dev/LEVEL-PLAYTEST.md index 4753d680..e39464e3 100644 --- a/docs/dev/LEVEL-PLAYTEST.md +++ b/docs/dev/LEVEL-PLAYTEST.md @@ -1,5 +1,7 @@ # LEVEL-PLAYTEST — WS6 human completion-validation checklist +> **Historical record — do not act on status claims in this file.** This checklist predates the v0.4.0 input model (D332–D337) and the campaign sign-off; use it as a template only. Current open work and status: [`docs/ROADMAP.md`](../ROADMAP.md) (2026-09-29). + Run **after** `docs/dev/LEVEL-STATUS.md` is all-21 load+render PASS. This is the part that needs real input — a human plays each level start to finish and confirms it matches retail. Findings feed a WS5-style triage round diff --git a/docs/dev/LEVEL-STATUS.md b/docs/dev/LEVEL-STATUS.md index bb217a57..1cd1a87e 100644 --- a/docs/dev/LEVEL-STATUS.md +++ b/docs/dev/LEVEL-STATUS.md @@ -1,5 +1,7 @@ # LEVEL-STATUS — level load+render sweep (WS4) — 20 solo missions + ending sequence +> **Historical record — do not act on status claims in this file.** The per-level sweep below predates the 2026-09-28 full-campaign sign-off; its open items (re-playthrough gate, M-49 completability, Cuba crash) are resolved. Current open work and status: [`docs/ROADMAP.md`](../ROADMAP.md) (2026-09-29). + **Counting note:** the campaign is **20 playable missions** (`SP_LEVEL_MAX // 20` in `bondconstants.h`; `mission_folder_setup_entries` in `front.c` has exactly 20 entries). The sweep's 21st boot target, "Cuba" (`-level_54`, @@ -73,7 +75,7 @@ cause. Only remaining crash: 900. This is the **known D129 residual**: the bare `-level_54` boot reaches the cast/credits scroll referencing a text bank the real front-end flow would have loaded. Not a real-flow blocker; Cuba loads + - renders 300+ frames fine. Parked with D76 (`docs/dev/GRAPHICS-BACKLOG.md`). + renders 300+ frames fine. Parked with D76 (since fixed as D164). | Level | # | Status | Crash site | Class | |---|---|---|---|---| diff --git a/docs/dev/LINUX-PORT.md b/docs/dev/LINUX-PORT.md deleted file mode 100644 index 9586411f..00000000 --- a/docs/dev/LINUX-PORT.md +++ /dev/null @@ -1,91 +0,0 @@ -# Linux port — status & gap analysis - -Session M-38 (2026-09-02). Goal-2 on the roadmap (after the Windows alpha / -release artifact). This is a scoping + first-patch pass; **nothing here has run -on a Linux machine yet.** - -## Method - -Read `build-pc.sh`, `CMakeLists.txt`, `docs/building.md`, and grepped -`port/src`, `port/fast3d`, `port/include` for Windows-only headers / Win32 APIs -/ unguarded `_WIN32` branches. A local Qwen `triage` pass seeded the hunt; every -claim below was re-checked against the real files (the 27B was wrong on two of -three headline items — see "Ruled out"). - -## What is already Linux-ready (verified by reading) - -- **`port/include/platform.h`** — sets `PLATFORM_LINUX` / `PLATFORM_MACOS` / - `PLATFORM_WINDOWS` cleanly. -- **`CMakeLists.txt`** — `find_package(SDL2 REQUIRED)`, `find_package(ZLIB - REQUIRED)`, and `else()` branches already present for the non-Windows case: - `GL_LIBRARY = GL` (l.291), `EXTRA_LIBRARIES = stdc++ m dl pthread` (l.304), - `elseif(UNIX)` platform block (l.86). `WIN32_EXECUTABLE` and the MinGW zlib - fallback are correctly `if(WIN32)` / `if(MINGW)` guarded. -- **`build-pc.sh`** — already documents the Linux apt deps - (`cmake libsdl2-dev zlib1g-dev libgl1-mesa-dev`) and is a plain bash script, - no MSYS-isms in the executable body. -- **`port/src/system.c`** — `sysSleep()` has a `nanosleep()` `#else` branch - (l.76-82); `` is `PLATFORM_WINDOWS`-guarded. -- **`port/src/libultra.c`** — the OS-thread kernel has a real pthreads branch - next to the Win32 `_beginthreadex` one. -- **`port/src/crash.c`** — `MessageBoxW` / `SetThreadPriority` / `__debugbreak` - all `_WIN32`-guarded, with `PLATFORM_LINUX` counterparts. -- **`port/src/video.c`** — `GE_MKDIR` has both `_mkdir` and `mkdir(p,0777)`. -- No `__declspec`, `#pragma comment`, or hardcoded `\`-path / drive-letter - usage anywhere in `port/`. - -## Ruled out (Qwen triage false positives) - -- ~~`system.c:75` `Sleep()` has no POSIX branch~~ — it does (`nanosleep`). -- ~~CMake needs `else()` branches for zlib/pthread on Linux~~ — already there. - -## The one real code gap — FIXED this session (verification owed) - -**`port/src/romdata.c`** — the fixed-address cart map (`0x10000000`, so absolute -ROM-asset symbols are live host pointers) had a **Windows-only** implementation -(`VirtualAlloc`); the `#else` branch was a stub that logged "not implemented on -this platform" and fell straight to the heap-copy fallback. In heap-copy mode -anything that dereferences a cart address *directly* (not via -`romdataGetRom()` / the PI shims) reads wrong memory — so Linux would run, if at -all, in the same degraded mode Windows only hits when `VirtualAlloc` loses the -address race. - -**Change (M-38):** -- Factored the post-map work (memcpy + `pcmodelsLoadSidecars` + - `pccgLoadSidecars` + D55 RLE-header fixup) into `romdataFinishCartMap()`, - shared by both paths so they cannot drift. -- POSIX `#else` now does an anonymous `mmap((void*)CART_BASE, len, - PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED_NOREPLACE, -1, 0)`. - `MAP_FIXED_NOREPLACE` (Linux 4.17+) fails rather than clobbering an existing - mapping; where the macro is absent the plain hint is advisory and the - `at == CART_BASE` check catches a relocated result. On any failure it - `munmap`s and falls through to the identical heap-copy path as before. -- `romdataDestroy()` `munmap`s on POSIX (tracked length in `mappedLen`). - -**Owed verification (needs a Linux box):** -1. Compiles under GCC on Linux (`` resolves; no decomp-include-path - shadowing surprise). -2. `mmap` actually lands at `0x10000000` on a stock ASLR Linux — `0x10000000` - (256 MB) is low but usually free; if the kernel routinely refuses it, - consider linking the binary no-PIE or reserving the range via a linker - script so the loader keeps it clear. -3. `-level_09` boots crash-free with the mapped path taken (check the log says - "mapped at 0x10000000 (cart base)", not "using heap copy"). -4. Whether the heap-copy fallback is actually survivable on Linux if step 2 - fails — audit for direct `0x1xxxxxxx` derefs outside the PI shims. - -## Remaining Linux work after the romdata patch lands - -| # | Item | Size | Note | -|---|------|------|------| -| 1 | Run the Ubuntu **`validate`** CI job → upgrade it to a real **compile** job | S | `.github/workflows/ci.yml` already configures on Ubuntu; flipping it to `cmake --build` surfaces the real GCC-strictness gaps cheaply | -| 2 | First actual Linux runtime bring-up (`-level_09`) | M | expect a short tail of unguarded calls / struct-layout asserts GCC-on-Linux vs MinGW | -| 3 | `docs/building.md` — promote Linux from "untested" to "supported" once 1+2 pass | S | | -| 4 | SDL2 / GL context creation on X11 + Wayland | M | fast3d is GL 3.3 core; PD port runs on Linux so the path is known-good | -| 5 | Package: an AppImage or tarball equivalent of `bundle-win.sh` | M | reuse `prepare-assets.py` verbatim — it is already OS-agnostic | - -## Recommended next step - -Land the romdata patch behind CI (item 1) — turn the Ubuntu `validate` job into -a compile job in the same PR so the "does it build on Linux" question is -answered by the bots, then do the runtime bring-up on a real machine. diff --git a/docs/dev/M-35-PLAYTEST-CHECKLIST.md b/docs/dev/M-35-PLAYTEST-CHECKLIST.md deleted file mode 100644 index 959eb150..00000000 --- a/docs/dev/M-35-PLAYTEST-CHECKLIST.md +++ /dev/null @@ -1,89 +0,0 @@ -# M-35 QoL playtest checklist - -Everything on this branch is config-gated to prior behaviour, so the -**first** thing to confirm is that nothing changed with a default -`ge007.ini`. Then flip the new keys and check the feel. - -Edit `data/ge007.ini` while the game is closed. - ---- - -## 0. Regression (default config) — do first - -- [ ] Delete `data/ge007.ini`, launch, quit. It rewrites with new keys: - `[Input] MouseCaptureMode = 0`, `[Game] ScreenShakeIntensity = 1`. - Existing keys keep their values. -- [ ] Play a level normally (mouse grabbed on focus, as before). Mouse look, - aim (RMB), menus — all exactly as the last build. **No behaviour change - expected at defaults.** -- [ ] Alt-tab away and back — cursor frees / re-grabs (unchanged). - -## 1. Click-to-lock capture — `Input.MouseCaptureMode = 1` - -- [ ] Launch. At the main menu the **OS cursor is visible and free**; moving - the mouse moves the game crosshair 1:1 (see item 3). -- [ ] Click in the window during a level → cursor hides, mouse-look engages. -- [ ] Press **ESC** during a level → cursor reappears, mouse-look stops, - you can move the pointer off the window. (ESC does *not* quit.) -- [ ] Click back in → re-locks. First click only re-locks — it must **not** - fire the weapon. -- [ ] Open the pause/watch (Start), then a front-end menu → cursor frees - automatically. Return to the stage → re-locks without a click. -- [ ] Alt-tab out mid-level → cursor frees; alt-tab back → stays free until - you click (Quake behaviour). -- **Correct feel:** exactly like Quake/Nightdive remasters — click to play, - ESC to get your cursor back. -- **Tune:** none — it's a mode toggle. - -## 2. Aim sensitivity — B3 - -- [ ] With `Input.MouseCaptureMode` either value, hold RMB (aim mode) and - make small aiming corrections. Default is now `MouseAimSpeed = 16` - (was 25). -- **Correct feel:** you can settle the sight on a distant guard's head - without overshooting; a fast flick still crosses the screen. -- **Tune:** `Input.MouseAimSpeed` (1–100+). Up = faster. If hipfire turning - now feels faster than aiming, raise `MouseAimSpeed` or lower - `Input.MouseTurnSpeed` (default 100). `Input.AimBand` (5–40, default 20) - widens the usable stick range past the aim gate — raise it if aim feels - capped/notchy at the extremes. -- [ ] Check the D166 hipfire pitch (mouse up/down without RMB): still - proportional taps, consistent with the yaw. Tune - `Input.HipfirePitchSpeed` (default 100). - -## 3. Menu pointer 1:1 — needs `Input.MouseCaptureMode = 1` - -- [ ] On the mission-select grid, move the OS cursor to each of the four - **corner** level tiles — the game crosshair must reach all of them - (this is the D169 case; absolute mapping should make it exact now). -- [ ] File-select, mode-select, difficulty-select, watch menu — crosshair - tracks the OS cursor with no drift, no lag, no acceleration. -- [ ] Keyboard nav (arrows / stick) still works on every screen. -- **Correct feel:** the crosshair sits exactly under the OS pointer, like a - normal PC menu. -- **Tune:** `Input.MenuPointerSpeed` (default 100) still scales the legacy - relative path; with capture mode the absolute path ignores it. If tracking - feels off, check the window isn't a weird aspect ratio (the map assumes the - render fills the window). -- **Note:** in legacy mode (`MouseCaptureMode = 0`) the menu still uses the - D165/D169 relative estimator — 1:1 menu tracking requires capture mode. - -## 4. Screen shake — `Game.ScreenShakeIntensity` - -- [ ] Default `1` — explosions shake the screen exactly as before. -- [ ] Set `0` — no shake on explosions / big hits. -- [ ] Set `2`–`3` — exaggerated. -- **Correct:** `1` is indistinguishable from the current build. - ---- - -## Single most important thing to test first - -**Item 0** — confirm a default `ge007.ini` produces a build that plays -identically to `def0e0ac`. If that holds, everything else is opt-in polish. - -## Known not-done (parked, see OPTIONS-MENU-PLAN.md) - -- No in-game options **menu** yet — only the config file + the expanded - `config.c` API and the `Game.ScreenShakeIntensity` hook. The menu is a - port-layer overlay design, documented, not built. diff --git a/docs/dev/M-35-QOL-REVIEW.md b/docs/dev/M-35-QOL-REVIEW.md deleted file mode 100644 index 9fca6e24..00000000 --- a/docs/dev/M-35-QOL-REVIEW.md +++ /dev/null @@ -1,132 +0,0 @@ -# M-35 — Native-PC input + options-menu QoL review - -Branch: `qol/native-pc-input-menu` (cut from `def0e0ac`). Port-layer only -except one documented route-(b) `#ifdef PORT` line in `src/fr.c` (D181). -Every new behaviour is config-gated with the default reproducing prior -behaviour; `tools_pc/golden/` headless captures are unaffected at defaults -(no mouse in a headless run; `Game.ScreenShakeIntensity` default 1.0 is a -no-op multiply). - -Findings: **D180** (input pass), **D181** (screen-shake hook). See -`docs/dev/findings.md` §F. - ---- - -## WI-1 — In-game mouse: Quake-style click-to-lock - -**Status: landed, feel-check owed.** - -### What changed - -| File:area | Change | -|---|---| -| `port/src/input.c` — new statics `mouseCaptureMode` / `captureArmed` / `windowFocused` | Capture-mode state. `mouseCaptureMode` registered as `Input.MouseCaptureMode` (0/1, **default 0**). | -| `port/src/input.c` `inputInit` | In capture mode, start **un**grabbed (`SDL_SetRelativeMouseMode(FALSE)`), wait for a click. Legacy mode unchanged (grab on start). | -| `port/src/input.c` `applyGrab()` / `reconcileGrab(menuMode)` | `applyGrab` is the old `inputSetMouseGrab` body (SDL relative-mode toggle + delta drain). `reconcileGrab` computes the wanted grab state: legacy → `windowFocused`; capture → `captureArmed && windowFocused && !menuMode`. Called once per controller-0 poll and from every notify hook. | -| `port/src/input.c` `inputSetMouseGrab(on)` | Now just records `windowFocused` and calls `reconcileGrab` — so focus loss/gain works in both modes without special-casing. | -| `port/src/input.c` `inputNotifyClick()` | Capture mode + focused → `captureArmed = 1` + regrab. No-op otherwise (game sees the click). | -| `port/src/input.c` `inputReleaseCapture()` | Capture mode + grabbed → `captureArmed = 0`, release, return 1 (caller swallows the key). Returns 0 otherwise (ESC falls through to the N64 B button, D145). | -| `port/src/input.c` `inputComputePad` idx 0 | Calls `reconcileGrab(menuMode)`; when capture-mode + free + in a stage, zeroes the local `mb` so mouse buttons never reach the game (no phantom fire from the re-lock click). | -| `port/src/video.c` event pump | `SDL_MOUSEBUTTONDOWN` → `inputNotifyClick()`. `SDLK_ESCAPE` keydown → `inputReleaseCapture()` (before the existing fall-through). | -| `port/include/input.h` | Prototypes for the three new hooks. | - -### Config keys - -| Key | Range | Default | Effect | -|---|---|---|---| -| `Input.MouseCaptureMode` | 0–1 | **0** | 0 = legacy (cursor grabbed whenever the window is focused). 1 = click-to-lock: free cursor until you click the window; ESC / focus-loss / opening a menu frees it; entering a stage while "armed" re-locks. | -| `Input.MouseAimSpeed` | 1–500 | **16** (was 25) | Aim-mode (RMB / LShift) sensitivity %. B3: still overshot at 25. | - -Controller input is completely independent of all of the above — the pad -branch in `inputComputePad` is untouched, and `reconcileGrab` only ever -toggles `SDL_SetRelativeMouseMode`. - -### D166 / hipfire-pitch interaction - -The D166 hipfire pitch pulse is unchanged. It only runs when the cursor is -grabbed (mouse deltas are zero while free), so click-to-lock does not -perturb it. The M-24 aim-band (`61 + gain` into the `60 + aimBand` ceiling) -is unchanged; only the `mouseAimSpeed` scalar feeding `gx`/`gy` moved. - -### Owed feel-checks (playtest checklist items 1–4) - -Headless runs cannot move the mouse, so the capture ergonomics, the new -`MouseAimSpeed = 16` default, and the D166 pulse consistency under the new -model are all inferred, not observed. - ---- - -## WI-2 — Menu pointer: absolute cursor tracking - -**Status: landed for capture mode, feel-check owed. Route (a), port-only.** - -### What changed - -`port/src/input.c`, the `menuMode` pointer branch (the D165/D169 -P-controller). Added an **absolute-position** target source: when -`mouseCaptureMode && !mouseGrabbed` (i.e. a real free OS cursor over a -front-end screen), read `SDL_GetMouseState` + `SDL_GetWindowSize` of the -mouse-focus window, normalise to `[0,1]²`, and map straight onto the live -virtual front-end rect (`loH..hiH × loV..hiV`, already derived from -`getPlayer_c_screen*` for D169). That becomes `menuTgt{H,V}` directly -(no accumulation, no drift). The P-controller/estimator below is unchanged -and simply chases the target, so the game's `cursor_h_pos/v_pos` lands -exactly where the OS pointer is. - -The relative-delta path (legacy `MenuPointerMode`, or capture mode while -grabbed) is **unchanged** — `haveAbs` gates only the new assignment. - -### Why this is enough for 1:1 - -The D169 fix already made the clamp rect track the real 440×330 field. The -only thing missing for true 1:1 was a non-drifting target: a free OS cursor -*is* an absolute device, so mapping its window fraction onto the rect is -exact. No route-(b) hook needed. - -### Keyboard nav parity - -Untouched — the menu branch only ever adds to `sx/sy`; D-pad / stick keys -still feed the same axes. The D118d `front.c` latent sibling was **not** -touched (no evidence the absolute path exposes it; the stick values emitted -are small P-controller corrections, never a slammed ±80). - -### Caveat - -Absolute tracking is only wired for `MouseCaptureMode = 1`. In legacy mode -(default) the menu still uses the D165/D169 relative estimator. If -click-to-lock becomes the default later, WI-2 is 1:1 for free; until then -menu 1:1 requires `Input.MouseCaptureMode = 1`. - ---- - -## WI-3 — In-game video/options menu - -**Status: config-system foundation landed; menu surface = design doc only.** -See `docs/dev/OPTIONS-MENU-PLAN.md`. - -### Landed - -- `configRegisterFloat` / `configRegisterUInt` + clamps (`port/src/config.c`, - `port/include/config.h`). `configSave` rewritten to emit all four option - kinds section-grouped in one pass. -- `Game.ScreenShakeIntensity` (0.0–10.0, default 1.0) — the first - route-(b) hook, D181, proving the pattern the menu will lean on. - -### Not landed (budget) — precise resume point in the design doc - -- The menu tables / handlers themselves. GE's menu system (`front.c` / - `initmenus.c` / `mainmenu.c`) differs enough from PD's `optionsmenu.c` - that it is an adaptation, not a copy. Design doc covers the entry point, - the handler shape, and the minimum option set. - ---- - -## Verification evidence - -| Check | Result | -|---|---| -| `./build-pc.sh ntsc-final` | green, 241/241 | -| `-level_09` framediff (200/320/440) | 3/3 within threshold; nonclear Δ 0.00–0.01pp (91.6%); phash 0/1/5 = documented D117 intro-pan noise | -| `GE_STARTMENU=7` boot | crash-free, no `ge007.crash.log` | -| golden dumps at defaults | unaffected (no headless mouse; shake scale 1.0 = no-op) | -| linkcheck | see PR body | diff --git a/docs/dev/M-36-TRIAGE.md b/docs/dev/M-36-TRIAGE.md deleted file mode 100644 index 977d02fb..00000000 --- a/docs/dev/M-36-TRIAGE.md +++ /dev/null @@ -1,94 +0,0 @@ -# M-36 — graphics / QA bug triage sweep - -Branch `qol/native-pc-input-menu` (local). Goal: sort the open -`GRAPHICS-BACKLOG.md` + QA-report bugs into **root-cause families** so a -fix hits several at once, and correct one mis-attribution. - -Method: headless `GE_PCDUMP` captures (`-level_36` Surface, `GE_STARTMENU=10` -briefing) + static read of the implicated port code. Frames in -`scratchpad/` this session; not committed (auto window size = 1957×1468, -can't framediff — visual only). - ---- - -## Headline findings - -### 1. The "comb interlacing" is NOT the D159 family - -`GRAPHICS-BACKLOG.md` attributes D176(b) and D182(2) to `texSwapAltRowBytes` -"recurring on re-import". **That function is a full `#ifdef PORT` no-op** — -`src/game/image.c:2199` `return;` before any work. It cannot be the cause of -anything. The mis-attribution is now corrected in the backlog. - -The real defect: `port/fast3d/gfx_pc.cpp` `import_texture_*` assume -`full_image_line_size_bytes == line_size_bytes` (explicit `SUPPORT_CHECK` -on rgba32/ia4/ia8/ia16/…; the rgba16 one is commented out with -*"this trips in some places with a garbage size in -full_image_line_size_bytes"*, `gfx_pc.cpp:658`). When a tile's `line` -(SETTILE pitch) differs from the source image row width — non-power-of-two -textures, or a sub-rect tile load — the importer does a flat linear read and -every row walks off by a few bytes → **diagonal shear that reads as grey -static**. Matches the Surface cliff/tree walls (`-level_36` frame 300–900: -structured rock texture tiling but each tile sheared to noise) and the -file-select spiral after re-entry. - -Open question: why does D182 only scramble **after** navigating away and -back? Either the first import happens to have `line == width` and the -re-import doesn't, or the tile descriptor is stale on the second visit. - -### 2. Briefing objectives are BLANK, not wrong - -`GE_STARTMENU=10` briefing (Dam): header renders perfectly ("OHMSS / Agent: -James Bond / Mission 1: Arkangelsk / Part i: Dam / PRIMARY OBJECTIVES:"). -Under it: just the bullet letter **"a."** with **no objective text**, and no -b/c/d lines. So D178 is the **D143/D151 blank-text family** (`langGet()` -returns NULL for the objective string slot → text silently blank), *not* a -propDef walk-desync or difficulty-decode problem. Fix = find which lang bank -the front-end briefing flow fails to load/map. - -Caveat: this repro used the synthetic `GE_STARTMENU` boot (skips real -save/unlock state). The user's D178 report is from a live playthrough, and -D143 independently documents blank briefing text, so it is a real defect — -but re-confirm the exact "a." + blank shape in a real briefing. - ---- - -## Family table - -| Family | Bugs | Root cause (hypothesis) | Files | ROI | -|---|---|---|---|---| -| **A — fast3d texture line/pitch shear** | D176(b) Surface walls; D182(2) file-select bg | **HYPOTHESIS DISPROVEN (D183, `4b71435d`).** 0/166 texture loads on `-level_36` are strided; the wall texture is a 32×32 IA8 whose ROM bytes are genuinely a noise field, decoded correctly. A golden-safe de-stride + `GE_TEXRAW`/`GE_DTEX` diagnostics landed anyway (latent hardening). **D176(b)/D182(2) still OPEN** — next: ROM ground-truth decode of the wall texnum (`TEXTURE-GLITCH-ANALYSIS.md` §7) → likely a tiling-density / UV-scale / `shifts`/`shiftt`-LOD issue (RC3/D167 family) or a wrong-texture bind, not a decode bug. | `port/fast3d/gfx_pc.cpp` | was HIGH, **now needs re-scoping** | -| **B — front-end string bank not loaded** | D178 briefing objectives blank; D143 briefing text blank | **FIXED (D178, `cd1ed574`).** Not a bank-load problem — the `Ubrief*Z` segment is a raw 48-byte BE ROM image loaded with no converter; all 24 `u16` (string ids + difficulty gates) read byte-swapped on LE → `langGet()` NULL → blank, and `>=` difficulty gate always-false → objectives vanish. `romdataFixupBriefing()` swaps in place. Verified: all 4 Dam objectives render at 00 Agent with correct gating. **D143 was a symptom of this** — annotate it superseded. D151 (watch objective text) still owed a re-verify. | `port/src/romdata.c`, `src/game/front.c` (`#ifdef PORT`) | **DONE** | -| **C — D75 front-end / cutscene 3D models** | D75 Nintendo logo; D148 Dam rappel cutscene; D149 MISSION COMPLETE / mode-select models; D182(1) file-select Bond image "renders once"; D173 3rd-person Bond floats; 1P weapon viewmodel absent | mixed: compiled sub-DL corruption (D144/D146), model transform/geometry, `render_pos` arena lifetime, constructor-runs-once | `port/fast3d/gfx_pc.cpp`, `title.c`, `bondview*.c`, model path | **LOW** per fix, deep. **DEFER** (agreed COA). | -| **D — blood / particle** | D172 spray magenta/cyan; D174 no blood decals | D172: CC-mode / texture-format decode in the fast3d sprite path. D174: likely D120 `PointUsage[]` — **only takes effect after a full sidecar regen** (`d43 && d69 && d88 --regen`); verify that first. | `blood_animation.c`, fast3d sprite path; `tools_pc/d43_emit.py` | **MEDIUM**. D174 may already be fixed — regen + BUNKER1 firefight to confirm before touching code. | -| **E — transient hang / anim speed / clip** | D175 door-open stutter (Runway/Surface); D170 NPC flee runs not walks; D171 Silo grey-triangle sweep | D175: matches D155/D156/D134/D147 known classes (benign texture-import spike most likely). D170: D155/D156 wall-clock `deltaFrames` anim speed-up, or just scripted. D171: near-plane clip fan (D106 family). | frametiming clamp, `chrTick`/AI, portal near-plane | **LOW–MED** — needs interactive repro + N64 reference footage. **DEFER**. | -| **F — misc cosmetic** | D74 dead wrap-block (latent, harmless); D76 disclaimer partial (D164 fix owed an eyeball); D77 audio (Phase 3); **D176(a) black sky** | D176(a): sky DL not emitting / wrong transform — **separate from D176(b)**, own investigation (could be C-family or a sky-pass issue). | various | **LOW**, opportunistic. | - ---- - -## Results (2 subagents, integrated + verified on branch HEAD) - -- **Family B → FIXED** (`cd1ed574`). Byte-swapped raw briefing segment. Also - explains D143. High confidence. -- **Family A → hypothesis disproven** (`4b71435d`, D183). D176(b) is not a - texture decode bug. Golden-safe de-stride + diagnostics shipped for the - latent case. **D176(b) / D182(2) remain open and need re-scoping** — start - from the ROM ground-truth decode of the wall texnum; suspect - tiling-density / UV / per-LOD `shifts`/`shiftt` (RC3/D167 family) or a - wrong-texture bind. - -Harness note: both agent worktrees were created from `def0e0ac` (the M-35 -branch point, ~5 commits stale — the M-31 stale-worktree bug again). No harm -this round: the integrator re-applied both patches onto branch HEAD and -verified there. Check `git worktree list` HEADs on the next burst. - -## Next - -1. **D176(b) re-scope** — offline decode the Surface wall texnum from ROM - (`TEXTURE-GLITCH-ANALYSIS.md` §7). Structured rock in ROM → wrong bind or - UV/tiling; noise in ROM → not our bug (or a shift-LOD density issue). -2. **D176(a)** black sky — untouched, separate investigation. -3. **D182** — re-test the file-select round-trip now that `GE_TEXPITCH` / - `GE_TEXRAW` exist; the "renders once" half (D182-1) is Family C. -4. Reassess C/D/E with the user. D174 (blood) is the cheapest — just needs a - sidecar regen + BUNKER1 firefight to confirm the D120 fix. diff --git a/docs/dev/M7-ALLUNLOCKED-PLAN.md b/docs/dev/M7-ALLUNLOCKED-PLAN.md deleted file mode 100644 index 3c78d17e..00000000 --- a/docs/dev/M7-ALLUNLOCKED-PLAN.md +++ /dev/null @@ -1,45 +0,0 @@ -# M7 — Reversible AllUnlocked: investigation and fix plan - -**v0.4.0 release decision (2026-09-28, user):** ship AllUnlocked as a -**loudly-documented, EXPERIMENTAL, irreversible** option for this release rather -than hiding/disabling it or landing a safe architecture. The toggle stays (default -OFF); the in-game row is now labelled **"All unlocked (EXPERIMENTAL)"** with the ON -value displayed as **"ON - UNSAFE"** in both the F10 overlay and the front PC -Options screen, and the README Known-issues bullet already tells users to back up -`data/ge007.eep` before enabling it. A proper fix (Candidate A port-only shadow or -Candidate B non-mutating virtual query) remains the v0.5.0 work item. - -Status: **investigation, NO FIX APPROVED OR LANDED**. Root cause/repro: `docs/dev/findings.md` D387; original feature: D257, fresh-save repair: D281, old-CRC migration: D297. This plan supersedes the M7 "no-code proof" in `docs/dev/notes/MODERN-OPTIONS-PLAN.md`. Follow `AGENTS.md` rule 2 and `docs/dev-process.md` §7 before any `src/game` edit. - -## User-visible contract to settle - -Recommended: OFF (after restart, as presently documented) must display only genuinely earned mission progress/cheats; ON may *temporarily* expose every level, difficulty, 007 mode and cheat, without modifying durable progress. Achievements **earned while ON without an active cheat** should survive OFF, including difficulty inheritance, timed cheats and profile operations. Enabling/disabling must never silently delete existing genuine save records. Do not auto-repair an EEPROM already containing baked fake unlocks: the bytes lack provenance. The user has not explicitly signed off on a game-code alternative. - -## Confirmed facts (source + isolated data) - -- `port/src/libultra.c:geEepromRW` first migrates legacy CRCs on the five-slot block-4 read, then `geEepromPatchAllCheats` fills unlocked-cheat bits and every zero completion time with 0x3FF and re-CRCs a **temporary copy**. `fileValidateSaves` (`src/game/file2.c:527`) accepts that copy into `saves[]`. `fileWriteSave` (`file2.c:86`) writes the entire 96-byte live slot, not only the setting/progress that changed. -- Private data under `AppData/Local/Temp/ge-m7-20260927/`: the older `data/ge007 copy.eep` has two genuine times and only cheat `04 00 00` in active folder 0 (slot 4). ON or OFF boot without a save yields identical EEPROM bytes after the same legacy CRC migration. ON plus existing `GE_WSPROBE_FRONT=600` performs an ordinary Music-volume save to slot 4: cheats become `ff ff 0f`, 58 empty times become 0x3FF, two real times remain. OFF + restart validates the written CRC and retains all fakes. Full repro/logs: D387. Current `data/ge007.ini` and `data/ge007.eep` were never opened for write; copies and SHA-256s in that private test directory. -- `main.c` seeds debug unlock flags only at boot; an in-session OFF toggle leaves those RAM flags set until restart. `Game.AllUnlocked` defaults OFF; the relevant UI currently gives no explicit restart warning. -- More than a write-mask problem: a successful mission runs `end_of_mission_briefing` (`src/game/file.c:41–68`) → `fileUnlockStageInFolderAtDifficulty` (`file2.c:828`) → `fileOverwriteSaveSlotWithNewSave` (`file2.c:794`), **rotating the profile to a free EEPROM slot** and freeing the old slot. `fileCheckSaveStageDifficultyTime` only updates if the real time beats the synthetic 0x3FF. Genuine lower-difficulty completions and long (>1023-second) runs can also have legitimate 0x3FF times; value alone is not provenance. Fake cheat bits cause `fileGetIsCheatUnlocked` to return true, so `end_of_mission_briefing` skips a genuinely earned timed-cheat award. A port-only sanitizer keyed by physical slot or by `time==0x3FF` is incorrect. -- The current user EEPROM already has two nonfree slots with 60/60 max times and all cheat bits, consistent with an earlier write-back. Two separate older EEPROM backups exist in `data/`, but replacing or auto-merging them would risk later real progress; do not touch or auto-repair originals. - -## Architecture decision before code - -**Candidate A — port-only EEPROM shadow/merge:** keep authoritative *raw* progress per logical profile outside patched `saves[]` and translate every write to durable real-only state. Must cover direct settings writes, profile rotation, copy/delete/reset, earned times (including 0x3FF), timed cheat grants currently suppressed by fake reads, five-slot CRCs, and old-CRC migration. Physical-slot-only interception demonstrably fails. A read/write-only adapter may have insufficient information to recognize some genuine completions or cheat awards; prove a full event/provenance model in an isolated prototype before promising this path. No new sidecar that can be lost/desynced without a recovery design. - -**Candidate B — non-mutating virtual query:** retire `geEepromPatchAllCheats`, keep raw `saves[]` and EEPROM intact, and make the *opt-in* UI/gameplay availability queries report AllUnlocked without changing saved bits/times. Likely small PORT-gated touch points: `fileGetIsCheatUnlocked` (`src/game/file2.c:391`, existing D225 developer-only query override), `fileIsStageUnlockedAtDifficulty` (`file2.c:681`; cheat-enabled mission selection requires `STAGESTATUS_COMPLETED`, not merely the debug-flag `UNLOCKED`), and the raw earned-cheat check in `end_of_mission_briefing` (`src/game/file.c:41–68`), which must still record real cheat awards while virtual availability is ON. Audit every caller and the Rare/PD analogue first. A live-only toggle may require restoring debug flags safely; simplest contract is **takes effect on restart** and an explicit UI label. This alters opt-in `src/game` behavior and is **not** the ABI/layout exception: no implementation or implicit sign-off. If port-only is ruled out, prepare the exact file/line, reference, reason, scope and precedent required by `docs/dev-process.md` §7; obtain explicit user approval and document the grant in a new RULE-2-SIGNOFF finding before edits. - -**Release fallback:** if neither safe architecture is ready, do not present the current toggle as a reversible enhancement. Get an explicit release decision on hiding/disabling it vs shipping a loudly irreversible option; default-off alone does not protect users who toggle it on. Keep existing saves intact. - -## Test matrix (private files ONLY) - -1. Capture baseline hashes of copied current ini/EEPROM; separate valid older-progress, fully fresh zero EEPROM, already-contaminated, legacy-CRC, and mixed/multiple-folder fixtures. Do not copy old saves back into `data/`. -2. No-write ON boot then OFF restart: raw five slots unchanged except *explicit* D297 migration; correct UI availability in both states. -3. ON settings writes via `GE_WSPROBE_FRONT` (normal slot), in-stage F10 watch writes, and save-file chooser/reset: only real settings/intentional reset persist; CRC valid; no synthetic completions/cheats in raw file. -4. Real mission completion at agent and higher difficulty (including inherited lower difficulty), fast timed-cheat award, slow/capped 0x3FF completion, and cheat-enabled mission selection. Verify actual new earned records after OFF restart, no artificial ones. Build an isolated gameplay harness if manual replay is impractical; do not use a settings-write test as a substitute for mission completion. -5. Save-slot rotation (`fileOverwriteSaveSlotWithNewSave`), profile copy/delete, all four folders plus free slot, and reopen across process restart. Confirm all five CRCs via `GE_SAVELOG=1` and raw bit-level diff; compare copied baseline profile identity rather than just physical slot index. -6. Default-OFF NTSC/PAL/JP builds and post-landing 21-level default-render comparison; config/EEPROM originals hash-verified **after** all tests. Human test of ON/OFF UI text and behavior. Existing contaminated saves need an explicit *separate*, opt-in recovery plan; never silently rewrite them. - -## Other wave item - -M5 remains under user review: FPS cap and MSAA are independently exposed already; dropping the two-setting Low-end preset is a separate decision, not a dependency of this M7 investigation. diff --git a/docs/dev/TEXTURE-GLITCH-ANALYSIS.md b/docs/dev/TEXTURE-GLITCH-ANALYSIS.md index 82ae0677..56dfd5b7 100644 --- a/docs/dev/TEXTURE-GLITCH-ANALYSIS.md +++ b/docs/dev/TEXTURE-GLITCH-ANALYSIS.md @@ -1,5 +1,7 @@ # Texture Glitch Analysis — PC Port +> **Historical record — do not act on status claims in this file.** Only the status table is current; the diagnosis from §1 onward is from 2026-08-29 and includes retracted fixes (RC4) — never apply them. Current open work and status: [`docs/ROADMAP.md`](../ROADMAP.md) (2026-09-29). + **Original diagnosis:** 2026-08-29 (read-only) · **Status table refreshed:** 2026-08-31 (M-31) Companion artifacts: `` (outside repo). diff --git a/docs/dev/V0.4.0-PLAN.md b/docs/dev/V0.4.0-PLAN.md deleted file mode 100644 index 135ac554..00000000 --- a/docs/dev/V0.4.0-PLAN.md +++ /dev/null @@ -1,515 +0,0 @@ -# v0.4.0 Plan — local working document (NOT pushed; update as items move) - -**2026-09-27 user release decision:** defer M7 / AllUnlocked save-safety work -for v0.4.0 (D387); do not ask for a live-save test or treat the feature as -safe. Before shipping, hide/disable the unsafe toggle or explicitly agree -on a release limitation — default OFF alone does not prevent a user from -turning it ON. The user will do a full campaign playtest *instead of* the -21-level automated sweep; record the campaign result as the release gate, -not as a sweep PASS. **Playtest interruption D393/D394:** physical-pad -A use / X reload / Y weapon cycle was user-tested. After the user supplied -the StrategyWiki Xbox 1.1 Jinx mapping, D394 moved crouch to either stick -click, LB to aim, B to a port-side owned-gadget cycle, and retired LB/RB -weapon cycling. Build linked; user physically confirmed the new button roles work, including -stick-click crouch, LB aim, RB no weapon cycling and B gadget cycling (the -N64 port has no separate gadget HUD icon). **D395:** both controller-accessible -binding menus now refuse pad-initiated keyboard/mouse capture and allow B to -cancel an active modal, pending pad-only retest; this is not gamepad rebinding. -**D396:** F10 B now backs/closes, A selects/toggles without changing sliders; -left/right adjusts sliders. NTSC linked; physical pad retest owed. Inspect B's item category/order during campaign play if multiple mission -items are owned: the current ID-range filter includes some mission objects. -RB's remastered-graphics toggle cannot be replicated with N64 assets, and -Back remains the PC options shortcut. - -Created 2026-09-21 from a fresh triage of `findings-index.csv`, -`GRAPHICS-BACKLOG.md`, `docs/BACKLOG.md`, `ROADMAP-1.0.md` (M-139 phase order), -`QOL-INVENTORY.md`, and the 2026-09-20 HANDOFF. - -**Release goal (user-set):** fix everything that still makes the port not 1:1 -with the N64 original; *then* improvements outside the OG game, plus stability. -Sequencing follows M-139's R → Q → F order, split into four phases below. - -## Baseline - -- **v0.3.0 is shipped** (tag on origin at `4827bc86`); `main` is 7 docs-only - commits ahead. Branch `release/v0.4.0` off `main` when Phase 1 starts. -- All 20 solo missions (plus the ending-credits sequence) load/render/crash-free; campaign completable end-to-end - (Agent, playtested). Steady 60 fps. Audio done. Saves done. -- Known-issue list = README "Known issues" section (D303, D245, D308/ - D306, D307, D311, D318 disclosure, widescreen-stretch, D249, - D240/D241, D257/D259/D281 AllUnlocked caveat). ~~D252~~ retired (M-188), - ~~D75~~ fixed (M-197, user-confirmed), ~~D236~~ fixed (M-198, pass 26 — - awaiting play-test sign-off). - -## Triage of every open item (as of this triage) - -### Bucket A — Fidelity (port diverges from N64 behavior/appearance/sound) - -| ID | Item | State / notes | -|----|------|---------------| -| D320 | 17 aim-hold AI lists in 8 levels carry the as-authored D318 softlock race; Facility `ai_19`, Control `ai_9`, Depot `ai_12` high/med-high | Static sweep done; **live probe-verification owed** (GE_D318T-style timeline on the 3 lists). If one freezes: generalize `d318watchdog.c` (parameterize list/offset/chr/entityid), not per-list copies. N64 softlocks permanently — watchdog stays a port-side recovery, disclosed like D318. | -| D252 | Rainbow particles still intermittent on both platforms after the vertex-buffer fix | Second cause unrooted; prime suspect `import_texture_rgba16` fire-tile width/height from tile line size (32×7 vs 16×14). README known issue. | -| D245 | Water seam between two patterns, moves with view (REOPENED) | M-142 probe: tc-shift k flips during ordinary rotation; opt-in `GE_D245_FIXEDSHIFT` candidate build-verified, needs A/B vs N64 reference before making it default. | -| D303 | Wrong extra long muzzle flash (M16 + others) | **Investigated — pipeline + data ruled out.** Flash path (`gunUpdateAndFire` → `rwmtx[1]/[2]`, `dorottex` DLPRIMARY arms) is byte-identical game code; M16's `MuzzleFlashExtension`=6.0 is the legitimate max stat; Gm16Z flash-node data byte-faithful through d43. Headless runs can't fire weapons (guards don't shoot an idle player), so a TEMP `GE_D303=1` probe in `gfx_pc.cpp` logs every very-tall-thin emitted triangle with full RDP state — **blocked on a live firing capture** (playtest brief item 17). | -| D306/D308 | Z-fighting: Dam intro/truck wheels + general/broader instances | **Investigated — real fighting confirmed, port-vs-faithful open.** Depth precision is equivalent to N64 (24-bit both sides; GE's RSP writes full 16.16 post-transform coords, not s16), so level-authored coincident geometry is the prime suspect and likely fights on N64 too. TEMP `GE_ZF=1` flicker probe in `gfx_pc.cpp` (recurrence-filtered; `GE_ZFBOX` region filter) shows sustained oscillation (counts ~1000) in the Dam-intro truck region. Closing it as faithful needs an N64 reference of the same spot; a PC-only mitigation (float depth) would diverge from N64 and needs a rule-2-style decision. | -| D307 | In-level security camera props face backwards on some levels (Bunker) | **Investigated 2026-09-21 — no port-side bug found.** Full orientation path traced (`setupCctv` → per-frame `RotY(unkC8)×unk84`); every input verified N64-faithful against the ROM (PcctvZ switch data, boundpads incl. the legitimate load-time room-scale ×1.8542, record config words); all math helpers are byte-identical `src/game` code. Remaining suspect if it genuinely differs from N64: fast3d handling of the non-orthonormal lens matrix. **Blocked on user repro detail** (which camera/level + screenshot + ideally N64 compare). `GE_D307=1` diagnostic kept in-tree. | -| D236 | Surface 1 billboard trees render as a solid wall of texture | **FIXED (M-198, pass 26, `425237f9`):** root cause was a texture-BINDING bug — `TEXTURETYPE_DETAIL` cards drawn from the detail tile (opaque IA8 noise) instead of the base image; `gfx_lod_tile_offset` now samples tile 1 when the pair differs (`Video.DetailBaseTile`, default on). Live-verified Surface 1/2 + Depot; other levels provably untouched. Awaiting user play-test sign-off; probes stripped (`0503d335`). | -| D235 | Wrong textures after death/restart (level reload), multiple levels | **Headless verification 2026-09-23 (`2a6bc2bb`)**: fix clean on reload; bug NOT reproduced even with the fix off. Needs the real die → mission select → restart A/B (`GE_D235_OFF=1`). | -| D288 | Silo intro: huge flat untextured triangle sweeps the frame (frames ~562–741 of bare `-level_20`) | **Does NOT reproduce on the current build (2026-09-23, `30cf76b8`)**; D271 A/B ruled out as the fixer. Close if the Silo playtest does not see it. | -| D294 | Statue: CCCP monument ground renders solid black, self-recovers in 10–30 s | **FIXED pending user playtest** (2026-09-22). Note: its "3× pool corrupts anim" symptom was D336, so the 2× cap can be revisited. | -| D291 | Dam: texture glitches when the truck drives past | Not investigated. | -| D249 | Distant geometry drops out on Streets/Egyptian at default FOV | M-142 ruled out far-clip + LOD-multiplier; narrowed to portal/room-visibility BFS. **First check overlap with D271's portal-culling fix** (branch state, see Phase 0). Needs live screenshot+location. | -| D195 | Control: transparency/alpha-blended surfaces render wrong (glass partitions, holographic displays) | **FIXED** (index: gfx_sp_vertex fix) — plan row was stale (2026-09-23 reconcile). | -| D197 | Character face textures wrap around the head instead of clamping (Silo, intermittent) | **CLOSED** (user playtest v0.2.0-pre) — plan row was stale (2026-09-23 reconcile). | -| D182(2)/D176(b) | File-select background degrades after round-trip (comb/interlacing); Surface tree-line static — shared "texture pitch/shear" defect | M-36 Family A; `import_texture_*` line-size assumption. Distinct from the disproven D183 hypothesis. | -| D176(a) | Sky: RDPHALF tri-raster decode; horizon-band coverage (Defect 2) still open | Path B draft in `scratchpad/sky.patch`, phase-fold fix applied, **never visually verified** — one `-level_22` screenshot owed. Branch `land/d176a-sky-perspective-scroll` exists (forgejo remote) — audit + port to main. | -| D75 | Front-end logos: Nintendo logo degenerate (tiny orbiting fragment); Rareware filtering wrong | **FIXED (M-197, user-confirmed live 2026-09-21)**: D50 sidecar converter dropped embedded texture blobs. Remaining: pal/jpn sidecar regen on ROM-holding machines. | -| D290 | Watch in-game "controller" section shows no control-pad graphic | **FIXED 2026-09-23 (`a5804d10`)**: D264-pattern template read in `watchRenderController` + 3 pointer-width/raw-Gfx sites. Sibling sweep also found + fixed **D331** (shell casings never rendered, `94dff811`). | -| D174/D172 | Blood: decals never interactively verified (D120 needs sidecar regen); spray color fixed but owed an eyeball | BUNKER1 firefight with regenerated sidecars (`d43 && d69 && d88 --regen`). | -| D240/D241 | Gunshot SFX cadence drifts; PP7/AK47 goes silent under heavy fire near looping sounds | D241 high-confidence = D207 reproduced (check D207 entry status first — index row is stale/ambiguous). Fold into the D207 voice-cap family. | -| D322 | Long-session audio degradation (issue #87, v0.3.0 full campaign): from Silo onward audio worsens; by Caverns/Cradle OST inaudible + SFX "come and go"; restart cures → session-accumulating state | OPEN — static triage done (teardown audit clean, mixer stateless, D202 leak class covered only for ownerless `count==-1` loops and only validated single-level; D305 already records a pool/list desync). Ranked: voice-pool exhaustion/counter drift > queue starvation > evtq saturation. `GE_D322` pool-telemetry probe shipped 2026-09-21; needs a campaign capture with `GE_D322=1 GE_D204=1`. | -| D311 (residual) | Upstream anim-poison source still open (freeze class guarded) | **Likely root-caused by D336** (head-bob alias read); headless Caverns clean at 2× pool. Close after one live Caverns combat session. | -| D258 | PAL/JP asset conversion broken at the source-data level | Repair path verified, not applied. Region fidelity — NTSC-only users unaffected, but it blocks "faithful in every region" and any JP/PAL ROM use. | -| D160 (residual) | Cutscene reliability PARTIAL (D243 family mostly fixed via M-189/M-190) | Residual = whatever the live GE_D160/GE_D243 campaign pass shows. | - -### Bucket B — Stability (crashes/freezes/hangs; not N64-parity per se) - -| ID | Item | State / notes | -|----|------|---------------| -| D289 | Dam computer-room crash (Deck, one occurrence, never repro'd) | Needs a human re-test on a current build (D255+). If it never recurs → close as untracked. | -| D287 | Windows: real, non-self-recovering freeze after ~15–20 min idle + click-back | One confirmed occurrence; `gfxFrameMsgQ` full is a lead. Consider crash-dump wiring on Windows for the next hit. | -| D286 | Deck: ~8 s self-recovering frame freeze on Caverns | One confirmed occurrence, no repro trigger. | -| D175 | Brief stutter/hang (door-open on Runway/Surface) | Matches known transient-hang classes; reproduce under `tools_pc/debug.ps1` idle-box before believing it's new. | -| D285 (residual) | Audio-thread race fix was PARTIAL | Re-check the thread-lock state vs D305's NULL guard coverage. | -| D281 | AllUnlocked breaks audio + RMB aim when enabled with zero saves written | User-facing mitigation shipped; proper fix = make the feature robust or gate it harder (see Phase 3 decision). | -| — | getenv caching in hot paths (**DONE 2026-09-23, `d9d7cd35`**) (post-release cleanup, HANDOFF M-192) | D302 fixed one instance; sweep for stragglers. Cheap perf/stability hygiene. | -| D117 | Frame nondeterminism (GE_DETERM attempted, not achieved) | Parked as a research item; do not block the release on it. | - -### Bucket C — Improvements / QoL (outside OG game; after fidelity) - -| ID | Item | Notes | -|----|------|-------| -| Widescreen | Currently **stretched 4:3**, not native — README discloses this | **DONE 2026-09-23 (D334 world `d5d9a36a`, D335 HUD/front end `f62bceaf`)**: native at any aspect, default on, F10 toggle; Rule-2 approved. Owed: user HUD playtest at 16:9/21:9; D335a cosmetic. | -| D237 | F10 overlay: mouse-wheel scroll, more settings, category grouping | **DONE 2026-09-23 (`91bd0f84`)**: F10 category headers + 5 more rows (wheel scroll already existed). | -| D314/D315 | F10 flicker (user-deprioritized) + main-vs-in-game menu scaling | D315 deferred from v0.3.0; bigger design question — lands naturally with the overlay work. | -| D238 | Mouse sensitivity rework (master sens, RMB aim sens, Y-gain parity) | Partly superseded: aim modes folded (D337, N64 default via PD integration; Centred (PC) opt-in), Aim range PC/N64 (D338). Remaining: sensitivity feel tuning. | -| D239 | Click-to-lock parity: delete always-grab mode 0 + config key | Small; closes D192 by deletion. | -| GEPD controls (M3) | **IMPLEMENTED, targeted playtest owed (D378/D380/D383–D386).** One effective keyboard/mouse layout, no `Input.Layout` selector: Ctrl crouches without aim; E interacts without reloading; R reloads without interacting. Input → Bindings → Movement/Actions edits two Primary/Secondary keyboard-or-Mouse 1–5 slots in both UIs (D388). Mouse 3 (right) is Aim default; wheel still cycles weapons. Menu arrows/Enter/Escape and mouse clicks remain fixed. See `MODERN-OPTIONS-PLAN.md` M3; earlier preset/B-button text there is historical. | -| Modern controller presets (D394) | **1.1 Jinx button roles physically confirmed; precise gadget category still open**: A action, X reload, B cycle owned gadgets, Y cycle weapons, L3/R3 crouch, RT fire, LT/LB aim, D-pad movement, Start pause. RB updated-graphics and Back scores are XBLA remaster-specific: no HD assets/score view in the N64 port; reserve RB, keep Back→PC options. **Planned** named selector: 1.1 Jinx (L move+strafe, R look+turn), 1.2 Christmas (L move+turn, R look+strafe), 1.3 Frost (L look+strafe, R move+turn), 1.4 Elektra (L look+turn, R move+strafe). Face/trigger roles remain fixed across schemes. Add an `Input.ControllerPreset` enum with default 1.1, F10/front-options selector, preserve per-pad inversion/deadzone, separate keyboard `NaturalPitch` from the pad selector, adapt both stick axes and D-pad per scheme, and verify in watch/menu/tank and physical controller before labeling each selectable. Do not treat these four presets as already implemented. | -| Modern options wave (parity set, 2026-09-27) | **In progress, not a single opt-in Modern page (D388).** M1: Input → Bindings and Gameplay → HUD, shared by F10/front; M2: Original red crosshair plus White/custom RGB, style, size and visibility implemented (D379/D381/D382); M3: single effective layout and rebinding (above). **M5: redundant Low-end toggle removed (D388); Frame rate cap and Anti-aliasing remain independently adjustable, stored values preserved on migration.** M4 GE+ knockback/hitstun/damage-sound/death-cam toggles parked for v0.5.0, not v0.4.0 blockers. **M7 BLOCKED (D387):** AllUnlocked ON can persist synthetic cheats/times after any profile-settings save; OFF does not remove them. Do not run on live saves; a safe design and multi-profile fixture tests are owed. PNG screenshot upgrade dropped from this wave; dev PPM dump remains. The M1–M7 detailed notes retain their historical design record in `MODERN-OPTIONS-PLAN.md`. | -| D226 | Player-adjustable HUD scale (ammo counter, pickup text, dialogue) | **DONE 2026-09-24 (`30720354`)**: Game.HudScale 75–150% (user-verified), fast3d rect scaling about anchors, dialogue/bottom width-capped. | -| Controller rebinding UI (D395) | **Not implemented.** The two Input → Bindings → Movement/Actions pages edit keyboard/mouse slots only. Pad-only users could previously enter a capture modal and get stuck; pad-triggered capture is now disabled in both UIs and B cancels a capture started by keyboard/mouse (NTSC build linked; physical pad-only retest owed). Controller presets (D394) are separate from arbitrary pad rebinding; design an explicit controller-actions page, persistence/migration and capture/cancel semantics before enabling pad capture. | Post-v0.4 scope decision; no promise that keyboard binding slots can hold pad buttons. | -| Rumble (D224) | Wire `osMotor*` → `SDL_GameControllerRumble` (PD precedent exists) | Deprioritized M-87; pick up if gamepad support is in scope for v0.4.0 — user call. | -| Per-pad tuning / hot-plug | PD incremental hot-plug + remembered seats; deadzone/scale/rumble per pad | Medium; real-controller users. | -| Window polish | HiDpi, center window, maximize/default-fullscreen | Small P-class wins. | -| Unlocked FPS | Plan parked; premise changed (D248/D250 fixed — default is now a true 60) | Phase 0 re-measurement before any work; motion interpolation stays out. | - -### Bucket D — Infra / housekeeping - -- **D244** self-hosted CI runner link failure — fix before the release tag so - CI can build win+linux bundles (or confirm GitHub runners suffice). -- Post-release v0.3.0 cleanup (HANDOFF): remove GE_OBJT probes - (`chraction.c` chrSet/UnsetStageFlags, `propobj.c` GAS line); M-183/M-185 - clamp removal pending full-cutscene re-verification; D309 probe decision - (keep for v0.4.0 debugging or remove). -- Working-tree archaeology: ~~uncommitted D236 second-pass state~~ **RESOLVED - before this plan was written — `532092c7`/`6807555c` (Sep 15) already landed - the D266 IA4/texedge decode + D271 portal-culling fixes on main and dropped - the D267–D280 probes.** Consequence: Phase 1 item 9 (D249) can proceed with - the D271 fix in-tree; the D236 tree-wall work continues from D276's oml/fmt=3 - lead on top of the landed decode fixes. - -## Session additions (2026-09-23/24, local) - -- **D336** Frigate "everything breaks but the gun" (uninitialised head-bob alias fields, D100 follow-up): FIXED, user-confirmed. -- **D337/D338** aim modes folded + Aim range option: user-approved ("Seems good"). -- **D339** #92 low-end perf: `GE_PERFSTAT` probe; CPU budget measured (~2 ms/frame), GPU the likely bottleneck; needs target hardware. -- **#105** (Enhanced/Remaster water reflection) refers to a `feature/graphics-final-stack` branch that isn't on origin or local; not v0.4.0 scope. Its "D329" label collides with ours, so watch for that if that work merges. - -## Phases - -### Phase 0 — Hygiene (½–1 session; do before any fidelity work) -1. Branch `release/v0.4.0` off `main`. -2. ~~Resolve the uncommitted D236/D271 tree state~~ already landed (`532092c7`). -3. Remove GE_OBJT probes + playtest-folder `.bat`; decide D309 probe fate; - getenv-cache sweep. -4. Fix/confirm CI runner (D244) so release tooling works end-to-end. -5. Carry-over verifications from the v0.3.0 handoff that were owed: - Runway AllUnlocked toggle re-test, menu-click spot check (D316/D317 both - closed — just confirm no regression on the new tree). - -### Release gate (independent of the phases below) - -**D322 (long-session audio degradation, issue #87)** is a campaign-breaking -defect in shipped v0.3.0 and does not wait for the phase ladder: the -`GE_D322` probe is already built and smoke-tested — request the campaign -capture (`GE_D322=1 GE_D204=1`) from the reporter now, and run its decision -rules as soon as the log lands. If the capture implicates a port-side leak, -the fix slots into Phase 2; if it's a rule-2 behavioral difference, it gets -its own sign-off item. - -### Phase 1 — Fidelity wave (the release's core) -Ordered by (crash risk → visibility → effort); each item ends with its own -verification (headless where possible, human eyeball/ear as merge gate): - -1. **D320 live verification + watchdog generalization** — the only open - item that can hard-lock progression on 8 levels; probes already exist. -2. **D289 re-test** (crash class; one human pass, then close or chase). -3. **Batch "one-off geometry/texture anomalies": D288 + D294 + D291** — - all are single-location, bounded, visually documented; likely share a - fast3d import/culling root cause. One investigation thread. -4. ~~**D252 rainbow particles second cause**~~ — **retired (M-188):** the - user's symptom closed as a duplicate of the D219 fix (live retest clean); - decode + dimensions proven correct (M-141/M-156). Re-open only on a - fireball-rainbow re-report. -5. **D245 water seam** — candidate fix exists; A/B against N64 reference, - then flip default (A1-class fidelity call). -6. **D303 + D306/D308 z-fighting family** — small visual parity items; batch - per commit cadence. (~~D307 camera flip~~ investigated 2026-09-21: no - port-side bug found, all inputs verified N64-faithful — blocked on user - repro detail; see Bucket A row.) D303 + D306/D308 both investigated - 2026-07-19: no port-side bug found in either (pipeline/data/precision all - verified N64-faithful); capture probes `GE_D303` and `GE_ZF` are in-tree — - both now blocked on user-side captures (firing repro / N64 reference). - Nothing further to do agent-side until those land. -7. ~~**D236 tree wall**~~ — **done (M-198, pass 26):** `TEXTURETYPE_DETAIL` - tile-binding fix in fast3d (`Video.DetailBaseTile`); live-verified, - probes stripped. Only the user play-test sign-off remains. -8. ~~**D235 texture reload leak**~~ — **done (M-193):** port-side - `TextureCacheMap` now cleared on every stage transition via - `videoResetTextureCache()` in boss.c; 21/21 sweep pixel-identical; live - death/restart confirm is a playtest item. -9. **D249 culling** — *after* the D271 overlap check; live screenshot+location - first, BFS instrumentation second. -10. **Audio parity: D322 long-session degradation first** (issue #87 — the - only audio report that breaks a full campaign; `GE_D322` probe already - shipped, get the campaign capture, then apply the decision rules in the - finding), **then D240/D241** (fold into D207 family) + verify D230's bass - fix by ear on the elevator track. -11. **Front-end fidelity batch: D290 watch pad graphic, D182(2)/ - D176(b) pitch-shear defect, D176(a) sky Defect 2** (verify the patch - visually first — it's been unverified for weeks). (~~D75 logos~~ fixed - M-197; ~~D195 Control alpha~~ FIXED per findings; ~~D197 face wrap~~ - CLOSED at v0.2.0-pre playtest — both were stale in this list.) -12. **D174/D172 blood verification** (regen sidecars, BUNKER1 firefight). -13. **D258 PAL/JP asset conversion repair** — apply the verified repair path; - re-run the region sweep. Decide scope: ship JP/PAL-accurate or document - NTSC-only for v0.4.0 (user call). -14. **D311 upstream anim-poison source** — close out the last open thread of - the freeze class so the known-issue bullet can be dropped. - -Exit criteria: every README "Known issues" bullet either fixed or explicitly -re-disclosed with a v0.5.0 pointer; no new fidelity regressions (21-level -sweep after each landing). - -### Phase 2 — Stability wave -1. **D287/D286 freeze investigation** — wire Windows crash dumps (or an - in-process fault log) so the next occurrence is diagnosable; pattern-match - against `gfxFrameMsgQ` lead and the D309 teardown-race class. -2. **D175 stutter** — idle-box repro under `tools_pc/debug.ps1`; likely a - known transient-hang class, confirm and close or chase. -3. **D285 residual** — re-audit audio thread-locking vs D305's guard. -4. **D281 AllUnlocked no-save path** — make it robust (root-cause the - sndHandleEvent/aim interaction) or gate the toggle until a save exists. - User call on which. -5. Long-idle soak test (both platforms) as the stability acceptance bar. - -### Phase 3 — Improvements / QoL (only after Phases 1–2 are green) -Order by user-visible value (2026-09-27 refresh — several rows since DONE, marked): -1. ~~**Native widescreen**~~ — **DONE 2026-09-23** (D334/D335; playtest sign-off owed). -2. ~~**F10 overlay wave: D237 + D314/D315**~~ — D237 **DONE 2026-09-23**; D314/D315 still open (user-deprioritized; lands with further overlay work). -3. **Input feel: D238 sensitivity rework, D239 delete always-grab, window - HiDpi/center; rumble + per-pad tuning if gamepad is in scope (user call).** -4. ~~**D226 HUD scale**~~ — **DONE 2026-09-24**. -5. Unlocked FPS: re-measure Phase 0 against the post-D248/D250 baseline and - decide whether v0.4.0 or v0.5.0. -6. **Modern options wave — substantially implemented, NOT release-complete** - (D377–D389). Five functional roots; Input → Bindings → Movement/Actions - and Gameplay → HUD work in both menus. One effective PC layout with - dedicated E/R/Ctrl; two bind slots including Mouse 1–5; crosshair - visibility, Original/White/colour, style and size. Redundant Low-end - preset retired, but FPS cap/MSAA remain. M4 GE+ toggles deferred to - v0.5.0, M6 PNG screenshot removed from this release. **M7 blocked by - persisted fake save progress (D387); do not test with a live save**. - Physical acceptance, M7 release decision, 21-level visual gate and - documentation/commit reconciliation are still open. Earlier "one - opt-in section/default-off/preservation proof" estimates were superseded; - the original research remains in `MODERN-OPTIONS-PLAN.md`. - -### Phase 4 — Release ritual -1. `./build-pc.sh ntsc-final` clean; `/linkcheck`; full 21-level - `tools_pc/verify.sh sweep --json`. -2. Full campaign playtest sign-off (user), incl. the D320-probe levels and a - water level + Surface + Silo (the Phase 1 visual fixes). -3. Refresh README Known Issues, `.github/release-notes.md`, findings index; - regenerate `agentic-development.md` stats from git (still owed since - v0.3.0 prep). -4. Push `release/v0.4.0` → tag `v0.4.0` → CI draft bundles → validate both - artifacts → fast-forward main. - -## Explicitly out of scope for v0.4.0 -- macOS/ARM, LAN multiplayer. -- Motion interpolation / sim-rate changes (UNLOCKED-FPS non-goals). -- D117 frame determinism (research-parked). -- **Mod support and HD texture packs — both post-1.0, both researched; see below.** - -### Post-1.0, researched and tracked (do not start in v0.4.0) - -Both were investigated 2026-09-22 against the Perfect Dark PC port fork -`perfect-dark-dabs-mod-dabs-mod` (**MIT**, Ryan Dwyer — same license as this -tree; `AGENTS.md` already names the PD port a standing reference, so code may be -adapted with attribution). Fuller sequencing notes live in the local -`docs/dev/notes/MODERN-PORT-FEATURES-BACKLOG.md` §5/§6, which is -gitignored — the -durable record is `docs/dev/findings.md` and the summary here. The -drop-in mod support design itself is expanded in the local -`docs/dev/notes/MOD-LOADER-PLAN.md` (2026-09-27: C1–C4 components, v1 -scope, acceptance bar). - -**Mod support (ROM patches) — viable, medium–large.** Findings **D325–D328**. -- Community mods *repack* the ROM, so vanilla offsets are useless: Goldfinger 64 - (12→24 MB, 797/803 slices differ) and even the content-neutral Random Eye - randomizer (identical ROM size, yet 803/803 slices differ — content shifted - +7392). Both die in `tools_pc/d43_emit.py:273` on a vanilla-offset zlib slice. -- **The fix is not a loader rewrite.** PD's `port/src/modimport.c` states our own - constraint verbatim and instead diffs the patched ROM against stock, extracting - what differs into a **mod directory** its loader already reads. The game keeps - running its stock ROM at fixed compiled offsets. -- GE's file table is in the ROM after all (D327 said otherwise; corrected by - D328): 1172-compressed data segment at ROM `0x21990` — one raw inflate, which - `port/src/rzdecomp.c` already wraps — table at `0x252c4`, 727 records of 12 - bytes, pointers `0x80020d90`-based, size by differencing adjacent addresses, - exactly `obInit` (`src/game/ob.c:126`). Verified: **681 exact offset+size - matches vs `filelist.u.csv`, 0 mismatches**; discovery needs **no hardcoded - offsets** and reads Random Eye's own table to **704/726 files byte-identical**. -- Remaining work: extraction in C (proven), patch decoding (PD's `rompatch.c` is - an MIT VCDIFF/BPS/IPS decoder — **removes the GPLv2 xdelta3 constraint**), - converters taking the extracted table, and the real effort: a - **mod-directory override layer** — `port/src/romdata.c` reads the ROM only and - has no analogue of PD's `romfile.moddir` file slots. -- **Hard limit:** mods that *add levels* need new stage-table entries in - `src/game` — rule 2, not the ABI/layout exception. Either a sign-off or scope - down to the existing 20 slots. ASM/code mods stay impossible (ROM code is never - executed here). - -**HD texture packs — medium, well-scaffolded. Answers issue #100** ("High -Resolution Textures", open, `enhancement` — a user asking whether HD textures can -be used with the port). Architecture studied from PD's -`port/include/texpack.h` + `port/fast3d/gfx_pc.cpp`; no finding written yet, so -this entry and backlog §6 are the record. -- **Identity is the whole problem, not decoding.** The renderer only ever sees - the pointer `gDPSetTextureImage` was handed, so PD keeps an address → - texture-number registry populated where `texLoad()` runs and invalidates it - when the pool drops (a stale entry names the *wrong* texture). Then three-tier - matching: texture number → texel checksum (for textures embedded in model - files) → per-record. Packs are `textures/.png`; decode happens on a - worker so loading does not hitch; the hook is inside `import_texture`, gated so - it costs one lookup when off. -- Most scaffolding exists here: our `gfx_pc.cpp` is the same lineage - (`gfx_texture_cache`, `:92,579`), `g_Textures[].texturenum` exists - (`src/game/chr.c:3894`), and **`GE_TEXDUMP` already dumps textures** - (`port/fast3d/gfx_pc.cpp:1205`) — it just names them by sequence - (`r000_f3_s1_64x64.bin`) rather than texture number, so dumps cannot round-trip. - Renaming that is the single change turning the probe into a pack dumper. A PNG - decoder is the one new dependency, and zlib is already required. -- Step 1 (the identity registry) is the only novel design decision, and it - records identity where textures load — a `src/game` touch needing `#ifdef PORT` - plus a §F note. Settle that at design time, not mid-implementation. - -## Session log (agent-driven, 2026-09-20 evening) - -**Phase 0 — done except user-side items:** -- `release/v0.4.0` cut off `main` (which already carried the D266/D271 fixes, - `532092c7` — the "uncommitted tree state" item was stale; plan updated). -- D322 probe work committed (`7bb43260`); GE_OBJT probes removed (D321 closed, - M-192 item 7, `56ac2ab8`); D309 probe **kept** (inert, cheap, recurrence - value for the D309/D310 freeze class). -- getenv hot-path sweep (D302 follow-up): function-level scan of all GE_* - sites found no frame/triangle-rate stragglers in fast3d; cached four - per-frame/per-hit guards in `src/game/bg.c` (GE_D104 room pass, GE_D63 - primary+secondary render logs, GE_D154 inner GDL walk) — all `#ifdef PORT`, - mechanical. -- D244 (self-hosted CI runner): needs `pacman -Syu` on the box itself — - **user-side action**, not locally fixable; fallback (`#ifdef PORT` thin - wrapper for the `#pragma weak` alias) only if the toolchain update fails. -- 21-level sweep gate: running on the new tree (see `scratchpad/sweeps/`). -- Carry-over D316/D317 + Runway AllUnlocked re-tests are interactive → folded - into the big playtest brief below. - -**Phase 1 — in flight:** -- Item 1 (D320): generic pin-signature detector added to `d318TimelineTick` - (`GE_D318T=1` now covers any chr: ACT_ATTACK + live-fire attacktype + - byte-stable animframe for 10 s → one `D320T: PIN?` line per chr, repeating - every 10 s while pinned). Detection only — the recovery watchdog stays - hardcoded to ai_22 per D320's own instruction until a second list freezes. - Live verification of Facility ai_19 / Control ai_9 / Depot ai_12 beats = - playtest work (see brief). -- Item 3 (D288/D294/D291 batch): D288 probe refined per M-155 follow-up - (any_behind_camera==0 only — the w<0 bbox math was a false lead; oml word - now logged for asset ID). D294: `GE_D104` room-visibility trace confirmed - sufficient (curRoom/roomsDrawn/budget + per-room load state every 10 s); - needs live Statue repro at FovScale≈130 + max draw distance. D291: still - needs live Dam truck details — lowest value of the three. -- Item 13 (D258 PAL/JP): **deferred pending user scope call** (ship - multi-region or document NTSC-only for v0.4.0) — no PAL/JP ROMs available - here to verify a blind CSV rename against. -- Item 4 (D235 wrong textures after death/restart): **mechanism found + fix - applied (M-193).** M-108's refutation of the game-side CI-cache theory - stands, but the *port* has its own `TextureCacheMap` (source-address keyed, - no content check) that was never invalidated on stage transitions — - `videoResetTextureCache()` existed with zero callers. Now wired into the - per-stage reset block in boss.c (`#ifdef PORT`, after `memaReset`). - Pixel-identical re-uploads; golden sweep running to confirm. Live - death/restart confirmation + a `GE_D235` >0 capture are playtest items. -- D311 upstream poison source (M-194): static pass done — all - `sub_GAME_7F06FE90` callers pass arg2=16.0f (denominator safe); the - old→new lerp only circulates values; `bheadAdjustAnimation` is the one - path where a live player-velocity corruption reaches `model->speed`. Both - speed-write choke points (`modelSetAnimSpeed`, `modelSetAnimation2`) now - log `D311: … ANOMALY` on |v|>1e4/NaN — next Caverns occurrence is a - one-line diagnosis. No env var (D156-guard pattern). -- Item 4 (D252 rainbow particles): **effectively closed — no agent work - left.** Re-read the finding this session: M-141 refuted the width/height - suspect (line=4 → correct 16×14, cross-confirmed by the GE_TEXDUMP - is_fire_shape filter), M-156 proved the ROM bytes decode to a clean - white-hot→ember progression, and **M-188 closed the user's actual symptom - (lingering residue sprites) as a duplicate of the D219 fix** — user - retested live: "seems fine now." Only a *fireball* rainbow re-report would - re-open it. Plan item 4 retired. -- Item 10 (D207 alarm klaxon): **blocked on user repro info, not agent- - workable.** M-77b implemented the designed last-resort LOOPED-preemption - pass + `[D207-DROP]`/`[D207-YIELD]` counters, BUNKER1 forced-alarm soak - showed zero drops / zero yields (pass 1 always finds a victim), and the - change was reverted. The finding now asks for: which level, which - weapon/situation, and a `GE_AUDIOTRACE=1` capture (or clip) of the failing - alarm — then decide between heavy-level 8/8 starvation (re-apply the - reverted pass), an alarm-stop-path leak, or pure perception (klaxon mix - volume vs N64). Added to the playtest brief as a low-effort ask. -- Full 21-level golden sweep: **21/21 PASS** on the final tree (`bb508e5c`), - confirming D235 fix + D311 probe + all Phase 0 changes are pixel-identical. -- **D75 (Nintendo logo) investigation — M-195, no root cause yet but two - suspects eliminated.** (a) Fresh `GE_D63` run: all 23 logo Primary GDLs - emitted every frame, zero unknown-opcode warnings → emission + DL - consumption fine; PC GDLs byte-faithful to N64 source. (b) New `GE_D75V` - per-batch vertex probe: transformed coords match the wordmark geometry - exactly (MP translation matches the lookat) → basematrix / f32→s32 / - matrix-list suspects eliminated. **Leading hypothesis:** every `G_VTX` - batch encodes v0=0, so multi-batch nodes overwrite shared vertex slots - 0..n−1 (only the last batch survives; higher-indexed triangles read stale - slots) — consistent with the single tiny orbiting fragment observed. Next: - ROM-dump one node's GDL stream and cross-reference `G_TRI4` index ranges - against per-batch counts; fix would be port-layer fast3d slot management. - Probe code (`gfx_pc.cpp`, `videoGetFrameCount()` in video.c/h) uncommitted - at end of session — commit with the doc updates. -- **D307 (CCTV facing backwards) investigated — no port-side bug found.** - Env-gated `GE_D307=1` probe in `setupCctv` dumps every input + derived - orientation per record. Bunker1 (`UsetupsevbunkerZ`) decode vs live: model - switch offset = `PcctvZ` (NOT `GcameraZ`, that's the gun) sw[0] - bit-for-bit; boundpads match the pccg sidecar once the legitimate load-time - room-scale (`pad->pos *= get_room_data_float2()`, ≈1.8542 here) is applied; - record config words (incl. `unkCC`) match; all matrix/atan2 helpers are - byte-identical `src/game` code. Conclusion: PC orientation values == what - the N64 computes; if the symptom is real vs N64, the remaining suspect is - fast3d's handling of the non-orthonormal lens matrix (`unk84` row 0 scaled - 0.1×). Blocked on user repro detail (which camera/level + screenshot). - Findings entry updated; probe kept in-tree (D60/D88 pattern). -- **D303 (extra long muzzle flash) investigated — no port-side bug found yet,** - blocked on live capture. Mapped the full flash pipeline (`gunUpdateAndFire` - builds `rwmtx[1]` = yaw×scale×flashext and `rwmtx[2]` from `Switches[2]`; the - flare arms are `dorottex` DLPRIMARY nodes) — all byte-identical game code, - matrix helpers verified index-for-index. Ruled out: weapon stats (M16's - flashext=6.0 is the legitimate max, sniperrifle matches; the ext≥3 ⊆ - CAN_DUAL_WIELD overlap is design coincidence) and model conversion (Gm16Z - DLPRIMARY records + vertex blocks byte-faithful per d43 round-trip). Added a - TEMP `GE_D303=1` probe in `gfx_pc.cpp` (cached-getenv; logs very-tall-thin - emitted triangles with blend/oml/comb/prim/env/w) — 75 s unattended runs on - Bunker1/Dam/Depot show only static scene geometry, so the artifact needs a - live firing repro. Next: user fires the M16 under `GE_D303=1` and shares the - log lines; the spurious quad's RDP state will identify its source. -- **D306/D308 (z-fighting family) investigated — real fighting confirmed, cause - framed.** Verified GE's RSP writes post-transform x/y/z/w as full 32-bit 16.16 - (not s16 8.8), so the port's float pipeline + `GL_DEPTH24_STENCIL8` matches N64 - depth precision — no port-side precision deficit exists. Built a TEMP - `GE_ZF=1` flicker probe in `gfx_pc.cpp` (96×54 screen-cell grid, per-cell depth - history, requires non-monotonic a-b-a oscillation within GE_ZFTOL recurring ≥5× - at the same cell; `GE_ZFBOX` region filter) — earlier center-pair and simple - flicker variants saturated on tessellation noise. Dam (`-level_33`) unattended: - sustained hits in the lower-left truck region with per-cell oscillation counts to - ~970 → D306's "transparent areas" are real depth-test alternation. Prime suspect - is level-authored coincident geometry (fights on N64 too); confirming port-only - needs an N64 reference of the same spot, and a mitigation (e.g. float depth) - would diverge from N64 — parked pending that. -- **Plan/doc refresh:** D75 (M-197) and D236 (M-198) marked fixed throughout - (Bucket A rows, Phase 1 items 6/7/11, playtest brief); findings index - regenerated; README Known Issues to match. - -### Big playtest brief (for the user, when the tree is final) - -Build: `./build-pc.sh ntsc-final`. Set **`GE_D322=1 GE_D204=1`** for the whole -campaign (D322 pool telemetry — the release gate). For the three D320 beats, -add **`GE_D318T=1`** on: Facility (the captive-scientists monologue/execution -beat), Control (the ai_9 guard beat), Depot (the execution beat) — watch for -`D320T: PIN?` lines; a frozen run keeps printing every 10 s. - -Checklist beyond the normal play: -1. **D322**: full campaign, share `ge007.log` after (decision rules in the - finding). -2. **D316/D317 regression confirm**: click menu rows at a few window sizes, - esp. low rows (crop overscan bars) with SafeAreaCrop on/off; toggle - Game.AllUnlocked back and forth in-game. -3. **D289**: Dam computer room — interact with the terminals (was a one-off - crash, likely D255-class, already fixed — confirm it stays gone). -4. **D294**: Statue, set FovScale ≈130 + max DrawDistance/LodDistance, walk - past the CCCP monument at ground level; if the black-ground window hits, - note the time (a `GE_D104=1` run there is the follow-up capture). -5. **D291**: Dam — watch for texture glitches as the truck drives past; - screenshot + which surface. -6. **D175**: door-open on Runway/Surface — note any stutter/hang. -7. **D287**: leave a level idle+unfocused 15–20 min, click back (the - non-self-recovering freeze; one prior occurrence). -8. **D320 beats** as above with `GE_D318T=1`. -9. Audio by-ear: elevator track bass (D230 verify), PP7/AK47 under heavy fire - near looping sounds (D240/D241). -10. **D235**: on any level, die and restart (or reload a save) in the same - session, then look around — textures should be correct (no swapped/wrong - stage textures). Run once with `GE_D235=1` and share the log if anything - looks off (a `>0` count means a stale-cache hit slipped through). -11. **D288 (Silo)**: play Silo normally; if you see the wrong-color target / - geometry anomaly, set `GE_D288=1 GE_PCDUMP=1` for a 30–60 s run around it - and share log + captures (the probe logs the offending oml word for asset - ID). -12. **D311 (Caverns)**: play Caverns ~2 min of normal combat; if the anim- - speed freeze/poison recurs, the log will now carry a one-line - `D311: … ANOMALY` naming the corrupting call site — share it. -13. **D207 (alarm klaxon)**: if gunfire goes quiet during an alarm, note the - level + weapon + situation; ideally re-run that spot with - `GE_AUDIOTRACE=1` and share the log (or a short clip). -14. **D75 (front-end logos)**: confirm the Nintendo/Rareware logos + legal - page still render correctly (fixed M-197; user-confirmed once already). -15. **D236 (Surface trees)**: Surface 1/2 — confirm the treeline renders as - discrete tree sprites, not a wall (fixed M-198; probes stripped). -16. **D307 (security cameras)**: if any in-level CCTV camera looks like it's - facing backwards, note which level + which camera (screenshot) — the - orientation math is verified N64-faithful, so a concrete repro is what's - needed to keep chasing it. -17. **D303 (extra long muzzle flash)**: run with `GE_D303=1` in your terminal, - fire the M16 (and any other gun that shows the extra upward flash) until - you see it, then share the `D303:` log lines from around that moment — - each line carries the RDP state of a candidate quad and will identify the - spurious draw call's source. -18. **AllUnlocked preservation (M7) BLOCKED — D387.** Do not run this - against a real save: even changing a profile setting while ON persists - synthetic cheats and 0x3FF completion times; OFF requires a restart and - does not undo already-written fakes. First define safe earned-progress - semantics, fix in `port/`, and verify on private copies with settings - writes, mission completion, OFF restart and multi-slot CRC checks. - M4 modern toggles are parked to v0.5.0. - -## Conventions reminder -- One findings entry per investigation; the index tail moves constantly — - it ended at **D370** as of 2026-09-27 (the F10 drag entry), so new - labels start **D371+** (the old "after D322" note is long stale; always - confirm the tail of `findings-index.csv` before filing). -- Fidelity fixes: port-layer or documented A1/ABI exception only; genuine - behavioral differences need the rule-2 sign-off (`docs/dev-process.md`). -- Every subagent reads `docs/porting-notes.md` first and appends to it. diff --git a/docs/dev/VIEWMODEL-RESEARCH.md b/docs/dev/VIEWMODEL-RESEARCH.md index 9da65fb1..2d81234e 100644 --- a/docs/dev/VIEWMODEL-RESEARCH.md +++ b/docs/dev/VIEWMODEL-RESEARCH.md @@ -8,7 +8,7 @@ > `#ifdef PORT` in `src/game/gunfire.c`. See findings.md D215. This doc is kept > for the ruled-out analysis only. -Companion to `GRAPHICS-BACKLOG.md` ("1P weapon viewmodel") and findings D115 +Companion to the (since retired) `GRAPHICS-BACKLOG.md` ("1P weapon viewmodel") and findings D115 item #5 / AUDIT-M6 #5. Goal: narrow the five audit suspects to a ranked, probe-ready list. No code changed by this doc. diff --git a/docs/dev/agentic-development.md b/docs/dev/agentic-development.md index 6bba6d5c..03d31662 100644 --- a/docs/dev/agentic-development.md +++ b/docs/dev/agentic-development.md @@ -283,8 +283,6 @@ Honest notes, for anyone weighing whether this transfers. to Opus 5. Each tier earned its place on the problems the tier below it couldn't close. -**Still outstanding** (the v0.3.0 known-issues list): cosmetic rendering -defects (particle colours, Surface 1 billboard trees, front-end logos, water -seam), stretched-not-native widescreen, PAL/JP support, a controller -rebinding UI, and macOS/ARM builds. See the README's Status section and -[`GRAPHICS-BACKLOG.md`](https://github.com/jkdansereau/goldeneye-pc-port/blob/main/docs/dev/GRAPHICS-BACKLOG.md). +**Still outstanding:** see +[`docs/ROADMAP.md`](https://github.com/jkdansereau/goldeneye-pc-port/blob/main/docs/ROADMAP.md), +the single tracker for open work. diff --git a/docs/dev/findings-index.csv b/docs/dev/findings-index.csv index 4e1c35b0..83dd7a21 100644 --- a/docs/dev/findings-index.csv +++ b/docs/dev/findings-index.csv @@ -13,7 +13,7 @@ D159,FIXED,"front-end wallet-Bond photo ""interlaced""/combed (RC1 / D149) —", D161,FIXED,Depot (-level_30) ceiling = bright-blue speckle + radial rays (B2).,FIXED (port/fast3d/gfx_pc.cpp) D165 · D166,FIXED,"Input-layer polish (M-31, port-only):",FIXED D180 · D181,FIXED,Native-PC input pass (QoL run):,FIXED (2026-09-26 bookkeeping: -D186,OPEN,"Video.FpsCap throttles the sim, not just presentation (M-39 diag, M-42 clamp).","OPEN (2026-09-26, user direction:" +D186,CLOSED,"Video.FpsCap throttles the sim, not just presentation (M-39 diag, M-42 clamp).",CLOSED (2026-09-28 bookkeeping: D187,FIXED,"HUD 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" D188,FIXED,Linux -O2 boot crash:,"FIXED (src/libultrare/libc/xprintf.c, src/sprintf.c, #ifdef PORT); PR #22" D189,FIXED,Linux -fstack-protector aborts on the decomp's latent stack-buffer overruns (M-48) —,"FIXED (CMakeLists.txt, src/game/stan.c #ifdef PORT); PR #23" @@ -31,7 +31,7 @@ D192,CLOSED,Front-end mission/level-select grid pointer still can't reach the ou D221,FIXED,SELECT FILE mouse hit-box offset —,"FIXED (M-91) — explicit {min,max} coord2d pairs under #ifdef PORT; human mouse-playtest confirmed." D222,FIXED,High Video.FovScale breaks culling —,"FIXED, awaiting visual verification (M-121)." D223,FIXED,QoL ask: mouse-wheel weapon cycling should be directional like a normal PC shooter —,"FIXED (M-105, port/src/input.c) —…" -D224,PARTIAL,"QoL gap (M-87, from a PD-PC-port survey):","LANDED via D401 (2026-09-27, re-promoted from DEPRIORITIZED)." +D224,CLOSED,"QoL gap (M-87, from a PD-PC-port survey):",CLOSED (2026-09-28 bookkeeping: D225,FIXED,"Dev-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." D226,FIXED,"QoL ask: player-adjustable HUD scale for the ammo counter, bottom-left pickup/item status text, and top-of-screen dialogue/subtitle text.","FIXED (2026-09-24): Game.HudScale 75–150% (user-verified, capped at 150) via fast3d G_HUDSCALE_EXT rect scaling about per-element anchors; dialogue/bottom messages width-capped." D227,FIXED,Sky renders as two independently-moving halves —,"FIXED (M-100b, PR #43) —" @@ -47,7 +47,7 @@ D203,CLOSED,"Steam Deck (SteamOS, x86_64 Linux) v0.1.0 release bundle:",CLOSED D201,FIXED,"src/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) — D202,FIXED,"Silenced PPK ""slap"" + broader real-time mixer corruption (M-52→M-67).","FIXED (2026-09-26, user by-ear:" D206,FIXED,PC played every SFX one bank slot too high —,"FIXED (M-76, src/snd.c:1001, #ifdef PORT) —" -D207,FIXED,"Alarm klaxon starves combat SFX and doesn't recover after it stops (surfaced by D206, M-77).",MONITORING — user 2026-09-26: +D207,CLOSED,"Alarm klaxon starves combat SFX and doesn't recover after it stops (surfaced by D206, M-77).",CLOSED (2026-09-28 bookkeeping: D208,FIXED,Player weapon-fire sound goes permanently silent mid-firefight (all other SFX unaffected) —,FIXED + user playtest-verified (M-78d) — D209,FIXED,Every AI character in the game is locked to a *walk* animation regardless of the speed the ailist commands —,FIXED + user-playtest-verified (M-81). D210,FIXED,chrToPatrol() leaves act_patrol.lastvisible60 uninitialised on PC —,"FIXED (chraction.c:3872, #ifdef PORT → self->act_patrol.lastvisible60 = -1;, N64 line under #else).…" @@ -57,12 +57,12 @@ D168,FIXED,GE_PCDUMP / F12 PPM captures were vertically flipped —,FIXED (port/ D169,FIXED,Front-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)." D178,FIXED,Pre-mission briefing screen:,FIXED (M-36) — high confidence D175,CLOSED,In-game stutter / brief hang during normal play —,"CLOSED (v0.4.0 campaign sign-off 2026-09-28, user:" -D176,FIXED,"Surface 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." +D176,FIXED,"Surface exterior renders wrong (-level_36), two independent defects.",FIXED (2026-09-29 bookkeeping: D177,FIXED,Ladders non-functional —,FIXED (M-36) — high confidence; interactive climb test owed D172,FIXED,"Bullet-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)… D174,CLOSED,"""No blood effect"" (user QA report).","CLOSED — faithful (2026-09-26, user side-by-side on 1964:" D183,CLOSED,"M-36 Family A (""texture line/pitch shear"") is DISPROVEN for the Surface repro (-level_36).","CLOSED (2026-09-26, user-approved:" -D173,FIXED,Third-person Bond model spawns too high —,"MOSTLY FIXED as a side effect of D243 (2026-09-18, user-confirmed)." +D173,PARTIAL,Third-person Bond model spawns too high —,PARTIAL (2026-09-29 bookkeeping: D179,FIXED,Packaged build crashes after the logos —,"Diagnosed, not fixed —" D180,FIXED,"Native-PC input pass (M-XX QoL run, qol/native-pc-input-menu, port-only).",FIXED (2026-09-26 bookkeeping: D181,FIXED,Game.ScreenShakeIntensity —,FIXED (2026-09-26 bookkeeping: @@ -74,13 +74,13 @@ D214,FIXED,"Keyboard rebinding — [Input.Bind] config section (M-83, port-only, D215,FIXED,1P weapon viewmodel never drew in-level —,"FIXED (src/game/gunfire.c, #ifdef PORT)." D216,FIXED,"Game.SkipIntro — boot straight to the file-select menu (M-83, port + one #ifdef PORT game-code line, PD parity, Phase 4 quick win).",FIXED (2026-09-26 bookkeeping: D217,FIXED,1P weapon viewmodel + 3P Bond model textures garbled —,FIXED + merged (PR #47 + PR #49); white residual split out as D228. -D218,FIXED,Wide FOV exposes the per-level draw-distance / fog boundary —,FIXED (2026-09-26 reclassified: +D218,FIXED,Wide FOV exposes the per-level draw-distance / fog boundary —,FIXED (2026-09-26 reclassified; 2026-09-29 default corrected: D219,RESOLVED,"PPK 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." D220,CLOSED,"1P muzzle flash position shifts upward at higher Video.FovScale (M-87, user QA, Jungle/M16).","CLOSED — merged into D303 (2026-09-26, user:" D85,CLOSED,Room primary/secondary DL → texLoadFromGdl garbage.,"CLOSED (2026-09-26, user-approved:" D86 · D87,RESOLVED,modelInitRwData truncated ptr · attract-demo BE ramromfilestructure.,resolved D88.4,RESOLVED,propDefs polymorphic record stream not byteswapped → setupDoor crash.,resolved (d88_propdefs.py); layout audit M-20 → D132 -D132,PROPOSED,D88 propDefs layout audit (M-20):,proposed fix (not applied) — +D132,CLOSED,D88 propDefs layout audit (M-20):,CLOSED (2026-09-28 bookkeeping: D157,FIXED,"Campaign never unlocks the next level (M-30, user bug —","FIXED (src/bondtypes.h, #ifdef PORT —…" D160,FIXED,Dam level-end cutscene (Bond off the dam / bungee) never plays —,"FIXED (user, 2026-09-26:" D89-D92,RESOLVED,"stage-load→frame: stan zero-fill overrun, portal address trunc, chr/AI spawn ptrs",resolved @@ -88,13 +88,13 @@ D93-D102,RESOLVED,struct-pun / hardcoded-size pass:,resolved (D95 pool bump part D103-D107,RESOLVED,"BUNKER1 viewport height, depth-buffer clear (G_CLEAR_DEPTH_EXT), portal near-plane, LOD mip tile",resolved D108-D112,RESOLVED,skeletal models: d43_emit.py put_f32 byte-reversal bug,resolved D113-D116,FIXED,portal BFS ok · matrix chain ok · player raw-offset audit + gunfire.c THROW* · HUD text X-mirror,"D114/D116 CLOSED — NOT A BUG (M-33, see D168):" -D117,OPEN,"Frame nondeterminism root-caused; GE_DETERM attempted, not achieved.","OPEN (mode attempted, not achieved)" +D117,CLOSED,"Frame nondeterminism root-caused; GE_DETERM attempted, not achieved.",CLOSED (2026-09-28 bookkeeping: D118,RESOLVED,"SDL input layer; M-24 mouse-look rework (mode-aware map, real INI); D118b/c FIXED.",resolved (D118a residual) D150,FIXED,watch OBJECTIVES / BRIEF page crash:,FIXED (src/str.c #ifdef PORT); interactive re-verify pending D260-D265,CLOSED,"v0.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…",CLOSED (2026-09-26 bookkeeping: D266-D269,CLOSED,"D236/D265 wall, second pass:",CLOSED (2026-09-26 bookkeeping: D270,CLOSED,Backfilled (M-132) — this label was never given its own row; only code comments and the HANDOFF archive documented it.,CLOSED (2026-09-26 bookkeeping: -D271,FIXED,"D236 wall, third pass —",FIXED-but-insufficient (src/game/bg.c #ifdef PORT) — +D271,CLOSED,"D236 wall, third pass —",CLOSED (2026-09-29 bookkeeping: D276,CLOSED,"D236 wall, eighth pass —",CLOSED (2026-09-26 bookkeeping: D279,CLOSED,Backfilled — this label was consumed by an undocumented partial session (2026-09-14 ~23:00) that left artifacts in scratch/ (d279_run.log… —,CLOSED (2026-09-26 bookkeeping: D281,FIXED,"Game.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… —","FIXED (2026-09-23, port/src/libultra.c):" @@ -123,7 +123,7 @@ D139,FIXED,Stage-unload crash root cause + fix (M-23).,"FIXED (src/game/cleanup_ D140,FIXED,Pause-menu crash (M-23 open → M-27 fixed).,"FIXED (src/game/bondview.h, src/game/bondview2.c; #ifdef PORT)." D141,FIXED,"Watch-menu item-model crash (M-27), exposed by D140.","FIXED (src/game/gunfire.c, #ifdef PORT)." D152,FIXED,"Mission-failed / objective-failed → permanent black screen (M-28, user bug report —","FIXED (user, 2026-09-26:" -D154,?,"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). +D154,CLOSED,"bg.c room-geometry ray/hit-test GBI parser port (M-28, WRITTEN / UNVERIFIED / UNCOMMITTED).",CLOSED (2026-09-28 bookkeeping: D156,FIXED,"Facility outro-cutscene ""hang"" —","FIXED (user, 2026-09-26:" D155,FIXED,"Facility outro-cutscene end → ""hang"" = unclamped deltaFrames spiral (M-29, user bug report).","FIXED (src/game/frametiming.c, #ifdef PORT —…" D153,RESOLVED,"-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. @@ -145,7 +145,7 @@ D245,FIXED,IsWater water: two competing patterns with a visible seam that moves D246,FIXED,"Tiny pixel strips at the left and right edges of the screen, ""like overscan"" —","FIXED (2026-09-18 session, port-only, Video.SafeAreaCrop)." D247,FIXED,Black bars top and bottom of screen —,"FIXED (2026-09-18 session, port-only, Video.SafeAreaCrop)." D248,FIXED,"Port 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)." -D249,OPEN,"LOD/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); CLOSED (v0.4.0 campaign sign-off 2026-09-28, user:" +D249,CLOSED,"LOD/culling breaks down on large open levels (Streets, Egyptian named specifically) at *default* FOV —",CLOSED (2026-09-28 bookkeeping: D250,FIXED,"FPS 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." D251,FIXED,F10 options overlay QoL pass:,"FIXED (port-only, port/src/optionsoverlay.c)." D252,FIXED,"Particle effects cycle through a rainbow palette (M-124, user playtest of the v0.2.0-pre candidate).","FIXED (M-201, 2026-09-26, user-verified):" @@ -161,7 +161,7 @@ D262,FIXED,v0.2.1 (user report):,"FIXED (primary cause, D264) —" D264,FIXED,"D262's root cause (ABI/layout class, cf.","FIXED — build green, probes removed; visual confirmation pending." D263,RESOLVED,v0.2.1 (user report):,"RESOLVED (not a bug), refined (v0.2.1 further user testing, 2026-09-15)." D265,CLOSED,"D236 investigation (port-layer, port/fast3d/gfx_pc.cpp):",CLOSED (2026-09-26 bookkeeping: -D258,PROPOSED,PAL/JP asset conversion is broken at the source-data level —,DEFERRED (user call 2026-09-28: +D258,DEFERRED,PAL/JP asset conversion is broken at the source-data level —,DEFERRED (user call 2026-09-28: D284,FIXED,port/src/random.c's MIPS64 dsll32/dsrl32 shift helpers were backwards —,"FIXED, 21-level sweep clean, no crashes —" D285,FIXED,Steam Deck SIGSEGV during D255 live-testing = SEPARATE bug:,"FIXED (user, 2026-09-26:" D286,CLOSED,"User-confirmed real ~8s frame freeze on Caverns, Steam Deck —","CLOSED (2026-09-26, user-approved:" @@ -172,7 +172,7 @@ D290,FIXED,"Watch's in-game ""controller"" section shows no control-pad graphic D291,CLOSED,"Dam: texture glitches when the truck drives past (M-141, Steam Deck user playtest).","CLOSED — duplicate of D306, faithful (M-201, 2026-09-26:" D292,FIXED,Death animations are glitched —,"MOSTLY FIXED as a side effect of D243 (2026-09-18, user-confirmed alongside D173) —" D293,FIXED,"QoL 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.…" -D294,FIXED,"Statue: 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… —","FIXED, user playtest confirmed (2026-09-25:" +D294,PARTIAL,"Statue: 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… —",PARTIAL (2026-09-29 bookkeeping: D295,FIXED,"Campaign-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: D296,CLOSED,"Control Center, 00 Agent:","CLOSED (2026-09-26, user-approved:" D297,FIXED,v0.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: @@ -225,7 +225,7 @@ D344,FIXED,Host PC bugchecks (BSOD 0x119 VIDEO_SCHEDULER_INTERNAL_ERROR) during D345,FIXED,"Front-end crosshair snaps away from the pointer on screen/page changes (file select → mode select setCursorPOSforMode(0), front.c:2516; every MENU_PC_OPTIONS p…","Port-only, user-verified (parts a–g):" D346,CLOSED,PC-settings wording pass:,CLOSED (2026-09-28). Shipped in v0.4.0; accepted in the user's final review / campaign playtest. D347,FIXED,F10 overlay controller:,"FIXED (port-only, optionsoverlay.c):" -D348,?,"File-select ""PC Options"" label:",SUPERSEDED by D398 (glyph replaced with the IMG_DOT texture; no new art). +D348,CLOSED,"File-select ""PC Options"" label:",CLOSED (2026-09-28 bookkeeping: D349,CLOSED,GE watch settings are not normally saved to the Bond file:,CLOSED (2026-09-28). Shipped in v0.4.0; accepted in the user's final review / campaign playtest. D350,CLOSED,Watch-backed PC options:,CLOSED (2026-09-28). Shipped in v0.4.0; accepted in the user's final review / campaign playtest. D351,FIXED,Existing D346 value/unit rows had positional initializers shifted into hidePtr:,"FIXED (port-only): designated row initializers restore unit, deadzone divisor and hide-if-auto fields; build clean, headless smoke clean." @@ -243,8 +243,8 @@ D363,FIXED,F10 return to a dark overlay with the N64 watch's green/Bank Gothic v D364,FIXED,Settings UI feedback:,FIXED (user mostly accepted; D365 follows up on annotation size and click targets). D365,CLOSED,F10 annotation hierarchy and visible mouse change targets (2026-09-27).,CLOSED (2026-09-28). Shipped in v0.4.0; accepted in the user's final review / campaign playtest. D366,CLOSED,Input calibration label:,CLOSED (2026-09-28). Shipped in v0.4.0; accepted in the user's final review / campaign playtest. -D367,?,F10 full-width control boxes misaligned with their contents (2026-09-27).,SUPERSEDED by D368 after user playtest: -D368,?,Simplify F10 click targets:,"INPUT RULE KEPT; tinted strips user-rejected, removed in D369." +D367,CLOSED,F10 full-width control boxes misaligned with their contents (2026-09-27).,CLOSED (2026-09-28 bookkeeping: +D368,CLOSED,Simplify F10 click targets:,CLOSED (2026-09-28 bookkeeping: D369,FIXED,Remove F10 row boxes/strips entirely (2026-09-27).,FIXED (awaiting live acceptance): D370,CLOSED,F10 distance/volume drags hurt frame rate (2026-09-27).,CLOSED (2026-09-28). Shipped in v0.4.0; accepted in the user's final review / campaign playtest. D371,FIXED,"GEPD key-layout preset + reload/crouch bindings, v0.4.0 modern options wave M3 (2026-09-27).",FIXED (headless-verified; awaiting user live accept): @@ -253,13 +253,13 @@ D373,FIXED,"In-game crosshair on/off + colour (v0.4.0 modern options wave M2, 20 D374,FIXED,"GEPD becomes the default key layout; preset layering fix (v0.4.0 M3 playtest feedback, 2026-09-27).",FIXED (headless + user live-tested): D375,CLOSED,Crouch wired to the wrong pad bit:,CLOSED (2026-09-28). Shipped in v0.4.0; accepted in the user's final review / campaign playtest. D376,CLOSED,Crouch follow-up + modern-options spot check (2026-09-27).,CLOSED (2026-09-28). Shipped in v0.4.0; accepted in the user's final review / campaign playtest. -D377,FIXED,GEPD independent crouch (2026-09-27).,FIXED (scripted stance verified; user says live crouch was good; pad/hold-vs-toggle specifics owed): -D378,FIXED,GEPD use/reload separation (2026-09-27).,FIXED (headless edges tested; user says E/R seemed good; targeted door/partial-mag cases owed): -D379,FIXED,Crosshair colour: authored texture is red (2026-09-27).,FIXED (cyan frame capture; live yellow/blue recheck owed): +D377,FIXED,GEPD independent crouch (2026-09-27).,FIXED (2026-09-28 bookkeeping: +D378,FIXED,GEPD use/reload separation (2026-09-27).,FIXED (2026-09-28 bookkeeping: +D379,FIXED,Crosshair colour: authored texture is red (2026-09-27).,FIXED (2026-09-28 bookkeeping: D380,FIXED,One PC keyboard layout; PD-style rebind design (2026-09-27).,FIXED (follow-up D383): D381,CLOSED,"RULE-2-SIGNOFF: opt-in RGB, size and Beta crosshair (2026-09-27).",CLOSED (2026-09-28). Shipped in v0.4.0; accepted in the user's final review / campaign playtest. D382,CLOSED,Crosshair menu placement and slider hitches (2026-09-27).,CLOSED (2026-09-28). Shipped in v0.4.0; accepted in the user's final review / campaign playtest. -D383,PARTIAL,PD-style keyboard rebinding in both options UIs (2026-09-27).,PARTIAL (2026-09-28). +D383,CLOSED,PD-style keyboard rebinding in both options UIs (2026-09-27).,CLOSED (2026-09-28 bookkeeping: D384,CLOSED,Front PC Options key-bind navigation feedback + two-slot UI (2026-09-27).,CLOSED (2026-09-28). Shipped in v0.4.0; accepted in the user's final review / campaign playtest. D385,CLOSED,Real mouse 1–5 action rebinding in the two-slot editor (2026-09-27).,CLOSED (2026-09-28). Shipped in v0.4.0; accepted in the user's final review / campaign playtest. D386,CLOSED,Correct Aim default from SDL middle (Mouse 2) to right (Mouse 3) (2026-09-27).,CLOSED (2026-09-28). Shipped in v0.4.0; accepted in the user's final review / campaign playtest. @@ -274,14 +274,26 @@ D394,PARTIAL,Xbox 1.1 Jinx controller parity —,PARTIAL (2026-09-28). D395,RESOLVED,Controller trapped in keyboard/mouse-only binding capture —,"RESOLVED (v0.4.0 campaign sign-off 2026-09-28, user:" D396,RESOLVED,"F10 pad B/A used as slider decrement/increment, not back/select —","RESOLVED (v0.4.0 campaign sign-off 2026-09-28, user:" D397,RESOLVED,SELECT FILE background + intro gun-barrel show an interlaced/comb look —,RESOLVED (2026-09-28): -D398,FIXED,PC Options label: D348's procedural slider glyph replaced with an existing mainfolderimages texture (2026-09-27).,"SUPERSEDED by D400 (icon removed, text-only label; purple-hover bug moot; the D400 textMeasure arg-swap bug was found and fixed there)." -D399,PARTIAL,File-select bottom row (SELECT FILE text + Copy/Erase + PC Options dot/label) shifted 15px left as a block (user sign-off 2026-09-27).,"LANDED (port-only, D343 class):" -D400,PARTIAL,"File-select ""PC Options"" label:","LANDED (port-only, frontoptions.c):" +D398,CLOSED,PC Options label: D348's procedural slider glyph replaced with an existing mainfolderimages texture (2026-09-27).,"SUPERSEDED by D400 (icon removed, text-only label; purple-hover bug moot; the D400 textMeasure arg-swap bug was found and fixed there)." +D399,CLOSED,File-select bottom row (SELECT FILE text + Copy/Erase + PC Options dot/label) shifted 15px left as a block (user sign-off 2026-09-27).,CLOSED (2026-09-28 bookkeeping: +D400,CLOSED,"File-select ""PC Options"" label:",CLOSED (2026-09-28 bookkeeping: D401,CLOSED,Rumble Pak → real gamepad haptics (re-promotes D224/M-87):,CLOSED (2026-09-28). Rumble shipped in v0.4.0 (D401); Steam Deck real-pad validation: D402,RESOLVED,First clean Linux (glibc / SteamOS) build of release/v0.4.0 broke in two port-layer include-resolution spots MinGW tolerated (bondconstants.h first-include cyc…,RESOLVED (Linux/Ubuntu-24.04 build → glibc-2.41-compatible binary for the Steam Deck): D403,RESOLVED,Deck v0.4.0-pre test:,"RESOLVED (2026-09-27, user-confirmed on the Deck:" D404,RESOLVED,"""Aim style: Centred (PC)"" (Input.AimMode=1, D333/D337) has no effect when aiming with a gamepad; the row's own doc comment over-promises (""applies to every aim…","RESOLVED (2026-09-28, port-layer only):" D405,CLOSED,"fast3d/OpenGL: MSAA above the driver max black-screens; two glBindFramebuffer calls pass an index where a GL name is required (PR #106, italoarruda, 2026-09-25…","CLOSED (2026-09-28). Merged from PR #106 (code file only; security-reviewed clean - port-layer GL state fixes, no external input, no allocations)." D406,RESOLVED,front-end PC Options screen:,"RESOLVED (2026-09-28, port-layer only, Steam Deck-validated):" -D407,PARTIAL,Tanks cannot be boarded/exited on PC —,"PARTIAL (fix landed in v0.4.0, port-only):" +D407,CLOSED,Tanks cannot be boarded/exited on PC —,CLOSED (2026-09-28 bookkeeping: D408,OPEN,Game.SkipIntro skips the post-mission failure dossier:,"OPEN (cosmetic, not root-caused past the handoff site)." +D415,FIXED,"Shooting a light fixture does not ""kill"" its flickering light (Bunker, Caverns):",FIXED (2026-09-29 bookkeeping: +D424,FIXED,WeaponStats.RecoilSpeed/b44[] byte order:,"FIXED in tree (WS_B44, port-guarded); user-verified vs GEPD/1964 2026-09-29." +D425,FIXED,Tank run-over death sound loops:,FIXED (2026-09-29 bookkeeping: +D426,RESOLVED,Tank cannot be steered with the mouse out of aim mode (issue #116).,RESOLVED (user 2026-09-29: +D427,FIXED,"Automatic fire cadence is frame-counted, ~2-3x faster than N64 at 60 fps (issue #114).","FIXED in tree (modulus scaled by ticks/frame; measured 6 ticks/shot at 30 and 60 cap); user-verified vs GEPD/1964 2026-09-29 (AK47 mag empties in ~3 s, Klobb normal)." +D428,FIXED,No gun turn-sway with direct mouse look (issue #117).,FIXED in tree (2nd pass: +D429,CLOSED,Tank full pass: aim-mode (RMB) mouse behaviour and tank sticking forward/back (follow-up to D426).,CLOSED faithful (user 2026-09-29: +D430,FIXED,Shot light fixtures do not go dark:,FIXED in tree (D154-style words.w0/.w1 decode); user-verified vs GEPD/1964 on Caverns 2026-09-29. +D431,FIXED,Light fixtures never reached lightFixtureBreak on PC:,FIXED in tree (fixture table records the image id; bg.c hit code looks it up; free-slot guard); user-verified vs GEPD/1964 2026-09-29. +D432,FIXED,"Gunshot sounds ""off"" after D427:",FIXED in tree (gate offset rounded to odd at 1 tick/frame); measured shot/sound cadence identical to N64 rules; residual audible difference vs 1964 tracked as D433. +D433,OPEN,"Slight audible difference in automatic-gun shot sound vs GEPD/1964 after cadence was matched (user by-ear, Caverns).",OPEN (not a timing issue; audio layer suspected). +D434,FIXED,Raw ((u8*)&g_Textures[n])[0] & 0xf hit-type reads are wrong on PC; latent OOB once D431 returned real texture ids (found by sub-agent review).,"FIXED (.hitTexture at 3 sites, port-guarded); live check owed." diff --git a/docs/dev/findings.md b/docs/dev/findings.md index f23ee5ee..d6f6dcdc 100644 --- a/docs/dev/findings.md +++ b/docs/dev/findings.md @@ -397,7 +397,7 @@ covers D24–D69; the log continues in §H (D32 procedure, D70–D121). | D161 | Depot (`-level_30`) ceiling = bright-blue speckle + radial rays (B2). A CI8 tile drawn with `gsDPSetTextureLUT(G_TT_NONE)` was decoded against the stale `rdp.palette` → garbage. Fix: `#ifdef`-free narrow route CI→I when `palette_fmt == G_TT_NONE` in `gfx_pc.cpp import_texture()`. | FIXED (`port/fast3d/gfx_pc.cpp`) | | D165 · D166 | **Input-layer polish (M-31, port-only)**: cursor P-controller + hipfire C-pulse. — full `## D165` / `## D166` entries at file tail | FIXED | | D180 · D181 | **Native-PC input pass (QoL run)**: click-to-lock capture + ScreenShakeIntensity hook. — full `## D180` / `## D181` entries at file tail | FIXED (2026-09-26 bookkeeping: shipped; user reports it feels good in v0.4.0 play). Earlier: LANDED, config-gated, feel-checks owed | -| D186 | **`Video.FpsCap` throttles the sim, not just presentation (M-39 diag, M-42 clamp).** The frame-pacing `sysSleep`+busy-wait in `sync_framerate_with_timer` (`port/fast3d/gfx_sdl2.cpp`) runs inline on the scheduler thread (`osSpTaskStartGo`→`gfx_run`→`swap_buffers_begin`), so a low cap blocks VI-retrace delivery and drags every game thread down to the cap rate (no N64 analogue — RSP/RDP are separate silicon). **Landed:** `0 < FpsCap < 30` → treated as `0` (uncapped) + warning, at both `videoInit` (normalises a bad `ge007.ini` for the next `configSave`) and `gfx_sdl_set_target_fps` (covers the F10-overlay live path); caps ≥ 30 unchanged. Verified: default `FpsCap=0` framediff 3/3 golden-identical; `FpsCap=10` now runs at the uncapped rate; `FpsCap=60` still paces. **Owed:** move pacing off the scheduler thread so any cap only drops presented frames. See §F "D186" + porting-notes.md §E. | OPEN (2026-09-26, user direction: target an "original" framerate/timing mode, with 60 fps + options on top; pacing must stop throttling the sim). Earlier: CLAMP LANDED (`port/fast3d/gfx_sdl2.cpp`, `port/src/video.c`); real fix owed | +| D186 | **`Video.FpsCap` throttles the sim, not just presentation (M-39 diag, M-42 clamp).** The frame-pacing `sysSleep`+busy-wait in `sync_framerate_with_timer` (`port/fast3d/gfx_sdl2.cpp`) runs inline on the scheduler thread (`osSpTaskStartGo`→`gfx_run`→`swap_buffers_begin`), so a low cap blocks VI-retrace delivery and drags every game thread down to the cap rate (no N64 analogue — RSP/RDP are separate silicon). **Landed:** `0 < FpsCap < 30` → treated as `0` (uncapped) + warning, at both `videoInit` (normalises a bad `ge007.ini` for the next `configSave`) and `gfx_sdl_set_target_fps` (covers the F10-overlay live path); caps ≥ 30 unchanged. Verified: default `FpsCap=0` framediff 3/3 golden-identical; `FpsCap=10` now runs at the uncapped rate; `FpsCap=60` still paces. **Owed:** move pacing off the scheduler thread so any cap only drops presented frames. See §F "D186" + porting-notes.md §E. | **CLOSED (2026-09-28 bookkeeping: the user-visible symptom is guarded — caps below 30 are forced to uncapped at load and on set, the menus expose only 30/60, and v0.4.0 holds 60 fps. Moving frame pacing off the scheduler thread and an "original timing" mode are roadmap feature work, not an open bug).** Earlier: OPEN (2026-09-26, user direction: target an "original" framerate/timing mode, with 60 fps + options on top; pacing must stop throttling the sim). Earlier: CLAMP LANDED (`port/fast3d/gfx_sdl2.cpp`, `port/src/video.c`); real fix owed | | D187 | **HUD ammo-type/weapon icon vanished at `-O2` (M-46 root-cause, M-47 fix + verify).** — full `## D187` entry at file tail | FIXED (`src/game/gunfire.c`, `#ifdef AVOID_UB`); PR #19 | | D188 | **Linux `-O2` boot crash: `_Printf` passes `&args` of a by-value `va_list` param (M-48).** — full `## D188` entry at file tail | FIXED (`src/libultrare/libc/xprintf.c`, `src/sprintf.c`, `#ifdef PORT`); PR #22 | | D189 | **Linux `-fstack-protector` aborts on the decomp's latent stack-buffer overruns (M-48) — FIXED.** — full `## D189` entry at file tail | FIXED (`CMakeLists.txt`, `src/game/stan.c` `#ifdef PORT`); PR #23 | @@ -415,7 +415,7 @@ covers D24–D69; the log continues in §H (D32 procedure, D70–D121). | D221 | **SELECT FILE mouse hit-box offset — compiler stack-layout dependency, not coordinate mismatch (M-87 QA / M-91 fix).** — full `## D221` entry at file tail | **FIXED (M-91)** — explicit `{min,max}` `coord2d` pairs under `#ifdef PORT`; human mouse-playtest confirmed. Distinct from D192 (mode-0 clamp range, still open). | | D222 | **High `Video.FovScale` breaks culling — NPCs and some world objects stop rendering near the screen edges (M-87, user QA).** — full `## D222` entry at file tail | **FIXED, awaiting visual verification (M-121).** Root cause traced one step further than the original write-up… | | D223 | **QoL ask: mouse-wheel weapon cycling should be directional like a normal PC shooter — wheel up = next weapon, wheel down = previous — instead of both directions…** — full `## D223` entry at file tail | **FIXED (M-105, `port/src/input.c`) —… | -| D224 | **QoL gap (M-87, from a PD-PC-port survey): the N64 Rumble Pak is fully dropped instead of modernized.** — full `## D224` entry at file tail | **LANDED via D401 (2026-09-27, re-promoted from DEPRIORITIZED).** Rumble Pak now drives real SDL gamepad haptics (`SDL_GameControllerRumble`) via the port-layer `inputRumble*` API + `CONT_CARD_ON`/`PFS_ERR_DEVICE` gating; single global `Input.RumbleScale` (0..1) config + one `Rumble strength` slider row. Real-pad playtest **done 2026-09-28 (Steam Deck: rumble works and is validated; user: include in v0.4.0)**. Gamepad-only —… | +| D224 | **QoL gap (M-87, from a PD-PC-port survey): the N64 Rumble Pak is fully dropped instead of modernized.** — full `## D224` entry at file tail | **CLOSED (2026-09-28 bookkeeping: rumble landed via D401 and shipped in v0.4.0).** Earlier: **LANDED via D401 (2026-09-27, re-promoted from DEPRIORITIZED).** Rumble Pak now drives real SDL gamepad haptics (`SDL_GameControllerRumble`) via the port-layer `inputRumble*` API + `CONT_CARD_ON`/`PFS_ERR_DEVICE` gating; single global `Input.RumbleScale` (0..1) config + one `Rumble strength` slider row. Real-pad playtest **done 2026-09-28 (Steam Deck: rumble works and is validated; user: include in v0.4.0)**. Gamepad-only —… | | D225 | **Dev-tooling QoL (M-87, user ask): a debug-build/env toggle that unlocks all missions + all cheats, for testing.** — full `## D225` entry at file tail | **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. Build-verified; headless boot with `GE_STARTMENU=7` (mission select) crash-free. | | D226 | **QoL ask: player-adjustable HUD scale for the ammo counter, bottom-left pickup/item status text, and top-of-screen dialogue/subtitle text.** — full `## D226` entry at file tail | **FIXED (2026-09-24)**: Game.HudScale 75–150% (user-verified, capped at 150) via fast3d G_HUDSCALE_EXT rect scaling about per-element anchors; dialogue/bottom messages width-capped. | | D227 | **Sky renders as two independently-moving halves — "two sky processes" (M-93 QA; root cause M-100b: unit error, `unk20`/`unk24` are S10.5 not texels).** — full `## D227` entries (M-94→M-100b) at file tail | **FIXED (M-100b, PR #43)** — also fixed "scrolls too fast" (M-96) + over-tiling; human play-test confirmed. Full history in the sections. | @@ -431,7 +431,7 @@ covers D24–D69; the log continues in §H (D32 procedure, D70–D121). | D201 | **`src/libultra/audio/bnkf.c` bank/instrument/sound/wavetable relocation offsets were `s32`, truncating the real 64-bit base pointer.** — full `## D201` entry at file tail | FIXED (`src/libultra/audio/bnkf.c`) — part of the Phase-3 mixer landing, not yet build/runtime-verified in isolation | | D202 | **Silenced PPK "slap" + broader real-time mixer corruption (M-52→M-67).** — full `## D202` entry at file tail | FIXED (2026-09-26, user by-ear: silenced PPK sounds good, no slap or lingering loop; M-66b expiry + later audio fixes). Earlier: OPEN — by-ear check owed (2026-09-26): fire the silenced PPK a lot, listen for a slap/crackle or a lingering loop. Earlier: ROOT CAUSE ESTABLISHED (M-66); Disposition C implemented + measured (M-66b) — stuck loop is sound 203, a faithful N64 quirk; PC-side expiration fades it. M-67 static analysis exhausted. Full trail in the section. | | D206 | **PC played every SFX one bank slot too high — pointer-width layout shift in `struct ALInstrumentAlt_s` (M-76).** Root cause of D205 (3)/(4) + D202's "slap". — full `## D206` entry at file tail | **FIXED (M-76, `src/snd.c:1001`, `#ifdef PORT`)** — ABI/layout-only (D3x class); user by-ear A/B vs N64 = PASS (M-77c) → D202 closed. | -| D207 | **Alarm klaxon starves combat SFX and doesn't recover after it stops (surfaced by D206, M-77).** — full `## D207` entry at file tail | MONITORING — user 2026-09-26: "fixed possibly"; M-201 live captures showed no drops (see D241). Earlier: MONITORING (M-77c: user reports the alarm is acceptable in play after D206; no fix shipped) — voice-starvation hypothesis did NOT hold up (M-77b); designed pass reverted. | +| D207 | **Alarm klaxon starves combat SFX and doesn't recover after it stops (surfaced by D206, M-77).** — full `## D207` entry at file tail | **CLOSED (2026-09-28 bookkeeping: no drops in the M-201 live captures; sibling D241 closed as the D207 family in the v0.4.0 campaign sign-off. Re-open with a capture if drop-outs recur).** Earlier: MONITORING — user 2026-09-26: "fixed possibly"; M-201 live captures showed no drops (see D241). Earlier: MONITORING (M-77c: user reports the alarm is acceptable in play after D206; no fix shipped) — voice-starvation hypothesis did NOT hold up (M-77b); designed pass reverted. | | D208 | **Player weapon-fire sound goes permanently silent mid-firefight (all other SFX unaffected) — `struct` field `bondview.h:200 s32 field_A48` is used as a second…** — full `## D208` entry at file tail | FIXED + user playtest-verified (M-78d) — Bunker firefight: player gunshots persist through the whole engagement and survive the klaxon stopping. Committed 7601b9db (PR #29, merged). | | D209 | **Every AI character in the game is locked to a *walk* animation regardless of the speed the ailist commands — `act_ubytes.padding[45]`, a raw-byte alias into…** — full `## D209` entry at file tail | **FIXED + user-playtest-verified (M-81).** `chraction.c:3665`, `#ifdef PORT` → `get_sound_at_range(self, self->act_gopos.unk59, ...)`; the N64 line kept verbatim under `#else`.… | | D210 | **`chrToPatrol()` leaves `act_patrol.lastvisible60` uninitialised on PC — a raw-byte union alias (`act_init.padding[0x13]`) that shifts when `act_patrol` widens…** — full `## D210` entry at file tail | **FIXED (`chraction.c:3872`, `#ifdef PORT` → `self->act_patrol.lastvisible60 = -1;`, N64 line under `#else`).… | @@ -442,12 +442,12 @@ covers D24–D69; the log continues in §H (D32 procedure, D70–D121). | D169 | **Front-end mouse pointer can't reach the outer cells of the mission/level-select grid — only an inner ~3×3 selectable (M-33, developer bug report).** — full `## D169` entry at file tail | **FIXED (M-33, `port/src/input.c`, port-only, no `#ifdef PORT`).** The `menuMode` pointer branch now derives its clamp bounds from the live virtual screen —… | | D178 | **Pre-mission briefing screen: objectives blank / missing, briefing pages blank (also the D143 "briefing text blank" side effect) — FIXED (M-36).** — full `## D178` entry at file tail | **FIXED (M-36)** — high confidence | | D175 | **In-game stutter / brief hang during normal play** — full `## D175` entry at file tail | CLOSED (v0.4.0 campaign sign-off 2026-09-28, user: no stutter over the full campaign -- fixed). Earlier: OPEN (user, 2026-09-26: still happens occasionally; keep). Earlier: OPEN — observed, not investigated. **Steam Deck (Linux, 2026-09-27/28): occasional frame-timing hitches at low CPU/GPU (~15–30 %) — a frame-pacing/present profile, not a throughput bottleneck (see entry).** | -| D176 | **Surface exterior renders wrong (`-level_36`), two independent defects.** (a) black sky = RDPHALF no-op, root-caused M-37; scroll-speed FIXED (perspective-correct tc in `skyPortRenderPoly`). (b) cliff/rock walls = grey diagonal static — NOT a decode bug (D183: 0/166 loads strided); re-scope from ROM ground truth of the wall texnum (M-37 inconclusive, leaning tiling-density). — full `## D176(a)` entries at file tail; see also GRAPHICS-BACKLOG.md D176 | **(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. **(b) open.** | +| D176 | **Surface exterior renders wrong (`-level_36`), two independent defects.** (a) black sky = RDPHALF no-op, root-caused M-37; scroll-speed FIXED (perspective-correct tc in `skyPortRenderPoly`). (b) cliff/rock walls = grey diagonal static — NOT a decode bug (D183: 0/166 loads strided); re-scope from ROM ground truth of the wall texnum (M-37 inconclusive, leaning tiling-density). — full `## D176(a)` entries at file tail; see also GRAPHICS-BACKLOG.md D176 | FIXED (2026-09-29 bookkeeping: (a) sky via D227, human play-test confirmed; (b) Surface perimeter tree/rock wall via D236, closed M-198; GRAPHICS-BACKLOG row closed 2026-09-28). Earlier: **(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. **(b) open.** | | D177 | **Ladders non-functional — progression blocker (user QA) — FIXED (M-36): `count`/`rooms` land in the high half of a widened pointer.** — full `## D177` entry at file tail | **FIXED (M-36)** — high confidence; interactive climb test owed | | D172 | **Bullet-impact / blood / spark particles render magenta or cyan instead of dark red (M-82, ROOT CAUSE FOUND + FIXED).** — full `## D172` entry at file tail | **FIXED (`port/fast3d/gfx_pc.cpp` `gfx_lod_tile_offset`)… | | D174 | **"No blood effect" (user QA report).** — full `## D174` entry at file tail | CLOSED — faithful (2026-09-26, user side-by-side on 1964: blood matches N64). Earlier: Blood renders (user, 2026-09-26); OPEN only for an N64-accuracy comparison on 1964. Earlier: OPEN — observed; first step = BUNKER1 firefight with regenerated sidecars | | D183 | **M-36 Family A ("texture line/pitch shear") is DISPROVEN for the Surface repro (`-level_36`).** The importers' pitch assumption is real but never fires there; the Surface cliff "grey static" is not a shear. Full evidence + what the walls actually are: §F "D183" below. A defensive, provably-no-op de-stride landed in `import_texture()` anyway (covers the `gfx_dp_load_tile` case the `SUPPORT_CHECK`s assert against), plus `GE_DTEX` STRIDED marker + `GE_TEXRAW` raw-source dump. | CLOSED (2026-09-26, user-approved: disproven hypothesis; the Surface sky issue it served was fixed under D176). Earlier: Hypothesis DISPROVEN + diagnostics shipped; D176(b)/D182(2) still OPEN | -| D173 | **Third-person Bond model spawns too high** — full `## D173` entry at file tail | **MOSTLY FIXED as a side effect of D243 (2026-09-18, user-confirmed).** User: "9/10 times he's in the right place now, if he's off it's only by a small amount, no more floating in midair or glitching out spinning like before." The M-160/M-165 shared-mechanism hypothesis (D243's animation-state/position desync class) holds for this bug too, confirmed by outcome even though the exact code path was never separately traced for D173 specifically. Small positional-offset residual remains, not investigated further — no more full floating/spin. | +| D173 | **Third-person Bond model spawns too high** — full `## D173` entry at file tail | PARTIAL (2026-09-29 bookkeeping: mostly fixed as a side effect of D243, user-confirmed; a small ~1-in-10 offset residual remains, tracked in docs/ROADMAP.md §2). Earlier: **MOSTLY FIXED as a side effect of D243 (2026-09-18, user-confirmed).** User: "9/10 times he's in the right place now, if he's off it's only by a small amount, no more floating in midair or glitching out spinning like before." The M-160/M-165 shared-mechanism hypothesis (D243's animation-state/position desync class) holds for this bug too, confirmed by outcome even though the exact code path was never separately traced for D173 specifically. Small positional-offset residual remains, not investigated further — no more full floating/spin. | | D179 | **Packaged build crashes after the logos — the D43/D69 model + bg sidecars are ROM-derived and absent from any build that has no ROM (M-34, alpha-release QA).** — full `## D179` entry at file tail | Diagnosed, not fixed — release packaging gap + latent `romdata.c` fallback | | D180 | **Native-PC input pass (M-XX QoL run, `qol/native-pc-input-menu`, port-only).** — full `## D180` entry at file tail | FIXED (2026-09-26 bookkeeping: shipped; user reports it feels good in v0.4.0 play). Earlier: LANDED, port-only, no `#ifdef PORT`.… | | D181 | **`Game.ScreenShakeIntensity` — first route-(b) `src/` gameplay-cosmetic hook (M-XX QoL run).** — full `## D181` entry at file tail | FIXED (2026-09-26 bookkeeping: shipped; user reports it feels good in v0.4.0 play). Earlier: **Menu row pulled (v0.2.1, user testing).** The hook is correct on its own narrow terms —… | @@ -459,7 +459,7 @@ covers D24–D69; the log continues in §H (D32 procedure, D70–D121). | D215 | **1P weapon viewmodel never drew in-level — `gunRenderFirstPersonGunModels` builds its `ModelRenderData` from a reinterpret across separately-declared adjacent…** — full `## D215` entry at file tail | **FIXED (`src/game/gunfire.c`, `#ifdef PORT`).** Build clean.… | | D216 | **`Game.SkipIntro` — boot straight to the file-select menu (M-83, port + one `#ifdef PORT` game-code line, PD parity, Phase 4 quick win).** — full `## D216` entry at file tail | FIXED (2026-09-26 bookkeeping: shipped; user reports it feels good in v0.4.0 play). Earlier: **LANDED + VERIFIED this session.** Build clean.… | | D217 | **1P weapon viewmodel + 3P Bond model textures garbled — wrong/stale palette on model-DL CI textures (M-84).** Two defects: ① texpool arena misalignment (the green), ② CI texture-cache collision. — full `## D217` entries (M-86→M-97) at file tail | **FIXED + merged** (PR #47 + PR #49); white residual split out as D228. | -| D218 | **Wide FOV exposes the per-level draw-distance / fog boundary — "blue artifacting" down long peripheral sightlines (M-84, user QA on the D211 FOV slider).** — full `## D218` entry at file tail | FIXED (2026-09-26 reclassified: the proposed fix shipped as Video.DrawDistance + DrawDistanceAutoFov, default 150). Earlier: **Logged (M-84), fix proposed + parked.** Plan… | +| D218 | **Wide FOV exposes the per-level draw-distance / fog boundary — "blue artifacting" down long peripheral sightlines (M-84, user QA on the D211 FOV slider).** — full `## D218` entry at file tail | FIXED (2026-09-26 reclassified; 2026-09-29 default corrected: the proposed fix shipped as Video.DrawDistance + DrawDistanceAutoFov, default 250 — `port/src/video.c:68`). The broader LOD/detail-distance ask is a separate feature in docs/ROADMAP.md §5. Earlier: FIXED (2026-09-26 reclassified: the proposed fix shipped as Video.DrawDistance + DrawDistanceAutoFov, default 150). Earlier: **Logged (M-84), fix proposed + parked.** Plan… | | D219 | **PPK explosions render purple on Dam (M-87, user QA, "not 3D but noting").** — full `## D219` entry at file tail | **RESOLVED (M-115, 2026-09-12)** for the original PPK-purple symptom. **The adjacent bullet-spark-rainbow investigation logged under this label (M-157/M-158) is also FIXED (2026-09-18 session)** — `glass2.c`'s `bullet_spark_render` read the spark's RGBA colour via a hardcoded raw byte offset instead of the named `s_bullet_spark` struct fields, landing in the wrong memory on 64-bit PC; fixed by reading the named fields. User live-confirmed. D252's duplicate "lingering particle residue" report closes as the same bug (M-188). | **M-111 (2026-09-12, live session, 6 build/relaunch cycles): G_LIGHTING lead RULED OUT; texture-cache-collision lead RULED OUT; ROOT CAUSE FOUND — R/B channel swap in the decoded fire particle texture data itself.** Live-captured 4 rounds against a real user playtest (not scripted) with the user confirming explosions were still blue/purple in every capture: @@ -478,7 +478,7 @@ covers D24–D69; the log continues in §H (D32 procedure, D70–D121). | D86 · D87 | **modelInitRwData truncated ptr · attract-demo BE `ramromfilestructure`.** — see §H (D86, D87) | resolved | | D88.1–D88.3 · D88.5–D88.6 | `Usetup*Z` header + sub-table width/endian conversion (`d88_emit.py`) | resolved | | D88.4 | **`propDefs` polymorphic record stream not byteswapped → `setupDoor` crash.** — see §H (D88.4) + `## D132` | resolved (`d88_propdefs.py`); layout audit M-20 → **D132** | -| D132 | D88 propDefs layout audit (M-20): converter cursor confirmed vs real PC struct layout for all types the 21 levels emit. DOOR/OBJECT-prefix/VEHICHLE/AIRCRAFT/TANK/AUTOGUN/AMMO/TINTED_GLASS/objective sub-records all MATCH. **Divergence found:** types 14 LINK / 19 SWITCH / 38 LOCK_DOOR / 44 SAFE_ITEM — each has `s32 IndexN` fields sharing a union with a pointer (`LinkRecord.first`/`Index1`), so on PC the field sits in an 8-byte, 8-aligned union slot, but the converter emits it at N64 tight-4-byte-word offsets → `pdef->Index1` reads `Index2`'s value, `Index2` reads 0 → switch-doors / dual-weapons / locked-doors / safes silently fail their validity guard (non-crash; guard failure also prevents the under-sized-record `->next` overflow). | proposed fix (not applied) — see below | +| D132 | D88 propDefs layout audit (M-20): converter cursor confirmed vs real PC struct layout for all types the 21 levels emit. DOOR/OBJECT-prefix/VEHICHLE/AIRCRAFT/TANK/AUTOGUN/AMMO/TINTED_GLASS/objective sub-records all MATCH. **Divergence found:** types 14 LINK / 19 SWITCH / 38 LOCK_DOOR / 44 SAFE_ITEM — each has `s32 IndexN` fields sharing a union with a pointer (`LinkRecord.first`/`Index1`), so on PC the field sits in an 8-byte, 8-aligned union slot, but the converter emits it at N64 tight-4-byte-word offsets → `pdef->Index1` reads `Index2`'s value, `Index2` reads 0 → switch-doors / dual-weapons / locked-doors / safes silently fail their validity guard (non-crash; guard failure also prevents the under-sized-record `->next` overflow). | **CLOSED (2026-09-28 bookkeeping: fix applied — `tools_pc/d88_propdefs.py` carries the D132 union-slot layouts for types 14/19/38/44; post-fix verification recorded in the `## D132` entry).** Earlier: proposed fix (not applied) — see below | | D157 | **Campaign never unlocks the next level (M-30, user bug — "complete Dam on Agent, Facility stays locked, no save").** — full `## D157` entry at file tail | FIXED (`src/bondtypes.h`, `#ifdef PORT` —… | | D160 | **Dam level-end cutscene (Bond off the dam / bungee) never plays — cuts straight to the MISSION COMPLETE report (M-30/M-31, user bug D148).** — full `## D160` entry at file tail | FIXED (user, 2026-09-26: the Dam ending cutscene plays since v0.3.0). Earlier: DIAGNOSTIC SHIPPED, not root-caused (`c95713f5`, `#ifdef PORT` + `GE_D160=1`)… | | D161 | **Depot (`-level_30`) ceiling renders as bright-blue speckle + radial "light-ray" streaks converging to a point instead of a dark corrugated roof (M-30/M-31…** — full `## D161` entry at file tail | FIXED (`port/fast3d/gfx_pc.cpp` `import_texture`, `port/fast3d/gfx_opengl.cpp` diag). porting-notes.md §D. | @@ -487,13 +487,13 @@ covers D24–D69; the log continues in §H (D32 procedure, D70–D121). | D103–D107 | BUNKER1 viewport height, depth-buffer clear (`G_CLEAR_DEPTH_EXT`), portal near-plane, LOD mip tile | resolved | | D108–D112 | skeletal models: `d43_emit.py put_f32` byte-reversal bug | resolved | | D113–D116 | portal BFS ok · matrix chain ok · player raw-offset audit + `gunfire.c` THROW* · HUD text X-mirror | **D114/D116 CLOSED — NOT A BUG (M-33, see D168): the "X-mirror" was an upside-down `GE_PCDUMP` capture misread as mirrored. PPM writer fixed; the game renders correctly on hardware.** | -| D117 | **Frame nondeterminism root-caused; `GE_DETERM` attempted, not achieved.** — see §H (D117 M-8 root cause + M-52 addenda) | OPEN (mode attempted, not achieved) | +| D117 | **Frame nondeterminism root-caused; `GE_DETERM` attempted, not achieved.** — see §H (D117 M-8 root cause + M-52 addenda) | **CLOSED (2026-09-28 bookkeeping: won't-fix research item — the golden gate compares settled frames and no longer needs determinism; `GE_DETERM` left as-is).** Earlier: OPEN (mode attempted, not achieved) | | D118 | **SDL input layer; M-24 mouse-look rework (mode-aware map, real INI); D118b/c FIXED.** — see §H (D118 + M-24 entries) | resolved (D118a residual) | | D150 | watch OBJECTIVES / BRIEF page crash: `strcat(buf, langGet(id))` with `langGet` → NULL (unloaded bank) → NULL deref; `str.c` str* builtins elide a plain param NULL check, so guard via asm-laundered `GE_IS_NULL` | FIXED (`src/str.c` `#ifdef PORT`); interactive re-verify pending | | D260–D265 | v0.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 → root-caused to D264 (fixed at Gfx level, visual check pending) · D263 Facility Ourumov/Trevelyan beat — **resolved: not a bug**, proximity/LOS-triggered as on N64; full chain incl. execution shot verified firing on PC (teleport probe + user playtest) · D264 watch preview renderdata.flags zeroed by cross-global template read on PC (ABI/layout class; fixed) · D236/D265 Surface 1 tree "wall": IA16 importer dimensions transposed (fixed); decode attempt reverted after raw-byte proof that byte-pair is the authored image; root cause = `import_texture_ia4` decoding RDP I2:A2 as I3:A1, inverting the tree strip's alpha ramp → opaque repeating silhouettes; IA4 I3:A1→I2:A2 decode fix applied and user re-tested — **still a wall; reverted, parked** with evidence + suspect list in D265 | CLOSED (2026-09-26 bookkeeping: v0.2.1 hotfix batch shipped; D265 is a D236 sub-pass, closed M-198). Earlier: partial — see rows | | D266–D269 | D236/D265 wall, second pass: **the wall is CI8 32×32, not IA** (D269) — band-gated probe finds two draw classes per room stream (OPA oml=0xc4112078 + XLU oml=0xc41049d8), both BILERP/TEXTLOD/2-cycle/**FOG-on**; cards are soft gradient blobs, stripe period ≈ one card per visible room. D266: re-applied the reverted I2:A2 IA4 decode + replaced the hardcoded 0.19 edge quantize with AC-aware handling (census shows zero IA4 draws at boot). D267: IA8 dump infra — the three IA8 images are noise/mast sprites, not the wall. D268: force-alpha A/B proves the blend pipeline works. Ranked suspects now: fog range/application (D218 family) > TEXTLOD/mip sampling > draw density/culling > palette | CLOSED (2026-09-26 bookkeeping: sub-pass of D236, which closed in M-198). Earlier: OPEN (the wall itself) — probes live in tree (`GE_D266`/`GE_D266W`/`GE_D267`/`GE_D268_FORCEA`); the D266 decode + D271 portal-culling fixes **landed** (`532092c7`, M-139 R2 extraction) | | D270 | **Backfilled (M-132) — this label was never given its own row; only code comments and the HANDOFF archive documented it.** — full `## D270` entry at file tail | CLOSED (2026-09-26 bookkeeping: sub-pass of D236, which closed in M-198). Earlier: dead-ended into D271/D272; infrastructure kept in tree | -| D271 | **D236 wall, third pass — suspect #3 (draw density/culling) CONFIRMED as a real over-draw; the D106 guard was the cause (M-129).** — full `## D271` entry at file tail | FIXED-but-insufficient (`src/game/bg.c` `#ifdef PORT`) — **landed** `532092c7` (M-139 R2 extraction, probes stripped); wall still open, see D236 | +| D271 | **D236 wall, third pass — suspect #3 (draw density/culling) CONFIRMED as a real over-draw; the D106 guard was the cause (M-129).** — full `## D271` entry at file tail | CLOSED (2026-09-29 bookkeeping: superseded — the Surface 1 tree wall was fixed by D236, closed M-198; D271's portal-culling change stays landed). Earlier: FIXED-but-insufficient (`src/game/bg.c` `#ifdef PORT`) — **landed** `532092c7` (M-139 R2 extraction, probes stripped); wall still open, see D236 | | D276 | **D236 wall, eighth pass — the true painter of the visible weave is a fully-opaque IA8 blocky-noise texture, not either of D269's named CI8 classes (M-134).** — full `## D276` entry at file tail | CLOSED (2026-09-26 bookkeeping: sub-pass of D236, which closed in M-198). Earlier: REFRAMED — `oml=0xc81049d8`/`fmt=3` is the primary suspect now, not D269's CI8 pair; `0x0c184b50` unattributed; wall still open, see D236 | | D279 | **Backfilled — this label was consumed by an undocumented partial session (2026-09-14 ~23:00) that left artifacts in `scratch/` (`d279_run.log`…** — full `## D279` entry at file tail | CLOSED (2026-09-26 bookkeeping: sub-pass of D236, which closed in M-198). Earlier: undocumented — artifacts only | | D281 | **`Game.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…** — full `## D281` entry at file tail | FIXED (2026-09-23, port/src/libultra.c): the AllUnlocked patch now reproduces the game's fresh-slot result (folder saves with DEFAULT_OPTIONS + one free slot) instead of five folder-1 slots with options 0 (no aim sight). Verified by fresh-eep SAVELOG; audio half **confirmed 2026-09-28 (campaign, user: good)**. v0.4.0 decision (user-delegated, 2026-09-28): keep the shipped mitigation + README disclosure; the zero-saves root cause (sndHandleEvent/aim interaction) is v0.5.0. | @@ -525,7 +525,7 @@ covers D24–D69; the log continues in §H (D32 procedure, D70–D121). | D150 | **Watch objective/briefing page crash (M-28).** — full `## D150` entry at file tail | FIXED (`src/str.c`, `#ifdef PORT`). Build green (`ntsc-final`); `-level_09` 600+ frames @ 91.67% unregressed. Watch-page repro is interactive — user to re-verify. porting-notes.md §C. | | D152 | **Mission-failed / objective-failed → permanent black screen (M-28, user bug report — LIVE process inspected, not yet fixed).** — full `## D152` entry at file tail | FIXED (user, 2026-09-26: no black screen after mission/objective failure). Earlier: MITIGATED (`port/src/libultra.c`, M-28, `#ifdef PORT`/port-only).… | | D152+ | **D152 addendum — static audit + narrow fix (M-31).** — full `## D152+` entry at file tail | FIXED (`src/snd.c`, `port/src/libultra.c`, `#ifdef PORT`). porting-notes.md §D4. | -| D154 | **`bg.c` room-geometry ray/hit-test GBI parser port (M-28, WRITTEN / UNVERIFIED / UNCOMMITTED).** — full `## D154` entry at file tail | **M-30 re-audit + fixes (still playtest-gated for final verify).** Cross-checked the ported G_TRI1 + all 12 G_TRI4 nibble recoveries twice against the N64 `#else` and the raw BE-word bit derivation —… | +| D154 | **`bg.c` room-geometry ray/hit-test GBI parser port (M-28, WRITTEN / UNVERIFIED / UNCOMMITTED).** — full `## D154` entry at file tail | **CLOSED (2026-09-28 bookkeeping: playtest gate satisfied — full v0.4.0 campaign played with no background-hit/raycast anomalies; ABI re-audited again under D313).** Earlier: **M-30 re-audit + fixes (still playtest-gated for final verify).** Cross-checked the ported G_TRI1 + all 12 G_TRI4 nibble recoveries twice against the N64 `#else` and the raw BE-word bit derivation —… | | D156 | **Facility outro-cutscene "hang" — the actual fix (M-29, user bug report, 2nd occurrence after D155).** — full `## D156` entry at file tail | FIXED (user, 2026-09-26: no outro hang seen). Earlier: GUARDED (`src/game/model.c`, `#ifdef PORT`)… | | D155 | **Facility outro-cutscene end → "hang" = unclamped `deltaFrames` spiral (M-29, user bug report).** — full `## D155` entry at file tail | FIXED (`src/game/frametiming.c`, `#ifdef PORT` —… | | D153 | **`-level_09` frame ~900–1400 `0xc0000005` = D117/D134 load flakiness, NOT a bug (M-28).** — full `## D153` entry at file tail | NOT A BUG — closed. Run anchors on a quiet machine. | @@ -552,7 +552,7 @@ covers D24–D69; the log continues in §H (D32 procedure, D70–D121). | D246 | **Tiny pixel strips at the left and right edges of the screen, "like overscan" — look like raw pixels, not 3D graphics (M-116, user QA report).** — full `## D246` entry at file tail | **FIXED (2026-09-18 session, port-only, `Video.SafeAreaCrop`).** Measured precisely (exactly 1.0 logical unit missing on both edges, every resolution); underlying clip-precision root cause not isolated, but `gfx_adjust_viewport_or_scissor` now trims a fixed 1-unit margin from both edges — same toggle/mechanism as D247. Live user playtest confirmed clean edges. | | D247 | **Black bars top and bottom of screen — possible aspect-ratio defect (M-116, user QA report).** — full `## D247` entry at file tail | **FIXED (2026-09-18 session, port-only, `Video.SafeAreaCrop`).** Root cause: faithful, unmodified N64 TV-safe-area letterboxing that real CRT overscan used to hide; this port showed the full VI frame. Per user request, given a real fix (not left as "correct original behaviour"): `gfx_adjust_viewport_or_scissor` now remaps against the active gameplay viewport bounds so it fills the window edge-to-edge. New `Video.SafeAreaCrop` toggle (default on). Live user playtest confirmed clean edges. | | D248 | **Port runs a stable 30 FPS instead of 60 FPS game-wide (M-117, user asked to verify FPS after the D209 timing-keystone fixes).** — full `## D248` entry at file tail | **FIXED, root-caused to a genuine pointer-width ABI bug in `src/sched.c` (compiled for the PC build, not excluded).** `osScAddClient()` (`src/sched.c:187-199`) stashes a per-client "present every retrace vs.… | -| D249 | **LOD/culling breaks down on large open levels (Streets, Egyptian named specifically) at *default* FOV — far-away geometry has visible culling issues (M-119…** — full `## D249` entry at file tail | OPEN — M-142 static review ruled out the unscaled-far-clip and LOD-multiplier suspects (both already correct); CLOSED (v0.4.0 campaign sign-off 2026-09-28, user: no distant-geometry drop-out seen on Streets/Egyptian over the full campaign -- fixed); narrowed to the portal/room-visibility BFS, needs a live screenshot+location, not more code reading.… | +| D249 | **LOD/culling breaks down on large open levels (Streets, Egyptian named specifically) at *default* FOV — far-away geometry has visible culling issues (M-119…** — full `## D249` entry at file tail | **CLOSED (2026-09-28 bookkeeping: the v0.4.0 campaign sign-off already recorded below closed it — no distant-geometry drop-out on Streets/Egyptian over the full campaign; lead status corrected).** Earlier: OPEN — M-142 static review ruled out the unscaled-far-clip and LOD-multiplier suspects (both already correct); CLOSED (v0.4.0 campaign sign-off 2026-09-28, user: no distant-geometry drop-out seen on Streets/Egyptian over the full campaign -- fixed); narrowed to the portal/room-visibility BFS, needs a live screenshot+location, not more code reading.… | | D250 | **FPS is inconsistent/low on many levels after 60 Hz shipped (M-119, user QA; D248 follow-on).** — full `## D250` entry at file tail | FIXED — per-call `getenv()` cost was the bottleneck; rock-steady 60-61 fps after, user re-tested 1440p/4K clean. | | D251 | ****F10 options overlay QoL pass:** — full `## D251` entry at file tail | **FIXED (port-only, `port/src/optionsoverlay.c`).** (a) The panel now computes how many rows fit the *actual* current 2D height (`maxVisibleRows()` from `viGetY()`) and scrolls… The last open symptom — the bottom row deterministically duplicating the selected item (v0.2.0-pre playtest) — is resolved by D304's `overlayUpdateScroll()` minimal-scroll rewrite; user-confirmed no longer occurring (2026-09-18). | | D252 | **Particle effects cycle through a rainbow palette (M-124, user playtest of the v0.2.0-pre candidate).** — full `## D252` entry at file tail | **FIXED (M-201, 2026-09-26, user-verified): port-side D68 shim `gimgSyncCompiledGlobalDLs` only synced the compiled explosion DLs on the first stage; every later stage kept the title stage's freed texture pointers. Earlier history: 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).** `explosionRenderPart()`'s 4-vs-5-vertex overrun (`src/game/explosion.c`) is fixed and stays in. Initial testing suggested "fixed on Windows, recurs on Deck," but further user testing found it also recurs intermittently on Windows (same Jungle repro, not always reproducing) and is level-dependent (same repro method doesn't trigger it on every level) — not a clean platform split. Repro method (`Game.AllUnlocked` + cheats for an immediate grenade launcher) is flagged as a possible, unconfirmed factor. The unconfirmed secondary lead from this session (stale TMEM-slot `src_fmt` CI8 reroute, `port/fast3d/gfx_pc.cpp` ~line 1250) remains the best-named candidate for the residual. Not re-investigated further this session. | @@ -580,7 +580,7 @@ covers D24–D69; the log continues in §H (D32 procedure, D70–D121). | D291 | **Dam: texture glitches when the truck drives past (M-141, Steam Deck user playtest).** — full `## D291` entry at file tail | CLOSED — duplicate of D306, faithful (M-201, 2026-09-26: user-captured, Dam intro camera 5 only). Earlier: OPEN — observed, not investigated. Needs a live repro with the truck's exact position/timing and, ideally, a screenshot. | | D292 | **Death animations are glitched — Bond is often sunk halfway into the floor (M-141, Steam Deck user playtest).** — full `## D292` entry at file tail | **MOSTLY FIXED as a side effect of D243 (2026-09-18, user-confirmed alongside D173) — same fix, same outcome: right 9/10 times, small residual offset only when off, no more full sinking/glitching.** See D173 for the user's exact confirmation wording; not separately re-tested, reported together. | | D293 | **QoL ask: no discoverable way to quit the game from the UI (M-141, Steam Deck user playtest — "couldn't see a way to exit the game. Maybe build this into the…** — full `## D293` entry at file tail | FIXED (M-141) — "Quit to desktop" row added to the F10 overlay; build-verified Win+Linux, not yet live-confirmed.… | -| D294 | **Statue: 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…** — full `## D294` entry at file tail | **FIXED, user playtest confirmed (2026-09-25: not reproduced)** — root cause: room-model POOL exhaustion (authored `-ma220`=220 KB < ~250 KB monument-plaza demand at FovScale 130 + max DD/Lod); `memaAlloc` NULL → silent skip → undrawn room shows the night-sky clear colour. Stochastic (wall-clock seed → load order). Fix: `portRoomPoolScale()` (video.c, identity at N64-faithful settings) applied in `bossMainloop`; verified headless (faithful→exact authored size; user settings→0 failures; `GE_ROOMPOOL=0.25`→exhaustion on demand). Playtest: main patch gone; residual corner flicker traced to full-level residency (487 KB = 2.2× authored) starving the 2× pool; the 3×/linear fix REGRESSED the renderer on the menu-driven path (D156 NaN anim state, not a bank overflow) → reverted to sqrt + 2.0 cap (ma=450560). Residual open; probes in place for next capture. High-DD horizon edge on night levels = setting-inherent, documented only.… | +| D294 | **Statue: 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…** — full `## D294` entry at file tail | PARTIAL (2026-09-29 bookkeeping: main symptom FIXED — room-model pool; user playtests 2026-09-22/25 no longer reproduce the black ground; the residual corner flicker at max FOV reported 2026-09-22 was never re-checked, tracked in docs/ROADMAP.md §2). Earlier: **FIXED, user playtest confirmed (2026-09-25: not reproduced)** — root cause: room-model POOL exhaustion (authored `-ma220`=220 KB < ~250 KB monument-plaza demand at FovScale 130 + max DD/Lod); `memaAlloc` NULL → silent skip → undrawn room shows the night-sky clear colour. Stochastic (wall-clock seed → load order). Fix: `portRoomPoolScale()` (video.c, identity at N64-faithful settings) applied in `bossMainloop`; verified headless (faithful→exact authored size; user settings→0 failures; `GE_ROOMPOOL=0.25`→exhaustion on demand). Playtest: main patch gone; residual corner flicker traced to full-level residency (487 KB = 2.2× authored) starving the 2× pool; the 3×/linear fix REGRESSED the renderer on the menu-driven path (D156 NaN anim state, not a bank overflow) → reverted to sqrt + 2.0 cap (ma=450560). Residual open; probes in place for next capture. High-DD horizon edge on night levels = setting-inherent, documented only.… | | D295 | **Campaign-halting crash at the end of Control Center on 00 Agent difficulty, then a crash on every subsequent relaunch/resume (GitHub #87, user campaign playtest).** — full `## D295` entry at file tail | FIXED (M-149) — M-148 root-caused + reproduced on HEAD; fix landed: port-side JPN-cache seed (`port/src/main.c`) + `#ifdef PORT` buffer widen in `front.c` (D8 class). Verified: previously-crashing input now clean, 21/21 sweep PASS. Companion save-wipe regression → D297. History — M-148 fully root-caused + **reproduced on current HEAD**: `difficultytext[4]` (`front.c:2616`) overflow — `strcpy("00 Agent")`/`strcat("\n")` spills onto `textpos.p[0]` (y, ≥0x80 in normal geometries) → high-bit byte → `langGetJpnCharPixels` NULL deref (`language.c:320`, `g_JpnCacheCacheItems` NULL outside JPN mode — likewise unallocated on N64 non-JP builds, crash potential is decomp-native). The user's save is a *valid pre-D284* save (all 5 slot CRCs bit-exact under the old PRNG); post-fix builds wipe it at validation, which is why the unmodified artifact no longer triggers it — NOT a fix. No OOB exists (M-147 guess retracted: 007 difficulty has no stored times). Fix options flagged for sign-off (port-side JPN-cache init preferred; `difficultytext` enlarge = D8 class). Side finding: v0.3.0 silently wipes all pre-fix saves on first launch (D284 side effect — own D entry owed). Separate still-open issue found: unconditional `[EVTQ-DROP]` audio-pool-exhaustion logging, `src/libultra/audio/event.c:92`.… | | D296 | **Control Center, 00 Agent: noticeable stutter, user's own read is "maybe from the drone guns" (M-146, same D295 investigation session).** — full `## D296` entry at file tail | CLOSED (2026-09-26, user-approved: stutter seen only under gdb (debug.ps1); D302, fixed two days later, removed a per-triangle uncached getenv costing ~15 fps; reopen if seen on a normal build). Earlier: OPEN — single live report, un-triaged; observed only under a gdb-attached debug-harness launch (`tools_pc/debug.ps1`), not the packaged release artifact — user flagged that harness overhead has caused false stutter before. Needs a plain-exe / real-release repro check before any perf tracing.… | | D297 | **v0.3.0 silently wipes ALL pre-fix player saves on first launch (D284 side effect; found during D295/M-148).** — full `## D297` entry at file tail | FIXED (M-150) — migration shim landed: `port/src/legacycrc.c` (isolated, deliberately-wrong pre-D284 PRNG, reviewer-verified bit-exact against `0de99b4d^`) + eeprom-shim read-path hook in `libultra.c` (block 4 only; persists pristine+migrated bytes before the read-time-only AllUnlocked patch). Verified: user's #87 artifact → `D297-migrated 5`, all slots OK, idempotent on relaunch; native post-fix save untouched; corrupt slot left to the game's own wipe path; fresh eep untouched; 21/21 sweep PASS. Block-0 header needed no migration (factory seal, verified). | @@ -633,7 +633,7 @@ covers D24–D69; the log continues in §H (D32 procedure, D70–D121). | D345 | **Front-end crosshair snaps away from the pointer on screen/page changes (file select → mode select `setCursorPOSforMode(0)`, front.c:2516; every `MENU_PC_OPTIONS` page hop), and the options screen's keyboard navigation was missing/mis-modelled (2026-09-27).** — full `## D345` entry at file tail | Port-only, user-verified (parts a–g): (a) `input.c` re-assert window on menu change; (b) `cursorToItem` skips its snap while the pointer is live; (d) W/S emit stick in menus under NaturalPitch; (e/f) F10-style discrete row stepping + arrow left/right value adjust replace raw drift (first pass shipped broken, fixed); (g) screen-placed cursor parks in the left gutter, off the row text. Game-side one-liner deferred: physical-controller pass was good, no Rule-2 sign-off sought. | | D346 | **PC-settings wording pass: option labels/values aligned to Nightdive/Turok + PD-port conventions (title-case On/Off, "Frame rate cap", "Anti-aliasing"/"None", units in values not labels, self-explanatory auto-FOV toggles); VIEW section merged into VIDEO (2026-09-27).** — full `## D346` entry at file tail | **CLOSED (2026-09-28).** Shipped in v0.4.0; accepted in the user's final review / campaign playtest. | | D347 | **F10 overlay controller: left/right did nothing (only A/Y adjusted values) and no input had hold-to-repeat (2026-09-27).** — full `## D347` entry at file tail | FIXED (port-only, `optionsoverlay.c`): D-pad left/right + stick-X wired into value adjust (A/X/B/Y kept); 18/4-frame hold-to-repeat on adjust and up/down nav, matching the options screen's D345(e)/(f) cadence. User validated physical-controller pass. | -| D348 | **File-select "PC Options" label: no settings icon exists in the game art (mainfolderimages = copy/del/select-arrow/X/check/dot only) -- a mini slider glyph is drawn instead (2026-09-27).** — full `## D348` entry at file tail | SUPERSEDED by D398 (glyph replaced with the IMG_DOT texture; no new art). PCDUMP pixel-verified when shipped (135 knob px vs 9 paper). | +| D348 | **File-select "PC Options" label: no settings icon exists in the game art (mainfolderimages = copy/del/select-arrow/X/check/dot only) -- a mini slider glyph is drawn instead (2026-09-27).** — full `## D348` entry at file tail | **CLOSED (2026-09-28 bookkeeping: superseded by D398).** Earlier: SUPERSEDED by D398 (glyph replaced with the IMG_DOT texture; no new art). PCDUMP pixel-verified when shipped (135 knob px vs 9 paper). | | D349 | **GE watch settings are not normally saved to the Bond file: erase is the only caller of the settings serializer, and stage start reloads the file's old values.** — full `## D349` entry at file tail | **CLOSED (2026-09-28).** Shipped in v0.4.0; accepted in the user's final review / campaign playtest. | | D350 | **Watch-backed PC options: shared front/F10 Bond-file rows, explicit chooser, game-thread F10 bridge and field-scoped PC-only persistence.** — full `## D350` entry at file tail | **CLOSED (2026-09-28).** Shipped in v0.4.0; accepted in the user's final review / campaign playtest. | | D351 | **Existing D346 value/unit rows had positional initializers shifted into `hidePtr`: %/x rows hidden or formatted without units.** — full `## D351` entry at file tail | FIXED (port-only): designated row initializers restore unit, deadzone divisor and hide-if-auto fields; build clean, headless smoke clean. Manual settings visual check owed. | @@ -651,8 +651,8 @@ covers D24–D69; the log continues in §H (D32 procedure, D70–D121). | D364 | **Settings UI feedback: replace P legend; F10 slider click band misses drawn bar; input defaults visually off-centre (2026-09-27).** — full `## D364` entry at file tail | FIXED (user mostly accepted; D365 follows up on annotation size and click targets). | | D365 | **F10 annotation hierarchy and visible mouse change targets (2026-09-27).** — full `## D365` entry at file tail | **CLOSED (2026-09-28).** Shipped in v0.4.0; accepted in the user's final review / campaign playtest. | | D366 | **Input calibration label: call 50 the default, not original (2026-09-27).** — full `## D366` entry at file tail | **CLOSED (2026-09-28).** Shipped in v0.4.0; accepted in the user's final review / campaign playtest. | -| D367 | **F10 full-width control boxes misaligned with their contents (2026-09-27).** — full `## D367` entry at file tail | SUPERSEDED by D368 after user playtest: per-value boxes remained confusing. | -| D368 | **Simplify F10 click targets: setting name selects, the rest changes (2026-09-27).** — full `## D368` entry at file tail | INPUT RULE KEPT; tinted strips user-rejected, removed in D369. | +| D367 | **F10 full-width control boxes misaligned with their contents (2026-09-27).** — full `## D367` entry at file tail | **CLOSED (2026-09-28 bookkeeping: superseded by D368).** Earlier: SUPERSEDED by D368 after user playtest: per-value boxes remained confusing. | +| D368 | **Simplify F10 click targets: setting name selects, the rest changes (2026-09-27).** — full `## D368` entry at file tail | **CLOSED (2026-09-28 bookkeeping: superseded by D369 (input rule kept)).** Earlier: INPUT RULE KEPT; tinted strips user-rejected, removed in D369. | | D369 | **Remove F10 row boxes/strips entirely (2026-09-27).** — full `## D369` entry at file tail | FIXED (awaiting live acceptance): no row backgrounds, control rectangles or hover paint; selected setting distinguished by brighter text, slider tracks remain. Input rule from D368 unchanged. | | D370 | **F10 distance/volume drags hurt frame rate (2026-09-27).** — full `## D370` entry at file tail | **CLOSED (2026-09-28).** Shipped in v0.4.0; accepted in the user's final review / campaign playtest. (user: fixed.) | | D371 | **GEPD key-layout preset + reload/crouch bindings, v0.4.0 modern options wave M3 (2026-09-27).** full `## D371` entry at file tail | FIXED (headless-verified; awaiting user live accept): `Input.Layout` (0=FPS, 1=GEPD) + `Input.CrouchMode` (hold/toggle) in F10 INPUT; GEPD preset acts as per-key effective default under `[Input.Bind]` overrides; new IA_RELOAD/IA_CROUCH emit B (unbound by default). MODERN section dropped per D356 Turok-standard rule (rows land in functional INPUT). Boot/ini-round-trip/F10-page verified; in-game feel-check owed. | @@ -661,13 +661,13 @@ covers D24–D69; the log continues in §H (D32 procedure, D70–D121). | D374 | **GEPD becomes the default key layout; preset layering fix (v0.4.0 M3 playtest feedback, 2026-09-27).** full `## D374` entry at file tail | FIXED (headless + user live-tested): GEPD playtest found Ctrl fired the gun (stale persisted [Input.Bind] Fire=Left Ctrl masked the preset) and the FPS default made no sense for a mouse FPS. D374: GEPD is now Input.Layout=0 (the default; N64 layout = 1); only EXPLICIT per-key overrides beat the preset. One-off ini flip: pre-D374 `Layout = 1` (ex-GEPD) is now 0. | | D375 | **Crouch wired to the wrong pad bit: B is not the crouch input (v0.4.0 M3 playtest, 2026-09-27).** full `## D375` entry at file tail | **CLOSED (2026-09-28).** Shipped in v0.4.0; accepted in the user's final review / campaign playtest. | | D376 | **Crouch follow-up + modern-options spot check (2026-09-27).** full `## D376` entry at file tail | **CLOSED (2026-09-28).** Shipped in v0.4.0; accepted in the user's final review / campaign playtest. | -| D377 | **GEPD independent crouch (2026-09-27).** full `## D377` entry at file tail | FIXED (scripted stance verified; user says live crouch was good; pad/hold-vs-toggle specifics owed): Ctrl/B/Y now drive game stance from the port with no aim requirement. | -| D378 | **GEPD use/reload separation (2026-09-27).** full `## D378` entry at file tail | FIXED (headless edges tested; user says E/R seemed good; targeted door/partial-mag cases owed): R reload only, E interaction only in gameplay, menu/watch/tank retains B. | -| D379 | **Crosshair colour: authored texture is red (2026-09-27).** full `## D379` entry at file tail | FIXED (cyan frame capture; live yellow/blue recheck owed): nonwhite tints use alpha silhouette instead of multiplying red RGB; default unchanged. | +| D377 | **GEPD independent crouch (2026-09-27).** full `## D377` entry at file tail | **FIXED (2026-09-28 bookkeeping: residual live-check notes waived by the user; shipped in v0.4.0, no reports).** Earlier: FIXED (scripted stance verified; user says live crouch was good; pad/hold-vs-toggle specifics owed): Ctrl/B/Y now drive game stance from the port with no aim requirement. | +| D378 | **GEPD use/reload separation (2026-09-27).** full `## D378` entry at file tail | **FIXED (2026-09-28 bookkeeping: residual live-check notes waived by the user; shipped in v0.4.0, no reports).** Earlier: FIXED (headless edges tested; user says E/R seemed good; targeted door/partial-mag cases owed): R reload only, E interaction only in gameplay, menu/watch/tank retains B. | +| D379 | **Crosshair colour: authored texture is red (2026-09-27).** full `## D379` entry at file tail | **FIXED (2026-09-28 bookkeeping: residual live-check notes waived by the user; shipped in v0.4.0, no reports).** Earlier: FIXED (cyan frame capture; live yellow/blue recheck owed): nonwhite tints use alpha silhouette instead of multiplying red RGB; default unchanged. | | D380 | **One PC keyboard layout; PD-style rebind design (2026-09-27).** full `## D380` entry at file tail | FIXED (follow-up D383): one PC layout and migration remain; keyboard capture UI is implemented separately, with live acceptance owed. | | D381 | **RULE-2-SIGNOFF: opt-in RGB, size and Beta crosshair (2026-09-27).** full `## D381` entry at file tail | **CLOSED (2026-09-28).** Shipped in v0.4.0; accepted in the user's final review / campaign playtest. | | D382 | **Crosshair menu placement and slider hitches (2026-09-27).** full `## D382` entry at file tail | **CLOSED (2026-09-28).** Shipped in v0.4.0; accepted in the user's final review / campaign playtest. | -| D383 | **PD-style keyboard rebinding in both options UIs (2026-09-27).** full `## D383` entry at file tail | **PARTIAL (2026-09-28).** Keyboard/mouse rebinding shipped + accepted in v0.4.0; pad-rebinding UI is the v0.5.0 controller-options wave (CONTROLLER-INPUT-PLAN). | +| D383 | **PD-style keyboard rebinding in both options UIs (2026-09-27).** full `## D383` entry at file tail | **CLOSED (2026-09-28 bookkeeping: keyboard/mouse rebinding shipped + accepted in v0.4.0; pad rebinding is tracked by the v0.5.0 controller wave (D394, PR #109)).** Earlier: **PARTIAL (2026-09-28).** Keyboard/mouse rebinding shipped + accepted in v0.4.0; pad-rebinding UI is the v0.5.0 controller-options wave (CONTROLLER-INPUT-PLAN). | | D384 | **Front PC Options key-bind navigation feedback + two-slot UI (2026-09-27).** full `## D384` entry at file tail | **CLOSED (2026-09-28).** Shipped in v0.4.0; accepted in the user's final review / campaign playtest. | | D385 | **Real mouse 1–5 action rebinding in the two-slot editor (2026-09-27).** full `## D385` entry at file tail | **CLOSED (2026-09-28).** Shipped in v0.4.0; accepted in the user's final review / campaign playtest. | | D386 | **Correct Aim default from SDL middle (Mouse 2) to right (Mouse 3) (2026-09-27).** full `## D386` entry at file tail | **CLOSED (2026-09-28).** Shipped in v0.4.0; accepted in the user's final review / campaign playtest. | @@ -683,16 +683,28 @@ covers D24–D69; the log continues in §H (D32 procedure, D70–D121). | D396 | **F10 pad B/A used as slider decrement/increment, not back/select** — B/Y fed Left and A/X fed Right on every row. | RESOLVED (v0.4.0 campaign sign-off 2026-09-28, user: F10 B/A/slider behaviour confirmed on the physical pad). B backs one F10 page, closes at root; A/X accept/toggle on edge but never shift a slider; D-pad/stick left/right still adjust. | | D397 | **SELECT FILE background + intro gun-barrel show an interlaced/comb look** — D182(2) family, but present on FIRST display, not only after re-entry (2026-09-27). Full `## D397` entry at file tail. | **RESOLVED (2026-09-28):** root cause = **H2** (confirmed by a 3-scale PCDUMP test — the comb period is fixed at ≈3 *native* rows across 640/1024/1280, i.e. window-period = 3×scale: the `(<<2)-1` 0.75-native-pixel row-strips rely on RDP floor-based scanline stepping that `gfx_draw_rectangle`'s continuous-float rasterization did not replicate). **Fix (port-layer, surgical):** `gfx_draw_rectangle` now floors the top edge to its scanline and the bottom edge to the last covered scanline (the RDP scanline range `[top,bot+1]`) before rasterizing — a no-op for whole-pixel rects, so only sub-pixel strips change; §D15 in `docs/porting-notes.md` documents the mechanism. H1 (ENV_ALPHA 5-bit CC scaling) REFUTED by a byte-identical PD-port cross-check (the darkening it predicted is faithful, not a bug). `GE_D397SH`/`D397SHM` probes removed. Verified by playtest: gun-barrel + file-select gradient render clean, comb gone. | | D398 | **PC Options label: D348's procedural slider glyph replaced with an existing mainfolderimages texture (2026-09-27).** Full `## D398` entry at file tail. | SUPERSEDED by D400 (icon removed, text-only label; purple-hover bug moot; the D400 `textMeasure` arg-swap bug was found and fixed there). | -| D399 | **File-select bottom row (SELECT FILE text + Copy/Erase + PC Options dot/label) shifted 15px left as a block (user sign-off 2026-09-27).** Full `## D399` entry at file tail. | LANDED (port-only, D343 class): `selectpos.f[0]` 110→95 (new `#ifdef PORT` in front.c), Copy 200/222→185/207, Erase 282/304→267/289 (D343 PORT block), `LABEL_X` 358→343 (`frontoptions.c`); hit bounds recompute from the shifted positions. Clean build, PCDUMP frame 195 no overlaps; by-eye check **done 2026-09-28 (user: good) -- RESOLVED**. | -| D400 | **File-select "PC Options" label: icon removed, text-only; fixed a swapped textMeasure() arg bug and a 7px vertical misalignment vs Copy/Erase (user sign-off 2026-09-27).** Full `## D400` entry at file tail. | LANDED (port-only, `frontoptions.c`): D398's dot icon dropped on user instruction ("most straightforward design"); label now a plain `textRender` word, GAP 28 after Erase. Two measurement bugs fixed: (1) `textMeasure(textheight, textwidth)` args passed swapped -> label 35px above the bar, hot band transposed; (2) bare-label height measures 0 (vs 14 for newline-terminated Copy/Erase) -> 7px lower tops; fixed by restoring the `kLabelNL` height measure. PCDUMP frame 195: tops aligned 279.8 vs 279.3, 31px clearance from Erase; by-eye check **done 2026-09-28 (user: good) -- RESOLVED**. | +| D399 | **File-select bottom row (SELECT FILE text + Copy/Erase + PC Options dot/label) shifted 15px left as a block (user sign-off 2026-09-27).** Full `## D399` entry at file tail. | **CLOSED (2026-09-28 bookkeeping: landed with user sign-off, shipped in v0.4.0).** Earlier: LANDED (port-only, D343 class): `selectpos.f[0]` 110→95 (new `#ifdef PORT` in front.c), Copy 200/222→185/207, Erase 282/304→267/289 (D343 PORT block), `LABEL_X` 358→343 (`frontoptions.c`); hit bounds recompute from the shifted positions. Clean build, PCDUMP frame 195 no overlaps; by-eye check **done 2026-09-28 (user: good) -- RESOLVED**. | +| D400 | **File-select "PC Options" label: icon removed, text-only; fixed a swapped textMeasure() arg bug and a 7px vertical misalignment vs Copy/Erase (user sign-off 2026-09-27).** Full `## D400` entry at file tail. | **CLOSED (2026-09-28 bookkeeping: landed with user sign-off, shipped in v0.4.0).** Earlier: LANDED (port-only, `frontoptions.c`): D398's dot icon dropped on user instruction ("most straightforward design"); label now a plain `textRender` word, GAP 28 after Erase. Two measurement bugs fixed: (1) `textMeasure(textheight, textwidth)` args passed swapped -> label 35px above the bar, hot band transposed; (2) bare-label height measures 0 (vs 14 for newline-terminated Copy/Erase) -> 7px lower tops; fixed by restoring the `kLabelNL` height measure. PCDUMP frame 195: tops aligned 279.8 vs 279.3, 31px clearance from Erase; by-eye check **done 2026-09-28 (user: good) -- RESOLVED**. | | D401 | **Rumble Pak → real gamepad haptics (re-promotes D224/M-87): `CONT_CARD_ON` gate + `osPfs*`/`osMotor*` shims rewired to `SDL_GameControllerRumble`, single global `Rumble strength` slider on `Input.RumbleScale` (2026-09-27/28).** Full `## D401` entry at file tail. | **CLOSED (2026-09-28).** Rumble shipped in v0.4.0 (D401); Steam Deck real-pad validation: works, user confirmed for release. | | D402 | **First clean Linux (glibc / SteamOS) build of `release/v0.4.0` broke in two port-layer include-resolution spots MinGW tolerated (`bondconstants.h` first-include cycle; `video.c` `_SHIFTL`); fixed in `port/shim/` only, no `src/` edits, no rule-2 (2026-09-27).** Full `## D402` entry at file tail. | RESOLVED (Linux/Ubuntu-24.04 build → glibc-2.41-compatible binary for the Steam Deck): three `port/shim/` fixes — `PR/ucode.h` + `bondconstants.h` defer `pc_protos.h`/`bondtypes.h` during `bondconstants.h`'s own `ultra64.h` pass (breaks the `bondconstants.h`→`ultra64.h`→`pc_protos.h`→`bondtypes.h`→`bondconstants.h` re-entry); `PR/gbi.h` defines `_SHIFTL`/`_SHIFTR` when absent (the `gbi.h` macros in `video.c` lost their `mbi.h` definitions on Linux). Builds + links clean on Ubuntu-24.04; bundled `libSDL2` with `rpath=$ORIGIN`; pushed to the Deck. Shim files uncommitted at log time. | | D403 | **Deck v0.4.0-pre test: Nintendo logo + copyright/legal page render broken, broader graphics "not reflecting new updates" — stale 0.3.0-era sidecars seeded into the bundle (2026-09-27).** Full `## D403` entry at file tail. | RESOLVED (2026-09-27, user-confirmed on the Deck: a stale-sidecar **test artifact**, never a code regression): the Deck bundle was seeded with `pcmodels`/`pccg` sidecars from the `0.3.0-local` install (data dated 2026-09-15), which predate the D75/M-197 embedded-blob raw-pixel fix (commit `425237f9`, 2026-09-21) and the D303 muzzle-vertex converter fix (2026-09-26) → the `P*` front-end logo/legal textures come out broken while the in-exe fast3d fixes (D397 gun-barrel/file-select) render correctly. Disambiguation performed (2026-09-27): `data/pcmodels-ntsc-final` + `data/pccg-ntsc-final` regenerated from the Python-source converter (`prepare-assets.py` + the current `d43/d69/d88_emit.py`, `ALL CHECKS PASSED`) on the NTSC ROM and pushed to the Deck (sha256-verified), preserving the user's `ge007.eep`/`ge007.ini`. **RESOLVED (user-confirmed on the Deck, 2026-09-27): the front-end logo / copyright / legal page now render correctly — confirming this was the stale-sidecar test artifact, not a code regression.** | | D404 | **"Aim style: Centred (PC)" (`Input.AimMode=1`, D333/D337) has no effect when aiming with a gamepad; the row's own doc comment over-promises ("applies to every aim input … pad trigger") but the centred path is mouse-only (Steam Deck, 2026-09-27).** Full `## D404` entry at file tail. | RESOLVED (2026-09-28, port-layer only): the toggle now genuinely works on a pad. First logged as a communication bug and closed by relabel ("Aim style (mouse)"), then reopened on user challenge the same day: the pad path emits stick *deflection* into the game's crosshair integrator, so the pad was actually always in the **N64** model (a flick travels the crosshair; edge-scroll + spring-back only made a hold *feel* direct), and the "stick has no crosshair to travel" rationale was wrong. Fix: new `padDirectCompute()` in `input.c` (the pad twin of `hipDirectCompute`'s CENTRED branch -- same dead/watch/pause/cutscene gates, minus the mouse-grab gate; revised same day to the N64 path's verbatim quadratic curve -- `sign(v)\u00b7clamp(defl/70,\u00b11)\u00b2 \u00b7 (fov/60) \u00b7 3.5 deg/poll` (bondview2.c canNaturalTurn/canNaturalPitch), full-stick parity with the N64 path, pending retest on the refreshed build); the natural-pitch pad branch routes CENTRED through it and keeps N64's classic deflection behaviour (also the default, so no pad default changes). Labels reverted to device-neutral ("Aim style" / "Aim range"). **Steam Deck (2026-09-27/28): "centered aim is broken on deck too" -- fixed for real; the first-pass linear gain was measured as a dramatic sensitivity loss (2026-09-28) and replaced with the N64 path's verbatim quadratic curve (fov/60 base, 3.5 deg/poll top rate); retest on the refreshed build: user "good". RESOLVED.** | | D405 | **fast3d/OpenGL: MSAA above the driver max black-screens; two `glBindFramebuffer` calls pass an index where a GL name is required** (PR #106, italoarruda, 2026-09-25; label rebased from the PR's D323, which collides with our D323 LOD finding) — full `## D405` entry at file tail | **CLOSED (2026-09-28).** Merged from PR #106 (code file only; security-reviewed clean - port-layer GL state fixes, no external input, no allocations). `resolve_msaa_color_buffer` clamps `msaa_level` to `GL_MAX_SAMPLES`; the resolve/copy paths bind `current_framebuffer ? framebuffers[i].fbo : 0` (the default framebuffer is GL name 0). Both Windows (opengl32) and Linux use this backend. Post-merge sweep 21/21 PASS + MSAA=16 boot check render-verified; link ritual clean. | | D406 | **front-end PC Options screen: long sections (INPUT, 17 visible rows) run off the bottom of the 440x330 paper, and rows past the silent 14-row page cap (Crouch mode, Reset to defaults, Bindings…) are unreachable from the front screen** (user report 2026-09-28, v0.4.0 pre-push review) — full `## D406` entry at file tail | RESOLVED (2026-09-28, port-layer only, Steam Deck-validated): in-section pagination in `frontoptions.c` (11 rows/page; the vertical stepper crosses page boundaries both ways; dim 'Page p/N' marker + bottom hint on every page; slider bars start past long labels; F10 overlay untouched). D406b/c/d same-cycle refinements (label/track overlap, hint visibility/wording, hint position). | -| D407 | **Tanks cannot be boarded/exited on PC — the v0.4.0 use/reload split (D378/D393) removed the B-button tap the engine's tank handlers in `bondview2.c` consume (user report 2026-09-28, Runway/Streets)** — full `## D407` entry at file tail | PARTIAL (fix landed in v0.4.0, port-only): present `GE_CONT_B` on the use (E / pad A) rising edge only while `g_PlayerIsInTank == 1` or `g_BondCanEnterTank != 0`; E keeps its D378 no-reload-fallback semantics elsewhere, N64 layout unaffected. D407(b) same cycle: front PC Options page-edge highlight clamp + mouse-wheel / W-S paging (wheel queue consumed on the menu, D223); its wheel mapping shipped inverted and was fixed to match W/S (wheel up = step up). D407(c): board-animation lockout, menu-accept B gate in tank states, in-tank aim routed through the legacy velocity stick + `Input.TankAimScale` knob. RESOLVED 2026-09-28: all port-only (src/game zero-diff), 10 TANKDBG probes stripped, release binary verified clean, user live tank drive signed off (board + exit OK, aim feel good). | +| D407 | **Tanks cannot be boarded/exited on PC — the v0.4.0 use/reload split (D378/D393) removed the B-button tap the engine's tank handlers in `bondview2.c` consume (user report 2026-09-28, Runway/Streets)** — full `## D407` entry at file tail | **CLOSED (2026-09-28 bookkeeping: tank board/exit accepted by the user; shipped in v0.4.0).** Earlier: PARTIAL (fix landed in v0.4.0, port-only): present `GE_CONT_B` on the use (E / pad A) rising edge only while `g_PlayerIsInTank == 1` or `g_BondCanEnterTank != 0`; E keeps its D378 no-reload-fallback semantics elsewhere, N64 layout unaffected. D407(b) same cycle: front PC Options page-edge highlight clamp + mouse-wheel / W-S paging (wheel queue consumed on the menu, D223); its wheel mapping shipped inverted and was fixed to match W/S (wheel up = step up). D407(c): board-animation lockout, menu-accept B gate in tank states, in-tank aim routed through the legacy velocity stick + `Input.TankAimScale` knob. RESOLVED 2026-09-28: all port-only (src/game zero-diff), 10 TANKDBG probes stripped, release binary verified clean, user live tank drive signed off (board + exit OK, aim feel good). | | D408 | **`Game.SkipIntro` skips the post-mission failure dossier: with it on, entering a level then aborting (watch Z+A) or dying (KIA) returns straight to the menus — no REPORT / "Mission status: KILLED IN ACTION / ABORTED" screen** (user report 2026-09-28; save/AllUnlocked ruled out) — full `## D408` entry at file tail | OPEN (cosmetic, not root-caused past the handoff site). v0.4.0 decision: SkipIntro stays EXPERIMENTAL / not recommended for regular users — F10 row relabelled "Skip intro (EXPERIMENTAL)". | +| D415 | **Shooting a light fixture does not "kill" its flickering light (Bunker, Caverns): the fixture takes the hit but the flicker keeps going (community report, issue #87 comment by the reporter, 2026-09-28, 00 Agent playthrough of v0.4.0).** — full `## D415` entry at file tail | FIXED (2026-09-29 bookkeeping: root-caused and fixed as D430 + D431, user-verified vs GEPD/1964 on Caverns 2026-09-29; #119). Earlier: ROOT-CAUSED as D430 (see there); fix in tree, live check owed. | +| D424 | **`WeaponStats.RecoilSpeed`/`b44[]` byte order: no grenade-launcher recoil, shortened recoil on every gun (issue #118).** — full `## D424` entry at file tail | FIXED in tree (`WS_B44`, port-guarded); user-verified vs GEPD/1964 2026-09-29. | +| D425 | **Tank run-over death sound loops: `(chrflags << 7) >= 0` is always true on unsigned GCC enum (issue #115).** — full `## D425` entry at file tail | FIXED (2026-09-29 bookkeeping: use-site `(s32)` cast; user-verified vs GEPD/1964 2026-09-29, #115). Earlier: FIXED in tree (use-site `(s32)` cast); live check owed. | +| D426 | **Tank cannot be steered with the mouse out of aim mode (issue #116).** — full `## D426` entry at file tail | RESOLVED (user 2026-09-29: tank controls now match GEPD/1964; see D429). | +| D427 | **Automatic fire cadence is frame-counted, ~2-3x faster than N64 at 60 fps (issue #114).** — full `## D427` entry at file tail | FIXED in tree (modulus scaled by ticks/frame; measured 6 ticks/shot at 30 and 60 cap); user-verified vs GEPD/1964 2026-09-29 (AK47 mag empties in ~3 s, Klobb normal). | +| D428 | **No gun turn-sway with direct mouse look (issue #117).** — full `## D428` entry at file tail | FIXED in tree (2nd pass: exact inverse of the game's yaw integration, clamp fov/60); user-confirmed feels right 2026-09-29. | +| D429 | **Tank full pass: aim-mode (RMB) mouse behaviour and tank sticking forward/back (follow-up to D426).** — full `## D429` entry at file tail | CLOSED faithful (user 2026-09-29: the "sticking" was drive inertia; the original also drops driving input while the mouse aims; PC now matches GEPD/1964). | +| D430 | **Shot light fixtures do not go dark: `lightfixture.c` `extract_vertex_indices_from_triangle` is an unported N64 GBI parser (issue #119 / D415).** — full `## D430` entry at file tail | FIXED in tree (D154-style words.w0/.w1 decode); user-verified vs GEPD/1964 on Caverns 2026-09-29. | +| D431 | **Light fixtures never reached `lightFixtureBreak` on PC: bullet-hit texnum is stubbed to -1 (D154), so `check_if_imageID_is_light` is always false (issue #119; user: Cavern lights do not take damage).** — full `## D431` entry at file tail | FIXED in tree (fixture table records the image id; bg.c hit code looks it up; free-slot guard); user-verified vs GEPD/1964 2026-09-29. | +| D432 | **Gunshot sounds "off" after D427: sound-trigger gate (`SoundTriggerRate`) is per-tick on PC but frame-granular on the N64 (user: Cavern, Mac-10 run).** — full `## D432` entry at file tail | FIXED in tree (gate offset rounded to odd at 1 tick/frame); measured shot/sound cadence identical to N64 rules; residual audible difference vs 1964 tracked as D433. | +| D433 | **Slight audible difference in automatic-gun shot sound vs GEPD/1964 after cadence was matched (user by-ear, Caverns).** — full `## D433` entry at file tail | OPEN (not a timing issue; audio layer suspected). | +| D434 | **Raw `((u8*)&g_Textures[n])[0] & 0xf` hit-type reads are wrong on PC; latent OOB once D431 returned real texture ids (found by sub-agent review).** — full `## D434` entry at file tail | FIXED (`.hitTexture` at 3 sites, port-guarded); live check owed. | Phase 2 replaced the Phase-1 demo loop with the real `mainproc()` on real OS @@ -10478,7 +10490,7 @@ crash class C2 (Facility `-level_34`, Runway `-level_35`): `import_texture_i8` A **`bg.c` room-geometry ray/hit-test GBI parser port (M-28, WRITTEN / UNVERIFIED / UNCOMMITTED).** `bgTestRayIntersectionInRoom` (`bg.c:3331`, called by `bgTestBulletHitBackground` on every shot that resolves against background geometry) is the D135 sibling flagged since M-23: raw `((u8*)gdl)[k]` / `((u32*)gdl)[i]` byte/word indexing into what is now the 16-byte PC `Gfx` room DL (D85 `bgWidenRoomGdl` + `texLoadFromGdl`) → desync → OOB `vtxbase[idx]` / walk-off AV the first time you shoot a wall or floor. Ported `#ifdef PORT` (N64 verbatim under `#else`): `vtxoff`/`vtxbase`/`op` via the `.dma` view (matches the already-ported `bgBuildRoomVtxBounds`); G_TRI1 indices from `(w1>>16/8/0)&0xff /10`; the 12 G_TRI4 nibble extractions from `(u32)gdl->words.w0/.w1` (each mapped from the N64 byte/halfword layout — table in the code comment, cross-checked twice); both `texturenum` recoveries → `-1` (the KSEG0 `*(u16*)(w1-8)` deref is invalid for the port's converted GDLs, same as D135; texnum only picks the impact decal/sound, parked D77). Builds clean. **Verification blocked** — a no-input `GE_PCDUMP` capture never fires a bullet so it never calls this function; needs a real firefight into a wall on an idle machine (this session's box was thrashed → D153/driver crash on every run). -**Status (from §F table):** **M-30 re-audit + fixes (still playtest-gated for final verify).** Cross-checked the ported G_TRI1 + all 12 G_TRI4 nibble recoveries twice against the N64 `#else` and the raw BE-word bit derivation — **G_TRI1 and G_TRI4 are correct**. **Two bugs fixed:** (1) `vtxoff` — the port read `gdl->dma.par & 0xf`, but the PC `Gdma_le` shim (`port/shim/PR/gbi.h`) maps `.par` to bits 0-23 of word0 (the packed *length*, always 16-aligned) not the N64 byte-1 params field at bits 16-23, so vtxoff was silently forced to 0 (breaks any G_VTX batch with `v0 != 0`, i.e. multi-batch rooms → wrong `vtxbase[idx]` → OOB). Now `((u32)gdl->words.w0 >> 16) & 0xf`. (2) **Sibling ported** — `bgTestBulletHitBackground` tail (`bg.c:~3841`, the post-hit G_SETTILE back-scan for `tileformat`/`tilesize`) was itself an unported raw `((u8*)gdl)[0]`/`[1]` + 64-bit `words.w0 << 11 >> 30` parser over the same widened DL; wrapped `#ifdef PORT` (opcode from bits 24-31, byte1 from bits 16-23, `(u32)`-forced 32-bit width for the tilesize shift). **Diagnostic:** `GE_D154=1` → `osSyncPrintf` of the parsed cmd/vtx-index stream (call header + per-TRI1/TRI4 `idx`) for the first 64 invocations, for the user/integrator to eyeball. Build green (`ntsc-final`, 242/242). Runtime unverifiable in a worktree (no `data/`); still needs a firefight-into-wall on an idle machine + `-level_09` framediff. Confidence: HIGH on the mechanical correctness (bit-for-bit vs N64), MEDIUM that nothing else in the walk still bites. porting-notes.md §B (D135 corollary). +**Status (2026-09-28 bookkeeping):** **CLOSED** — playtest gate satisfied — full v0.4.0 campaign played with no background-hit/raycast anomalies; ABI re-audited again under D313. Previous: **Status (from §F table):** **M-30 re-audit + fixes (still playtest-gated for final verify).** Cross-checked the ported G_TRI1 + all 12 G_TRI4 nibble recoveries twice against the N64 `#else` and the raw BE-word bit derivation — **G_TRI1 and G_TRI4 are correct**. **Two bugs fixed:** (1) `vtxoff` — the port read `gdl->dma.par & 0xf`, but the PC `Gdma_le` shim (`port/shim/PR/gbi.h`) maps `.par` to bits 0-23 of word0 (the packed *length*, always 16-aligned) not the N64 byte-1 params field at bits 16-23, so vtxoff was silently forced to 0 (breaks any G_VTX batch with `v0 != 0`, i.e. multi-batch rooms → wrong `vtxbase[idx]` → OOB). Now `((u32)gdl->words.w0 >> 16) & 0xf`. (2) **Sibling ported** — `bgTestBulletHitBackground` tail (`bg.c:~3841`, the post-hit G_SETTILE back-scan for `tileformat`/`tilesize`) was itself an unported raw `((u8*)gdl)[0]`/`[1]` + 64-bit `words.w0 << 11 >> 30` parser over the same widened DL; wrapped `#ifdef PORT` (opcode from bits 24-31, byte1 from bits 16-23, `(u32)`-forced 32-bit width for the tilesize shift). **Diagnostic:** `GE_D154=1` → `osSyncPrintf` of the parsed cmd/vtx-index stream (call header + per-TRI1/TRI4 `idx`) for the first 64 invocations, for the user/integrator to eyeball. Build green (`ntsc-final`, 242/242). Runtime unverifiable in a worktree (no `data/`); still needs a firefight-into-wall on an idle machine + `-level_09` framediff. Confidence: HIGH on the mechanical correctness (bit-for-bit vs N64), MEDIUM that nothing else in the walk still bites. porting-notes.md §B (D135 corollary). ## D156 — Facility outro-cutscene "hang" — the actual fix (M-29, user bug report, 2nd occurrence after D155). @@ -10791,7 +10803,7 @@ silence check owed. See `## D401` (file tail) for the full record. **QoL gap (M-87, from a PD-PC-port survey): the N64 Rumble Pak is fully dropped instead of modernized.** GE genuinely has a rumble subsystem (`src/motor.c`, `src/joy.c`) but the port's `osMotorInit/Start/Stop` (`port/src/libultra.c:1220-1223`) are all hard stubs — "no accessories on the PC," `osMotorStart`/`osMotorStop` return `-1` unconditionally, `osPfsFindFile`-family returns `PFS_ERR_NOPACK`. So every in-game rumble event (weapon recoil, explosions, etc.) computes and calls into a dead path. **PD's PC port wires the equivalent straight through to real gamepad rumble:** `inputRumbleSupported(idx)` checks `SDL_GameControllerHasRumble`/`SDL_JoystickIsHaptic` (with a Windows fallback: some pads report no haptics but rumble anyway), `inputRumble(idx, strength, time)` calls `SDL_GameControllerRumble()` scaled by a per-pad `RumbleScale` config value (options-menu slider, `Input.PadN.RumbleScale`), and `osPfsFindFile` reports a "Rumble Pak" present exactly when a real pad supports rumble (`libultra.c` — same "pretend the N64 accessory is there" pattern GE's port already uses for `osMemSize`/Expansion Pak, just applied to a real capability instead of faked). Cross-ref `QOL-INVENTORY.md` (folded into the existing "per-pad tuning" row). -**Status (from §F table):** **DEPRIORITIZED (M-87, user call).** Gamepad-only — irrelevant to mouse/keyboard, which is the primary target for this next release; no keyboard/mouse play is affected by NOT doing this. Root cause + fix still valid whenever gamepad support becomes a priority (no `src/` game-logic touch: GE's `motor.c`/`joy.c` call sites already exist and already call the `osMotor*` shims; the fix is entirely in `port/src/libultra.c` + `input.c` — add `inputRumbleSupported`/`inputRumble` per the PD shape, wire `osMotorStart`/`osMotorStop` to them, add `Input.PadN.RumbleScale` config). **M-87 PD-legacy-survey addendum (`docs/dev/notes/PD-LEGACY-SURVEY.md` candidate 1, high confidence) — the D224 fix as originally stated is NOT sufficient by itself.** Two more upstream blockers sit before the stubbed `osMotorInit/Start/Stop` ever gets reached: (1) `port/src/libultra.c:1096-1098` sets `g_contStatus[i].status = 0` for every pad — `CONT_CARD_ON` is never set, and `src/joy.c:184` gates the *entire* rumble-pak init path on that bit, so `joyRumblePakInit()` never even calls `osPfsInit`. (2) `src/joy.c:186-190` only attempts `osMotorInit` if `osPfsInit`'s return is `PFS_ERR_ID_FATAL` or `PFS_ERR_DEVICE` — but the port's stub (`libultra.c:1214`) returns `PFS_ERR_NOPACK`, so motor init is never attempted even once (1) is fixed. PD's exact trick (`libultra.c:213-227,349-351`): set `CONT_CARD_ON` for connected pads, and make `osPfsInitPak()` return `PFS_ERR_DEVICE` specifically when the pad supports rumble. **Whenever D224 gets implemented, both of these must land alongside the `SDL_GameControllerRumble` wiring** or the game's state machine parks at `RUMBLEPAKINITSTATE_NOT_READY` forever and nothing audibly changes despite looking wired up correctly. +**Status (2026-09-28 bookkeeping):** **CLOSED** — rumble landed via D401 and shipped in v0.4.0. Previous: **Status (from §F table):** **DEPRIORITIZED (M-87, user call).** Gamepad-only — irrelevant to mouse/keyboard, which is the primary target for this next release; no keyboard/mouse play is affected by NOT doing this. Root cause + fix still valid whenever gamepad support becomes a priority (no `src/` game-logic touch: GE's `motor.c`/`joy.c` call sites already exist and already call the `osMotor*` shims; the fix is entirely in `port/src/libultra.c` + `input.c` — add `inputRumbleSupported`/`inputRumble` per the PD shape, wire `osMotorStart`/`osMotorStop` to them, add `Input.PadN.RumbleScale` config). **M-87 PD-legacy-survey addendum (`docs/dev/notes/PD-LEGACY-SURVEY.md` candidate 1, high confidence) — the D224 fix as originally stated is NOT sufficient by itself.** Two more upstream blockers sit before the stubbed `osMotorInit/Start/Stop` ever gets reached: (1) `port/src/libultra.c:1096-1098` sets `g_contStatus[i].status = 0` for every pad — `CONT_CARD_ON` is never set, and `src/joy.c:184` gates the *entire* rumble-pak init path on that bit, so `joyRumblePakInit()` never even calls `osPfsInit`. (2) `src/joy.c:186-190` only attempts `osMotorInit` if `osPfsInit`'s return is `PFS_ERR_ID_FATAL` or `PFS_ERR_DEVICE` — but the port's stub (`libultra.c:1214`) returns `PFS_ERR_NOPACK`, so motor init is never attempted even once (1) is fixed. PD's exact trick (`libultra.c:213-227,349-351`): set `CONT_CARD_ON` for connected pads, and make `osPfsInitPak()` return `PFS_ERR_DEVICE` specifically when the pad supports rumble. **Whenever D224 gets implemented, both of these must land alongside the `SDL_GameControllerRumble` wiring** or the game's state machine parks at `RUMBLEPAKINITSTATE_NOT_READY` forever and nothing audibly changes despite looking wired up correctly. ## D225 — Dev-tooling QoL (M-87, user ask): a debug-build/env toggle that unlocks all missions + all cheats, for testing. @@ -11727,7 +11739,7 @@ Superseded history below (the original OPEN investigation, root cause not found **LOD/culling breaks down on large open levels (Streets, Egyptian named specifically) at *default* FOV — far-away geometry has visible culling issues (M-119, user QA report).** Distinct from **D222** (which is specifically high `Video.FovScale` breaking *near-screen-edge* culling on NPCs/objects — not implicated here, default FOV) and from **D218** (the fog/far-clip *tint* boundary at wide FOV — also not the same symptom). This report is at the stock FOV, on the game's two biggest/most-open outdoor-scale levels, affecting *far* geometry specifically — points at either (a) a portal/room-visibility BFS cutting off too aggressively at range on large multi-room layouts (same neighbourhood as D233/D234's near-camera portal-cull bugs — worth checking whether D233's `gfx_sp_tri1` w<0 trivial-reject fix, which only guarded *behind-camera* vertices, has a sibling far-plane/depth-range case), or (b) GE's own N64 LOD/detail-swap system (mip-tile / simple-model substitution at distance — see D218's still-open question of "does GE have a separate geometry/object LOD-swap distinct from `Visibility.FarFog`") not being ported faithfully, popping or dropping geometry instead of swapping detail level. **Second, separate ask bundled in the same report:** the user would like LOD **improved** in general (presumably distance-based detail transitions look rougher/more abrupt on PC than remembered) but explicitly wants this **gated behind a toggle** so the original N64-accurate LOD behaviour stays selectable ("in case you want old school graphics") — i.e. this is a QoL feature request layered on top of a correctness bug, not one fix. -**Status (from §F table):** OPEN — static review this session ruled out two of the three suspects; the remaining one needs a live repro, not more code reading. **Level IDs confirmed:** Streets = `-level_29` (not `-level_20` as originally guessed — that number was Egyptian's neighbourhood; Egyptian itself is `-level_32`, `verify.sh`'s alias `egypt`). Attempted a headless `GE_PCDUMP` long-sightline capture (same technique as D245's scripted-turn probe) on both — **abandoned as a bad test**: Streets spawns directly behind a barricade/wall (no open sightline at all from the reachable start), and Statue's (`-level_22`) relevant open vista is well past the spawn point, behind navigation this session has no reliable scripted way to reach (unlike D245's in-place camera turn, walking through a level's actual layout via blind `GE_INPUTSCRIPT` button-mashing risks getting stuck on geometry/AI and wouldn't reliably land at the right spot even if it didn't). **This one genuinely needs a live human capture** (screenshot + exact location) before further diagnosis — logged here rather than burning more session time on scripted navigation guesses. +**Status (2026-09-28 bookkeeping):** **CLOSED** — the v0.4.0 campaign sign-off already recorded below closed it — no distant-geometry drop-out on Streets/Egyptian over the full campaign; lead status corrected. Previous: **Status (from §F table):** OPEN — static review this session ruled out two of the three suspects; the remaining one needs a live repro, not more code reading. **Level IDs confirmed:** Streets = `-level_29` (not `-level_20` as originally guessed — that number was Egyptian's neighbourhood; Egyptian itself is `-level_32`, `verify.sh`'s alias `egypt`). Attempted a headless `GE_PCDUMP` long-sightline capture (same technique as D245's scripted-turn probe) on both — **abandoned as a bad test**: Streets spawns directly behind a barricade/wall (no open sightline at all from the reachable start), and Statue's (`-level_22`) relevant open vista is well past the spawn point, behind navigation this session has no reliable scripted way to reach (unlike D245's in-place camera turn, walking through a level's actual layout via blind `GE_INPUTSCRIPT` button-mashing risks getting stuck on geometry/AI and wouldn't reliably land at the right spot even if it didn't). **This one genuinely needs a live human capture** (screenshot + exact location) before further diagnosis — logged here rather than burning more session time on scripted navigation guesses. **Two of the three original suspects ruled out by source review (no live access needed for this part):** (1) **Not an unscaled far-clip plane.** Checked whether `Video.DrawDistance`'s fog-distance scaling (D218) forgot to extend the actual projection matrix's far-clip plane by the same factor, which would hard-cull geometry the fog says should still be visible — it doesn't: `fogLoadCurrentEnvironment` (`bgfog.c:311-345`) computes one `scaledFarFog` value and feeds it to *both* `viSetZRange`'s far argument (which becomes `g_ViBackData->zfar`, the actual `guPerspectiveF` far plane in `fr.c:736`) *and* the fog-blend-distance math (`g_CurFogDetails.scaled_far_fog_dist`) a few lines later — they can't drift apart. (2) **Not the LOD-distance multiplier.** `portLodDistanceMultiplier()` (`port/src/video.c:196`) is a plain `100.0f/pct` scale with `pct` clamped to `[25,400]`, applied to `modelUpdateDistanceRelations`'s per-model LOD-swap distance (`model.c:1962`) — at the port's own default (`cfgLodDistance=150`), this makes `distance` *smaller* (multiplier ≈0.667), which per the function's own documented sense keeps *more* detail visible farther out, not less. Both mechanisms are self-consistent, already more generous than stock N64, and not a plausible source of "geometry drops/pops" at default settings. **Remaining live suspect, unconfirmed:** GE's own screen-space portal/room-visibility BFS (`bgDetermineVisibleRooms`/`bgQueuePortalTraversal`/`bgRectIntersect`, `bg.c`) — a decomp-verbatim system, not distance-based per se but screen-space-rect-based (a portal's *projected* bounding box vs. the parent room's, `bgRectIntersect` at `bg.c:1812`). Its **near-camera** degenerate case (a portal straddling z=0 producing huge/NaN screen coords) was already found and fixed as D106/revised-by-D271 (`bg.c:1724-1751`, `#ifdef PORT` guard) — but there is no equivalent guard, and no evidence of one being needed, for the opposite **far-camera** case: a portal at long range legitimately projects to a small (but numerically fine, non-degenerate) screen rect, and if that rect fails `bgRectIntersect` against the parent/screen box, the room is correctly culled per N64's own algorithm. That could be either (a) a genuine mismatch this port introduces somewhere in the projection chain that N64 didn't have, or (b) N64's own always-present behavior that's simply more visible on PC's sharp, high-res display than it ever was through a blurry N64-era CRT/composite signal — the same "reveal, not regression" pattern several other findings in this project have hit (cf. D227's tc-overflow, invisible until a related fix made textures correct). **Cannot distinguish (a) from (b), or find a concrete bug to fix, without a screenshot + exact in-level location from a live playthrough** — do not touch `bg.c`'s portal BFS without that evidence; it's large, sensitive, decomp-verbatim game logic (AGENTS.md non-negotiable #2), not a narrow ABI-class case like D106/D271's near-plane guard was. @@ -11906,6 +11918,8 @@ Superseded history below (the original OPEN investigation, root cause not found **Status:** OPEN; still needs the playtest item (Dam: watch the truck pass, F12 screenshot if glitched, note whether it's the wheels, i.e. D306). +**Current status (2026-09-29 bookkeeping):** the Status line above is historical; the authoritative verdict is the §F row — CLOSED — duplicate of D306, faithful (M-201, 2026-09-26: user-captured, Dam intro camera 5 only). Earlier: OPEN — observed, not investigated. Needs a live repro with the truck's exact position/timing and, ideally, a screenshot. + **2026-09-26 (M-201): merged into D306.** Captured by the user: intro-only (Dam level intro/attract, truck over the walkway camera), wheels drawing through the body; reproduces at FovScale 100. Tracked under D306 from here. @@ -12160,6 +12174,8 @@ This is a **perfect, smooth white-hot → yellow → orange → deep-red → fad **Status:** OPEN — single live report, un-triaged, un-reproduced outside the debug harness. **Do not start perf-tracing `port/fast3d/` or AI code over this until step (a)/(b) above rule out harness overhead** — that's the cheap, disqualifying check and it hasn't been run yet. +**Current status (2026-09-29 bookkeeping):** the Status line above is historical; the authoritative verdict is the §F row — CLOSED (2026-09-26, user-approved: stutter seen only under gdb (debug.ps1); D302, fixed two days later, removed a per-triangle uncached getenv costing ~15 fps; reopen if seen on a normal build). Earlier: OPEN — single live report, un-triaged; observed only und… + ## D297 - v0.3.0 silently wipes ALL pre-fix player saves on first launch (D284 side effect; release-blocker, found during D295/M-148). **What:** every save written by a v0.2.x build fails `fileValidateSaves` CRC on any post-D284 build and is reset to factory (`BAD -> RESET (progress wiped)`, confirmed live via `GE_SAVELOG=1` on the user's #87 artifact — all five slots). Players upgrading to v0.3.0 lose their entire campaign with no warning. @@ -12190,6 +12206,8 @@ This is a **perfect, smooth white-hot → yellow → orange → deep-red → fad **Status:** **OPEN — parked per user instruction: suspected debug-launch artifact; do not raise until seen in a regular release-targeted build. Not yet investigated.** +**Current status (2026-09-29 bookkeeping):** the Status line above is historical; the authoritative verdict is the §F row — CLOSED (2026-09-26, user: HUD is fine now). Earlier: s — regression reported 2026-09-16 during v0.3.0 work (build ce8427cf); user says "don't fix, just for context"; not yet investigated — full `## D298` entry at file tail + ## D299 — Game.SkipIntro crashed selecting any save slot except one (found + fixed this session, 2026-09-17) **Symptom (user, live repro):** with `Game.SkipIntro=1` (D216), booting straight to file-select and selecting any of the 4 file slots except one crashed the game (`EXCEPTION: 0xc0000005`, fault addr `0x10`). Reproduced on both a clean `CMAKE_BUILD_TYPE=Release` rebuild and the normal `RelWithDebInfo` dev build, and with a completely fresh (no `data/ge007.eep`) save — ruling out stale/incompatible save data. With `SkipIntro=0` (normal intro/legal-screen boot), all 4 slots worked with no crash. @@ -12344,6 +12362,8 @@ Adversarial pre-ship review of the whole v0.3.0 window (147 commits since v0.2.2 **Status:** OPEN — investigated (pipeline + data ruled out), GE_D303 capture probe in-tree, blocked on a live firing repro. +**Current status (2026-09-29 bookkeeping):** the Status line above is historical; the authoritative verdict is the §F row — FIXED (M-201, 2026-09-26): d43_emit sized op-22 star-flash vertex arrays as count, not count*4 arms; regenerated sidecars render a clean star. Earlier: OPEN — CONFIRMED PORT BUG (2026-09-26, user vs 1964: M16/AR33 muzzle flash shoots up and draws much higher o… + **M-191 (2026-09-18, user QA on the v0.3.0 pre-release build): REOPENING the "main fireball" thread — the fresh report matches exactly the condition M-188 said to watch for.** User describes smoke/explosion effects as now looking correct overall, EXCEPT a "weird rainbow confetti looking sprite" that still draws overlaid on top of otherwise-correct smoke/explosion particles, sometimes. M-188 explicitly closed only the "lingering particle residue" manifestation (which turned out to be `s_bullet_spark`/D219, unrelated code) and left this exact scenario — a rainbow artifact riding on the actual explosion/smoke effect itself — open, with the instruction "re-open only if a fireball (not residue/embers) rainbow report comes in again." This report fits that description, not the residue/embers one. **Not yet investigated further this session** — the last concrete lead (before M-188's tangent into D219) was: trace forward from `import_texture_rgba16`'s `upload_texture()` call (`gfx_pc.cpp:718`) through the GL texture object and the `G_CC_INTERFERENCE` (TEXEL0=smoke IA × TEXEL1=fire RGBA16) combiner, since the source ROM data itself was already proven correct by hand-decoding all 14 fire-stage textures (M-156, see above) — the bug is downstream of decode, in upload/cache/combiner. A live `GE_PCDUMP` + `GE_D252=1` capture during an actual reproduction (shoot something that smokes/explodes) is still the next concrete step, unchanged from M-156's own "next, concrete" recommendation. **Status: REOPENED (was incorrectly treated as fully covered by the D219 closure) — OPEN, root cause still unconfirmed for this specific manifestation.** @@ -12406,7 +12426,7 @@ Adversarial pre-ship review of the whole v0.3.0 window (147 commits since v0.2.2 **User report (2026-09-18):** crash on Cavern, early in the level, on the local v0.3.0 pre-release build this session deployed to the Deck (`~/Downloads/goldeneye-pc-port-0.3.0-deck-playtest/`). User's own hypothesis: likely related to `Game.AllUnlocked` (the F10 "unlock everything" toggle, D257), which had been previously enabled on that session/save. -**Fetched `ge007.crash.log` via SSH from the Deck (192.168.69.18) and symbolized it against the exact deployed binary** (confirmed identical build via matching ELF BuildID `d6ec0681d2e82a656c7a099f66264d6bfa4480b7` between the Deck's copy and this session's local `build-linux/ge007.x86_64` — the SHA256 differs only because `bundle`-style `patchelf --set-rpath` modifies the file after linking, not because the code differs): +**Fetched `ge007.crash.log` via SSH from the Deck (the LAN address) and symbolized it against the exact deployed binary** (confirmed identical build via matching ELF BuildID `d6ec0681d2e82a656c7a099f66264d6bfa4480b7` between the Deck's copy and this session's local `build-linux/ge007.x86_64` — the SHA256 differs only because `bundle`-style `patchelf --set-rpath` modifies the file after linking, not because the code differs): ``` SIGNAL: 11 FAULT ADDR: 0x62 @@ -12449,6 +12469,8 @@ do { **Status:** PARTIAL — real fix landed and confirmed (Windows), residual known and deferred past v0.3.0 by explicit user decision, not by default/oversight. +**Current status (2026-09-29 bookkeeping):** the Status line above is historical; the authoritative verdict is the §F row — FIXED (defensive guard) — `sndHandleEvent`'s preempt-scan (`src/snd.c`) dereferenced its list-walk pointer before ever checking it for NULL (a do-while always runs its body once); D285's `osSetIntMask` lock only prevents another thread from emptying the list m… + **Correction, same day: the residual is NOT Deck/Linux-specific — it's intermittent on Windows too.** User follow-up testing: "The rainbow explosion particles is still intermittent on PC sometimes, I can reproduce on Jungle for example but it does not always occur." Repro method: `Game.AllUnlocked` + cheats to get the grenade launcher immediately, rather than earning it through normal play. **Also reports the same repro method does NOT reproduce the bug on every level** — i.e. it's both run-to-run intermittent on a single level AND level-dependent, not just platform-dependent as the previous paragraph assumed. This walks back the "Windows-fixed/Deck-residual" framing from the paragraph above — the correct framing is: **the `explosionRenderPart` 4-vs-5-vertex fix is real and eliminated one genuine, deterministic contributing bug, but the rainbow symptom itself was never fully platform-isolated to begin with, and a second, still-unidentified mechanism can fire intermittently on any platform.** The user notes `Game.AllUnlocked`+cheat-immediate-grenade-launcher as the repro method used, flagged as a possible (not confirmed) contributing factor — matches this session's own prior TMEM-slot-reuse lead's inherent timing-dependence (a scene reached quickly via cheats, before the game's own normal object/texture allocation order would occur, could plausibly produce a different TMEM allocation pattern than reaching the same scene through normal play). Not confirmed causal; logged as a correlation worth checking in a future live-capture session, same as the AllUnlocked/D305 correlation was. **Status, corrected:** PARTIAL — `explosionRenderPart` fix is real, verified, and stays in. The rainbow symptom is intermittent and not cleanly platform-isolated (seen on both Windows and Steam Deck); the secondary mechanism remains unidentified. Public docs (release notes, README) should describe this as "still occasionally intermittent, on any platform," not "fixed on Windows, only recurs on Deck." @@ -12461,6 +12483,8 @@ do { **Status:** OPEN — confirmed as real z-fighting by probe; port-vs-faithful question open (see D308). +**Current status (2026-09-29 bookkeeping):** the Status line above is historical; the authoritative verdict is the §F row — CLOSED — faithful, confirmed on 1964 (M-201): all PC-specific leads refuted (FOV, depth precision, depth state, near plane, wheel transforms); it is the authored truck geometry seen from intro camera 5 under the truck. Absorbs D291. Earlier GE_ZF "real fightin… + **2026-09-26 (v0.4.0, M-201): D291 is this same bug; FOV ruled out.** User captured the D291 "Dam truck" glitch with F12: it happens only on the Dam level intro (also the attract demo), in the shot where the truck drives over the low walkway camera (~frames 280–440 from `-level_33` boot). Wheels and tyre treads draw through the mudguards/body. It reproduces at **FovScale 100** (user re-test, `scratch/d291_shots/fov100_full.png`) as well as at 150 + native widescreen (`shot_000..003.png`), so the port's wider cutscene FOV is not what exposes it. Headless A/B at default vs user settings: `scratch/d291_AB.png` (runs not frame-locked; `GE_ZF` hit its 600-line cap in both). Occlusion-state path checked in passing: fast3d honours `G_ZBUFFER`/`G_ZS_PRIM`/`Z_CMP`/`Z_UPD` per triangle (`gfx_pc.cpp` depth_mode), so no obvious state gap. **Still gated on an N64/emulator reference of this exact shot** (porting-notes D12): if the N64 shows clean wheels there, the fight is PC-specific and the next suspect is the vehicle model's per-part transforms at extreme close range; if it shows the same, close as faithful. **2026-09-26 (M-201, user: "investigate the PC-specific leads"): every PC-specific lead refuted; the artifact is the authored truck geometry seen from under the truck.** @@ -12492,6 +12516,8 @@ do { **Status:** OPEN (investigated — no port-side bug found; awaiting repro detail). +**Current status (2026-09-29 bookkeeping):** the Status line above is historical; the authoritative verdict is the §F row — FIXED (M-201, 2026-09-26, user-verified): renamed duplicate member `CCTVRecord.pad`→`lookpad` made setupCctv read the MOUNT pad as the look-at pad; prop.c reads lookpad on PC. Earlier: OPEN — CONFIRMED PORT BUG (2026-09-26, user vs 1964: ALL Bunker 1 security… + **M-201 (2026-09-26, v0.4.0): ROOT CAUSE FOUND + FIXED — a renamed duplicate struct member re-pointed `setupCctv`'s look-at pad to the mount pad. User-verified.** - **Confirmed port bug first:** user side-by-side with 1964: every Bunker 1 camera faces backwards on PC, correct on N64. @@ -12519,6 +12545,8 @@ do { **Status:** OPEN — real z-fighting confirmed by probe; port-vs-faithful blocked on an N64 reference of the same spot. +**Current status (2026-09-29 bookkeeping):** the Status line above is historical; the authoritative verdict is the §F row — CLOSED — faithful (2026-09-26, user: Statue ground z-fighting reproduces on 1964 GEPD bundle). Earlier: OPEN (user, 2026-09-26: possibly faithful; validate Statue ground z-fighting on 1964 vs port). Earlier: OPEN — investigated: PC depth precision == N64 (24-b… + ## D309 — Complete non-self-recovering freeze (Windows) returning from Caverns to the intro screen — boss thread spins forever in `ai()` on `m_RunToBondPersistent` via a phantom `GotoNext(lblZero)` (user report + live GDB diagnosis, 2026-09-18). **Repro (user):** played through Caverns, then returned to the intro screen (Bond's intro circles); game locked up completely, no self-recovery. Process left alive for live diagnosis (PID 35936 at capture time). @@ -12601,6 +12629,8 @@ This confirms the M-160/M-164/M-165 hypothesis (`## D173`'s own consolidated-nex **Status:** GUARDED (freeze class neutralized; upstream poison source OPEN — M-194 probe armed). **RULE-2-SIGNOFF (2026-09-19, release review — M-192 item 2):** user approved retention as the stability-maximizing option; classified as a defensive guard against non-finite state in the same class as the accepted D156 guards — it fires only on poison values that indicate an already-broken state and snaps to a valid frame rather than altering any legitimate animation. Previously disclosed in-thread as a D156-guard extension following the already-accepted D156 precedent in this same file; revert is still two small blocks. Cross-refs: D156 (original guard + Facility outro hang), D309/D310 (ruled out for this freeze — no AI involvement). +**Current status (2026-09-29 bookkeeping):** the Status line above is historical; the authoritative verdict is the §F row — FIXED — root cause D336 (`bheadAdjustAnimation` read never-written placeholder fields); the `#ifdef PORT` guard is retained as a safety net. 2026-09-25 user playtest incl. ~2 min of Caverns combat: 0 D311 ANOMALY / D156 lines in a ~46-min session. + **2026-09-24 — likely root cause found in D336.** D311's own static pass named `bheadAdjustAnimation` as the one path where a corrupted value reaches `model->speed`. D336 showed that path computing Bond's head-bob start frame from a never-written alias field (`field_5C0` = N64 `model.animframe1`), i.e. uninitialised player-struct bytes, whose garbage depends on memory layout (room-pool size, previous level). That matches D311's intermittent `oldspeed=-1.75e18`-at-transition signature. After the D336 fix: headless Caverns (`-level_39`, user settings incl. the 2× room pool `ma=512000`, scripted movement/turning, ~80 s) gave **0 D156 guards, 0 D311 anomaly lines, no crash**. **Close after one live Caverns combat session (~2 min) stays D156/D311-silent.** **2026-09-25 playtest (user, Windows, one ~46-min session Silo → Caverns, `GE_D322=1 GE_D204=1`, build `7baf4900`):** Caverns combat ~2 min, plus Silo onwards: zero `D311: … ANOMALY` lines (the probe logs via `osSyncPrintf` into the same log, and D318W lines from the same path prove it is live). Combined with D336 (upstream poison source) this closes D311. Guard stays (Rule-2 sign-off 2026-09-19). @@ -12642,6 +12672,8 @@ This confirms the M-160/M-164/M-165 hypothesis (`## D173`'s own consolidated-nex **Status:** OPEN — reported only. Explicitly not for v0.3.0; queued for v0.3.1. Cross-refs: D312 (possible common wall class), D172 (impact-effect path, fixed). +**Current status (2026-09-29 bookkeeping):** the Status line above is historical; the authoritative verdict is the §F row — FIXED — same root cause as D312, merged diagnosis; same one-line fix. Doors/windows use the separate working `bgTestHitOnObj` path, hence the "surface-dependent" appearance. + ## D314 — F10 menu items flicker randomly/intermittently (reported on the main-menu context, user report, v0.3.0 playtest build, 2026-09-18). **Reported:** "F10 menu glitches on main menu, the menu items flicker randomly/intermittently." **Repro detail (user, 2026-09-18):** it happens when F10 opens the settings menu while on the **file-select / level-select screen**, and also when the settings menu is open in-game and the user is then **returned to file-select/level-select** (i.e. the overlay outlives a context switch). The playtest build is the current-tip exe (includes D310/D311 fixes). So this is specifically an overlay-vs-mission-select-screen interaction, not the plain title screen. @@ -12666,6 +12698,8 @@ This confirms the M-160/M-164/M-165 hypothesis (`## D173`'s own consolidated-nex **Status:** OPEN, likely fixed (D287 + wheel race), pending the user check above. +**Current status (2026-09-29 bookkeeping):** the Status line above is historical; the authoritative verdict is the §F row — FIXED (user playtest 2026-09-26) — M-200 wheel-queue race fix + D287 window-thread cursor calls. Earlier: confirmed still present post-D316 fix (2026-09-18). Diagnostic probe (`GE_D314=1`) landed in `optionsOverlayHandleInput()` if revisited. + **2026-09-26 (v0.4.0, M-201): user-confirmed.** F10 on file-select/mission-select with mouse move/click/wheel, and in-level → abort with F10 open: no flicker. Closed by the M-200 wheel-queue fix plus D287 (cursor/relative-mode calls moved to the window thread). @@ -12684,6 +12718,8 @@ This confirms the M-160/M-164/M-165 hypothesis (`## D173`'s own consolidated-nex **Status:** OPEN — disclosed as a known issue, deferred to v0.3.1. Lower urgency than D314/D316/D317. +**Current status (2026-09-29 bookkeeping):** the Status line above is historical; the authoritative verdict is the §F row — CLOSED (2026-09-26, user: menu scaling looks fine; likely resolved by the v0.4.0 widescreen/HUD-scale work D334/D335/D226). Earlier: OPEN — disclosed as a known issue, deferred to v0.3.1 (bigger design question, not a mechanical fix). + ## D316 — Mouse-clicking some menu items glitches and lands on the item below instead (user report, v0.3.0 playtest build, 2026-09-18). **Reported:** "On some menu items when you try to click with mouse, it glitches and forces you onto the item below." **Repro detail (user, 2026-09-18):** possible on any item, but specifically noticed on the **crop overscan bars** setting; not currently reproducible on demand — intermittent. @@ -12952,6 +12988,8 @@ The same device at the same moment drains at exactly real time through DirectSou **Status:** OPEN / parked (GRAPHICS-BACKLOG). If a playtest ever flags mushy distant detail in one of the 15 levels above (Statue and Aztec are the heaviest), the fix path is: in fast3d's texture upload, when the binding class has TEXTLOD on and `tex->maxlod > 1`, feed `glTexImage2D` levels 0..N-1 from the decoded explicit images instead of `glGenerateMipmap`. Audit tool: `tools_pc/bg_lod_audit.py` (also documents the GE OMH field-write encoding, which no other tool captures). +**Current status (2026-09-29 bookkeeping):** the Status line above is historical; the authoritative verdict is the §F row — CLOSED — parked as a fidelity enhancement, not a bug (2026-09-26, user-approved: no reported artifact). Earlier: OPEN / parked — mechanism confirmed in code; census (`tools_pc/bg_lod_audit.py`) shows 15 levels with explicit-LOD textures bound under TEXTLOD-on… + ## D324 — GE's stub declares nothing, so TUs that include it get NO CRT prototypes: implicit `int f()` declarations silently corrupt non-int returns (atof garbage in every float ini parse; D38 class) **Context.** Found while verifying the D294 fix: the new `GE_ROOMPOOL` env hook in `port/src/video.c` called `atof()`, and the parsed value was deterministic-per-call-site garbage (observed 15279232 / 7087232 / 6817888 / 14288992 across runs) instead of the env string's value. The scale override was silently ignored on every run until prototypes were added. @@ -14873,7 +14911,7 @@ both menus' labels and sizing is still owed. ## D383 — PD-style keyboard rebind capture in both options UIs (2026-09-27) -**Status: PARTIAL (built and isolated automated checks; live keyboard-menu +**Status (2026-09-28 bookkeeping):** **CLOSED** — keyboard/mouse rebinding shipped + accepted in v0.4.0; pad rebinding is tracked by the v0.5.0 controller wave (D394, PR #109). Previous: **Status: PARTIAL (built and isolated automated checks; live keyboard-menu acceptance and the release golden gate owed).** User explicitly requested PD-style keyboard rebinding after the D380 single-PC-layout migration. PD analogue: `../pd_port/port/src/optionsmenu.c:1694–1885` offers a per-action @@ -15179,6 +15217,8 @@ I logged all of this as **D397** (`docs/dev/findings.md`, index CSV, and the D18 **Status:** OPEN, re-scoped. New user observation; no code change this session (diagnosis below; a blind fix is not safe without the ground-truth capture that is blocked here). +**Current status (2026-09-29 bookkeeping):** the Status line above is historical; the authoritative verdict is the §F row — RESOLVED (2026-09-28): root cause = H2 (confirmed by a 3-scale PCDUMP test — the comb period is fixed at ≈3 *native* rows across 640/1024/1280, i.e. window-period = 3×scale: the `(<<2)-1` 0.75-native-pixel row-strips rely on RDP floor-based scanline stepping t… + **User report:** the SELECT FILE background image (the 007 gun-barrel / Bond-silhouette backdrop behind the file boxes) and the intro gun-barrel both have a "weird interlaced glitchy look" — a horizontal comb / line-scramble. This extends the long-standing D182(2) "comb / interlacing" symptom and adds a **second, independent instance** (the intro gun-barrel) that D182 never covered. Critically, the intro gun-barrel is a **first-time render** (not a back-out / re-entry), so the interlace is present on first display, not only after a round-trip. That refutes D182's "only after re-entry / stale tile descriptor" hypothesis for this symptom: it is a *persistent* defect on these large 1:1 grayscale front-end images. **What was ruled out this session (static read, no live run):** @@ -15513,7 +15553,7 @@ included; D281 keeps the shipped mitigation + disclosure, zero-saves root cause **Verification:** NTSC build + link clean; zero `TANKDBG` strings in the release binary (re-verified after probe strip, 2026-09-28); 40 s front-end boot steady ~60 fps with zero errors. **Live sign-off (user, 2026-09-28):** first tank drive — board + exit work, no double-trigger against the tank prop, and the in-tank aim feel is good at `TankAimScale = 100` ("felt fine, glad to have the setting"). -**Status:** RESOLVED (2026-09-28) — board-ordering fix + board-animation lockout + menu-accept B gate + tank aim routing + `Input.TankAimScale`, all port-only (`src/game` zero-diff), user-signed off on a live tank drive; probes stripped, release binary verified clean. +**Status (2026-09-28 bookkeeping):** **CLOSED** — tank board/exit accepted by the user; shipped in v0.4.0. Previous: **Status:** RESOLVED (2026-09-28) — board-ordering fix + board-animation lockout + menu-accept B gate + tank aim routing + `Input.TankAimScale`, all port-only (`src/game` zero-diff), user-signed off on a live tank drive; probes stripped, release binary verified clean. ## D408 — `Game.SkipIntro` skips the post-mission failure dossier: failed/aborted missions return straight to the menus with no REPORT screen (user report 2026-09-28, during v0.4.0 wrap-up playtest) @@ -15524,3 +15564,102 @@ included; D281 keeps the shipped mitigation + disclosure, zero-saves root cause **v0.4.0 decision (user, 09-28):** `Game.SkipIntro` stays **EXPERIMENTAL — not recommended for regular users yet**, alongside its older unrooted audio-break report (D216 status note). The F10 row is relabelled "Skip intro (EXPERIMENTAL)" (`port/src/optionsoverlay.c`, mirroring the D387 AllUnlocked labelling precedent); the config var, default (off), and `lv.c` hook are unchanged. **Status:** OPEN — cosmetic (no crash, no data loss; the mission still records as failed/aborted and the menus are fully functional). Root-causing needs a side-by-side of front-end state (`current_menu`, `g_CurrentStageToLoad`, `mission_failed_or_aborted`, `g_isBondKIA`) on the fail return with SkipIntro off vs on — candidate for v0.5.0 alongside the D216 audio half. + + +## D415 — Shooting a light fixture does not "kill" its flickering light (Bunker, Caverns) (community report, 2026-09-28) + +**Report (issue #87, comment from the issue's reporter, 2026-09-28, after an +00 Agent playthrough of v0.4.0):** "shooting the lights fixtures in bunker and +caverns does not actually 'kill' the flicker light." Reported as one of "a few +little things"; the reporter asked whether it is already known before filing +separate tickets. It was not: no prior finding or backlog row covers it. + +**Not yet established:** whether the N64 original (1964/GEPD) kills the +flicker on those specific fixtures, i.e. whether this is a port bug at all; +which fixtures (flickering vs. static lights) and levels are affected; whether +the fixture's texture/vertex darkening happens and only the flicker persists, +or nothing changes. + +**Starting points (unverified leads, not a diagnosis):** the break path is +`lightFixtureBreak()` (`src/game/lightfixture.c:407`) → +`darken_triangle_in_room()` / `darken_vertex_in_room()`, which edit room vertex +colours located via `lightFindVertexBaseForTri()` (`:176`, the same cast #107 +touches; s32-safe on Windows/Linux because the DRAM arena is pinned at +0x70000000). The flicker itself may be driven by a separate per-frame +room/vertex light animation that rewrites the colours after the darkening; if +so, check whether the fixture table's per-room state (`light_fixture_table`, +`redarken_lights_in_room()`) is honoured on PC. Also rule out fast3d vertex +caching of room geometry, which would hide a vertex-colour edit. + +**Next:** confirm the N64 behaviour on 1964 (Bunker 1 and Caverns, shoot a +flickering fixture), then repro on PC. + +**Status:** OPEN (logged, not investigated). Now tracked as GitHub issue #119; the reporter's statement that the N64 stops the flicker is accepted as the baseline (a 1964 check is a bonus, not a gate). + +**Current status (2026-09-29 bookkeeping):** the Status line above is historical; the authoritative verdict is the §F row — FIXED (2026-09-29 bookkeeping: root-caused and fixed as D430 + D431, user-verified vs GEPD/1964 on Caverns 2026-09-29; #119). Earlier: ROOT-CAUSED as D430 (see there); fix in tree, live check owed. + + +## D424 — `WeaponStats.RecoilSpeed`/`b44[]` byte order: no recoil animation on the grenade launcher, shortened recoil on every gun (issue #118) + +**Root cause:** `b44[4]` aliases the four bytes of the big-endian `RecoilSpeed` word (`gun.h`). Byte 0 is the MSB on N64 but the LSB on little-endian PC, so `gunfire.c` read rise/fall/retrigger/offset reversed. Grenade launcher `0x081000FF` (8,16,0,-1) read as (-1,0,16,8): `field_890 >= sp1A4+sp1A0` was true at once, so the recoil phase never ran. KF7/Klobb 4+12 -> 6+0 ticks, PP7 4+8 -> 0+3. +**Fix (port, `#ifdef PORT`, use-site, semantics-preserving):** `WS_B44(ws,i)` accessor in `gun.h` reads `b44[3-i]`; all `gunfire.c` reads switched. **Rule-2 note:** endianness rather than pointer widening, so it needs sign-off as an ABI-class exception. +**Rule-2:** user sign-off 2026-09-29 ("if justified and accurate"). Accuracy check: a standalone gcc test of the real union layout with the GL (`0x081000FF`) and KF7 (`0x040C0006`) words gives (-1,0,16,8)/(6,0,12,4) through the old read and exactly the N64 (8,16,0,-1)/(4,12,0,6) through `WS_B44`. +**Status:** FIXED; user-verified vs GEPD/1964 2026-09-29 (GL kick, PP7 recoil). + +## D425 — Tank run-over death sound loops: `(chrflags << 7) >= 0` sign-bit latch is always true on GCC (issue #115) + +`CHRFLAG` contains `0x80000000`, so GCC makes the enum unsigned; `bondview2.c` tank-crush latch (`CHRFLAG_01000000` << 7 = sign bit) never blocked, so `CRUSHED_YELL_SFX`/`TANK_CRUSH_MAN_SFX` retrigger every tick while an ACT_DIE chr sits in the tank bounds. **Fix:** `(s32)chrflags << 7` (use-site cast; a `-1` sentinel would risk widening the enum to 64-bit). Cross-tag porting-notes D3. **Status:** FIXED; user-verified 2026-09-29 (Runway run-over plays the crush yell once). + +## D426 — Tank cannot be steered with the mouse out of aim mode (issue #116) + +Tank hull turns from stick X (`analogTurn`, `bondview2.c` ~5166); port hipfire mouse used `hipDirectCompute` (direct `vv_theta` write, ignored/overwritten in tank). **Fix (`port/src/input.c`):** in tank, hipfire mouse X emits stick turn (x `Input.TankAimScale`), mouse Y dropped (stick Y is drive). Pad CENTRED direct path in tank not audited. **Status:** FIXED; user-verified 2026-09-29 (non-aim tank mouse turning good; aim behaviour matches the original, D429). + +## D427 — Automatic fire cadence is frame-counted, ~2-3x faster than N64 at 60 fps (issue #114) + +`gunfire.c` `field_88C += 1` per rendered frame gates `field_88C % AutomaticFiringRate`; N64 renders 2-3 ticks/frame, PC 60 fps gives 1 (D13 class; D240 lineage). Faithful decomp, platform-dependent -> **needs rule-2 sign-off** before any `src/game` edit. `FpsCap 30` roughly halves the gap (untested). **Fix (rule-2, user go-ahead 2026-09-29; `gunfire.c`, `#ifdef PORT`):** the automatic-fire gate `88C % AutomaticFiringRate` now uses `rate * (g_ClockTimer >= 2 ? 1 : 2)`, so it spans the same number of TICKS as a console 2-tick frame. Only that gate changes. **Rejected first attempt:** slowing `field_88C` itself (advance per 2 ticks) made the counter sit on the same value for two frames, so every `88C == 0` / `%` gate fired twice (measured `1 5 1 5` tick gaps = no slowdown, and it would have double-fired pistols). **Measured** (`-level_09`, AK47 via `GE_STARTWEAPON=8`, held fire, one shot per line of a temporary probe, since removed): before = 3 ticks/shot at 60 fps; after = 6 ticks/shot at FpsCap 60 and FpsCap 30 alike (N64 at 2 ticks/frame = 6). Semi-autos are recoil-time (tick-scaled) bound and unchanged. +**Status:** FIXED; user-verified vs GEPD/1964 2026-09-29 (AK47 empties in ~3 s, Klobb normal). **Known limit (sub-agent review, 2026-09-29):** `field_88C` is never rescaled, so at mixed 1/2/3 ticks-per-frame pacing (unstable ~40-55 fps) the modulus flips 2x<->1x and can produce an early extra shot or jittery cadence; steady 60 (or 30) fps is exact. No stall and no same-frame double fire. Headless measurement was steady-state only. + +## D428 — No gun turn-sway with direct mouse look (issue #117) + +Gun turn lag = `weapon_theta_displacement = -1.75*speedtheta` (`gun.c` `gunSetBondWeaponSway`). Direct-look paths (D238 hipDirectCompute, centred, PD aim) write the camera and leave `speedtheta`~0. Writing `speedtheta` would also move the camera; needs a display-only route or design decision. **Fix (rule-2, user go-ahead; `#ifdef PORT`):** `hipDirectCompute` records the yaw degrees it applied; hipfire feeds them to an atomic accumulator (`swayFeedTheta`, `port/src/input.c`); `bondview2.c` adds `portGunSwayTheta(g_GlobalTimerDelta)` to the `speedtheta` value passed to `gunSetBondWeaponSway` (player 0 only). The speed uses the game's own convention for deriving speed from an angle change (`bondview2.c` speedverta: delta / (2*dt), clamp +/-0.7). Camera untouched; vertical sway already worked (the game derives `speedverta` from the real `vv_verta` change). Aim mode not fed (sway-free while aiming). Pad centred-direct path not fed. Verified the hook fires (`GE_INPUTLOG` `gunsway` lines, ~0.13 speed at 8 px/poll); amount is by-feel, tune the 2*dt divisor if needed. +**Status:** FIXED; user-confirmed feels right 2026-09-29 (second pass, see below; the formula in the Fix paragraph above is the superseded first pass). **Split-screen note:** the accumulator is global and drained only by player 0; revisit when #99 (mouse on a non-zero slot) merges. + +## D429 — Tank full pass: aim-mode (RMB) mouse behaviour and tank sticking forward/back (user playtest 2026-09-29, follow-up to D426) + +After D426, non-aim mouse turning in the tank is good. Still open: (1) right-mouse aim in the tank is "wonky"; (2) the tank can seemingly get stuck driving forward or backward. Candidates (unverified): the aim-held legacy velocity-stick path (`input.c` `tankAimStick`) feeding stick Y while the game treats stick Y as drive/turret pitch depending on `insightaimmode`; digital C-up/C-down (W/S) interplay in aim mode; latched button state across the aim toggle. Needs a dedicated pass against GEPD/1964 tank behaviour, then the input layer/QoL. +**Status:** CLOSED faithful (user 2026-09-29: tank controls now match GEPD/1964; the "sticking" was drive inertia and the original also drops driving input while the mouse aims). + +## D430 — Shot light fixtures do not darken: `extract_vertex_indices_from_triangle` reads the N64 8-byte Gfx layout from the 16-byte PC Gfx (issue #119, the D415 report) + +**Root cause (code reading; D154/D135/D312 class, porting-notes B):** `lightFixtureBreak` -> `darken_triangle_in_room` / `extract_vertex_coords_from_triangle` all get their three vertex indices from `extract_vertex_indices_from_triangle` (`lightfixture.c`). Every case reads the display-list command as raw N64 storage -- `gfx->tri.tri.v[k]` for G_TRI1, `((u32*)gfx)[1]`, `((u8*)gfx)[7]`, `((u16*)gfx)[3]` ... for the four G_TRI4 triangles. The room DL on PC is the widened 16-byte Gfx (D85), where the two N64 words live in the low dwords of `words.w0`/`words.w1`, so all reads returned garbage (effectively index 0). A shot fixture therefore darkened vertex 0 of its vertex batch instead of its own vertices (and the glass-shard positions and "neighbouring triangle" search used the same wrong vertices). The sibling parser in `bg.c` (bullet hit test) was fixed for this in D154; `lightfixture.c` was missed. +**Fix (`#ifdef PORT`, no logic change):** decode from `words.w0`/`w1` with exactly D154's nibble mapping (case 0 = G_TRI1 bytes 5-7 / 10; cases 1-4 = G_TRI4 s2 0..3). The original N64 behaviour of ignoring the G_VTX v0 offset is kept. Each of the 15 index expressions was checked against the original raw-byte access. **No headless proof** (needs a shot at a fixture); verification is the Bunker/Caverns playtest. +**Note:** this explains "shooting the fixture does not kill the light". I found no flicker mechanism in the game code (the light system only darkens vertex colours >>2 and spawns glass), so if a flicker persists after this fix it is a separate effect. +**Status:** FIXED; user-verified vs GEPD/1964 (Caverns) 2026-09-29. + +## D431 — Shot light fixtures never break on PC: the bullet-hit path returns texnum -1, so `check_if_imageID_is_light` is never true (issue #119, user-confirmed on Caverns) + +`chrprop.c` calls `lightFixtureBreak()` only when `check_if_imageID_is_light(bghit.texturenum)`. On the N64 `bg.c`'s room hit-test recovers `texnum` by dereferencing 8 bytes before the SETTIMG texture data in KSEG0; on PC that is invalid for the converted room GDLs, so D154 stubbed it to `-1` (both sites, G_TRI1 and G_TRI4 loops). Result: `lightFixtureBreak` is never called for any shot (the `GE_D430` probe logged zero `break` lines during a Caverns session where the user shot lights). D430 (index parser) was a second, independent bug behind it. +**Fix (`#ifdef PORT`, no logic change):** `tex.c` already knows the image id when it opens a fixture entry; it now stores it in the entry's unused `RESERVED` slot (`lightFixtureSetTexnum`); the two `bg.c` sites return `lightFixtureTexnumForGfx(gdl, roomnum)` (same room/DL-range test `lightFixtureBreak` uses) instead of -1. Non-light textures still return -1 (impact-sound flavour unchanged, D77 parked). +**Consequence found by sub-agent review (D434):** real image ids for light hits now flow into the `g_Textures[]` consumers in `chrprop.c`/`propobj.c`, which read a raw byte 0 as the hit type (wrong on PC) -- fixed in D434. +**Status:** FIXED; user-verified vs GEPD/1964 (Caverns) 2026-09-29. + +## D432 — Gunshot sound cadence drifted from the shots after D427 (user: sounds "off", Caverns, Mac-10-class gun) + +`gunfire.c` re-triggers the shot sound when `field_A4C < g_GlobalTimer`, with `field_A4C = SoundTriggerRate + g_GlobalTimer`. The gate is evaluated once per gun-tick call (per rendered frame; each frame carries `g_ClockTimer` ticks of `g_GlobalTimer`). On the N64 (2 ticks/frame) it is only evaluated every second tick, so the next sound lands on the first frame boundary after rate+1 ticks (AK47 rate 4 -> 6). At 1 tick/frame the port opened it after exactly rate+1 (5). D427 moved the shots to 6 ticks, so shots (6) and sounds (5) drifted. **Fix:** at `g_ClockTimer < 2` add `| 1` to the rate (rate 4 -> 5, 3 -> 3, 5 -> 5, 11 -> 11), which opens the gate on the same even boundary the console used; unchanged at >= 2 ticks/frame. +**Status:** FIXED; cadence measured identical to the N64 rules (AK47 6/6, Klobb 6/12, weapon 9 4/6; zero SKIPs). Residual slight audible difference tracked as D433. + +## D428 second pass (2026-09-29) + +Probe (`GE_D428`) showed the hook firing with the input clamped at 0.7 on most fast turns. The game's natural stick turn sets `speedtheta = (stick/70)^2 * fov/60` with NO ramp (max ~1.0) and integrates `vv_theta += speedtheta*dt*3.5`, so the exact inverse for a mouse turn is `deg / (3.5*dt)` clamped to `fov/60`. The first pass used the vertical axis' `delta/(2*dt)` clamped to 0.7: too weak at full speed, too strong at slow speed. Switched; user reports a slight difference turning fast, which this addresses. + +## D433 — Automatic-gun shot sound still audibly differs slightly from GEPD/1964 (user by-ear, Caverns, 2026-09-29) + +**Measured (headless, `-level_09`, held fire, temporary shot + `GE_D207S` probes, since removed):** after D427/D432 the shot and sound-start cadence match the console's rules exactly -- AK47 shots 6 ticks / sounds 6 ticks, offset 0 on every shot; Klobb shots 6 / sounds 12 (SoundTriggerRate 11, same gate as N64); weapon 9 shots 4 / sounds 6; zero SKIPs. So the residual difference is NOT fire/sound cadence. +**Suspects (unverified):** (1) the port's RSP-audio HLE (`port/src/mixer.c`): resampler interpolation, envelope/`aEnvMixer` handling, reverb; (2) how a superseded shot sound is stopped (`sndDeactivate` -> release envelope) versus the emulator's plugin; (3) the reference itself -- 1964's audio plugin is also HLE and is not a ground-truth for timbre. **Next:** ask for a description (pitch / tail cut / loudness / reverb / overlap, which gun) or a capture of both; then compare mixer resampling and release handling to libaudio's N64 behaviour. +**Status:** OPEN. + +## D434 — Raw `((u8*)&g_Textures[n])[0] & 0xf` hit-type reads are wrong on PC (found by sub-agent review of D431; latent OOB in `g_HitTypeSounds[13]`) + +Under PORT `struct image_entry` puts `dataoffset:24` in bits 0-23 (D67), so byte 0 is the LOW byte of the data offset. On the N64 (big-endian) byte 0 is the MSB of word 0, the hit type. `chrprop.c` (impact_sounds ~1154, the explosion skip test ~1187) and `propobj.c` (~9685) used the raw byte, so on PC they indexed `g_HitTypeSounds[]` with an arbitrary nibble 0..15 (table has 13 entries; 13-15 read past it) and mis-tested the 5/6 spark skip. Harmless while `bghit.texturenum` was always -1 (D154); D431 now returns real ids for light fixtures, activating the path. (The Caverns playtest passed, so the light images' nibbles were presumably in range: luck, not design.) The comment in `image.h` claiming the N64 does the same was wrong and is corrected. +**Fix (`#ifdef PORT`, layout-driven, semantics-preserving):** use the `.hitTexture` bitfield at the three sites, as `chr.c` already does. **General rule (for porting-notes):** un-stubbing a `-1` sentinel (D154/D135/D431) re-activates every dormant consumer of the value -- grep all readers and check each for raw-layout reads and table-bounds assumptions first. +**Status:** FIXED; built. Live check owed (shoot light fixtures across levels; impact sound/sparks on lights). diff --git a/docs/dev/release-dropin-rom-plan.md b/docs/dev/release-dropin-rom-plan.md index 9f4b9c67..1781b080 100644 --- a/docs/dev/release-dropin-rom-plan.md +++ b/docs/dev/release-dropin-rom-plan.md @@ -1,5 +1,7 @@ # Release plan — "drop in your ROM and play" +> **Historical record — do not act on status claims in this file.** Part A shipped as the NTSC-U drop-in ROM flow (PR #84, issue #6). The remaining Part B pieces are tracked in the roadmap. Current open work and status: [`docs/ROADMAP.md`](../ROADMAP.md) (2026-09-29). + Status: proposal / not yet scheduled. Owner: TBD. ## Goal diff --git a/docs/internals.md b/docs/internals.md index 6d7666a7..816750cc 100644 --- a/docs/internals.md +++ b/docs/internals.md @@ -10,7 +10,7 @@ description: Architecture behind the PC port; the software RSP-emulation approac > external references. The phased plan in section 8 is largely done through > Phase 2; for current status see the > [README](https://github.com/jkdansereau/goldeneye-pc-port#status) and -> [`dev/LEVEL-STATUS.md`](https://github.com/jkdansereau/goldeneye-pc-port/blob/main/docs/dev/LEVEL-STATUS.md); +> [`ROADMAP.md`](https://github.com/jkdansereau/goldeneye-pc-port/blob/main/docs/ROADMAP.md); > for the blow-by-blow finding log see > [`dev/findings.md`](https://github.com/jkdansereau/goldeneye-pc-port/blob/main/docs/dev/findings.md). @@ -411,7 +411,7 @@ sync/flush) is shared. * Bring in the PD `fast3d` (gfx_pc / gfx_opengl / gfx_cc / gfx_sdl2). * Verify the custom CC/RM modes against `gmain.s`; add a `G_SETTEX` decode path only if it turns out to be used (see §5; it appears unused). -* Port `pdsched.c` (GE variant) to drive the software RSP. +* Port `pdsched.c` (GE variant) to drive the software RSP. *(Done differently: GE compiles its real `src/sched.c` and shims its hardware leaf calls in `port/src/libultra.c`, which runs the software RSP inline — see the CMakeLists.txt `SRC_ENGINE` comment.)* * Goal: render the title screen / first level. ### Phase 3: Audio + input diff --git a/docs/porting-notes.md b/docs/porting-notes.md index 05598fdd..d8b5eadf 100644 --- a/docs/porting-notes.md +++ b/docs/porting-notes.md @@ -1346,6 +1346,10 @@ darkening from a nonzero `ENV_ALPHA` LERP factor is very likely faithful (possibly authored/original-dev-intentional tinting), not a bug — do not "fix" it without an N64/1964-GEPD reference screenshot proving otherwise. +## D17. Un-stubbing a `-1` sentinel re-activates every dormant consumer of the value (D431/D434) + +A port stub that forces a value to `-1` (D154 `texnum`, D135) can hide latent layout bugs in its other readers. When restoring a real value, grep ALL readers of the field first and check each for raw-layout reads and table-bounds assumptions. Instance: D431 made light-fixture hits return real image ids, which reached `chrprop.c`/`propobj.c` reading `((u8*)&g_Textures[n])[0] & 0xf` as a hit type -- on PC byte 0 is the low byte of `dataoffset` (LE bitfield layout, D67), so it indexed `g_HitTypeSounds[13]` with 0..15. Use the `.hitTexture`/`.hitSound` bitfields (as `chr.c` does). + ## E. Process / method notes - **Never `exit()` while another thread may be inside the GL driver (D344).** diff --git a/port/src/input.c b/port/src/input.c index 08ecc0d0..e14c427a 100644 --- a/port/src/input.c +++ b/port/src/input.c @@ -505,6 +505,8 @@ static int aimGepdAccumulate(double dxPx, double dyLook); static void aimGepdEdgeScroll(void); static int aimGepdCompute(double dxPx, double dyLook); static int hipDirectCompute(double dxPx, double dyLook); +static double s_hipThetaDegOut; /* D428: yaw degrees the last hipDirectCompute applied */ +static void swayFeedTheta(double deg); static int padDirectCompute(int dx, int dy); /* D404: pad twin of the above */ /* D194: bondview2's "look-ahead" pitch centreing (docentreupdown) arms during * hip-fire walking whenever the pitch strays from the horizon target, and -- @@ -1914,14 +1916,21 @@ unsigned inputComputePad(int idx, signed char *stick_x, signed char *stick_y) * unrecognised" and fast motion bang-bang). Falls through to * the legacy stick path below when it declines (disabled, no * player, or a safety gate is closed). */ - if (mouseDirectLook && hipDirectCompute(hipEdx, hipDyLook)) { + /* D426 (#116): in a tank the hull turns from stick X (analogTurn) and stick Y + * is drive, so the direct camera write is ignored/overwritten -- emit + * mouse X as stick turn (scaled by Input.TankAimScale) and drop Y. */ + int inTankHip = (g_PlayerIsInTank == 1); + if (!inTankHip && mouseDirectLook && hipDirectCompute(hipEdx, hipDyLook)) { + swayFeedTheta(s_hipThetaDegOut); /* D428: hipfire gun turn-lag */ /* Pitch handled inside hipDirectCompute too; nothing left * to do for yaw/pitch this poll. Digital pitch-pulse * (naturalPitchMode==0) still applies below only in the * legacy path, so skip both branches here. */ } else { - sx += (int)(hipEdx * hipSens * MOUSE_TURN_GAIN); - if (naturalPitchMode) { + sx += (int)(hipEdx * hipSens * MOUSE_TURN_GAIN * (inTankHip ? tankAimScale / 100.0 : 1.0)); + if (inTankHip) { + /* no pitch/drive from the mouse in a tank */ + } else if (naturalPitchMode) { /* D194/D238: SOLITARE gives hipfire pitch the same * continuous analog stick treatment as yaw -- same * formula as the sx line above, so X and Y are, by @@ -2584,6 +2593,42 @@ static int aimGepdCompute(double dxPx, double dyLook) * stick path); 0 to fall back (disabled, no player, or a safety gate is * closed -- e.g. mid-death or mid-cutscene, matching GEPD's !dead/!watch). */ +/* D428 (#117): the gun's turn-lag ("sway") is driven by player->speedtheta + * (gunSetBondWeaponSway, bondview2.c), which the game derives from STICK + * deflection. Direct mouse look writes vv_theta instead and leaves speedtheta + * at ~0, so the gun stayed glued to the view. Accumulate the yaw degrees the + * direct path applied (poll thread) and hand the game thread an equivalent + * turn speed once per tick: the exact inverse of the game's own yaw + * integration (see portGunSwayTheta). Hipfire only; display-side. */ +static SDL_atomic_t s_swayThetaMdeg; + +static void swayFeedTheta(double deg) +{ + SDL_AtomicAdd(&s_swayThetaMdeg, (int)lround(deg * 1000.0)); +} + +float portGunSwayTheta(float dt) +{ + int m = SDL_AtomicSet(&s_swayThetaMdeg, 0); + if (dt <= 0.0f) + return 0.0f; + /* Exact inverse of the game's own yaw integration (bondview2.c: + * vv_theta += speedtheta * dt * 3.5) and of its natural-turn speed, which is + * set straight from the stick with no ramp: speedtheta = (stick/70)^2 * fov/60, + * i.e. |speedtheta| <= fov/60 (~1.0). So a mouse turn of X degrees/tick gives + * the same gun lag the stick turning at that speed did on the N64. (An earlier + * version used the vertical axis' delta/(2*dt) clamped to 0.7: too weak at full + * speed, too strong at slow speed.) */ + f32 fov = viGetFovY(); + double lim = (fov > 0.0f) ? (double)fov / 60.0 : 1.0; + double v = (m / 1000.0) / (3.5 * (double)dt); + if (v > lim) v = lim; + if (v < -lim) v = -lim; + if (m != 0 && configGetInputLog()) + sysLogPrintf(LOG_NOTE, "GE_INPUTLOG gunsway theta=%.1f deg speed=%.3f", m / 1000.0, v); + return (float)v; +} + static int hipDirectCompute(double dxPx, double dyLook) { struct player *p = g_CurrentPlayer; @@ -2619,7 +2664,8 @@ static int hipDirectCompute(double dxPx, double dyLook) /* dyLook already carries MouseInvertY + MouseYScale (applied by the * caller before dt-scaling, same as every other consumer of dyLook) -- * do not re-apply either here. */ - p->vv_theta += (f32) (dxPx * 0.1 * sens * scale); + s_hipThetaDegOut = dxPx * 0.1 * sens * scale; + p->vv_theta += (f32) s_hipThetaDegOut; p->vv_verta -= (f32) (dyLook * 0.1 * sens * scale); if (p->vv_verta > 90.0f) p->vv_verta = 90.0f; if (p->vv_verta < -90.0f) p->vv_verta = -90.0f; diff --git a/src/game/bg.c b/src/game/bg.c index 2bed832a..c5ac6f70 100644 --- a/src/game/bg.c +++ b/src/game/bg.c @@ -7,6 +7,7 @@ #include #include #include "bg.h" +#include "lightfixture.h" #include "bondview.h" #include "chr.h" #include "debug_camera.h" @@ -3603,7 +3604,8 @@ bool bgTestRayIntersectionInRoom(coord3d *from, coord3d *to, coord3d *dir, RoomV else { #ifdef PORT - texnum = -1; /* D154: KSEG0 texnum deref invalid for converted GDLs (cf. D135) */ + /* D154: KSEG0 texnum deref invalid for converted GDLs (cf. D135). D431 (#119): light fixtures are the one texture class the game acts on, so recover their image id from the fixture table. */ + texnum = lightFixtureTexnumForGfx(gdl, roomnum); #else temp.word = ((u32 *) tcmd)[1] - 8; texnum = *((u16 *) (temp.word | 0x80000000)); @@ -3788,7 +3790,8 @@ bool bgTestRayIntersectionInRoom(coord3d *from, coord3d *to, coord3d *dir, RoomV else { #ifdef PORT - texnum = -1; /* D154: KSEG0 texnum deref invalid for converted GDLs (cf. D135) */ + /* D154: KSEG0 texnum deref invalid for converted GDLs (cf. D135). D431 (#119): light fixtures are the one texture class the game acts on, so recover their image id from the fixture table. */ + texnum = lightFixtureTexnumForGfx(gdl, roomnum); #else temp.word = ((u32 *) tcmd)[1] - 8; texnum = *((u16 *) (temp.word | 0x80000000)); diff --git a/src/game/bondview2.c b/src/game/bondview2.c index f565b948..b00c81aa 100644 --- a/src/game/bondview2.c +++ b/src/game/bondview2.c @@ -7722,6 +7722,16 @@ void MoveBond(s8 stick_x, s8 stick_y, u16 buttons, u16 oldbuttons) f32 weapon_speed_verta; sp14C_temp = g_CurrentPlayer->speedtheta; +#ifdef PORT + { + /* D428 (#117): direct mouse look leaves speedtheta ~0; add the + * equivalent yaw speed so the gun lags turns again (player 0 owns + * the mouse). Defined in port/src/input.c. */ + extern float portGunSwayTheta(float dt); + if (get_cur_playernum() == 0) + sp14C_temp += portGunSwayTheta(g_GlobalTimerDelta); + } +#endif weapon_speed_verta = (g_CurrentPlayer->speedverta / 0.7f) + (g_CurrentPlayer->field_A4 / CHR_OBJ_MAXSPEED); @@ -7865,10 +7875,19 @@ void MoveBond(s8 stick_x, s8 stick_y, u16 buttons, u16 oldbuttons) if (sp6C->actiontype == ACT_DIE) { #if defined(VERSION_US) + /* D425 (#115): CHRFLAG is unsigned on GCC (has 0x80000000); N64 tests the sign bit */ +#ifdef PORT + if (((s32)sp6C->chrflags << 7) >= 0) +#else if ((sp6C->chrflags << 7) >= 0) #endif +#endif #if defined(VERSION_JP) || defined(VERSION_EU) +#ifdef PORT + if (((s32)sp6C->chrflags << 7) >= 0 && lvlGetControlsLockedFlag() == 0) +#else if ((sp6C->chrflags << 7) >= 0 && lvlGetControlsLockedFlag() == 0) +#endif #endif { sp6C->chrflags |= CHRFLAG_01000000; diff --git a/src/game/chrprop.c b/src/game/chrprop.c index eb504362..99cfec0d 100644 --- a/src/game/chrprop.c +++ b/src/game/chrprop.c @@ -1151,7 +1151,13 @@ void chraiDefaultWeaponFireHandler(s32 hand) } else { +#ifdef PORT + /* D434: byte 0 of the PORT image_entry is the low byte of dataoffset, not the + * hit type (N64: byte 0 = MSB = hit type). Use the bitfield (cf. chr.c). */ + impact_sounds = g_HitTypeSounds[g_Textures[bghit.texturenum].hitTexture]; +#else impact_sounds = g_HitTypeSounds[((u8 *) (&g_Textures[bghit.texturenum]))[0] & 0xf]; +#endif } if (createSpark) @@ -1184,7 +1190,12 @@ void chraiDefaultWeaponFireHandler(s32 hand) { recall_joy2_hits_edit_flag(shotdata.weapon, finalpos, besttexture); +#ifdef PORT + /* D434: see the impact_sounds read above (raw byte 0 != hit type on PC). */ + if ((g_Textures[besttexture].hitTexture != 5) && (g_Textures[besttexture].hitTexture != 6)) +#else if (((0xf & ((u8 *) g_Textures)[besttexture * 8]) != 5) && ((((u8 *) g_Textures)[besttexture * 8] & 0xf) != 6)) +#endif { rooms[0] = bestroom; rooms[1] = 255; diff --git a/src/game/gun.h b/src/game/gun.h index 1ce99c43..a897c7e6 100644 --- a/src/game/gun.h +++ b/src/game/gun.h @@ -319,6 +319,14 @@ s32 bondwalkItemHasAmmo(ITEM_IDS item); void gunDrawSight(s32 *gdl); +/* D424 (#118): b44 aliases the four bytes of the big-endian RecoilSpeed word; + * byte 0 is the MSB on the N64 but the LSB on little-endian PC. */ +#ifdef PORT +#define WS_B44(ws, i) ((ws)->b44[3 - (i)]) +#else +#define WS_B44(ws, i) ((ws)->b44[i]) +#endif + WeaponStats *get_ptr_item_statistics(ITEM_IDS item); ITEM_IDS getCurrentPlayerWeaponId(GUNHAND hand); diff --git a/src/game/gunfire.c b/src/game/gunfire.c index d21ff3bc..792a2d3b 100644 --- a/src/game/gunfire.c +++ b/src/game/gunfire.c @@ -3222,7 +3222,20 @@ void gunTickHandState(enum GUNHAND hand, s32 triggerOn) && (currentPlayerGetIsAiming() == 0) && (((s32) handptr->volley % 3) != 0))) { + #ifdef PORT + /* D427 (#114): field_88C counts RENDERED frames and the + * automatic-fire cadence is 88C % AutomaticFiringRate. The N64 + * renders ~2 ticks per frame; the port at 60 fps gives 1, so + * every automatic gun fired 2-3x faster in wall time. Scale the + * modulus so it spans the same number of TICKS the console's + * 2-tick frames did (identical to N64 at >= 2 ticks/frame). + * Only this gate changes: 88C itself and every other 88C==0 + * "first frame" gate stay per-frame, and animation time + * (field_890) stays tick-scaled. */ + if (((s32) handptr->field_88C % (bondwalkItemGetAutomaticFiringRate(var_s1) * ((g_ClockTimer >= 2) ? 1 : 2))) == 0) +#else if (((s32) handptr->field_88C % bondwalkItemGetAutomaticFiringRate(var_s1)) == 0) +#endif { if ((getPlayerCount() == 1) || ((checkGamePaused() == 0) && (g_CurrentPlayer->mpmenuon == 0))) { @@ -3302,7 +3315,19 @@ void gunTickHandState(enum GUNHAND hand, s32 triggerOn) if ((g_CurrentPlayer->hands[1 - hand].field_A50 != g_GlobalTimer) && (handptr->field_A4C < g_GlobalTimer)) { +#ifdef PORT + /* D432 (#114 follow-up): this gate compares against g_GlobalTimer + * every gun tick. On the N64 (2 ticks/frame) it is only evaluated + * every second tick, so the next sound lands on the first frame + * boundary after rate+1 ticks: rate 4 -> 6, rate 3 -> 4. At 1 + * tick/frame the port let it fire after exactly rate+1 (5 for the + * AK47), which, once D427 moved the shots to 6 ticks, made shot + * and sound drift apart ("off"). Round the offset to odd (rate|1) + * so the gate opens on the same even boundary the console used. */ + handptr->field_A4C = ((s32) bondwalkItemGetSoundTriggerRate(var_s1) | ((g_ClockTimer >= 2) ? 0 : 1)) + g_GlobalTimer; +#else handptr->field_A4C = bondwalkItemGetSoundTriggerRate(var_s1) + g_GlobalTimer; +#endif sp1B4 = 1; } } @@ -3412,21 +3437,21 @@ void gunTickHandState(enum GUNHAND hand, s32 triggerOn) weapon_stats = get_ptr_item_statistics(var_s1); #if defined(VERSION_US) - sp1A4 = weapon_stats->b44[0]; - sp1A0 = weapon_stats->b44[1]; + sp1A4 = WS_B44(weapon_stats, 0); + sp1A0 = WS_B44(weapon_stats, 1); #endif #if defined(VERSION_JP) - sp1A4 = weapon_stats->b44[0]; - sp1A0 = weapon_stats->b44[1]; - stat_2 = weapon_stats->b44[2]; - stat_3 = weapon_stats->b44[3]; + sp1A4 = WS_B44(weapon_stats, 0); + sp1A0 = WS_B44(weapon_stats, 1); + stat_2 = WS_B44(weapon_stats, 2); + stat_3 = WS_B44(weapon_stats, 3); stat_4 = weapon_stats->SingleFiringRate; #endif #if defined(VERSION_EU) - sp1A4 = ((s32)weapon_stats->b44[0] * 50) / 60; - sp1A0 = ((s32)weapon_stats->b44[1] * 50) / 60; - stat_2 = ((s32)weapon_stats->b44[2] * 50) / 60; - stat_3 = ((s32)weapon_stats->b44[3] * 50) / 60; + sp1A4 = ((s32)WS_B44(weapon_stats, 0) * 50) / 60; + sp1A0 = ((s32)WS_B44(weapon_stats, 1) * 50) / 60; + stat_2 = ((s32)WS_B44(weapon_stats, 2) * 50) / 60; + stat_3 = ((s32)WS_B44(weapon_stats, 3) * 50) / 60; stat_4 = weapon_stats->SingleFiringRate * 50 / 60; #endif @@ -3456,19 +3481,19 @@ void gunTickHandState(enum GUNHAND hand, s32 triggerOn) && (handptr->weapon_hold_time != 0) #if defined(VERSION_US) - && (handptr->field_890 >= weapon_stats->b44[2]) + && (handptr->field_890 >= WS_B44(weapon_stats, 2)) #endif #if defined(VERSION_JP) || defined(VERSION_EU) && (handptr->field_890 >= stat_2) #endif - && (weapon_stats->b44[3] >= 0) + && (WS_B44(weapon_stats, 3) >= 0) #if defined(VERSION_US) // HACK: registers are swapped // addu a1, v1, a0 - && (handptr->field_890 + weapon_stats->b44[3] < (0,sp1A4) + sp1A0) - && (handptr->field_890 + weapon_stats->b44[3] >= (s32)weapon_stats->b44[2]) + && (handptr->field_890 + WS_B44(weapon_stats, 3) < (0,sp1A4) + sp1A0) + && (handptr->field_890 + WS_B44(weapon_stats, 3) >= (s32)WS_B44(weapon_stats, 2)) #endif #if defined(VERSION_JP) || defined(VERSION_EU) && (handptr->field_890 + stat_3 < sp1A4 + sp1A0) @@ -3480,7 +3505,7 @@ void gunTickHandState(enum GUNHAND hand, s32 triggerOn) handptr->field_890 = 0; handptr->field_88C = 0; #if defined(VERSION_US) - handptr->field_8A8 = weapon_stats->b44[3]; + handptr->field_8A8 = WS_B44(weapon_stats, 3); #endif #if defined(VERSION_JP) || defined(VERSION_EU) handptr->field_8A8 = stat_3; diff --git a/src/game/image.h b/src/game/image.h index 3e1dc685..30e0a8ee 100644 --- a/src/game/image.h +++ b/src/game/image.h @@ -61,10 +61,11 @@ struct tex { * u32 makes GCC pack the struct into exactly two words on both targets, and * putting dataoffset first satisfies the raw word read. The IMAGE() macro * initializer order is adjusted to match under PORT (see image.c). - * NOTE: chrprop.c/propobj.c also read `((u8*)&entry)[0] & 0xf` as a hit - * type; with this layout that yields the low nibble of dataoffset, which is - * what the N64 binary does too (the .hitSound bitfield is used by the other - * hit-sound paths in gunfire.c). */ + * NOTE (D434): chrprop.c/propobj.c read `((u8*)&entry)[0] & 0xf` as the hit + * type. On the N64 (big-endian) byte 0 is the MSB of word 0, i.e. the hit + * type; with this LE layout byte 0 is the LOW byte of dataoffset, so that raw + * read is wrong on PC (out of range of g_HitTypeSounds[13] for nibbles >= 13). + * Those sites now use the .hitTexture bitfield under PORT (as chr.c does). */ struct image_entry { u32 dataoffset : 24; // runtime: cumulative start offset within the images segment (image_entries_load converts sizes -> offsets) diff --git a/src/game/lightfixture.c b/src/game/lightfixture.c index b75779e1..59d92cbd 100644 --- a/src/game/lightfixture.c +++ b/src/game/lightfixture.c @@ -141,6 +141,39 @@ void lightFixtureEntryEnd(Gfx *DL) } +#ifdef PORT +/* D431 (#119): tex.c calls this right after lightFixtureEntryBegin() with the + * fixture texture's image id. */ +void lightFixtureSetTexnum(s32 texnum) +{ + if (current_light_fixture_slot != LIGHTFIXTURE_TABLE_MAX) + { + light_fixture_table[current_light_fixture_slot].RESERVED = (s16) texnum; + } +} + +/* Returns the light texture's image id when `gfx` lies in a fixture entry of + * `room_index`, else -1. Same room/range test lightFixtureBreak uses. */ +s32 lightFixtureTexnumForGfx(Gfx *gfx, s32 room_index) +{ + s32 i; + + for (i = 0; i < LIGHTFIXTURE_TABLE_MAX; i++) + { + /* room_index 0 marks a FREE slot whose DL range may still dangle into a + * freed room (see clear_light_fixturetable_in_room); never match it. */ + if (light_fixture_table[i].room_index == 0) { continue; } + if (room_index != light_fixture_table[i].room_index) { continue; } + if (gfx < light_fixture_table[i].ptr_start_pertinent_DL) { continue; } + if (gfx >= light_fixture_table[i].ptr_end_pertinent_DL) { continue; } + return light_fixture_table[i].RESERVED; + } + + return -1; +} +#endif + + bool check_if_imageID_is_light(s32 imageID) { if ((imageID == IMAGE_WALL_LAMP) || @@ -195,6 +228,49 @@ Vtx *lightFindVertexBaseForTri(Gfx *gfx, s32 room_index) void extract_vertex_indices_from_triangle(Gfx* gfx, u32 tri_type, s32* idx1, s32* idx2, s32* idx3) { +#ifdef PORT + /* D430 (#119): this is an unported N64 GBI parser -- raw ((u8*)gfx)[k] / + * ((u32*)gfx)[i] / gfx->tri.tri.v[] indexing assumes the 8-byte N64 Gfx, but + * the room DL is the 16-byte PC Gfx (D85 bgWidenRoomGdl). Same class + fix as + * D154 (bg.c bgTestBulletHitBackground): recover the two N64 32-bit words from + * the low dwords of words.w0/.w1. On PC every read returned garbage (all-zero + * indices), so a shot fixture darkened vertex 0 of its batch instead of its own + * vertices. Semantics otherwise unchanged (no vtxoff, as on the N64). + * tri_type 0 = G_TRI1; 1..4 = the four triangles of a G_TRI4. */ + { + const u32 gw0 = (u32) gfx->words.w0; + const u32 gw1 = (u32) gfx->words.w1; + switch (tri_type) + { + case 0: + *idx1 = (s32)((gw1 >> 16) & 0xff) / 10; + *idx2 = (s32)((gw1 >> 8) & 0xff) / 10; + *idx3 = (s32)( gw1 & 0xff) / 10; + break; + case 1: + *idx1 = gw1 & 0xf; + *idx2 = (gw1 >> 4) & 0xf; + *idx3 = gw0 & 0xf; + break; + case 2: + *idx1 = (gw1 >> 8) & 0xf; + *idx2 = (gw1 >> 12) & 0xf; + *idx3 = (gw0 >> 4) & 0xf; + break; + case 3: + *idx1 = (gw1 >> 16) & 0xf; + *idx2 = (gw1 >> 20) & 0xf; + *idx3 = (gw0 >> 8) & 0xf; + break; + case 4: + *idx1 = (gw1 >> 24) & 0xf; + *idx2 = (gw1 >> 28) & 0xf; + *idx3 = (gw0 >> 12) & 0xf; + break; + } + return; + } +#endif switch (tri_type) { case 0: diff --git a/src/game/lightfixture.h b/src/game/lightfixture.h index a5884e6e..602752fd 100644 --- a/src/game/lightfixture.h +++ b/src/game/lightfixture.h @@ -19,5 +19,12 @@ struct s_darkened_light { void lightFixtureEntryEnd(Gfx *param_1); bool check_if_imageID_is_light(s32 imageID); void lightFixtureEntryBegin(Gfx *DL); +#ifdef PORT +/* D431 (#119): image id of a fixture's texture (stored in the otherwise-unused + * RESERVED slot) and the lookup the bullet-hit code uses in place of the KSEG0 + * texnum recovery that is invalid for the port's converted room GDLs. */ +void lightFixtureSetTexnum(s32 texnum); +s32 lightFixtureTexnumForGfx(Gfx *gfx, s32 room_index); +#endif #endif diff --git a/src/game/propobj.c b/src/game/propobj.c index 1c38e18b..2cc589e4 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -9682,7 +9682,12 @@ void objHit(ShotData *shotdata, BulletHit *hit) } else { +#ifdef PORT + /* D434: raw byte 0 of the PORT image_entry is dataoffset's low byte, not the hit type. */ + impact_sounds = g_HitTypeSounds[g_Textures[texturenum].hitTexture]; +#else impact_sounds = g_HitTypeSounds[((u8 *)&g_Textures[texturenum])[0] & 0x0f]; +#endif } thing2_index = randomGetNext() % impact_sounds->thing2_len; diff --git a/src/game/tex.c b/src/game/tex.c index eefc6857..5ae9f858 100644 --- a/src/game/tex.c +++ b/src/game/tex.c @@ -997,6 +997,9 @@ s32 texLoadFromGdl(Gfx *src, s32 srcsize, Gfx *dst, void *texpool) if (check_if_imageID_is_light(texnum)) { lightFixtureEntryBegin(out); +#ifdef PORT + lightFixtureSetTexnum(texnum); /* D431 */ +#endif lightPending = TRUE; } } diff --git a/tools_pc/gen_findings_index.py b/tools_pc/gen_findings_index.py index 6df61941..445f7d18 100644 --- a/tools_pc/gen_findings_index.py +++ b/tools_pc/gen_findings_index.py @@ -54,7 +54,8 @@ def one_liner(cell: str, limit: int = 160) -> str: LEAD_RE = re.compile( r"^\**\s*(OPEN|RESOLVED|FIXED|PROPOSED|PARTIAL|LANDED|CLAMP|DISPROVEN" - r"|ROOT-CAUSED|GUARDED|ANALYZED|DIAGNOSTIC SHIPPED|NOT A BUG|CLOSED)", + r"|ROOT-CAUSED|GUARDED|ANALYZED|DIAGNOSTIC SHIPPED|NOT A BUG|CLOSED" + r"|DEFERRED|SUPERSEDED)", re.I, ) @@ -74,6 +75,7 @@ def bucket(status_cell: str) -> str: "ANALYZED": "PARTIAL", "DIAGNOSTIC SHIPPED": "PARTIAL", "NOT A BUG": "RESOLVED", + "SUPERSEDED": "CLOSED", }.get(tok, tok) for name, rx in STATUS_BUCKETS: if rx.search(status_cell):