Files
goldeneye-pc-port/.github/release-notes.md
T
James Dansereau 8e58376d46 port: front-end PC Options pagination for long sections (D406)
INPUT (17 visible rows) outgrew the fixed 440x330 paper: the 18px pitch
was sized before the D356 profile row, so a full page's last row landed
at y=335 (off the bottom of the screen) and rows past the silent 14-row
cap (Crouch mode, Reset to defaults, Bindings...) were unreachable from
the front screen. Sections now page at 13 rows (the largest that fits);
the vertical stepper crosses page boundaries in both directions and the
title carries a (p/N) marker. F10 overlay untouched (it scrolls its own
window). Headless verification (SkipIntro boot + scripted D-pad stepping
+ GE_FRONTNAVLOG): page 1 -> page 2 down and back up, all 17 rows
reachable. GE_FRONTOPTIONS_AUTO test hook added (diagnostic-only, same
convention as GE_FRONTOPTIONS_SECTION). Findings D406 + index; release
notes: options section list corrected to the shipped Input/Gameplay/HUD/
Graphics/Audio/Display and the D406 line added.
2026-09-28 02:09:03 -04:00

15 KiB
Raw Blame History

GoldenEye 007 PC Port — v0.4.0

~12 s gameplay montage from live v0.3.0 play sessions (no audio track)

Platforms: Windows x86-64 and Linux x86-64 (including Steam Deck). Region: NTSC-U (US) only — see Things to know.

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 end (all 20 missions, Agent difficulty) on Windows and on Steam Deck with a physical controller. This is a pre-1.0 release: the known issues below are real, and some areas (multiplayer, PAL/JP, HD assets) are still ahead of us.


New features

Native widescreen (on by default)

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 stretched frame. (D334/D335)

A true, stable 60 fps

v0.3.0 could settle at 30 fps game-wide on some setups. The cause was a pointer-width bug in the game's frame scheduler: a "present every frame" flag was read back at a hardcoded byte offset that the 32→64-bit transition silently moved, so the render path ran on the audio client's every-other- frame cadence. Fixed at the root; the game now holds a rock-stable 60 fps (measured with the in-game FPS readout) on both platforms. (D248)

A complete aim system for mouse and controller

  • Aim style — N64 (default): the crosshair deflects and the camera follows once it reaches the screen edge. Centred (PC): the crosshair is fixed at screen center and your mouse — or your right stick — moves the camera directly. In v0.3.0 the centred mode only worked with a mouse; it now works with a controller too, using the N64 original's own stick-response curve so full stick matches the original's top turn rate. (D332/D333/D337/D404)
  • Aim range (shown while Centred is selected) — PC (default, full-screen feel) or N64 (the original 65% stick limits). (D338)
  • Reticule jitter in aim mode is gone — mouse aim now runs on the Perfect Dark PC port's aim model. (D332)
  • Per-device sensitivity: Mouse horizontal/vertical sensitivity, and for controllers X axis / Y axis look sensitivity (controller) plus Look smoothing (controller).

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 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, pad 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 with a (1/2) marker in the title, so every row stays on screen and stays reachable. (D343/D406)
  • Watch-only settings — Auto-aim, Look ahead and the rest — are now editable from the PC options and persist correctly (this closes the "auto-aim won't stay on" report, issue #103). (D330/D350/D352/D354)
  • HUD scale (75–150%, default 100%): scales the ammo counter, pickup text and subtitle bars for smaller or larger displays. (D226)

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)

In-game key rebinding + new default layout

A two-group key editor (Movement, Actions, each with its own Reset to defaults) lives in both options screens. The new default Actions layout is the GEPD-style preset (e.g. Action/next-weapon on the keys you'd expect from a modern layout); existing INI bindings are honored and older ones migrate automatically. (D371/D374/D383/D385)

Controller improvements

  • 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)
  • 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 included), scaled by a global Vibration slider (default 50%). (D401)
  • The F10 overlay is fully gamepad-driven. (D347/D395/D396)

