GoldenEye 007 PC Port

GoldenEye 007 PC Port brings GoldenEye 007 to PC.

README

GoldenEye 007 PC Port

CI license

GoldenEye 007 (Nintendo 64, 1997) on the PC — decompiled, ported, and playable at 60 fps.

Download · News · Status · Roadmap · Building · Docs · Legal

A native PC port of GoldenEye 007 (Rare, 1997, Nintendo 64), compiled from the GoldenEye 007 decompilation: the original N64 game running from reconstructed source, not the Xbox 360 remaster. The N64's graphics coprocessor (RSP) is emulated in software; every other hardware surface (video, audio, input, timers, save storage) is shimmed in a dedicated port/ layer, following the architecture of the Perfect Dark PC port, the same Rare "Indy" engine family, one hardware generation apart.

v0.4.0 (released 2026-09-28) is out for Windows and Linux (including Steam Deck, where the Linux bundle sideloads as-is). It is the most complete release to date: the full campaign runs at a steady 60 fps with the known issues now few and mostly cosmetic (Status). Free to download, build on and modify (you bring the ROM).

This is a pre-1.0 release, not a finished product. v1.0 is the target for a polished, feature-complete build; until then, expect missing features and the occasional breaking change between versions. See Status for what works today and Roadmap for where this is headed.

AI disclosure: development here was agentic - Claude Pro plus a local open-weight model on a single RTX 5090, as of August–September 2026. This project is as much a study of that process as it is a port: whether current LLMs can carry a codebase like this, and what actually goes wrong along the way. Judge the result for yourself. I'm one person doing this in my spare time, not a team. See Background for the full setup, timeline, and an honest account of what worked and what didn't.

[!IMPORTANT] You must supply your own GoldenEye 007 ROM. This repository contains no Nintendo code or assets, and no ROM. Nothing here is distributable as a playable game: see Requirements and Legal.

~24 s gameplay montage from live play sessions
All in-engine, running in the port — a ~24 s gameplay montage from live v0.4.0 play sessions, opening on the Runway tank · 12 level stills in the project index


News

  • 2026-09-28 — v0.4.0: native widescreen, a complete aim system for mouse and controller, in-game key rebinding, crosshair customization, rumble-pak haptics, a rebuilt options overlay, and a broad fidelity-fix pass (water, particles, billboard trees, front-end logo, gunshot SFX, a true stable 60 fps). Release notes · downloads.
  • 2026-09-20 — v0.3.0: the first release with the complete campaign playable end to end at 60 fps on Windows, Linux, and Steam Deck. Release notes.
  • 2026-09-04 → 2026-09-16 — v0.1.0 – v0.2.2: the alpha and beta cycle — build chain, software RSP, first rendered frames, front end, and per-level stabilization across the campaign.

Download

PlatformBundleNotes
Windows (x86_64)win64.zipEngine + runtime DLLs + the one-time asset tool.
Linux (x86_64) / Steam Decklinux tarballSDL2 is bundled, so it runs as-is on any distro, and sideloads onto a Deck with nothing installed.

Both bundles contain no ROM and no game assets: you supply your own (see Requirements), which keeps the release legal to distribute. Earlier builds: v0.3.0, v0.2.2, v0.2.1, v0.2.0, and v0.1.0 alpha, same page. You can also build it yourself; see Building.

Quick start

