GoldenEye 007 PC Port 0.3.0
The full single-player campaign runs at a steady 60 fps with audio (music +
SFX) playing throughout, on Windows and Linux including Steam Deck, and it
is completable end to end: the whole campaign has been playtested through
all 21 missions (Agent difficulty). It's an early public cut: all 21 solo
missions load and run crash-free, but the known issues below are real;
feedback is very welcome. This is a pre-1.0 release, not a finished
product — expect rough edges and missing features until v1.0; see the
README's Roadmap section
for where this is headed.
What's new since v0.2.2
- Bond is fixed in cutscenes — the most visible remaining glitch in
prior releases: Bond no longer floats or glitches out during cutscenes,
his animation no longer breaks or repeats, and the camera correctly
tracks him through scripted sequences including all three Dam end-of-level
abseil shots (D243). Root cause: a 32-bit-era struct-size constant in the
cutscene body-model setup never accounted for 64-bit pointer widening,
corrupting the model's own animation-timing fields on creation. Fixing
that also fixed the associated camera shake, which had previously been
worked around with a camera-freeze hack that's no longer needed. Two
related reports also cleared up as a side effect: Bond's third-person
model floating above the ground at level start, and death animations
sinking him into the floor, both shared an underlying mechanism with this
bug — Bond now ends up in the right place the large majority of the time,
with only a small positional drift on the rare occasion he's off (D173/
D292). - Particle colors mostly fixed: bullet-impact sparks and lingering
smoke/explosion residue no longer cycle through a rainbow palette (D219) —
root cause was a hardcoded raw-memory-offset read into the spark's stored
color that landed on the wrong bytes once the containing struct grew from
64-bit pointer widening. A second, separate cause was found and fixed in
explosion rendering itself (an out-of-bounds vertex-buffer write
corrupting adjacent particle data). This fix is real and stays in, but the
rainbow effect can still occur intermittently on any platform, not every
time and not on every level — a second cause hasn't been found yet; see
Known Issues. - Automatic widescreen FOV scaling: the game now scales its field of
view to match your display's aspect ratio automatically, instead of
requiring the old manual FOV-scale slider. Toggle off in the F10 overlay
(Widescreen Auto) if you prefer the original 4:3 framing. The scaled
vertical FOV is clamped to a 20°–160° range as a guard against degenerate
values on unusual aspect ratios. (This is FOV scaling, not a native 16:9
world/HUD re-render — see Known Issues.) - TV overscan artifacts removed: the black bars top/bottom and the thin
pixel strips left/right of the gameplay view are gone (D247/D246) — both
were the original N64 TV-safe-area margin, invisible on a CRT under real
overscan but visible on a PC monitor. NewVideo.SafeAreaCroptoggle
(default on) if you want the original framing back. - Two more crash fixes: a campaign-halting crash at the end of Control
Center on 00 Agent difficulty, which would then crash on every subsequent
relaunch until the save was reset (D295); and a crash selecting most save
slots withSkip Introenabled (D299). - The elusive complete freeze is root-caused and fixed. Players had hit
a total, non-self-recovering lockup (most recently when returning from
Caverns to the intro screen) that was real but never reproduced on demand.
It turned out to be a latent defect in the original game's own AI command
stream — a record type the engine mis-measures, which our level-teardown
timing can trigger and the N64 never presents. Fixed with a minimal change
under the project's game-code exception process (D309/D310); a second,
unrelated freeze mechanism found during the same playtest is now guarded
as well (D311). - A NULL-pointer guard was added around a save-data lookup that two
players hit with an identical crash address (GitHub #87, D301) — this
should close that crash, though we weren't able to reproduce the exact
trigger condition ourselves to confirm it end-to-end. - Facility's execution softlock is caught and recovered from: a rare
race in the original game's own AI script (present on the N64 too) could
leave Ourumov frozen mid-execution after Objective C, with no way out short
of reloading. A port-side watchdog now detects the exact unrecoverable
state and re-seeds the attack so the scene plays out as authored; it
re-arms once the scene has cleared, so replaying Facility later in the
same session is still covered (D318). - A Steam Deck crash is fixed: an audio-thread bug could crash the game
early in a level (sndHandleEvent's sound-preemption scan could
dereference a pointer without checking it was valid first). Live-verified
crash-free on real Steam Deck hardware, including withAll unlocked
toggled on. - Mouse input and F10 controls fixed: mouse input was reworked to
follow the Perfect Dark PC port's architecture — slow mouse motion is no
longer barely recognized and fast motion no longer saturates almost
immediately (D300,Input.MouseDirectLook, on by default). The separate
aim-speed and turn-speed sliders — which could be set to inconsistent
values against each other — are now a singleMouse sensitivitycontrol
with a wider range. Also fixed three F10 menu bugs found along the way:
clicking a row could unexpectedly scroll the whole list, a click near
certain rows could silently activate a different option than the one you
clicked (most noticeably, clickingAll unlockedcould instead trigger
Quit to desktop), and the panel's bottom row no longer duplicates
whatever item is currently selected (D251). - Random-number generation now matches the N64 original exactly (D284) —
a shift-operation bug in the PRNG had desynced the PC's random stream from
N64's since the very first release, affecting loot placement, AI variance,
and other randomized elements. This changes the random sequence from
every prior build, so old input recordings/replays will diverge, but
your save files are unaffected: a migration shim automatically upgrades
any save written by an older build the first time you load it (D297) —
no manual action needed. - Assorted texture/rendering fixes: an incorrect IA4 texture-format
decode and an overly-tight near-plane portal-culling guard were both
corrected (D266/D271) — reduces some texture-edge and visibility artifacts
on affected levels.
Known issues
- The front-end Nintendo logo renders as two white blobs, and the
Rareware logo is close but its texture filtering looks off (D75). - Particle colors: a real fix landed this release, but the rainbow effect
can still occur intermittently. One genuine, reproducible cause (an
out-of-bounds vertex-buffer write in explosion rendering) is fixed. A
second, still-unidentified cause remains, on both Windows and Steam Deck —
it doesn't reproduce every time or on every level, so treat this as
improved, not fully resolved (D252). - Some muzzle flashes draw an extra, erroneous long flash straight up from
the gun (seen on the M16, among others), on top of the normal, correctly
drawn flash. Cosmetic only (D303). - Surface 1: the 2D billboard trees near the start render as a solid wall
of tree texture instead of discrete sprites (D236). Under active
investigation across ten+ passes; no fix yet. - No native widescreen render: v0.3.0's automatic FOV scaling (above)
expands the field of view for 16:9+ displays, but the world geometry and
HUD are still authored/laid out for 4:3 — this is not yet a true
edge-to-edge 16:9 render. - No controller rebinding UI, and no macOS or ARM builds.
- Distant geometry can drop out on the biggest open levels (Streets,
Egyptian) at default FOV — a culling/LOD issue that sometimes
self-corrects as you keep moving (D249). - Gunshot SFX can sound off during sustained/rapid fire: cadence can
drift from the N64 original's rate, and PP7/AK47 fire can occasionally go
silent under heavy automatic fire near another looping sound (e.g. an
alarm klaxon) (D240/D241). All unlockedis highly experimental — do not enable it until you have
at least one save written. Complete a level normally first (e.g. Dam on
Agent), then turn the toggle on. Enabling it on a brand-new install with
no prior save can still cause silent audio and odd right-mouse-aim
behavior (D259/D257). (The Steam Deck crash fix above addresses a
separate, now-fixed symptom that had also been associated withAll unlockeduse; this audio/aim caveat is unrelated and still open.)- Water on
IsWaterlevels shows a moving seam between two patterns (D245). - Occasional z-fighting on some levels' geometry (D308) — a Dam intro/
truck-wheel instance showing odd transparent-looking areas has also been
seen and may be related (D306). Minor, cosmetic; not investigated for
this release. - In-level security camera props can occasionally end up facing backwards
(the wrong direction) on some levels, seen on Bunker — this is the
gameplay security-camera object, not the player's own view (D307). Not
investigated for this release. - A rare, self-clearing visual quirk: on an occasional animation
transition, Bond's model can briefly render out of place. It has no effect
on gameplay or your save, and it clears on its own or by re-entering the
level; a safeguard added this release guarantees it can never affect game
stability (D311). - Two collision oddities found in final playtesting: throwable items
(mines, grenades) can occasionally clip through walls in certain spots
(D312), and bullet impacts don't appear on some surfaces — doors and
windows are unaffected (D313). Both are queued for the next release; if
you hit either, an issue with the level and spot helps a lot.
Downloads
| File | Platform |
|---|---|
goldeneye-pc-port-0.3.0-win64.zip
| Windows x86-64 |
goldeneye-pc-port-0.3.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: the NTSC-U (US) release is what this build supports (PAL / JP
are on the roadmap). No Python, no toolchain, nothing to install.
- Unpack the archive.
- Make a
data/folder next to the executable and put the ROM in it, named
ge007.ntsc-final.z64. - 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 isprepare-assets/ge007-convert
inside the bundle; you can also run it manually; it prints what it's doing.)
Steam Deck: sideload the unpacked folder (USB or a file manager), do steps
2–3, then add the executable to Games → Add Game as a non-Steam game.
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.3.0-win64.zip.sha256
sha256sum -c goldeneye-pc-port-0.3.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.