All unlocked ships as a documented EXPERIMENTAL feature

F10 → Gameplay → All unlocked (EXPERIMENTAL) opens every mission, 007 mode and the full cheat menu. On a fresh install it now yields the game's own fresh-slot layout instead of corrupting state (D281) — but enabling it can still bake synthetic cheat/completion data into your save that switching it off does not undo: complete a level normally first, and back up data/ge007.eep before enabling it. (D387)

Steam Deck / Linux

The first clean SteamOS/glibc build, plus a first-launch preset for decks without a config (native 1280×800, 2× MSAA, vsync, 250% draw/LOD distances). (D402/D283)


Bug fixes

Fidelity (verified against the N64 original / era-correct references)

  • Water on the IsWater levels (Dam, Frigate, Surface 2, …) matches the original: the moving seam between two patterns and the pattern "resetting" as you moved are gone. (D245)
  • The particle "rainbow" effect (intermittently recoloured sparks and explosion residue) no longer occurs. (D252)
  • Frigate: "every polygon breaks except the gun" after turning — and the rare "Bond briefly out of place" quirk — were the same never-written fields read by the head-bob animation; both are fixed. (D336/D311)
  • Surface 1/2: the tree backdrop that rendered as a solid wall of texture now renders as proper camera-facing tree cards. (D236)
  • Ejected shell casings render again. (D331)
  • The intro gun-barrel blood drip draws correctly. (D341)
  • The extra erroneous long muzzle flash on some guns is gone. (D303)
  • Occasional z-fighting fixed; security-camera props no longer face backwards; the front-end Nintendo logo and copyright page render correctly. (D308/D307/D403)
  • The train-intro soldier pose is correct. (D392)
  • File-select background / gun-barrel comb rendering fixed. (D397)
  • Stale-texture artifacts after level transitions fixed. (D235)
  • Distant-geometry dropout on the biggest open levels (Streets, Egyptian) substantially improved at default settings. (D249)
  • The Facility execution-scene watchdog from v0.3.0 stays enabled as a safeguard; the animation-pinning that motivated it is root-caused (a tick granularity divergence) and fixed, so the scene plays out as authored. (D329/D318)

Front end & UI

  • Randomly flickering F10 menu items are gone. (D314)
  • The watch's controller-page graphic renders again. (D290)
  • File-select folders and Bond photos no longer vanish after backing out of a file. (D342)
  • File-select bottom row (SELECT FILE / Copy / Erase / PC Options) aligned. (D398–D400)

Audio

  • Gunshot SFX cadence matches the N64 original's rate, and the intermittent silence of the PP7/AK47 under sustained fire near a looping sound is gone. (D240/D241)
  • The silenced PPK "slap" and the broader real-time mixer corruption behind it are fixed. (D202)
  • Windows audio now prefers the DirectSound backend over WASAPI (lower, more robust latency). (D322)
  • In-stage music re-synchronizes correctly at stage transitions and level entry. (D355)
  • Long-session audio degradation (issue #87): pool hardening shipped, plus an optional GE_D322=1 telemetry probe if it ever recurs.

Stability & renderer

  • Orderly game exit: quitting no longer lands inside the graphics driver (a class of Windows driver bugchecks seen during testing). (D344)
  • A non-self-recovering Windows freeze after the window sat idle and lost focus is fixed (mouse-mode changes now applied on the window thread). (D287)
  • MSAA above your driver's maximum no longer black-screens (the request is clamped to GL_MAX_SAMPLES), and two framebuffer-state bugs in the render/resolve paths were fixed — community contribution, PR #106, security-reviewed. (D405)
  • Port-wide code audit: missing returns in front-end menus, missing prototypes, undefined-behaviour shifts.

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.

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
Deadzone (left/right stick) Input 70%
Trigger threshold Input 23%
Vibration Input 50%
Crouch mode Input Hold
Bindings… (Movement / Actions editors) Input GEPD-style preset
Auto-aim / Look ahead Gameplay Off (watch-backed)
Skip intro / No hit flash Gameplay Off
All unlocked (EXPERIMENTAL) Gameplay Off
HUD scale HUD 100% (75–150%)
Show crosshair / Crosshair colour / Crosshair size / Crosshair style HUD N64-intact (size 100%)

Things to know

  • 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. (D258)
  • The default Actions key layout is new (GEPD-style). If you preferred the v0.3.0 defaults, rebind them in Input → Bindings… or reset the group. Existing INI bindings are auto-migrated and still honored.
  • Back up data/ge007.eep before using All unlocked (see above).
  • Steam Deck: the first launch in Game Mode applies the Deck preset only if no ge007.ini exists yet; F10 changes always win afterwards.

Known issues

  • 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). (D335b)
  • The front-end Rareware logo shows a subtle texture-filtering artifact (the Nintendo logo and legal page are clean). Cosmetic only. (D75)
  • All unlocked is experimental (see above); the fresh-install corruption case is fixed, but saves made while it is on are not guaranteed recoverable by switching it off. (D387)