You need a GoldenEye 007 N64 ROM (.z64, big-endian). This release supports the NTSC-U (US) version; PAL and JP are on the roadmap (issue #85). No ROM or game asset is included or distributed. Then:

  1. Download the Windows or Linux bundle from Releases and unpack it.
  2. Make a data/ folder next to the executable and drop the ROM in as ge007.ntsc-final.z64.
  3. Launch the executable from that folder. The first run takes a few extra seconds: it detects the ROM and generates the derived asset folders once (no Python or other tooling needed).

Read the Status section first: the small number of known issues in this release are listed plainly there.


Status

v0.4.0 - fully playable, with a small set of known caveats. The full single-player campaign is completable end to end (all 20 missions, Agent difficulty, playtested), at a steady 60 fps; all 20 solo missions — plus the end-of-campaign credits sequence — load, render and run crash-free, verified on Windows, Linux and real Steam Deck hardware. The most common defect classes from earlier releases — particle colour drift, water seams, z-fighting, billboard trees, muzzle flashes, the front-end Nintendo logo, gunshot SFX — are fixed in this version; what remains is a short list, below. Feedback is very welcome.

What a release actually installs (no networking, no telemetry, no ROM or game assets shipped) and how faithfully the port tracks the original N64 game's logic: Security & fidelity status.

Working: boot sequence and front end (menu → mission select → briefing → start), front-end menu navigation on the left stick to match the F10 overlay (D282); all 20 solo missions load, render and are crash-free (full campaign playtested end to end at Agent difficulty, including the ending sequence); steady 60 fps (software RSP off the presentation critical path); full audio: in-level music and SFX; keyboard + mouse (click-to-lock, an aim style of your choice — N64 or centred FPS-style — with per-device sensitivity) and a modern dual-stick controller layout (use/reload/weapon-cycle on A/X/Y, rumble-pak vibration on supported pads); native widescreen at any aspect ratio (undistorted world, HUD anchored to the screen edges, 4:3 menus pillarboxed); in-game key rebinding (keyboard/mouse) with a GEPD-style default layout; crosshair customization (opt-in); Bond is fixed in cutscenes (no more floating or spin-glitching) and his third-person model positioning generally is right the large majority of the time now, at most a small drift when off; file-backed saves; faithful N64 progression by default (F10 → All unlocked opens every level, 007 mode and the full cheat menu); F10 in-game options overlay (video, input, gameplay, HUD, graphics, audio; frame cap, MSAA, filtering, FOV, sensitivity, key rebinding, crosshair, vibration); Windows and Linux, including Steam Deck.

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; 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.
  • 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 and the finding log in docs/dev/findings.md.

Steam Deck

The Linux bundle is the Deck build. SFTP it over from your PC, or download it straight from the releases page on the Deck itself: extract, drop your ROM in data/, launch it once (the first run generates the derived assets), and add the executable as a non-Steam game. SDL2 is bundled, so no dependencies need installing. On SteamOS the first launch seeds ge007.ini with Deck-friendly defaults: native 1280×800 fullscreen, VSync, 2× MSAA, and 250% draw/LOD distance (the N64-authored fade distances read short on the close-up 7" panel); everything is changeable in the options overlay and persists afterwards. Do that first launch in Game Mode, not Desktop Mode — an ini created by an earlier Desktop Mode launch (e.g. while testing before adding it as a Steam shortcut) permanently skips the Deck preset, since any existing ini always wins over it (D283). If your resolution isn't 1280×800 on first Game Mode boot, just set it manually: F10 → Resolution. The renderer is CPU-bound (software RSP); expect original N64-era performance at 60 fps rather than more. This release was playtested on real Deck hardware; the v0.1.0-era Facility crash (D203) did not recur: its root cause was identified and fixed (D253), and a separate intermittent SIGSEGV in heavy firefights/terminal destruction (D255) and an audio-thread crash (D305) are both fixed and live-verified on real hardware as of this release.

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. Toggles flip, resolution / MSAA / filtering cycle, sliders step in increments. With a keyboard attached the same 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:

  • Working through the known issues above and the fuller list in docs/dev/findings.md.
  • PAL and JP ROM support (issue #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.

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.


Beyond playing

  • Tweak it: ge007.ini and the F10 in-game overlay expose resolution, frame cap, MSAA, texture filtering, FOV/draw distance, mouse feel, key rebinding, crosshair and vibration; launch with -fresh for a clean-slate run.
  • Read it: docs/internals.md maps the architecture and the software RSP; docs/porting-notes.md is the catalogue of N64→PC bug classes hit along the way. Game logic in src/ is unmodified decompilation; every hardware surface lives in the MIT-licensed port/ layer.
  • Mod it: the port layer, build system and tools_pc/ are yours to extend (see License); CONTRIBUTING.md has the ground rules for getting changes in, and docs/dev/ is the raw engineering record behind every fix.

Background

The port was built by two coding agents, a local open-weight model (unsloth/Qwen3.8-27B-GGUF on one RTX 5090, via the pi agent) doing the groundwork (build, boot chain, software-RSP integration, asset pipeline, first frames), and Claude Code (Sonnet 5, Opus 5 for the hardest bugs) joining for the collaborative phase (the 21-level sweep, the ABI finding catalog, SDL input, front end), handing work back and forth through shared written notes, directed by one person part-time. In short: 43 days (16 Aug – 28 Sep), 1005 commits, 286 findings root-caused and logged (D1–D408).

The full write-up (timeline, handoff mechanism, effort breakdown, an honest "what worked / what didn't"): docs/dev/agentic-development.md. The workflow itself: docs/dev-process.md. To cite the project or its findings: CITATION.cff (GitHub's "Cite this repository" menu).


How this differs from the other GoldenEye PC projects

This is a native port of the original 1997 Nintendo 64 game, built from its actual reconstructed source code, the same lineage as the Perfect Dark PC port. The other well-known "GoldenEye on PC" projects are something different: they machine-translate the shipped binary of the unreleased Xbox 360 XBLA remaster, a different game on a different codebase with no shared code with this one.

This projectThe other well-known "GoldenEye on PC" recompilation projects (and their Steam Deck builds)
What it portsThe original Nintendo 64 game (1997)The Xbox 360 XBLA HD remaster (built ~2007, never released)
HowDecompilation-based source port: human-reconstructed C, compiled for the host; game logic runs as writtenStatic binary recompilation: the shipped machine code is auto-translated to C; no source-level understanding
LineageGoldenEye 007 decompilation + Perfect Dark PC port engine familyXbox 360 "…Recompiled" static-recompilation family
RendererSoftware RSP → OpenGLHardware (Vulkan)
Statusv0.4.0 public release; full campaign playable at 60 fps (see Status)Playable full game
Why it existsTo run the original N64 game from source, and as a case study in AI-agent collaboration on a hard low-level codebaseTo get a playable PC release of the remaster

They answer a different question: how to get the remaster onto PC by machine translation. This project answers how to get the original 1997 game onto PC, running from its reconstructed source.


Requirements

You need a GoldenEye 007 (Nintendo 64) ROM that you legally own, in big-endian (.z64) format, matching one of:

RegionROMIDROM filename (in data/)SHA-1
NTSC-U (US)ntsc-finalge007.ntsc-final.z64abe01e4aeb033b6c0836819f549c791b26cfde83
PAL (EU)pal-finalge007.pal-final.z64167c3c433dec1f1eb921736f7d53fac8cb45ee31
NTSC-J (JP)jpn-finalge007.jpn-final.z642a5dade32f7fad6c73c659d2026994632c1b3174

This release supports the US (NTSC-U) version; PAL and JP ROMs are recognised by region but not yet supported (on the roadmap, issue #85).

The port also relies on the decompilation's asset-extraction step, which pulls the level, model, texture and music data out of your ROM at build time. That step, too, requires your ROM and is part of Building.


Building

Prerequisites: CMake >= 3.16, a C/C++ toolchain, SDL2, zlib, OpenGL, Python 3, plus the decompilation's own build dependencies (an IRIX MIPS toolchain via qemu-irix, used only for the one-time asset extraction). See docs/building.md for the full walkthrough and the asset-extraction details.

Windows (MSYS2)
# in the MINGW64 shell
pacman -S mingw-w64-x86_64-toolchain mingw-w64-x86_64-SDL2 \
          mingw-w64-x86_64-zlib mingw-w64-x86_64-cmake \
          mingw-w64-x86_64-python make git

git clone https://github.com/jkdansereau/goldeneye-pc-port.git
cd goldeneye-pc-port
# 1. extract assets from your ROM (see docs/building.md)
# 2. build the port
./build-pc.sh ntsc-final         # NTSC-U; PAL/JP engine builds compile, but their asset sidecars are not yet producible (issue #85)
Linux

The Linux build is compiled on every push by CI (ubuntu-24.04); the release bundle additionally bundles SDL2 so no system packages are needed at runtime.

sudo apt install build-essential cmake python3 libsdl2-dev zlib1g-dev libgl1-mesa-dev
git clone https://github.com/jkdansereau/goldeneye-pc-port.git
cd goldeneye-pc-port
# extract assets (docs/building.md), then:
./build-pc.sh ntsc-final

The executable is written to build-pc/ge007.x86_64 (on Windows, build-pc/ge007.x86_64.exe).


Running

  1. Create a data/ directory in the repo root.
  2. Put your ROM in it, named as in the table above (e.g. data/ge007.ntsc-final.z64).
  3. Run the executable from the repo root: ./build-pc/ge007.x86_64.

Configuration is written to ge007.ini on first run; game progress lives in ge007.eep. Launch with -fresh to wipe both before starting (a clean-slate run for playtesting).

Default controls
ActionKeyboard / mouseController
Move / strafeW A S D / arrowsLeft stick (or D-pad)
Aim / lookMouseRight stick
FireLeft mouseRight trigger
Aim modeRight mouse / LShiftLeft trigger / LB
Use / interactEA
ReloadRX
CrouchLCtrlLeft or right stick click
Cycle owned gadgetsWatch inventoryB
Next weaponMouse wheel down / QY
Previous weaponMouse wheel up—
StartEnter / TabStart
Options overlayF10Select (A toggles/steps; B backs; D-pad/stick adjusts sliders; Start closes)

The default layout is the GEPD-style preset on the keyboard and the standard dual-stick scheme on controllers (left stick move, right stick look, triggers fire/aim, A use, X reload, B gadget cycle, Y weapon cycle, stick click crouch). The watch gadget cycle selects the next owned gadget in the N64 inventory. The controller layout matches Rare's Xbox 1.1 (Jinx) button roles (user-tested on a physical pad; D394), and the remaining Xbox schemes (1.2 Christmas, 1.3 Frost, 1.4 Elektra) are planned as selectable presets and not yet available. Keyboard → Bindings edits keyboard/mouse only; a controller can navigate those pages and use B to go back, but