Files
goldeneye-pc-port/docs/index.md
T
James Dansereau 452fa1025a Golden gate: Linux baselines, canonical save, gate hardening (D521-D532)
Linux reference-frame set for all 21 levels and the cross-platform golden
rule (D521); golden tooling made non-destructive (D524); the gate pins a
canonical in-tree save (D529) and the PRNG seed (D532); the capture tool's
per-level re-pin bug fixed and the Linux set re-captured under the
canonical save (D530, D531); no-arg verify.sh exits non-zero. README and
docs visual/consolidation passes; the 15 MB preview gif replaced by stills.

Refs: D521 D523 D524 D525 D526 D527 D528 D529 D530 D531 D532
2026-10-06 18:35:43 -04:00

14 KiB
Raw Blame History

title, description
title description
GoldenEye 007 PC Port A native PC port of GoldenEye 007 (Nintendo 64, 1997), built from decompiled source with a software RSP. v0.5.0 for Windows, Linux and Steam Deck.

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.

Download · News · See it running · Known issues · Documentation

Status: v0.5.0 (2026-10-05) — fully playable, with a small set of known caveats. The single-player campaign and the 2–4 player split-screen multiplayer both run at a steady 60 fps. The single-player campaign is completable end to end (all 20 missions plus the ending-credits sequence), and the 2–4 player split-screen campaign is supported on every multiplayer map; both were playtested on Windows, Linux and Steam Deck. This release adds one options menu (laid out like the Perfect Dark port's, with plain-English wording, real-unit sliders and a one-line description per option), the game's own N64 control styles as a per-seat preset, direct loading of emulator save files, a scalable HUD overlay, fullscreen and window-centring controls, and a fidelity round checked frame-by-frame against the N64 game (fog, aspect-ratio letterboxing, the Watch menu's own settings). What remains is a short list, under Known issues.

This is a pre-1.0 release, not a finished product — v1.0 is the target for a polished, feature-complete build; expect missing features and the occasional breaking change until then. See the README's Roadmap section for direction (PAL/JP ROM support, macOS and ARM builds, the remaining small accuracy differences, and post-1.0 opt-in extras).

News

  • 2026-10-05 — v0.5.0: one options menu with plain-English wording, real-unit sliders and a one-line description per option; the N64 control styles as a per-seat preset; direct emulator-save loading; a scalable HUD overlay; fullscreen and window-centring controls; and a fidelity round checked frame-by-frame against the N64 game. The reference-frame gate was re-based on both platforms (21 levels, 63 frames each). Release notes · downloads.
  • 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.

Bring your own ROM. Both bundles contain no ROM and no game assets: you supply your own GoldenEye 007 N64 ROM (the Requirements table has the region filenames and SHA-1s). This release supports the NTSC-U (US) ROM; PAL and JP are on the roadmap. Then: unpack, drop the ROM in data/, and launch; the first run generates the derived assets automatically (no Python or other tooling needed). The full steps are in the Quick start; pre-built releases are legal to distribute precisely because they're useless without a ROM you already own.

See it running

viewer — in-engine captures, 3072×1728 1 / 12
in-engine capture ‹ ›
Dam — v0.4.0 intro attract
Full gallery: 12 in-engine captures from a v0.4.0 intro-attract pass (3072×1728 widescreen, Sep 2026)

In-engine: Dam (v0.4.0 intro attract)
Dam
In-engine: Runway (v0.4.0 intro attract)
Runway
In-engine: Surface (v0.4.0 intro attract)
Surface
In-engine: Frigate (v0.4.0 intro attract)
Frigate
In-engine: Surface 2 (v0.4.0 intro attract)
Surface 2
In-engine: Statue (v0.4.0 intro attract)
Statue
In-engine: Archives (v0.4.0 intro attract)
Archives
In-engine: Cradle (v0.4.0 intro attract)
Cradle
In-engine: Aztec (v0.4.0 intro attract)
Aztec
In-engine: Control (v0.4.0 intro attract)
Control
In-engine: Streets (v0.4.0 intro attract)
Streets
In-engine: Jungle (v0.4.0 intro attract)
Jungle

More captures may land here as playtesting continues.

Play it, or take it apart

  • Try it yourself: grab a bundle above, bring your own ROM, and play the campaign. It's an early cut for exactly this: if something breaks, an issue with what you were doing is genuinely useful.
  • Read the code: the game logic in src/ is unmodified decompilation; every hardware surface (video, audio, input, save storage, and the software-RSP renderer) is shimmed in the MIT-licensed port/ layer. Internals is the map; Porting notes is the catalogue of N64→PC bug classes hit along the way, a good read even if you never touch the code.
  • Mod it: the port layer, build system and tools_pc/ helpers are MIT licensed and yours to extend: new video options, input tweaks, your own asset sidecar. CONTRIBUTING has the ground rules that keep it faithful to the original game.
  • AI disclosure: development here used AI coding agents — Claude Code plus a local open-weight model on a single RTX 5090, directed by one person in their spare time. The project is as much a study of that process as it is a port, and the write-up is written to let you judge the result for yourself; it records what happened and takes no position for or against using LLMs on a project like this. See the full write-up — the setup, timeline, handoff workflow, and an honest account of what did and didn't work.

How it works

The R4300 game code's logic and control flow are the decompilation's, and remain the reference we preserve. The port's changes inside src/ are few in kind (mostly mechanical 32→64-bit pointer fixes, a couple of approved timing fixes, and the opt-in All unlocked hook), each gated behind #ifdef PORT. The N64's Reality Signal Processor, the graphics coprocessor that builds and executes each frame's display list, is emulated in software: the port interprets the graphics command stream (GBI) the game emits and translates it to OpenGL, bypassing the RDP entirely. Everything else that would touch N64 hardware (video, audio, input, timers, save storage) is shimmed in a small dedicated layer, following the architecture of the Perfect Dark PC port from the same Rare engine family. Full detail: Internals; the bug catalogue: Porting notes.

Known issues

Known defects and limitations as of v0.5.0, each with its finding-log reference. The full list, with root causes and fix status: the release notes and the finding log.

  • Facility — gas leak during Ourumov's monologue (D318). If gas leaks, he can pause for up to ~10 s before the scripted shootout resumes. The race exists in the N64 original too (where it softlocks permanently); the port detects it and auto-recovers.
  • F10 options overlay under native widescreen (D335b). The overlay stretches with the window instead of pillarboxing like the front-end menus. Legible, cosmetic only; the F10 Native widescreen toggle restores the old stretched frame throughout. The world/HUD widescreen rendering itself is correct.
  • Front-end Rareware logo (D75). A subtle texture-filtering artifact; the Nintendo logo and legal page are clean. Cosmetic only.
  • All unlocked is experimental (D387). The fresh-install corruption case is fixed, but saves made while it is on are not guaranteed recoverable by switching it off — complete a level normally first, and back up data/ge007.eep before enabling it.
  • No macOS or ARM builds yet (both are on the roadmap); today the release ships Windows, Linux and Steam Deck. Keyboard, mouse and controller-button rebinding are all supported (defaults in the README's Controls section).

What the release actually installs, and how faithfully it tracks the N64 game: Security & fidelity status.

Documentation

The technical docs live under under the hood — the architecture, the N64→PC bug catalogue, and how the project is developed. Building covers building and running from source.

<script> // console-viewer carousel: one media slot, cycle the captures. Vanilla JS. (function () { var slides = [ { src:"img/shots/shot-01.jpg", cap:"Dam — v0.4.0 intro attract" }, { src:"img/shots/shot-03.jpg", cap:"Runway — v0.4.0 intro attract" }, { src:"img/shots/shot-04.jpg", cap:"Surface — v0.4.0 intro attract" }, { src:"img/shots/shot-09.jpg", cap:"Frigate — v0.4.0 intro attract" }, { src:"img/shots/shot-11.jpg", cap:"Surface 2 — v0.4.0 intro attract" }, { src:"img/shots/shot-16.jpg", cap:"Statue — v0.4.0 intro attract" }, { src:"img/shots/shot-20.jpg", cap:"Archives — v0.4.0 intro attract" }, { src:"img/shots/shot-21.jpg", cap:"Cradle — v0.4.0 intro attract" }, { src:"img/shots/shot-24.jpg", cap:"Aztec — v0.4.0 intro attract" }, { src:"img/shots/shot-27.jpg", cap:"Control — v0.4.0 intro attract" }, { src:"img/shots/shot-28.jpg", cap:"Streets — v0.4.0 intro attract" }, { src:"img/shots/shot-29.jpg", cap:"Jungle — v0.4.0 intro attract" } ]; var img = document.getElementById("vImg"), cap = document.getElementById("vCap"), idx = document.getElementById("vIdx"), i = 0; function show(n) { i = (n + slides.length) % slides.length; img.src = slides[i].src; cap.innerHTML = slides[i].cap; idx.textContent = (i + 1) + " / " + slides.length; } document.getElementById("vPrev").addEventListener("click", function () { show(i - 1); }); document.getElementById("vNext").addEventListener("click", function () { show(i + 1); }); document.addEventListener("keydown", function (e) { if (e.key === "ArrowLeft") show(i - 1); else if (e.key === "ArrowRight") show(i + 1); }); show(0); })(); </script>