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 @@&~qanK-4^`
z{OW(;5cjMq$AHZK8@I!gS~ZZxYj|rAXG_D{Jk_dE9NUag1mG|Un8DJs*ij>n%LF7z
zjE|zXl@YTzxkmUX|3%@eCqGcr3M{)x$+*19_ZuwX<293qZ+dQAo_neM4n_ICUu7jt
z1$SX(Wv`d`rLm5KE%6~``H%tF)Ddo6o{@hc+53lx?m|g|_j)e9D}AEKq8yIoj*=OY
z;}!yt;BaDmRCZJ;R%#wA>zM26h~*iq?A|imFGAd-CZCz>HMv3M+ZP_azTiynlWBiX
zFNlsMyRv8cHC4H(J=kW$F(O&!Ibt)Q1Z(mPvD{Ju#>lL{bI9ZyQGUt$gkCViG0uPN
znlVbSHu5az{#Blh^L$uYHx3ta5Vcd2122EhF}7?U1Dbin=tJhk*_8*F
Sz+#3oEQ8Y&2s_3qLy4885XomQG@fi*}ZzHJvW
+szCcYB=w4tt_=J?tIol
zUW}F9i!qMR11@(Sx4ie9BNZ9G)R6tT_Z|4$_JJAR-E&{ZULaiu&KNN1Vyt0h7oM96
zCR{vk&cdI37Or5S9_z_Y>ghVM9^1lCBXs?L)IR-{^YQ)K^UdZ|)KtlC8lwcOUoDKc
z=akGsZeG{IyAB*_LRwzT4{ZN@vQd3o_JUgdj2;ZVAjC5r8ozG`J4CRHnz$H3qW@`*
zX#M^y>e$ww-SLhg-wR@WS!+p2?5QCSb~0v4G6%U;!$LWWb@Hf%#v~@b4jvW&F$(H`
zpM{ub6L1ldu92p$&suw}7u#L{HllmFb#qxHRTqItC2vQ0>ibRC2xEKTkLBzkw*8E!
z8)f6Yr#oJ&ggP0~ttqM;NmcsxQu2y6W80{8*TUH`uFFy1g6r$YwipcL*MQitby`zin?bXKyjiNeRk>L6dbMK&;~RcFE@cRGakDfXJ*
NW8AD;
z5vAE%AX)`wbHPH%>_sx~mCO>2oCC>Re?B+v1!dlx95hb7V4l}{pGIPP0q=5%amqgE
zrH$qn)dQ|Jva^igj6c)&w$pyb@N-kUF%G{8!7l)^oWaGMOT&l4eE%G
z0s;3so!9t&F_lE$8-k_c#`4|3b}Vf?QmVpLTYVOG-GOmB6=_TFR%c`Gj}FvzVla*b
zAAQU8Zn(F?cBIX=?VC*U0d*-I=jI3-f5y#xn4F28lydpH^_g;+vHcFCIr)h4#Ob+J
z?d3~|e_vg7(`VIMuh