diff --git a/.github/release-notes.md b/.github/release-notes.md index d6861cf8..134ef718 100644 --- a/.github/release-notes.md +++ b/.github/release-notes.md @@ -5,238 +5,152 @@ The PC options menu: custom crosshair colour sliders

-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). +> [!NOTE] +> **Updating?** Your progress and settings carry over. Unpack the new version +> into a new folder and copy your ROM, `ge007.eep` and `ge007.ini` into its +> `data/` folder. Leave the old `pcmodels-*` and `pccg-*` folders behind; the +> new version makes its own. + +> [!NOTE] +> The downloads aren't code-signed. On Windows, if SmartScreen appears, click +> **More info**, then **Run anyway**. On macOS, see [Getting started](#getting-started). ## Highlights -This release is v0.5.0 plus frame rates above 60, an experimental macOS port -and a batch of fixes. - -- **Frame rates above 60.** The *Frame rate cap* (`Video.FpsCap`) now offers - **90, 120, 144, 165 and 240**, and an **Auto** setting that matches your - display's refresh rate (up to 240). 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 +- **Frame rates above 60.** Pick 90, 120, 144, 165 or 240, or **Auto** to + match your display (up to 240). The game still runs at its original speed; + the extra frames are blended between its ticks. A rework of f1zz1ec0ke's + #137. +- **macOS on Apple Silicon (experimental).** A new download for M1 and later + Macs, based on danturn's #95. Tested on one M3 Mac so far; reports are 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, #156). - **Original controls are now original (#145, #149).** With *Control style* - set to Original, a gamepad behaves as an N64 controller: South is A, West is - B, and the game decides what each button does, so B opens a door or reloads - (not both), A changes weapon, and B goes back in menus. *Invert look* works in - every original style and stays in sync with the watch's *Look up/down*. -- **Mission timer (#144)**, the file-select crest drawing on a dark square + set to Original, your pad behaves as an N64 controller, and *Invert look* + works in every original style. +- **Fixes:** geometry vanishing up close (#150), the first launch opening on + the wrong monitor (#151), the Linux end-credits crash (#152) and a crash when + a guard spawns with a hat (#153, #156). +- **Also:** an optional mission timer (#144), the file-select crest fixed (#146), and a fix for a Windows exit crash. -Checked on PC at 120 Hz with VSync on a G-Sync display, and on the Steam Deck -at 90 fps. - ---- - -## What's new - -### Frame rate - -- **Auto, 90, 120, 144, 165 and 240** 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, a 144 Hz - monitor at 144 and a 240 Hz monitor at 240 (faster displays hold at 240). - 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). - -### macOS (Apple Silicon, experimental) - -- 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. -- There is a `macos-arm64` download, or build from source with Homebrew's - GNU `gcc`. The x86_64 macOS code (Julio C. Rocha's #88) is in the tree but was never - verified on Intel hardware. - -### Controls - -- **Original control style = an N64 controller** (D643). Every press sends the - real N64 button in levels, menus, the watch and the tank; no port-only - actions are added. Default layout: South = A, West = B, right trigger = Z, - left trigger / RB = R, LB = L, right stick = C-buttons, D-pad and Start as - is. Each N64 button can be moved per player in `ge007.ini` - (`Input.N64Pad.A = a`, `Input.N64Pad2.B = x`, ...). `Input.N64StickFeel = 1` - (default in Original) gives the N64's linear stick range; 0 keeps the - previous feel. The Modern style and keyboard/mouse are unchanged. -- **Invert look** reaches every original style (D605) and, in Original, is the - same setting as the watch's *Look up/down* (D645). - -### Settings and diagnostics - -- **Mission timer** (D606, #144): an optional always-visible timer, off by - default (F10). -- F10 dropdowns stay inside the settings box instead of covering the help - text (D646). -- Windows: per-monitor DPI awareness, so fullscreen on a scaled 4K display is - native resolution (D626); exclusive fullscreen uses the desktop mode (D639). - -- 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). - ---- - -## Install and upgrade - -### Downloads +## Downloads | File | Platform | |---|---| -| `goldeneye-pc-port--win64.zip` | Windows x86-64 | -| `goldeneye-pc-port--linux-x86_64.tar.gz` | Linux x86-64 (incl. Steam Deck) | -| `goldeneye-pc-port--macos-arm64.tar.gz` | macOS Apple Silicon, experimental | +| `goldeneye-pc-port--win64.zip` | Windows 10/11, 64-bit | +| `goldeneye-pc-port--linux-x86_64.tar.gz` | Linux x86-64 (glibc 2.31+), including Steam Deck | +| `goldeneye-pc-port--macos-arm64.tar.gz` | macOS 14+ on 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). The macOS bundle carries SDL2 and the C++ runtime and -needs an M1 or later Mac on macOS 14 or newer. +Each download is ready to run: it carries its runtime libraries, a README, +the license texts and the one-time asset tool. **No ROM and no game assets +are included; you need your own US GoldenEye 007 ROM.** -### Running it +## Getting started -You need your own **GoldenEye 007 N64 ROM** (US version, `.z64`). - -1. Unpack the archive. -2. Make a `data/` folder next to the executable and put the ROM in it, named +1. Unpack the download. +2. Make a `data/` folder next to the executable and put your ROM in it as `ge007.ntsc-final.z64`. -3. Run the executable from that folder. The first start takes a few extra - seconds while it generates its asset files from your ROM. +3. Start the game. The first start takes a few extra seconds while it prepares + the game files from your ROM. **F10** (controller: **Select**) opens the + options menu. -**Updating from an earlier version:** unpack into a new folder and copy your -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. +**Steam Deck:** do the steps on the Deck, then add the executable as a +non-Steam game. -**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: +**macOS:** the app isn't notarized, so run this once in Terminal before the +first launch, then start `./ge007.aarch64` from the folder. If the window ever +stays black on the first start, close it and start it again. ``` xattr -dr com.apple.quarantine goldeneye-pc-port--macos-arm64 ``` -Or download it in Terminal, which skips the block entirely (`curl` does not -mark the file for Gatekeeper): +Or download it in Terminal, which skips that step: ``` curl -L https://github.com/jkdansereau/goldeneye-pc-port/releases/download/v/goldeneye-pc-port--macos-arm64.tar.gz | tar xz ``` -Without Terminal: after the first launch is blocked, open System Settings → +Without Terminal: after macOS blocks the first launch, open System Settings → Privacy & Security and click **Open Anyway** next to the `ge007.aarch64` message. -I have only run it on one M3 Mac, so please report what Mac and macOS you -tried and what happened. +The [user guide](https://github.com/jkdansereau/goldeneye-pc-port/blob/release/v0.6.0/docs/user-guide.md) +covers controls, settings, emulator saves and troubleshooting. -**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. +## What's new -Full steps, controls and troubleshooting are in the bundled `README.md`. +### Added ---- +- **Frame rate cap:** Auto, 90, 120, 144, 165 and 240 join 30 and 60 (F10 → + *Video*). Auto is the default on fresh installs; an existing `ge007.ini` + keeps its value. Above 60 the extra frames are blended between game ticks + (no effect on a 60 Hz display), which adds one tick of latency; a fast camera turn or a big change on screen + shows a full frame instead. The *Original N64* display mode keeps 60. +- **macOS Apple Silicon download** (experimental), plus source builds with + Homebrew's GNU `gcc`. +- **Original control style as an N64 controller:** every press sends the real + N64 button in levels, menus, the watch and the tank. Default layout: South = + A, West = B, right trigger = Z, left trigger / RB = R, LB = L, right stick = + C-buttons. Each button can be moved per player in `ge007.ini` + (`Input.N64Pad.A = a`, ...), and `Input.N64StickFeel` picks the N64's linear + stick range. +- **Mission timer** (#144): an optional always-visible timer, off by default. +- **`ge007.log`:** every run is logged next to the ini; the previous run is + kept as `ge007.prev.log`. + +### Fixed + +- Geometry vanishing when you stand against a wall (#150). +- The first launch opening on the wrong monitor (#151). +- A Linux crash during the end credits (#152). +- A crash when a guard spawns wearing a hat (#153, #156). +- The file-select crest drawing on a dark square (#146). +- *Invert look* now works in every original control style and stays in sync + with the watch's *Look up/down* (#145). +- A crash on exit on some Windows GPUs. +- The Cradle catwalk shadow flicker, and stale pixels beside the widescreen + picture on front-end screens. +- Sound and text pointer checks that rejected valid pointers (#108, with + italoarruda). +- The Linux/macOS update check failing on a large response. +- F10 slider labels being cut off at HUD scale 150. + +### Changed + +- Windows: per-monitor DPI awareness, so fullscreen on a scaled 4K display is + native resolution; exclusive fullscreen uses the desktop mode. +- F10 dropdowns stay inside the settings box. +- The crosshair look (colour, size, style) is no longer reset by the *Display + mode* presets. +- The old front-end *Velocity* pointer mode is removed. ## Known issues -| 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 | -| After alt-tabbing away, the picture can look hazy until it settles; fast repeated alt-tab is wonkier and takes longer | Cosmetic, Windows | It recovers on its own; alt-tab again or give it a couple of seconds | -| macOS: the end credits may crash | Ending only, macOS only | Your progress is already saved by then | -| macOS (Apple Silicon) is experimental, tested on one Mac, and not notarized | Platform | Run `xattr -dr com.apple.quarantine ` 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 | -| 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 | +| Issue | Workaround | +|---|---| +| On the Steam Deck at 90 fps, firefights in the centre of Bunker 1 and 2 can drop a few fps, and Jungle can feel slightly less smooth | Set the frame cap to 60 for those levels | +| Cradle's turret explosions may draw wrongly | None yet | +| On Windows, the picture can look hazy for a moment after alt-tabbing back | It settles on its own | +| macOS: the end credits may crash | Your progress is already saved by then | +| PAL and JP ROMs aren't supported yet | Use the US (NTSC-U) ROM | +| Saves from v0.4.0 and earlier can hold fake unlocks from *All unlocked* | Keep a backup of `data/ge007.eep` from before you used it | -Faithful original-game quirks are not port bugs. The full list, with -workarounds, is the +The full list is the [known-issues table](https://github.com/jkdansereau/goldeneye-pc-port/blob/main/docs/ROADMAP.md#known-issues). ---- +## Tested on -## Fixes and changes, with finding labels - -- **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, #156** hat-spawn crash: the object record type and the end-of-list - marker were read from the wrong byte on a little-endian machine, so the search - could run past the end of the list (D580). -- **#108** SFX / text-bank pointer guards (D573). -- **#145 / #149** Original control style as an N64 controller (D643); Invert - look in the original styles (D605, D645). -- **#144** mission timer (D606). -- **#146** file-select crest on a dark square: 4-bit IA textures now decode as - the N64 does (D644). -- **Exit crash (BSOD 0x119) on some Windows GPUs:** the GL context and window - are released before the process exits (D632). -- Windows DPI awareness (D626), exclusive fullscreen mode (D639), F10 dropdown - placement (D646). -- 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 - -Windows: the 21-level reference-frame sweep passes (Streets sits at the edge of -its tolerance and flips run to run with or without this release's changes). -Steam Deck and macOS: all 21 levels load, play and quit without a crash (their -reference frames are not yet comparable, so no pixel check). The fixes above -were also checked by playing on Windows, with the original controls compared -against the issue reports rather than an N64 pad. +The release downloads themselves, from a fresh folder with only the ROM: all +21 solo levels on Windows (at 120 fps), the Steam Deck (Desktop and Game +Mode, at 90), macOS on Apple Silicon, and a 2011 Linux laptop with Intel HD +3000 graphics (at 60). ## Thanks 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. +italoarruda (#108), and everyone who reported the issues above. ## Verify the download @@ -244,16 +158,13 @@ credits on the issue numbers named above. sha256sum -c goldeneye-pc-port--win64.zip.sha256 sha256sum -c goldeneye-pc-port--linux-x86_64.tar.gz.sha256 shasum -a 256 -c goldeneye-pc-port--macos-arm64.tar.gz.sha256 # macOS +gh attestation verify --repo jkdansereau/goldeneye-pc-port # build provenance ``` -## Source & docs +--- -, built on the -[GoldenEye 007 decompilation](https://github.com/n64decomp/007), with its -architecture modelled on the [Perfect Dark PC port](https://github.com/fgsfdsfgs/perfect_dark). -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. See the README's -[How it was made](https://github.com/jkdansereau/goldeneye-pc-port#how-it-was-made) -section for the full account. +Built on the [GoldenEye 007 decompilation](https://github.com/n64decomp/007) +and modelled on the [Perfect Dark PC port](https://github.com/fgsfdsfgs/perfect_dark). +A non-commercial fan project, not affiliated with any rights holder. Developed +with AI coding agents directed by one maintainer; see +[About the project](https://github.com/jkdansereau/goldeneye-pc-port/blob/release/v0.6.0/docs/about.md#how-it-was-made). diff --git a/README.md b/README.md index 5271ba2a..0032f2d5 100644 --- a/README.md +++ b/README.md @@ -1,177 +1,86 @@ -# GoldenEye 007 PC Port +

