docs: v0.6.0 README, release notes, site pages, social card, version 0.6.0

Co-authored-by: f1zz1ec0ke <220638765+f1zz1ec0ke@users.noreply.github.com>
Co-authored-by: danturn <7792186+danturn@users.noreply.github.com>
Co-authored-by: JunielKatarn <4507319+JunielKatarn@users.noreply.github.com>
Co-authored-by: italoarruda <3868006+italoarruda@users.noreply.github.com>
Co-authored-by: dolent <16023813+dolent@users.noreply.github.com>
This commit is contained in:
committed 2026-10-10 12:16:27 -04:00
1 parent 218cb90231
commit 3f73a18db1
9 files changed
+285 -236

No files matched your search

+2 -2
View File
@@ -51,12 +51,12 @@ by this repo's CI from the release tag, and nothing else. Verify any
downloaded artifact with:
```sh
gh attestation verify goldeneye-pc-port-0.5.0-win64.zip \
gh attestation verify goldeneye-pc-port-0.6.0-win64.zip \
--repo jkdansereau/goldeneye-pc-port
```
(use the name of the file you downloaded, e.g.
`goldeneye-pc-port-0.5.0-linux-x86_64.tar.gz` on Linux). A passing check confirms both
`goldeneye-pc-port-0.6.0-linux-x86_64.tar.gz` on Linux). A passing check confirms both
the file's digest and its provenance; a tampered or foreign file fails.
Releases before v0.5.0 have no attestations — for those, the per-file
`.sha256` sidecars and a from-source build are the available checks.
+103 -191
View File
@@ -5,109 +5,77 @@
<img src="https://github.com/jkdansereau/goldeneye-pc-port/raw/v<version>/docs/img/shots/feature-options.jpg" width="340" alt="The PC options menu: custom crosshair colour sliders">
</p>
Platforms: **Windows x86-64** and **Linux x86-64 (including Steam Deck)**.
Region: **NTSC-U (US) only**. See [Known issues](#known-issues).
Platforms: **Windows x86-64** and **Linux x86-64 (including Steam Deck)**, plus
an **experimental macOS Apple Silicon** download (not notarized; see
[Running it](#running-it)). Region: **NTSC-U (US) only**. See [Known issues](#known-issues).
## Highlights
This is the first release since v0.4.0. It includes everything that was
staged as v0.4.1, which was never published on its own.
This release is v0.5.0 plus frame rates above 60, an experimental macOS port
and a batch of fixes.
- **2-4 player split-screen.** The game's multiplayer runs with a pad per
player, on every map, with each seat keeping its own controls.
- **One options menu.** The file-select **PC Options** entry and the F10 overlay
are now the same menu, laid out like the Perfect Dark PC port's, with
checkboxes, sliders and dropdowns. The game's own crosshair is the mouse
pointer, long pages scroll, and a tip explains the selected option.
- **The game's N64 control styles, per player.** Pick **Original** to use the
game's own styles 1.1-2.4; each seat keeps its own, saved with the Bond file.
- **Emulator saves load directly.** Copy a Project64, mupen or 1964 save in as
`data/ge007.eep` and it is converted on first launch.
- **Fog and haze closer to the N64.** Ground fog no longer chunks away tile by
tile, the sky fades into fog at the horizon, and the haze around Bond stays
steady as he moves. A new **Fog distance** setting (100-800%, 100% = N64) is separate
from Draw distance, and both apply live.
- **Fixes you can see:** the Dam ending camera swivels onto Bond as on the N64,
and rockets no longer pass
through the ground.
- **New settings:** an optional always-on crosshair, a custom
crosshair colour (0-255 RGB, like the Perfect Dark port), fullscreen mode,
center window, crosshair opacity and crosshair colour by health, a scalable
HUD overlay, and an optional update check (off by default).
- **Frame rates above 60.** The *Frame rate cap* (`Video.FpsCap`) now offers
**90, 120 and 144**, and an **Auto** setting that matches your display's
refresh rate (up to 144). Auto is the default on fresh installs; an existing
`ge007.ini` keeps its value. Extra frames are blended between game ticks, so
the game still simulates at its original rate. It costs one game tick of
extra latency, does nothing on a 60 Hz display, and the *Original N64*
display mode caps at 60. This is my rework of f1zz1ec0ke's #137.
- **macOS on Apple Silicon (experimental).** There is now a
`macos-arm64` download (or build from source; see `docs/building.md`). Based
on danturn's #95. A 21-level campaign sweep and live sessions ran without
crashes on one M3 Mac, but it has not had the wider testing the Windows and
Linux builds have, and the download is not notarized. Test reports are very
welcome.
- **Fixes you can see:** geometry vanishing when you stand against a wall
(#150), the Cradle catwalk shadow flicker, stale pixels beside the
native-widescreen picture on front-end screens, and the first launch opening
on the wrong monitor (#151).
- **Crash fixes:** the Linux end-credits crash (#152) and a crash when a guard
spawned wearing a hat (#153).
Played on Windows and Steam Deck: campaign spot-checks, 2-4 player split-screen
and controller-only sessions.
Checked on PC at 120 Hz with VSync on a G-Sync display, and on the Steam Deck
at 90 fps.
---
## What's new
### Options menu
### Frame rate
- Six sections in the Perfect Dark port's order: Video, Audio, Mouse,
Controller, Key Bindings and Game. **Display mode** is a dropdown; **Backspace** goes back.
- The F10 overlay and FPS counter are the same on-screen size in the front end
and in a level, and **Game.HudScale** scales them with the in-game HUD.
Sliders and arrows are drawn smooth at any window size.
- The OS cursor stays visible over the overlay (no main-menu flicker),
right-click goes back, and the tip follows the hovered row.
- Clearer wording: 27 menu-wording edits, sliders with real units (percent,
frames, seconds, pixels), wrapped tips, one `Key: Action` hint style and
consistent names (Original / Extended, "Original layout"). *Skip intro* and
*All unlocked* are no longer marked experimental, and *All unlocked* applies
live. The game's own *Look up/down* row is gone; use *Invert look* on the
Mouse and Controller pages.
- **Auto, 90, 120 and 144** join 30 and 60 in the F10 *Frame rate cap* row.
Above 60 the port draws extra frames between game ticks by blending the
previous and current frame. It only applies when the display is faster than
60 Hz; on a 60 Hz display nothing changes.
- A fresh install uses **Auto**, so a 90 Hz screen runs at 90 and a 144 Hz
monitor at 144. The *Original N64* display mode sets the cap to 60.
- A fast camera turn, or a large change in what is on screen, falls back to a
full frame instead of a blend.
- The Steam Deck at 90 is good on most levels (see the known issues).
### Controls
### macOS (Apple Silicon, experimental)
- **Control style:** **Ext** (this port's scheme, unchanged) or **Original**
(the game's N64 styles 1.1-2.4), chosen per seat.
- The Xbox-release presets (1.1 Jinx, 1.2 Christmas, 1.3 Frost, 1.4 Elektra)
and Custom rebinding carry over. Preset names refer to the Xbox
release's control styles; this project is not affiliated with Microsoft or Rare.
- The right stick aims and the D-pad strafes, as on the N64; the Xbox
release's "left stick aims the crosshair" and "D-pad copies the left stick"
behaviours are not reproduced.
- New profiles default to Crouch Toggle and Look ahead off (it fights mouse look
on PC). Existing untouched empty save folders get the same on first play;
played or customised profiles are not changed.
- On arm64 macOS the N64 address window sits at a high host base (set
automatically by CMake). The 64-bit address fixes this needed (textures,
input, animation and multiplayer crashes) are in the shared code and have no
effect at base 0 on Windows and Linux.
- Build from source with Homebrew's GNU `gcc`; there is no download. The
x86_64 macOS code (Julio C. Rocha's #88) is in the tree but was never
verified on Intel hardware.
### Saves
### Settings and diagnostics
- An emulator-format `data/ge007.eep` is converted on first launch (the
original is kept as `ge007.eep.emulator.bak`). The converter `eep_convert.py` still does explicit two-way conversion.
(Live playtest owed.)
### Picture and settings
- Fog and near-plane clipping closer to the N64 (details under the technical
section below). Forced aspect ratios letterbox/pillarbox without re-cropping
the play area.
- Draw and LOD distance default to 2.0x (N64 = 1.0x), stick deadzone to 25%,
mouse sensitivity maximum is 4x. **FOV** is vertical degrees, 30-90, with
60 = the N64 view. "Guard AI uses full wide view" is now **Gameplay view
area** (Original / Extended). Old values migrate once; existing `ge007.ini`
files still load.
### Window and updates
- The title bar is static (the FPS readout is still in the F10 overlay) and
the window/taskbar icon is a new project mark.
- **Check for updates** (Game, **off by default**): when on, one HTTPS request
to GitHub per launch and an "Update available" row linking to the releases page.
### Also new since v0.4.0
- **Split-screen multiplayer** for 2-4 players, played live in 2P on every
multiplayer map and in 4P on Temple.
- Controller presets and rebinding, PlayStation and Nintendo button names,
master volume and audio-device selection.
- A steady 60 fps on low-end GPUs (tested on an Intel HD 3000 laptop).
- Fidelity fixes checked against the N64 game: AI visibility at long draw
distances, sniper zoom, turret pacing, Dam/Caverns water, weapons.
- Fixes for reported issues: fire rate (#114), the tank-crush sound loop
(#115), tank movement (#116), weapon sway (#117), recoil on some GPUs (#118)
and light fixtures that didn't react to shots (#119).
- The old front-end **Velocity** pointer mode is removed; the retired ini keys
are ignored quietly (D574).
- The Linux/macOS **update check** no longer fails on a response over 64 KB
(D575).
- Every log line is also written to **`ge007.log`** next to the ini; the
previous run is kept as `ge007.prev.log` (D576).
- F10 slider labels no longer end in ".." at HUD scale 150 (D577).
- The crosshair look (colour, size, style, alpha, health colour) is your
preference and is no longer reset by the *Display mode* presets (D440).
- The sound-effect and text-bank pointer guards check the real address range,
so they work at any address base (D573, #108 with italoarruda).
---
@@ -119,12 +87,14 @@ and controller-only sessions.
|---|---|
| `goldeneye-pc-port-<version>-win64.zip` | Windows x86-64 |
| `goldeneye-pc-port-<version>-linux-x86_64.tar.gz` | Linux x86-64 (incl. Steam Deck) |
| `goldeneye-pc-port-<version>-macos-arm64.tar.gz` | macOS Apple Silicon, experimental |
Each contains the engine executable, a README, license texts, and the
one-time asset tool. **No ROM, no game assets.** The Windows bundle carries
its runtime DLLs and the Linux bundle carries SDL2, so nothing needs to be
installed first. The Linux bundle runs on glibc 2.31 or newer (Ubuntu 20.04+,
Debian 11+, SteamOS).
Debian 11+, SteamOS). The macOS bundle carries SDL2 and the C++ runtime and
needs an M1 or later Mac on macOS 14 or newer.
### Running it
@@ -141,6 +111,18 @@ ROM, `ge007.eep` (your progress) and `ge007.ini` (your settings) into its
`data/` folder. Don't copy the old `pcmodels-*` / `pccg-*` folders: the new
version makes its own.
**macOS (experimental):** the app is not signed with a Developer ID or
notarized, so Gatekeeper blocks a downloaded copy. After unpacking and before the
first launch, run this once in Terminal, then start `./ge007.aarch64` from
the folder:
```
xattr -dr com.apple.quarantine goldeneye-pc-port-<version>-macos-arm64
```
I have only run it on one M3 Mac, so please report what Mac and macOS you
tried and what happened.
**Steam Deck:** do the steps above on the Deck, then add the executable as a
non-Steam game. The options overlay opens with **Select** and is fully
controller-driven.
@@ -153,132 +135,62 @@ Full steps, controls and troubleshooting are in the bundled `README.md`.
| Issue | Impact | Workaround |
|---|---|---|
| On the Steam Deck at 90 fps, firefights in the centre of Bunker 1 and 2 can drop several fps | Performance, Deck only | Set the frame cap to 60 for those levels |
| Jungle can feel slightly less smooth at 90 fps than other levels | Feel | Frame cap 60 |
| Cradle's turret explosions may draw wrongly | Cosmetic; reported, not yet investigated | None |
| macOS (Apple Silicon) is experimental, tested on one Mac, and not notarized | Platform | Run `xattr -dr com.apple.quarantine <folder>` before the first launch; reports welcome |
| PAL and JP ROMs aren't supported in release packages | NTSC-U only | Use an NTSC-U ROM. Both regions convert, build and boot from source; packaging is still open |
| Changing aspect ratio inside a level can briefly glitch the gun/hand model, rarely | Cosmetic, one-off | Change the ratio from the front-end PC Options, or accept it |
| No macOS or ARM builds | Platform | — |
| Saves from v0.4.0 and earlier can hold fake unlocks from `All unlocked` | Save data | Not repaired automatically. Since v0.5.0 the option never writes the save; keep a backup of `data/ge007.eep` from before you used it |
| The first frame of a level takes a little longer while its textures upload | Brief FPS-counter dip | None needed |
| Far objects almost fully in fog are now hidden as on the N64, except in widescreen where a faint distant building edge can still show (e.g. Surface's dish from the start area); 4:3 matches the N64 | Cosmetic | Higher Draw/LOD distance shows more |
The full list, with workarounds, is the
Faithful original-game quirks are not port bugs. The full list, with
workarounds, is the
[known-issues table](https://github.com/jkdansereau/goldeneye-pc-port/blob/main/docs/ROADMAP.md#known-issues).
---
## Fixes and changes, with finding labels
Menu and settings work:
- One options UI: the file-select entry opens the F10 menu (D519). Six
PD-ordered sections with checkboxes, sliders and dropdowns (D504); display
mode dropdown and Backspace-back (D504 follow-up).
- Control styles: Ext / Original with the N64 styles 1.1-2.4 (D513, D516),
chosen per seat and saved with the Bond file (D518, D516).
- Emulator `ge007.eep` import (D514).
- F10 overlay and FPS counter match in size front-end vs level (D510); HudScale
covers them (D512).
- Fullscreen mode, Center window, crosshair opacity and crosshair colour by
health: the four settings the Perfect Dark port had that this port lacked (D511).
- Wording, units, tips and spelling: D505, D506, D507; settings wording pass
and tip wrapping (D554); Look up/down row removed (D564).
- Settings standardised: defaults, FOV in vertical degrees, Gameplay view area (D546).
- Optional update check (D551). All unlocked applies live (D547).
- Crosshair mouse pointer and scrollbar (D555, D556); long tips no longer cut
off inside a level (D558). New defaults: Crouch Toggle, Look ahead off (D556,
D557); same for untouched empty save folders (D559).
- Crosshair always on, opt-in, off by default (D436, #123 by dolent). Crosshair colour is
Original or Custom RGB with 0-255 sliders, as in the Perfect Dark port; a
saved named preset carries over as Custom (D569). Long dropdowns stay on
screen (D568).
- F10 overlay mouse behaviour (D544). Static title bar and new icon (D550).
- Overlay slider wedges, markers and dropdown arrows used to step in whole
canvas pixels and grew visibly at large window sizes; now smooth (D520).
Holding left/right on a Bond settings row no longer drops the FPS counter (D517).
- Watch menu: closing the in-level **Watch** menu saves the watch's own screen
size and ratio, which no longer fight the front-end **Aspect ratio** setting;
the earlier findings-log note was corrected (D349).
Rendering and gameplay fidelity:
- **Dam ending camera:** the first shot of the ending cutscene swivels up onto
Bond again, as on the N64; an old port workaround snapped it straight onto
him (D552).
- **Fog rework (Surface 2, from Deck playtest):** ground fog no longer "chunks"
away tile by tile, and the sky fades into fog toward the horizon as on the
N64 (D540). Large near-camera triangles are now clipped against the near
plane the way the N64's RSP does, with per-vertex fog recomputed on the
clipped edge, so the haze around Bond stays steady as he moves instead of
brightening and darkening (D543, D553; compared against hardware-level
emulation). A new **Fog distance** setting (100% = N64) is independent of
Draw distance, and Draw and Fog distance now apply live instead of on the
next level load.
- **Banded walls near explosions:** in Aztec's dark corridor, walls near rocket
fire turned into black/white/yellow/blue bands (also seen on the Deck); fixed
by clamping colour-combiner inputs to the range the N64 can produce (D548).
- **Rocket and thrown-item crashes/clipping:** a player-fired rocket could pass
through the ground when fired near Bond's feet (a stack-layout difference
from the N64, D545), and the same class of bug is fixed in thrown grenades,
knives and objects (D549).
- **Menu double-trigger (Steam Deck):** one A press could advance two menu
screens, and one B could back out two overlay pages. A short release
hold-off on menu A/B/Start and a single back action per press are now in
place. This is a mitigation: the exact cause is unconfirmed (the Deck
re-check passed) (D541).
- **Fog snap:** objects far in fog are hidden as on the N64; in widescreen
the wider view can still show a faint distant building edge (e.g. Surface's
dish from the start area); 4:3 matches the N64 (D503).
- **Aspect ratio:** forced ratios letterbox/pillarbox without re-cropping the
play area (D508); the rare gun/hand model glitch after changing ratio
mid-level is largely fixed, a rare remainder is logged (D509).
Build, tooling and harness:
- A fresh build directory no longer produces an untagged executable name (D515).
- The asset converter's argument quoting and sidecar size check are
tightened; the CI cache actions no longer carry stale ROM paths.
- The reference-frame tooling is non-destructive and drift-free: a verification
sweep used to overwrite your own `data/ge007.ini` and leave the previous
level's save file behind, and now pins both idempotently (your ini and save
are restored whatever the run does); the capture helper reads its frame
windows out of the gate instead of a stale hardcoded copy (D524). The gate's
recipe was re-based: per-level windows in settled gameplay rather than the
intro flyby, and the save file pinned present (D522, D523).
- Debug env vars are documented: `GE_PCDUMP` must be `first-last:step` (a colon
where the dash belongs silently dumps every frame, D527), and a
`GE_STARTMENU` boot skips the EEPROM import, so the imported-save test must
run from a normal boot (D528). A per-triangle draw-state census probe
(`GE_D526`/`GE_D526BOX`/`GE_D526MAX`) is available for transparency/texture
triage (D526; the P13 Dam-ending grate show-through it targeted was confirmed
faithful N64 behaviour on 1964/GEPD, so no change shipped).
- **Frame interpolation above 60 fps** (D578, rework of #137). 120 fps with
VSync on G-Sync/VRR: black frames and OLED flicker fixed (D583). Steam Deck
90 Hz pacing (D583).
- **#150 geometry disappearing when too close to a wall:** the near-plane clip
now cuts at the camera plane (D579).
- **Cradle catwalk shadow flicker:** a D579 regression, fixed (D584).
- **Native-widescreen stale pixels** on front-end screens: the canvas sides are
cleared (D579 follow-up).
- **#151** the first launch opens on the primary monitor (D581).
- **#152** Linux end-credits crash: a garbage text pointer is rejected (D582).
- **#153** hat-spawn crash: the object record type was read from the wrong byte
on a little-endian machine (D580).
- **#108** SFX / text-bank pointer guards (D573).
- Velocity removal, update-check fix, `ge007.log`, HUD-150 sliders, preset
scope (D574-D577, D440).
- **macOS arm64:** one address-model header, the 64-bit pointer fixes and a
display-locked tick (D586, D591, D594, D595, D599-D604, D607-D613).
## Verification
**Reference-frame gate for this release:** Windows, Linux and Steam Deck each
carry the full 21-level reference-frame set (63 frames each) at the same stems,
re-captured for this release's fog and near-plane changes and confirmed by two
independent capture passes per platform. The full pixel gate is green on all
three against their own goldens on the final build: Windows 21/21, Linux
(Intel HD 3000) 21/21 and Steam Deck 21/21. The recipe pins the run for you: the
save file's CONTENT is pinned (the gate installs its own canonical save per
level, the same way it pins the display ini — D529) and the PRNG seed is
hard-pinned (a stray `GE_RSEED` in your environment warns and is ignored rather
than re-seeding the gate — D532), so a gate run and a capture run see the same
starting state. The cross-platform spread on the shipped sets (0.188-4.553% of
pixels over tol 2 on the 20 non-Cuba levels) is informational only — it is not
a cross-platform pixel-parity claim.
I did not re-run the three-platform reference-frame gate for this release; the
last full run was for v0.5.0. For v0.6.0 I checked the frame-rate path and the
fixes above by playing on Windows and the Steam Deck, and the macOS build with
a 21-level sweep and live sessions.
## Thanks
Outside contributions merged for this release: dolent (PRs #120–#123), MST246
(#125 draw-distance investigation), italoarruda (#109 gamepad-preset ideas),
TenebrusoM (DexDrive / the D514 save-format sample), plus reporter credits on
the issue numbers named above.
f1zz1ec0ke (#137, the frame-interpolation design this release reworks),
danturn (#95, macOS), Julio C. Rocha (#88, the first macOS groundwork),
italoarruda (#108), dolent (#120-#123, already in v0.5.0), plus reporter
credits on the issue numbers named above.
## Verify the download
```
sha256sum -c goldeneye-pc-port-<version>-win64.zip.sha256
sha256sum -c goldeneye-pc-port-<version>-linux-x86_64.tar.gz.sha256
shasum -a 256 -c goldeneye-pc-port-<version>-macos-arm64.tar.gz.sha256 # macOS
```
## Source & docs
+3 -3
View File
@@ -122,12 +122,12 @@
<div class="rep">REPORT:</div>
<div class="rows">
<div class="statusline">Status: <span class="status">RELEASED v0.5.0 &mdash; WINDOWS &middot; LINUX &middot; STEAM DECK</span></div>
<div class="statusline">Status: <span class="status">RELEASED v0.6.0 &mdash; WINDOWS &middot; LINUX &middot; STEAM DECK</span></div>
<div class="stats">
<span class="k">Statistics:</span><span>All 20 solo missions &mdash; full campaign completed in playtesting</span>
<span class="k">Statistics:</span><span>All 20 solo missions &mdash; 60 to 144 fps &middot; macOS (experimental)</span>
<span></span><span>~210 game-code units, compiled unmodified</span>
<span></span><span>~34k lines C/C++ &nbsp;&middot;&nbsp; ~10k Python (port layer + tools)</span>
<span></span><span>430 findings logged &nbsp;&middot;&nbsp; AI coding agents + a handful of contributors</span>
<span></span><span>465 findings logged &nbsp;&middot;&nbsp; AI coding agents + a handful of contributors</span>
</div>
</div>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 597 KiB

After

Width:  |  Height:  |  Size: 597 KiB

+94 -21
View File
@@ -6,8 +6,8 @@
![license](https://img.shields.io/badge/license-MIT-ffb454)
**GoldenEye 007 (Nintendo 64, 1997) as a native PC game for Windows, Linux
and Steam Deck.** Native widescreen, a steady 60 fps, 2–4 player
split-screen, mouse and keyboard or a modern controller, rebindable controls
and Steam Deck.** Native widescreen, 60 fps or higher (90/120/144 on fast
displays), 2–4 player split-screen, mouse and keyboard or a modern controller, rebindable controls
and an in-game options menu. No
emulator, and not a binary recompilation: the game's own
reconstructed C, rebuilt from the
@@ -24,9 +24,9 @@ then follow the [Quick start](#quick-start).
> downloads contain no Nintendo code or assets, and no ROM. See
> [What's a ROM?](#whats-a-rom) and [Legal](#legal).
**v0.5.0** is the current release. It is a **pre-1.0 release, not a
**v0.6.0** is the current release. It is a **pre-1.0 release, not a
finished product**: the campaign and split-screen multiplayer play end to
end, but expect missing pieces (PAL/JP ROMs, macOS) and the occasional
end, but expect missing pieces (PAL/JP ROMs, a notarized macOS build) and the occasional
breaking change between versions. v1.0 is the target for a feature-complete
build.
@@ -49,6 +49,31 @@ project is as much a study of that process as it is a port. See
## News
- **RELEASE-DATE** — **v0.6.0** ([release notes](https://github.com/jkdansereau/goldeneye-pc-port/releases/tag/v0.6.0)):
- **Frame rates above 60.** `Video.FpsCap` now offers 90, 120 and 144, and
an **Auto** setting (the new default on fresh installs) that matches your
display's refresh rate. Frames between game ticks are blended from the
previous and current frame; the game still simulates at its original
rate. It costs one game tick of extra latency, does nothing on a 60 Hz
display, and the *Original N64* preset caps at 60. This is a rework of
f1zz1ec0ke's #137. I checked 120 Hz with VSync on a G-Sync display
on PC and 90 fps on the Steam Deck.
- **macOS on Apple Silicon, experimental, build from source.** Based on
danturn's #95 (with Julio C. Rocha's earlier Intel groundwork in
#88). There is no macOS download. See [Building](docs/building.md).
- **Fixes:** geometry vanishing when you press against a wall (#150),
the first launch opening on the wrong monitor (#151), a Linux crash in the
end credits (#152), a crash when a guard spawns with a hat (#153), a
sound/text pointer check that rejected valid pointers (#108), a Cradle
catwalk shadow flicker, and stale watch pixels in native widescreen.
- **Smaller changes:** the legacy front-end Velocity pointer mode is gone,
the Linux/macOS update check no longer fails on a large response, every
run is also logged to `ge007.log` next to the ini, and F10 slider labels
fit at HUD 150.
- **Known issues on the Steam Deck at 90 fps:** firefights in the centre of
Bunker 1 and 2 can drop several fps, and Jungle can feel slightly less
smooth than other levels. Cradle's turret explosions may draw wrongly
(reported, not yet investigated).
- **2026-10-07** — **v0.5.0** ([release notes](https://github.com/jkdansereau/goldeneye-pc-port/releases/tag/v0.5.0)), the first release
since v0.4.0; it includes the v0.4.1 work, which was never published on
its own:
@@ -104,7 +129,7 @@ the first launch lowers draw distance and anti-aliasing to keep up. A
keyboard and mouse, or a controller (Xbox, PlayStation, Switch and most
SDL-supported pads); split-screen needs one controller per extra player.
**Not yet:** macOS, ARM Linux and Windows 7 are on the [roadmap](#roadmap).
**macOS (Apple Silicon, experimental):** an M1 or later Mac on macOS 14 or newer, using the `macos-arm64` download (nothing to install; it is not notarized, so see [macOS](#macos-apple-silicon-experimental) for the one-line unblock) or a [source build](#building-from-source). **Not yet:** ARM Linux and Windows 7 are on the [roadmap](#roadmap).
## Quick start
@@ -210,6 +235,14 @@ Backspace.
and *Aspect ratio → Original* shows the exact 4:3 frame.
- **A steady 60 fps**, with VSync and a frame cap (30 or 60), including on
low-end GPUs.
- **Frame rates above 60:** 90, 120 or 144 fps, or **Auto** to match your
display. Extra frames are blended between game ticks (the game still runs at
its original rate), at the cost of one tick of latency. It has no effect on
a 60 Hz display, and the *Original N64* preset keeps 60. See
[framerate and pacing](docs/framerate-and-pacing.md).
- **macOS (Apple Silicon), experimental:** a `macos-arm64` download, not
notarized (one Terminal command to unblock it, see [macOS](#macos-apple-silicon-experimental)),
or build from source. I'd like test reports.
- **Graphics options:** resolution, borderless or exclusive fullscreen,
a Center window action while windowed, MSAA (up to 16×), anisotropic
filtering, and nearest, bilinear, trilinear or the N64's own 3-point
@@ -238,17 +271,22 @@ Backspace.
## Status
**Fully playable, with a small set of known caveats.** All 20 solo missions
and the end-of-campaign credits load, render and run crash-free. v0.5.0 was
played on Windows and Steam Deck (campaign spot-checks, 2–4 player
split-screen and controller-only sessions), and every level's reference
frames were compared pixel by pixel on Windows, Linux and Steam Deck. The
and the end-of-campaign credits load, render and run crash-free. v0.6.0 adds
frame rates above 60 and experimental macOS support; I checked the new
frame-rate path and the listed fixes by playing on Windows and Steam Deck (120 Hz
with VSync on a G-Sync display on PC, 90 fps on the Deck), and a macOS
Apple Silicon build ran the 21-level campaign sweep and live sessions without crashes. The 21-level pixel comparison of reference
frames against goldens (Windows, Linux, Steam Deck) was last done for v0.5.0. The
full campaign was last played end to end, at Agent difficulty on all three
platforms, for v0.4.0. Split-screen was played live in 2P on every
multiplayer map and in 4P on Temple.
**Known issues:** see the **[known-issues table](docs/ROADMAP.md#known-issues)**
(what you'll notice, impact, workarounds). The short version: NTSC-U ROMs
only in the release packages, and no macOS/ARM builds yet.
only in the release packages, and the Apple Silicon macOS download is
experimental and not notarized. On the Steam Deck at 90 fps, Bunker 1/2
centre firefights can drop several fps and Jungle can feel slightly less smooth
than other levels.
> ***All unlocked* never changes your save** since v0.5.0: it unlocks every
> level and cheat in memory only, and switching it off shows your real
@@ -302,7 +340,7 @@ common keys and their defaults:
[Video]
Fullscreen = 0
VSync = 1
FpsCap = 60
FpsCap = -1
MSAA = 2
TextureFilter = 1
NativeWidescreen = 1
@@ -313,7 +351,9 @@ DrawDistance = 200
MasterVolume = 100
```
`Fullscreen` 1 is borderless fullscreen; `TextureFilter` is 0 nearest,
`Fullscreen` 1 is borderless fullscreen; `FpsCap` -1 is Auto (match the display,
up to 144), 0 is uncapped, otherwise a fps cap (30, 60, or 90/120/144 for frame
interpolation on a faster display; an existing ini keeps its value); `TextureFilter` is 0 nearest,
1 bilinear, 2 the N64 3-point filter, 3 trilinear; `FovScale` and `DrawDistance` are
percentages of the original (the options overlay shows the field of view in
degrees). On Atom/Celeron-class GPUs the first launch writes lighter values
@@ -406,15 +446,15 @@ place: [`docs/ROADMAP.md`](docs/ROADMAP.md). In brief:
- **PAL and JP ROM support** in the release packages
([#85](https://github.com/jkdansereau/goldeneye-pc-port/issues/85)). Both
regions already convert, build and boot from source.
- **macOS and ARM builds**.
- **A notarized macOS build, Intel Macs and ARM Linux.** Apple Silicon macOS is
an experimental, unsigned download in v0.6.0.
- The remaining small accuracy differences, each checked against the N64
game in an emulator.
- **1.0 sign-off**: a full campaign playthrough at more than one difficulty
plus a split-screen session, on every platform that ships.
This is spare-time work, so there's no timeline. Opt-in extras beyond the N64
game (LAN play, bots, co-op, HD textures, enhanced visuals, frame rates above
60) come after 1.0, and always off by default. Not planned: online
game (LAN play, bots, co-op, HD textures, enhanced visuals) come after 1.0, and always off by default. Not planned: online
multiplayer over the internet, achievements or cloud saves, remake-scope
assets (new models, music or voice), and new movement mechanics. If any of
these matter to you, open an issue — it helps prioritize.
@@ -454,7 +494,7 @@ code with this one.
| **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; the source is machine-generated |
| **Lineage** | [GoldenEye 007 decompilation](https://github.com/n64decomp/007) + [Perfect Dark PC port](https://github.com/fgsfdsfgs/perfect_dark) engine family | Xbox 360 "…Recompiled" static-recompilation family |
| **Renderer** | Software RSP → OpenGL | Hardware (Vulkan) |
| **Status** | Pre-1.0 releases; full campaign and split-screen playable at 60 fps (see [Status](#status)) | Playable full game |
| **Status** | Pre-1.0 releases; full campaign and split-screen playable at 60 fps or higher (see [Status](#status)) | Playable full game |
| **Why it exists** | To run the *original* N64 game from source, and as a [case study in AI-agent collaboration](#how-it-was-made) on a hard low-level codebase | To get a playable PC release of the remaster |
---
@@ -500,6 +540,37 @@ The executable is written to `build-pc/ge007.x86_64` (on Windows,
repo root, put your ROM in it as in [What's a ROM?](#whats-a-rom), and run
`./build-pc/ge007.x86_64` from the repo root.
### macOS (Apple Silicon, experimental)
**Download:** `goldeneye-pc-port-<version>-macos-arm64.tar.gz` from the release
page, for Apple Silicon (M1 or later), macOS 14 or newer. It bundles SDL2 and the
C++ runtime, so Homebrew is not needed. The app is experimental and **not
signed with an Apple Developer ID or notarized**, so Gatekeeper blocks it when
it comes from a download. Unpack it, then run `xattr -dr com.apple.quarantine <folder>` in Terminal once, before the first launch:
```sh
xattr -dr com.apple.quarantine goldeneye-pc-port-<version>-macos-arm64
```
Then set up `data/` with your ROM as in the package README and run
`./ge007.aarch64` from that folder in Terminal. If you launch it first, the process
stalls before the window appears (it never reached `main` in my test; that is
most likely Gatekeeper, and clearing the flag afterwards did not unstick that
copy), so re-extract the archive and clear the flag before launching. I have run
the package on one M3 Mac only, so test reports (what Mac, what macOS, what
happened) are very welcome.
**Build from source:** use Homebrew's
GNU `gcc` (Apple's Clang can't compile the decomp), then the same
asset-extraction and `./build-pc.sh ntsc-final` steps as above. Details are in
[`docs/building.md`](docs/building.md).
```sh
brew install cmake gcc sdl2 zlib python3
```
On Apple Silicon the executable is tagged `aarch64` instead of `x86_64`.
## How it works
The game code in `src/` is the decompilation's, and its control flow is the
@@ -607,14 +678,16 @@ This port is a thin layer on a large amount of other people's work.
**Contributors**
- **dolent** (#120, #121, #122, #123), **italoarruda** (#107, #109),
**JosephAHK** (#133), and **MST246** (the #125 investigation), plus
everyone who filed issues.
- **dolent** (#120, #121, #122, #123), **italoarruda** (#106, #107, #108, #109),
**danturn** (#95 macOS, #96), **Julio C. Rocha** (#88 macOS Intel groundwork),
**f1zz1ec0ke** (#137 frame interpolation), **JosephAHK** (#133), and
**MST246** (the #125 investigation), plus everyone who filed issues.
**Consultation**
- **f1zz1ec0ke** ([GitHub](https://github.com/f1zz1ec0ke)): LLM consultation on model
tuning, agent harnesses, and agentic strategy throughout the port's development.
tuning, agent harnesses, and agentic strategy throughout the port's development
(and the author of the #137 frame-interpolation design noted above).
**Tools and models used to develop the port**
@@ -700,4 +773,4 @@ is covered by [`NOTICE`](NOTICE), not by that license.
---
*Last updated 2026-10-07 — v0.5.0 · <a href="https://github.com/jkdansereau/goldeneye-pc-port">GitHub</a> · <a href="https://github.com/jkdansereau/goldeneye-pc-port/releases">Releases</a>*
*Last updated 2026-10-10 — v0.6.0 · <a href="https://github.com/jkdansereau/goldeneye-pc-port">GitHub</a> · <a href="https://github.com/jkdansereau/goldeneye-pc-port/releases">Releases</a>*
+1 -1
View File
@@ -55,7 +55,7 @@
<footer class="site-footer">
<div class="footer-stamp">
<a href="https://github.com/jkdansereau">maintained by jkdansereau</a>
&nbsp;&middot;&nbsp; last updated: 2026-10-07 &middot; v0.5.0
&nbsp;&middot;&nbsp; last updated: 2026-10-10 &middot; v0.6.0
&nbsp;&middot;&nbsp; <a href="https://github.com/jkdansereau/goldeneye-pc-port">GitHub</a>
&nbsp;&middot;&nbsp; <a href="https://github.com/jkdansereau/goldeneye-pc-port/releases">releases</a>
</div>
+22 -7
View File
@@ -1,6 +1,6 @@
---
title: Building
description: Full build and asset-extraction guide for the GoldenEye 007 PC port, covering Windows (MSYS2) and Linux.
description: Full build and asset-extraction guide for the GoldenEye 007 PC port on Windows, Linux, and macOS.
---
## Building the PC port
@@ -27,21 +27,36 @@ for accepted versions and hashes.
### Port build
> **The Windows (MSYS2 MINGW64) path is the primary one.** The Linux build is
> compiled by CI on every push and ships in the release bundle (also
> playtested on Steam Deck hardware); the macOS column is best-effort
> guidance and has never been built or run there. Expect to fix build breaks
> yourself on untested platforms.
> **The Windows (MSYS2 MINGW64) path is the primary one.** Linux is compiled
> by CI and ships in the release bundle. **macOS on Apple Silicon is
> experimental as of v0.6.0**: the release has a `macos-arm64` download
> (`scripts/package-macos.sh` makes it on a Mac; CI runs it) that is not
> notarized, so clear the quarantine flag once before the first launch with
> `xattr -dr com.apple.quarantine <folder>`. This guide covers building it from
> source. On an arm64 Mac the build moves the N64 address window to a
> high host base (`PORT_ADDR_BASE`, set automatically); Windows and Linux builds
> are unaffected. The x86_64 macOS path (Julio C. Rocha, #88) is still in the
> tree but was never verified on Intel hardware.
| Need | Windows (MSYS2 MINGW64) | Debian/Ubuntu | macOS (Homebrew) |
|------|------------------------|---------------|------------------|
| toolchain | `mingw-w64-x86_64-toolchain` | `build-essential` | Xcode CLT / `gcc` |
| toolchain | `mingw-w64-x86_64-toolchain` | `build-essential` | Xcode CLT + Homebrew `gcc` |
| CMake | `mingw-w64-x86_64-cmake` | `cmake` | `cmake` |
| SDL2 | `mingw-w64-x86_64-SDL2` | `libsdl2-dev` | `sdl2` |
| zlib | `mingw-w64-x86_64-zlib` | `zlib1g-dev` | `zlib` |
| OpenGL | (in the toolchain) | `libgl1-mesa-dev` | (system) |
| Python 3 | `mingw-w64-x86_64-python` | `python3` | `python3` |
On macOS, install the build dependencies with:
```sh
brew install cmake gcc sdl2 zlib python3
```
The project requires real GNU GCC for the decomp's Plan 9 struct extensions.
Apple's `/usr/bin/gcc` is Clang and is not compatible. CMake automatically
selects Homebrew's versioned `gcc-N`/`g++-N` executables.
### Asset extraction (decompilation toolchain)
The extraction scripts need `binutils-mips-linux-gnu` (or an equivalent MIPS
+28 -4
View File
@@ -1,14 +1,15 @@
---
title: Framerate and pacing
description: How the GoldenEye 007 PC port holds a steady 60 fps and keeps per-frame game timing correct on a fast CPU.
description: How the GoldenEye 007 PC port holds a steady 60 fps, draws frames above 60 on fast displays, and keeps per-frame game timing correct on a fast CPU.
date: '2026-10-05'
modified_time: '2026-10-05'
modified_time: '2026-10-10'
---
## Framerate and pacing
The port targets a **steady 60 fps** with VSync and an optional 30/60 frame
cap, including on low-end GPUs.
The port targets a **steady 60 fps** with VSync and a frame cap, including on
low-end GPUs. Since v0.6.0 the cap can also go above 60 on a faster display
(see [Above 60 fps](#above-60-fps)).
The N64's game code assumed a **60 Hz vertical-interrupt tick** — it ran a
few ticks per displayed frame. On a PC the CPU is far faster, so left alone
@@ -27,5 +28,28 @@ On very weak integrated GPUs (Atom/Celeron class) the first launch writes
lighter values for draw distance, LOD distance and anti-aliasing into
`ge007.ini` so the game still holds 60 fps.
### Above 60 fps
`Video.FpsCap` (F10, *Frame rate cap*) accepts Auto, 30, 60, 90, 120 and 144.
**Auto** is the default on fresh installs (an existing `ge007.ini` keeps its
value) and matches the display's refresh rate, up to 144; on a 60 Hz display it
is plain 60.
- **The game still simulates at its original 60 Hz (NTSC) tick.** The extra
frames are drawn between two game ticks by blending the previous and current
frame's matrices (camera and objects), so no game state changes.
- **Cost:** one game tick of extra latency.
- **Inert on 60 Hz displays.** The present rate is the lower of the cap and the
display's refresh rate. The *Original N64* display mode caps at 60.
- **Fallbacks:** a fast camera turn or a large change in the visible room set
draws a full (non-blended) frame instead.
- The design comes from f1zz1ec0ke's PR #137; the port reworked it onto the
render worker thread and from a fixed 2x to any present rate, so a 90 Hz
Steam Deck OLED works (D578, D583, D584).
Checked by the maintainer: 120 Hz with VSync on a G-Sync display on PC, and 90
fps on the Steam Deck. Known issue: on the Deck at 90, centre firefights in
Bunker 1/2 can drop several fps, and Jungle can feel slightly less smooth.
*More: [porting notes](porting-notes.md) — the timing-related findings (D13,
D22, D486).*
+32 -7
View File
@@ -1,15 +1,15 @@
---
title: GoldenEye 007 PC Port
# v0.5.0: status bumped from v0.4.0. Description kept short (Bing's 160 limit).
# v0.6.0: status bumped from v0.5.0. Description kept short (Bing's 160 limit).
description: >-
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
decompiled source with a software RSP. v0.6.0 for Windows, Linux and
Steam Deck.
# Freshness signals for jekyll-seo-tag (article:published_time / modified_time
# and the WebPage JSON-LD dates). Keep these equal to the last real content
# change of THIS page, not to the last release.
date: '2026-10-05'
modified_time: '2026-10-07'
modified_time: '2026-10-10'
locale: en_US
# The masthead is this page's title, so its first content h2 must NOT get the
# amber page-title look (double header). See the .flat-title rule in
@@ -32,7 +32,30 @@ Rare "Indy" engine family, one hardware generation apart.
<div class="cblock" markdown="1">
### v0.5.0 (2026-10-07) — split-screen multiplayer, one options menu, closer to the N64.
### v0.6.0 (RELEASE-DATE) — frame rates above 60, experimental macOS, fixes.
- **Frame rates above 60:** the frame cap offers 90, 120 and 144, and **Auto**
(the default on fresh installs) matches your display. Frames between game
ticks are blended; the game still simulates at its original rate. It costs
one game tick of latency and does nothing on a 60 Hz display. A rework of
f1zz1ec0ke's #137. See [framerate and pacing](framerate-and-pacing.md).
- **macOS on Apple Silicon, experimental:** a `macos-arm64` download (not
notarized; run `xattr -dr com.apple.quarantine <folder>` once before the
first launch) or build from source. Based on danturn's #95.
- **Fixes:** geometry vanishing against a wall (#150), the first launch opening
on the wrong monitor (#151), a Linux end-credits crash (#152), a hat-spawn
crash (#153), the Cradle catwalk shadow flicker, and stale pixels beside the
native-widescreen picture.
- **Known issues:** on the Steam Deck at 90 fps, Bunker 1/2 centre firefights
can drop several fps and Jungle can feel slightly less smooth; Cradle's
turret explosions may draw wrongly (not yet investigated).
</div>
<details>
<summary>v0.5.0 (2026-10-07) — split-screen multiplayer, one options menu, closer to the N64</summary>
<div class="cblock" markdown="1">
- **2–4 player split-screen multiplayer** on every multiplayer map, each
player with their own pad, controls and aim settings.
@@ -57,6 +80,7 @@ Rare "Indy" engine family, one hardware generation apart.
look-ahead defaults), and controllers are picked up again when replugged.
</div>
</details>
What remains is a short list, under [Known issues](#known-issues).
@@ -74,7 +98,7 @@ single tracker for what comes next.
<ul>
<li><strong>NTSC-U ROMs only in the release packages.</strong> PAL and JP ROMs convert, build and run from source, but release packages ship the US (NTSC-U) ROM. On the roadmap.</li>
<li><strong>Changing the aspect ratio in a level can briefly glitch the gun/hand model</strong> (cosmetic, one-off). Change the ratio from the front-end PC Options, or accept it (D509).</li>
<li><strong>No macOS or ARM builds yet.</strong> Today the release ships Windows, Linux and Steam Deck (keyboard, mouse and controller-button rebinding are all supported, defaults in the <a href="https://github.com/jkdansereau/goldeneye-pc-port#controls">README's Controls section</a>); macOS and ARM are on the roadmap.</li>
<li><strong>No ARM Linux build; macOS is experimental.</strong> The release ships Windows, Linux and Steam Deck (keyboard, mouse and controller-button rebinding are all supported, defaults in the <a href="https://github.com/jkdansereau/goldeneye-pc-port#controls">README's Controls section</a>). macOS on Apple Silicon is an experimental, not-notarized download (run <code>xattr -dr com.apple.quarantine &lt;folder&gt;</code> before the first launch) or a source build; ARM Linux is on the roadmap.</li>
<li><strong>Saves from v0.4.0 and earlier can hold fake unlocks from <code>All unlocked</code></strong> — <code>All unlocked</code> has not written your save since v0.5.0, but saves made while it was on in v0.4.0 and earlier can hold fake unlocks and are not repaired; back up <code>data/ge007.eep</code> if you used it on an older build (D442, D387).</li>
<li><strong>The first frame of a level takes a little longer</strong> while its textures upload — a brief FPS-counter dip; nothing to fix (D475, D480).</li>
<li><strong>In widescreen, far objects almost fully in fog can still show a faint distant building edge</strong> (4:3 matches the N64). Cosmetic (D503).</li>
@@ -88,7 +112,7 @@ single tracker for what comes next.
<p class="warn"><strong>Warning:</strong> always use the latest release — earlier builds are kept in the release history for reference only; they lack the features and fixes of newer versions, so don't install an older release.</p>
<ul>
<li><strong>2026-10-07 — v0.5.0</strong>: what it adds is the Status list above. <a href="https://github.com/jkdansereau/goldeneye-pc-port/releases/tag/v0.5.0">Release notes</a>.</li>
<li><strong>2026-10-07 — v0.5.0</strong>: split-screen multiplayer, one options menu, closer-to-N64 fog and fidelity fixes, emulator save import. <a href="https://github.com/jkdansereau/goldeneye-pc-port/releases/tag/v0.5.0">Release notes</a>.</li>
<li><strong>2026-09-28 — v0.4.0</strong>: 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. <a href="https://github.com/jkdansereau/goldeneye-pc-port/releases/tag/v0.4.0">Release notes</a>.</li>
<li><strong>2026-09-20 — v0.3.0</strong>: the first release with the complete campaign playable end to end at 60 fps on Windows, Linux, and Steam Deck. <a href="https://github.com/jkdansereau/goldeneye-pc-port/releases/tag/v0.3.0">Release notes</a>.</li>
<li><strong>2026-09-04 → 2026-09-16 — v0.1.0 – v0.2.2</strong>: the alpha and beta cycle — build chain, software RSP, first rendered frames, front end, and per-level stabilization across the campaign.</li>
@@ -104,7 +128,8 @@ single tracker for what comes next.
|---|---|---|
| **Windows** (x86_64) | [win64.zip](https://github.com/jkdansereau/goldeneye-pc-port/releases) | Engine + runtime DLLs + the one-time asset tool. |
| **Linux** (x86_64) / **Steam Deck** | [linux tarball](https://github.com/jkdansereau/goldeneye-pc-port/releases) | SDL2 is bundled, so it runs as-is on any distro, and sideloads onto a Deck with nothing installed. |
| macOS / ARM Linux | — | Roadmap: not shipped yet. |
| **macOS** (Apple Silicon, experimental) | macos-arm64 tarball | SDL2 and the C++ runtime are bundled. Not notarized: run `xattr -dr com.apple.quarantine <folder>` once before the first launch. Tested on one Mac; reports welcome. |
| ARM Linux | — | No download; on the roadmap. |
**Bring your own ROM.** Both bundles contain no ROM and no game assets: you
supply your own GoldenEye 007 N64 ROM (the