GoldenEye 007 PC Port
GoldenEye 007 PC Port brings GoldenEye 007 to PC.
- Type: PC port
- Game: GoldenEye 007
- Runs on Linux and Windows
- By jkdansereau
- Latest release v0.3.0, 2026-09-20
- Source: https://github.com/jkdansereau/goldeneye-pc-port
- Website: https://jkdansereau.github.io/goldeneye-pc-port/
README
GoldenEye 007 PC Port
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.
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
| Platform | Bundle | Notes |
|---|---|---|
| Windows (x86_64) | win64.zip | Engine + runtime DLLs + the one-time asset tool. |
| Linux (x86_64) / Steam Deck | linux tarball | SDL2 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:
- Download the Windows or Linux bundle from Releases and unpack it.
- Make a
data/folder next to the executable and drop the ROM in asge007.ntsc-final.z64. - 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 unlockedis experimental: back updata/ge007.eepbefore 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.iniand the F10 in-game overlay expose resolution, frame cap, MSAA, texture filtering, FOV/draw distance, mouse feel, key rebinding, crosshair and vibration; launch with-freshfor a clean-slate run. - Read it:
docs/internals.mdmaps the architecture and the software RSP;docs/porting-notes.mdis the catalogue of N64→PC bug classes hit along the way. Game logic insrc/is unmodified decompilation; every hardware surface lives in the MIT-licensedport/layer. - Mod it: the port layer, build system and
tools_pc/are yours to extend (see License);CONTRIBUTING.mdhas the ground rules for getting changes in, anddocs/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 project | The other well-known "GoldenEye on PC" recompilation projects (and their Steam Deck builds) | |
|---|---|---|
| What it ports | The original Nintendo 64 game (1997) | The Xbox 360 XBLA HD remaster (built ~2007, never released) |
| How | Decompilation-based source port: human-reconstructed C, compiled for the host; game logic runs as written | Static binary recompilation: the shipped machine code is auto-translated to C; no source-level understanding |
| Lineage | GoldenEye 007 decompilation + Perfect Dark PC port engine family | Xbox 360 "…Recompiled" static-recompilation family |
| Renderer | Software RSP → OpenGL | Hardware (Vulkan) |
| Status | v0.4.0 public release; full campaign playable at 60 fps (see Status) | Playable full game |
| Why it exists | To run the original N64 game from source, and as a case study in AI-agent collaboration on a hard low-level codebase | To 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:
| Region | ROMID | ROM filename (in data/) | SHA-1 |
|---|---|---|---|
| NTSC-U (US) | ntsc-final | ge007.ntsc-final.z64 | abe01e4aeb033b6c0836819f549c791b26cfde83 |
| PAL (EU) | pal-final | ge007.pal-final.z64 | 167c3c433dec1f1eb921736f7d53fac8cb45ee31 |
| NTSC-J (JP) | jpn-final | ge007.jpn-final.z64 | 2a5dade32f7fad6c73c659d2026994632c1b3174 |
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
- Create a
data/directory in the repo root. - Put your ROM in it, named as in the table above
(e.g.
data/ge007.ntsc-final.z64). - 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
| Action | Keyboard / mouse | Controller |
|---|---|---|
| Move / strafe | W A S D / arrows | Left stick (or D-pad) |
| Aim / look | Mouse | Right stick |
| Fire | Left mouse | Right trigger |
| Aim mode | Right mouse / LShift | Left trigger / LB |
| Use / interact | E | A |
| Reload | R | X |
| Crouch | LCtrl | Left or right stick click |
| Cycle owned gadgets | Watch inventory | B |
| Next weapon | Mouse wheel down / Q | Y |
| Previous weapon | Mouse wheel up | — |
| Start | Enter / Tab | Start |
| Options overlay | F10 | Select (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