Roadmap since v0.3.0 (research, not yet features)

  • ROM-level mod support investigated and found viable (the game's file table lives in the ROM); HD texture packs and the drop-in-ROM flow are tracked post-1.0. (D325–D328)
  • A measured CPU budget on low-end hardware (issue #92) reshaped the performance investigation toward the GPU. (D339)
  • Controller options wave 2 (presets, pad reassignment UI) and PAL/JP support are planned post-v0.4.0.

Downloads

File Platform
goldeneye-pc-port-0.4.0-win64.zip Windows x86-64
goldeneye-pc-port-0.4.0-linux-x86_64.tar.gz Linux x86-64 (incl. Steam Deck)

Each contains the engine executable, a README, license texts, and the prepare-assets tool. No ROM, no game assets. The Windows bundle carries its runtime DLLs; the Linux bundle carries SDL2, so on both platforms nothing needs to be installed first.

Running it

You supply your own GoldenEye 007 N64 ROM (.z64, big-endian) that you legally own (NTSC-U only, as noted above). No Python, no toolchain, nothing to install.

  1. Unpack the archive.
  2. Make a data/ folder next to the executable and put the ROM in it, named ge007.ntsc-final.z64.
  3. Run the executable from that folder. The first run takes a few extra seconds: it detects your ROM, generates the two derived asset folders (data/pcmodels-ntsc-final/, data/pccg-ntsc-final/) once, and saves them for every future run. (The generator is prepare-assets/ge007-convert inside the bundle; you can also run it manually; it prints what it's doing.)

Steam Deck: sideload the unpacked folder (SFTP, USB or a file manager), do steps 2–3, then add the executable to Games → Add Game as a non-Steam game. The first launch in Game Mode picks up the Deck preset (native 1280×800, 2× MSAA, vsync) automatically if no config exists yet.

In-game settings on the Deck: the options overlay is fully gamepad-driven: it opens with Select, the D-pad or left stick (up/down) moves between options, A steps the selected option forward, B steps it back, and Start (or Select again) closes. No keyboard needed.

Full steps are in the bundled README.md.

Verify the download

sha256sum -c goldeneye-pc-port-0.4.0-win64.zip.sha256
sha256sum -c goldeneye-pc-port-0.4.0-linux-x86_64.tar.gz.sha256

Source & docs

https://github.com/jkdansereau/goldeneye-pc-port, built on the GoldenEye 007 decompilation, architecture after the Perfect Dark PC port. Non-commercial fan preservation/research project; not affiliated with any rights holder. AI disclosure: built through agentic AI coding (Claude Code + a local open-weight model), directed by one person in their spare time — as much a study of what agentic development gets wrong on a game-sized codebase as it is a port. See the README's Background section for the full account.