+ GoldenEye 007 PC Port +

-[![CI](https://github.com/jkdansereau/goldeneye-pc-port/actions/workflows/ci.yml/badge.svg)](https://github.com/jkdansereau/goldeneye-pc-port/actions/workflows/ci.yml) -[![Latest release](https://img.shields.io/github/v/release/jkdansereau/goldeneye-pc-port?include_prereleases&label=download)](https://github.com/jkdansereau/goldeneye-pc-port/releases) -![Platforms](https://img.shields.io/badge/platforms-Windows%20%7C%20Linux%20%7C%20Steam%20Deck-blue) -![license](https://img.shields.io/badge/license-MIT-ffb454) +

GoldenEye 007 PC Port

-**GoldenEye 007 (Nintendo 64, 1997) as a native PC game for Windows, Linux -and Steam Deck.** Native widescreen, 60 fps or higher (up to 240 on fast -displays), split-screen for up to 4 players, 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 -[GoldenEye 007 decompilation](https://github.com/n64decomp/007), compiled -for your PC and running from your own ROM. +

+ The original Nintendo 64 GoldenEye 007 (1997) as a native game for Windows, + Linux, Steam Deck and macOS. +

-**[Download the latest release](https://github.com/jkdansereau/goldeneye-pc-port/releases)**, -then follow the [Quick start](#quick-start). +The GoldenEye 007 PC Port is a native port built from the game's own +reconstructed source code (the [GoldenEye 007 decompilation](https://github.com/n64decomp/007)), +in the same family as the [Perfect Dark PC port](https://github.com/fgsfdsfgs/perfect_dark). +It is not an emulator: the game is compiled for your PC and runs from your own +ROM, with native widescreen, 60 fps or more (up to 240 on fast displays), +mouse and keyboard or a modern controller, split-screen for up to 4 players, +and an in-game options menu. -[Quick start](#quick-start) · [What it offers](#what-this-port-offers) · [Controls](#controls) · [Features](#features) · [Settings and files](#settings-and-files) · [Troubleshooting](#troubleshooting) · [Roadmap](#roadmap) · [Building](#building-from-source) · [Legal](#legal) +### [Download the latest release](https://github.com/jkdansereau/goldeneye-pc-port/releases/latest) -> [!IMPORTANT] -> **You must supply your own GoldenEye 007 ROM.** This repository and its -> downloads contain no ROM data and none of the original assets; the C source -> is the community's reconstruction of the game's code (see `NOTICE`). See -> [What's a ROM?](#whats-a-rom) and [Legal](#legal). - -**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, a notarized macOS build) and the occasional -breaking change between versions. v1.0 is the target for a feature-complete -build. - -**AI disclosure:** this port was developed using AI coding agents (Claude -Code and a local open-weight model), directed by one person in their spare time. The -project is as much a study of that process as it is a port. See -[How it was made](#how-it-was-made). +**This repository and its downloads contain no ROM data and none of the +original game assets. You need your own GoldenEye 007 ROM (US version) to play.**

~29 s gameplay montage from live v0.5.0 play sessions -
All in-engine, running in the port: a ~29 s montage from live - v0.5.0 play sessions (the Facility intro, auto-aim in the Archives, - the crosshair options and the Dam sniper rifle, Silo, a 2-player rocket kill, - the Facility bathroom, the Dam ending) · - 14 stills in the project index + alt="A short gameplay montage recorded in the port"> +
Recorded in the port: the Facility intro, the Archives, the Dam + sniper rifle, Silo, a 2-player match and the Dam ending.

---- +## Table of contents -## News +- [Requirements](#requirements) +- [Quick start](#quick-start) +- [Controls](#controls) +- [What this port offers](#what-this-port-offers) +- [FAQ](#faq) +- [Status](#status) +- [Roadmap](#roadmap) +- [Building from source](#building-from-source) +- [Documentation](#documentation) +- [Contributing and forking](#contributing-and-forking) +- [Credits](#credits) +- [Legal](#legal) -- **2026-10-13** — **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, 144, 165 and - 240, and an **Auto** setting (the new default on fresh installs) that - matches your display's refresh rate, up to 240. 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).** There is now a `macos-arm64` - download (or build from source; see [Building](docs/building.md)). Based - on danturn's #95 (with Julio C. Rocha's earlier Intel groundwork in - #88). A campaign sweep and live sessions ran without crashes on one M3 - Mac; the download is not notarized, so see [macOS](#macos-apple-silicon-experimental) - for the one-line unblock. Test reports are very welcome. - - **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, #156), a - sound/text pointer check that rejected valid pointers (#108), a Cradle - catwalk shadow flicker, and stale watch pixels in native widescreen. - - **Original controls (#145, #149):** with *Control style* set to Original, - a gamepad now behaves as an N64 controller (South = A, West = B, the game - decides what each does), and *Invert look* works in every original style. - Also an optional mission timer (#144), the file-select crest no longer - drawing on a dark square (#146), and a Windows exit-crash fix. - - **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: - - **Split-screen multiplayer for up to 4 players**, each player with their - own pad, controls and aim settings. - - **One options menu** for every setting, laid out like the Perfect Dark - port's, with the game's own crosshair as the mouse pointer. Pick the - game's own N64 control styles (1.1–2.4) per player, or the Xbox release's - presets with per-player pad rebinding; PlayStation and Nintendo pads show - their own button names. - - **Closer to the N64:** fog and haze (Surface 2's ground fog, the sky at - the horizon), automatic-weapon fire rate, sniper and camera zoom, Dam and - Caverns water, the Jungle boss fight's timing, guard visibility in - widescreen, and the Dam ending camera. - - **Fewer crashes and glitches:** a multiplayer crash with the crouched - rifle, rockets passing through the ground, and broken geometry around - Aztec's shuttle. - - **A steady 60 fps on low-end GPUs** (tested on an Intel HD 3000 laptop), - with lighter first-launch defaults on Atom/Celeron-class graphics. - - **Emulator saves load directly:** copy a 1964 or Project64 save in as - `data/ge007.eep` and it is converted on first launch. - - Also: more audio, video and control settings (master volume, audio device, - trilinear filtering, draw distance up to 800%, PC-friendly crouch and - look-ahead defaults), and controllers are picked up again when replugged. -- **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](https://github.com/jkdansereau/goldeneye-pc-port/releases/tag/v0.4.0). -- **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](https://github.com/jkdansereau/goldeneye-pc-port/releases/tag/v0.3.0). -- **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. +## Requirements ---- - -## System requirements - -**Windows:** Windows 10 or 11, 64-bit. Nothing else to install: the -download carries its own runtime libraries and the one-time asset tool (no -Python, no emulator). - -**Linux / Steam Deck:** 64-bit x86 Linux with glibc 2.31 or newer (Ubuntu -20.04+, Debian 11+, Fedora 32+, SteamOS). SDL2 is bundled, so -the tarball runs as-is; it sideloads onto a Steam Deck with nothing installed. - -**Both:** a GPU with OpenGL 3.0 drivers (practically any PC GPU from the last -fifteen years; keep the driver up to date). A 2011 laptop with Intel HD -3000 graphics holds 60 fps; on very weak integrated GPUs (Atom/Celeron class) -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. - -**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). +- **Windows:** Windows 10 or 11, 64-bit. Nothing to install: the download + carries its own runtime libraries and the one-time asset tool. +- **Linux and Steam Deck:** 64-bit x86 Linux with glibc 2.31 or newer (Ubuntu + 20.04+, Debian 11+, Fedora 32+, SteamOS). SDL2 is bundled. +- **macOS (experimental):** an Apple Silicon Mac (M1 or later) on macOS 14 or + newer. +- **Graphics:** OpenGL 3.0 (practically any PC GPU from the last fifteen + years). A 2011 laptop with Intel HD 3000 graphics holds 60 fps. +- **Input:** keyboard and mouse, or an Xbox, PlayStation, Switch or other + SDL-supported controller; split-screen needs one controller per extra player. ## Quick start -1. From [Releases](https://github.com/jkdansereau/goldeneye-pc-port/releases), - download the **win64.zip** (Windows) or the **linux tarball** (Linux and - Steam Deck), and extract it. On Windows, never run the exe from inside the - zip. +1. Download the build for your system from + [Releases](https://github.com/jkdansereau/goldeneye-pc-port/releases/latest) + and extract it. On Windows, don't run the exe from inside the zip. 2. Make a `data/` folder next to the executable and put your ROM in it as - `ge007.ntsc-final.z64`. Only the **US (NTSC-U)** ROM works today; see - [What's a ROM?](#whats-a-rom) to check yours. -3. Launch the executable from that folder. Windows may show "Windows - protected your PC" (SmartScreen, because the exe is not code-signed): - click **More info**, then **Run anyway**. -4. The first start takes a few extra seconds: the port reads your ROM and - generates its asset files once. After that it starts normally. -5. Play. **F10** (pad: **Select**) opens the options overlay; on the file-select - screen the *PC Options* entry opens the same overlay. The - [Controls](#controls) table lists the default keys. - -**Steam Deck:** the Linux tarball is the Deck build. Download it on the Deck -(or copy it over from your PC), extract it, add your ROM to `data/`, launch -it once, and add the executable as a non-Steam game. On first start it -applies Deck-friendly display defaults (native 1280×800 fullscreen); if the -resolution is wrong, set it under F10 → *Video → Resolution*. - ---- + `ge007.ntsc-final.z64` (US version; [check your ROM](docs/user-guide.md#whats-a-rom)). +3. Launch the game. The first start takes a few extra seconds while it + prepares the game files from your ROM. + - **Windows:** if SmartScreen appears (the exe isn't code-signed), click + **More info**, then **Run anyway**. + - **Steam Deck:** add the executable as a non-Steam game. It starts in + native 1280x800 fullscreen. + - **macOS:** run `xattr -dr com.apple.quarantine ` once in + Terminal, then start `./ge007.aarch64` + ([details](docs/user-guide.md#macos-apple-silicon-experimental)). +4. Play. **F10** (controller: **Select**) opens the options menu. ## Controls | Action | Keyboard / mouse | Controller | |---------------------|--------------------------|---------------| | Move / strafe | `W` `A` `S` `D` | Left stick (or D-pad) | -| Move / turn | Arrow keys | — | +| Move / turn | Arrow keys | - | | Aim / look | Mouse | Right stick | | Fire | Left mouse | Right trigger | | Aim mode | Right mouse / `LShift` | Left trigger / LB | @@ -180,72 +89,14 @@ resolution is wrong, set it under F10 → *Video → Resolution*. | Crouch (toggles) | `LCtrl` | Left or right stick click | | Cycle owned gadgets | Watch inventory | B | | Next weapon | Mouse wheel down / `Q` | Y | -| Previous weapon | Mouse wheel up | — | +| Previous weapon | Mouse wheel up | - | | Start | `Enter` / `Tab` | Start | -| Options overlay | `F10` | Select | +| Options menu | `F10` | Select | -The keyboard defaults are a GEPD-style layout. The controller layout matches -Rare's Xbox 1.1 (Jinx) button roles; the other Xbox styles (1.2 Christmas, -1.3 Frost, 1.4 Elektra, which swap the stick roles) are selectable under -*Controller* (pick a player first, then *Layout preset*). PlayStation and Nintendo controllers -show their own button names in the menus. - -**Control style:** *Controller → Control style* (named after the watch's own -setting, with Perfect Dark's "Ext" for the port's controls) picks how the -game's controller style (the watch's 1.1–1.4 selector) is treated. **Ext** -(the default) keeps the port's feel and fixes the style itself, so the watch's -selector has no effect. **Original** stops the port from touching the style: -pick 1.1, 1.2, 1.3 or 1.4 on the watch (or in the multiplayer setup) and it -behaves as on the N64, and the Controller page then offers the game's own -styles ("Controller style", 1.1 Honey to 2.4 Goodhead, saved in the Bond file -like the watch's) instead of the layout presets, which apply in Ext only. Buttons are passed -through as the N64's buttons, so 1.3 and 1.4 move fire and aim exactly as the -console does. The 2.x dual-controller styles run faithfully too: the game -reads their second stick from the next controller slot, which the port does not -map yet (a second pad assigned to that slot should provide it, untested), so with -one pad pick a 1.x style. Saves made with earlier builds may hold 1.2 (the port wrote its -forced style back into the save), so when you switch to the Original control style, pick -your style on the watch once. - -In the Original control style the pad is a strict virtual N64 controller in -every context (stage, menus, watch, tank): each press sends the native N64 -button and the game decides what it means (so *B* uses a door or reloads, as -on the console). Default layout, remappable per player in the ini -(`Input.N64Pad.