mirror of
https://github.com/jkdansereau/goldeneye-pc-port.git
synced 2026-10-24 00:02:45 +02:00
v0.6.0: license texts in every download; README/NOTICE wording pass
- The Windows and Linux bundles shipped without the GCC runtime and SDL2 license texts when the build machine lacked them (CI's MSYS2 has no share/licenses/gcc-libs; CI's Linux image has no dpkg). bundle-win.sh, bundle-linux.sh and package-macos.sh now fall back to in-tree copies: tools_pc/dist/GPL-3.0.txt, GCC-RUNTIME-EXCEPTION.txt, SDL2-LICENSE.txt. - NOTICE / README: say the repository and downloads carry no ROM data or original assets and that the C source is a reconstruction (not "no Nintendo code"); describe the license-text sources. - README: "What this port offers"; split-screen for up to 4 players; the few game-code changes keep N64 behavior or are opt-in; neutral wording for the comparison with the XBLA recompilation projects (rows about their status and motives removed); verification approach stated; release notes drop the 165/240 testing caveat.
This commit is contained in:
1 parent
162691a3f5
commit
cdf43d0140
9 files changed
+151
-46
No files matched your search
@@ -16,8 +16,7 @@ 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; 165 and 240 have had less testing than
|
||||
90 to 144). Auto is the default on fresh installs; an existing
|
||||
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*
|
||||
|
||||
@@ -29,8 +29,11 @@ their own licenses; each license text ships in the download's licenses/ folder:
|
||||
* Windows: the MinGW-w64 runtime (libwinpthread, libgcc, libstdc++).
|
||||
* macOS: the GCC runtime (libgcc_s, libstdc++) - GPL-3.0 with the GCC
|
||||
Runtime Library Exception 3.1. The GPL-3.0 text the macOS package ships
|
||||
is tools_pc/dist/GPL-3.0.txt (the Homebrew gcc keg carries only the
|
||||
exception text and GPL-2.0).
|
||||
is tools_pc/dist/GPL-3.0.txt.
|
||||
|
||||
The license texts the downloads carry come from the build environment where
|
||||
it provides them, otherwise from tools_pc/dist/ (GPL-3.0.txt,
|
||||
GCC-RUNTIME-EXCEPTION.txt, SDL2-LICENSE.txt).
|
||||
|
||||
Vendored build tooling keeps its own license (none of it is compiled or linked
|
||||
into the PC port; it belongs to the N64 decompilation build):
|
||||
@@ -61,11 +64,13 @@ It does NOT cover:
|
||||
assets -- textures, audio, models, level geometry, in-game text -- are
|
||||
NOT included and are extracted from your own ROM at build time.
|
||||
|
||||
NO NINTENDO / RARE CONTENT IS DISTRIBUTED HERE
|
||||
---------------------------------------------
|
||||
NO ROM DATA OR ORIGINAL ASSETS ARE DISTRIBUTED HERE
|
||||
--------------------------------------------------
|
||||
|
||||
This repository contains NO copyrighted ROM data, game assets (textures,
|
||||
models, levels, audio, text), or Nintendo/Rare code. Building a playable
|
||||
This repository contains NO ROM data and none of the original game assets
|
||||
(textures, models, levels, audio, text), and no original Nintendo/Rare
|
||||
binaries. The C source under src/ is the decompilation community's
|
||||
reconstruction of the game's code (see above). Building a playable
|
||||
executable requires a GoldenEye 007 Nintendo 64 ROM that you legally own;
|
||||
the build extracts the required assets from that ROM on your own machine.
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
**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), 2–4 player split-screen, mouse and keyboard or a modern controller, rebindable controls
|
||||
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
|
||||
@@ -17,11 +17,12 @@ for your PC and running from your own ROM.
|
||||
**[Download the latest release](https://github.com/jkdansereau/goldeneye-pc-port/releases)**,
|
||||
then follow the [Quick start](#quick-start).
|
||||
|
||||
[Quick start](#quick-start) · [Why this port](#why-play-this-port) · [Controls](#controls) · [Features](#features) · [Settings and files](#settings-and-files) · [Troubleshooting](#troubleshooting) · [Roadmap](#roadmap) · [Building](#building-from-source) · [Legal](#legal)
|
||||
[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)
|
||||
|
||||
> [!IMPORTANT]
|
||||
> **You must supply your own GoldenEye 007 ROM.** This repository and its
|
||||
> downloads contain no Nintendo code or assets, and no ROM. See
|
||||
> 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
|
||||
@@ -85,8 +86,8 @@ project is as much a study of that process as it is a port. See
|
||||
- **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:
|
||||
- **2–4 player split-screen multiplayer** on every multiplayer map, each
|
||||
player with their own pad, controls and aim settings.
|
||||
- **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
|
||||
@@ -246,10 +247,7 @@ left/right adjusts the selected value, **A** opens a page or toggles a row,
|
||||
again) closes. With a keyboard, use `F10`, the arrow keys, Enter and
|
||||
Backspace.
|
||||
|
||||
## Why play this port
|
||||
|
||||
The questions people ask most about playing GoldenEye today, and how this
|
||||
port answers them:
|
||||
## What this port offers
|
||||
|
||||
- **Real 60 fps, not a speed hack.** The game's logic counts time in 60 Hz
|
||||
ticks. On the N64 it only drew a frame every 2–3 ticks (20–30 fps); here it
|
||||
@@ -272,25 +270,26 @@ port answers them:
|
||||
presets. If you want the N64 exactly, the **Original** control style turns the
|
||||
pad into a strict virtual N64 controller.
|
||||
- **The whole game.** All 20 solo missions and the credits, with every
|
||||
difficulty, 007 mode and the cheats, plus 2–4 player split-screen on every
|
||||
multiplayer map. Your emulator saves (1964, Project64) load directly.
|
||||
difficulty, 007 mode and the cheats, plus split-screen multiplayer for up to
|
||||
4 players. Your emulator saves (1964, Project64) load directly.
|
||||
- **Faithful by construction.** It is the game's own reconstructed source
|
||||
compiled natively, not an emulator and not a remake, so levels, guards and
|
||||
weapons behave the way the N64 cartridge does. The **Original N64** display
|
||||
preset switches every visual improvement off at once.
|
||||
weapons behave the way the N64 cartridge does. The few changes to game code
|
||||
either keep that N64 behavior where the PC would otherwise differ (frame
|
||||
rate, widescreen, compiler) or are opt-in extras, and the **Original N64**
|
||||
display preset switches every visual improvement off at once.
|
||||
- **Modern display options:** native widescreen at any aspect ratio, high
|
||||
resolutions, MSAA, adjustable FOV and draw distance, and HUD scaling.
|
||||
- **Windows, Linux, Steam Deck and (experimental) macOS** from one download
|
||||
page, with an in-game options menu on F10 or the pad's Select button.
|
||||
|
||||
What it doesn't do (yet): bots, online play, new or enlarged multiplayer maps,
|
||||
mod support, and PAL/JP ROMs are not part of this release. See the
|
||||
Bots, online play, mod support and PAL/JP ROMs are on the
|
||||
[Roadmap](#roadmap).
|
||||
|
||||
## Features
|
||||
|
||||
- **2–4 player split-screen multiplayer** on every MP map, with the N64's own
|
||||
setup flow and per-player HUD.
|
||||
- **Split-screen multiplayer for up to 4 players**, with the N64's own setup
|
||||
flow and per-player HUD.
|
||||
- **Native widescreen** at any aspect ratio: the world is undistorted, the HUD
|
||||
sits at the screen edges, and 4:3 menus are pillarboxed. FOV and draw/LOD
|
||||
distance are adjustable, and AI behaviour stays as on the N64 whatever you
|
||||
@@ -299,7 +298,7 @@ mod support, and PAL/JP ROMs are not part of this release. See the
|
||||
between *Modern* and *Original N64* (it reads *Custom* once you edit a setting it covers),
|
||||
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.
|
||||
the low-end GPUs I test on.
|
||||
- **Frame rates above 60:** 90, 120, 144, 165 or 240 fps, or **Auto** to match
|
||||
your display (up to 240). 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
|
||||
@@ -536,7 +535,9 @@ the 21-level sweep, the ABI finding catalog, SDL input, front end. The two
|
||||
handed work back and forth through shared written notes. Up to v0.5.0: 51
|
||||
days (16 Aug – 6 Oct), 1,537 commits (the public history squashes the
|
||||
v0.4.1–v0.5.0 work into 17), and 419 findings root-caused and logged
|
||||
(`D1`–`D564`).
|
||||
(`D1`–`D564`). Every change is checked by comparing captured frames from all
|
||||
21 solo levels against reference images, crash sweeps on Windows, Linux,
|
||||
Steam Deck and macOS, and play-testing; there is no unit-test suite.
|
||||
|
||||
The full write-up (timeline, handoff mechanism, effort breakdown, an honest
|
||||
"what worked / what didn't"): [`docs/dev/agentic-development.md`](docs/dev/agentic-development.md).
|
||||
@@ -547,20 +548,17 @@ repository" menu).
|
||||
## How this differs from the other GoldenEye PC projects
|
||||
|
||||
This is a native port of the original 1997 Nintendo 64 game, built from its
|
||||
actual reconstructed source code, the same lineage as the Perfect Dark PC
|
||||
port. The other well-known "GoldenEye on PC" projects are something
|
||||
different: they machine-translate the shipped binary of the *unreleased Xbox
|
||||
360 XBLA remaster*, a different game on a different codebase with no shared
|
||||
code with this one.
|
||||
reconstructed source code, the same lineage as the Perfect Dark PC port.
|
||||
Other GoldenEye PC projects take a different approach: they statically
|
||||
recompile the Xbox 360 XBLA remaster, a separate version of the game with its
|
||||
own codebase. The two don't share code, and they target different versions
|
||||
of the game.
|
||||
|
||||
| | This project | The other well-known "GoldenEye on PC" recompilation projects (and their Steam Deck builds) |
|
||||
| | This project | The XBLA recompilation projects |
|
||||
|---|---|---|
|
||||
| **What it ports** | The original **Nintendo 64** game (1997) | The **Xbox 360 XBLA** HD remaster (built ~2007, never released) |
|
||||
| **How** | Decompilation-based source port: human-reconstructed C, compiled for the host; game logic runs as written | Static binary recompilation: the shipped machine code is auto-translated to C; 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 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 |
|
||||
| **What it ports** | The original **Nintendo 64** game (1997) | The **Xbox 360 XBLA** remaster |
|
||||
| **How** | Decompilation-based source port: reconstructed C, compiled for the host | Static recompilation of the Xbox 360 executable |
|
||||
| **Lineage** | [GoldenEye 007 decompilation](https://github.com/n64decomp/007) + [Perfect Dark PC port](https://github.com/fgsfdsfgs/perfect_dark) engine family | The Xbox 360 static-recompilation family |
|
||||
|
||||
---
|
||||
|
||||
|
||||
+2
-2
@@ -57,8 +57,8 @@ Rare "Indy" engine family, one hardware generation apart.
|
||||
|
||||
<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.
|
||||
- **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
|
||||
|
||||
@@ -177,12 +177,10 @@ for d in /opt/homebrew/opt/sdl3/LICENSE.txt /opt/homebrew/opt/sdl3/share/license
|
||||
if [ -f "$d" ]; then cp "$d" "$OUT/licenses/SDL3.txt"; break; fi
|
||||
done
|
||||
# The bundled libgcc_s / libstdc++ are GPL-3.0 with the GCC Runtime Library
|
||||
# Exception. The Homebrew gcc keg carries COPYING.RUNTIME but only GPL-2.0 as
|
||||
# COPYING, so the GPL-3.0 text ships from the tree.
|
||||
# Exception. The Homebrew gcc keg carries only GPL-2.0 as COPYING, so both
|
||||
# texts ship from the tree.
|
||||
cp tools_pc/dist/GPL-3.0.txt "$OUT/licenses/gcc-COPYING3.txt"
|
||||
if [ -f /opt/homebrew/opt/gcc/COPYING.RUNTIME ]; then
|
||||
cp /opt/homebrew/opt/gcc/COPYING.RUNTIME "$OUT/licenses/gcc-COPYING.RUNTIME.txt"
|
||||
fi
|
||||
cp tools_pc/dist/GCC-RUNTIME-EXCEPTION.txt "$OUT/licenses/gcc-COPYING.RUNTIME.txt"
|
||||
ls "$OUT/licenses"
|
||||
|
||||
# --- save converter + asset-prep tool (same assembly as bundle-linux.sh) ---
|
||||
|
||||
@@ -95,6 +95,8 @@ cp LICENSE "$OUT/licenses/LICENSE-port-MIT.txt"
|
||||
# it exists (Debian/Ubuntu), skip silently elsewhere.
|
||||
SDL2_LIC="$(dpkg -L libsdl2-2.0-0 2>/dev/null | grep -m1 '/copyright$' || true)"
|
||||
[ -n "$SDL2_LIC" ] && [ -f "$SDL2_LIC" ] && cp "$SDL2_LIC" "$OUT/licenses/SDL2.txt"
|
||||
# No dpkg (CI's build image): ship the zlib text from the tree.
|
||||
if [ ! -f "$OUT/licenses/SDL2.txt" ]; then cp tools_pc/dist/SDL2-LICENSE.txt "$OUT/licenses/SDL2.txt"; fi
|
||||
|
||||
# --- save converter (D492): emulator .eep <-> port .eep, stdlib-only -----
|
||||
mkdir -p "$OUT/tools"
|
||||
|
||||
@@ -89,6 +89,18 @@ cp LICENSE "$OUT/licenses/LICENSE-port-MIT.txt"
|
||||
for l in SDL2 zlib gcc-libs libwinpthread mingw-w64; do
|
||||
[ -d "$MINGW/share/licenses/$l" ] && cp -r "$MINGW/share/licenses/$l" "$OUT/licenses/$l"
|
||||
done
|
||||
# Some MSYS2 installs (CI's) have no share/licenses dir for gcc-libs or SDL2;
|
||||
# the bundled libstdc++/libgcc_s (GPL-3.0 + GCC Runtime Library Exception) and
|
||||
# SDL2 (zlib) still carry their texts, from the tree.
|
||||
if [ ! -d "$OUT/licenses/gcc-libs" ]; then
|
||||
mkdir -p "$OUT/licenses/gcc-libs"
|
||||
cp tools_pc/dist/GPL-3.0.txt "$OUT/licenses/gcc-libs/COPYING3"
|
||||
cp tools_pc/dist/GCC-RUNTIME-EXCEPTION.txt "$OUT/licenses/gcc-libs/COPYING.RUNTIME"
|
||||
fi
|
||||
if [ ! -d "$OUT/licenses/SDL2" ]; then
|
||||
mkdir -p "$OUT/licenses/SDL2"
|
||||
cp tools_pc/dist/SDL2-LICENSE.txt "$OUT/licenses/SDL2/LICENSE.txt"
|
||||
fi
|
||||
|
||||
# --- save converter (D492): emulator .eep <-> port .eep, stdlib-only -----
|
||||
mkdir -p "$OUT/tools"
|
||||
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
GCC RUNTIME LIBRARY EXCEPTION
|
||||
|
||||
Version 3.1, 31 March 2009
|
||||
|
||||
Copyright (C) 2009 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies of this
|
||||
license document, but changing it is not allowed.
|
||||
|
||||
This GCC Runtime Library Exception ("Exception") is an additional
|
||||
permission under section 7 of the GNU General Public License, version
|
||||
3 ("GPLv3"). It applies to a given file (the "Runtime Library") that
|
||||
bears a notice placed by the copyright holder of the file stating that
|
||||
the file is governed by GPLv3 along with this Exception.
|
||||
|
||||
When you use GCC to compile a program, GCC may combine portions of
|
||||
certain GCC header files and runtime libraries with the compiled
|
||||
program. The purpose of this Exception is to allow compilation of
|
||||
non-GPL (including proprietary) programs to use, in this way, the
|
||||
header files and runtime libraries covered by this Exception.
|
||||
|
||||
0. Definitions.
|
||||
|
||||
A file is an "Independent Module" if it either requires the Runtime
|
||||
Library for execution after a Compilation Process, or makes use of an
|
||||
interface provided by the Runtime Library, but is not otherwise based
|
||||
on the Runtime Library.
|
||||
|
||||
"GCC" means a version of the GNU Compiler Collection, with or without
|
||||
modifications, governed by version 3 (or a specified later version) of
|
||||
the GNU General Public License (GPL) with the option of using any
|
||||
subsequent versions published by the FSF.
|
||||
|
||||
"GPL-compatible Software" is software whose conditions of propagation,
|
||||
modification and use would permit combination with GCC in accord with
|
||||
the license of GCC.
|
||||
|
||||
"Target Code" refers to output from any compiler for a real or virtual
|
||||
target processor architecture, in executable form or suitable for
|
||||
input to an assembler, loader, linker and/or execution
|
||||
phase. Notwithstanding that, Target Code does not include data in any
|
||||
format that is used as a compiler intermediate representation, or used
|
||||
for producing a compiler intermediate representation.
|
||||
|
||||
The "Compilation Process" transforms code entirely represented in
|
||||
non-intermediate languages designed for human-written code, and/or in
|
||||
Java Virtual Machine byte code, into Target Code. Thus, for example,
|
||||
use of source code generators and preprocessors need not be considered
|
||||
part of the Compilation Process, since the Compilation Process can be
|
||||
understood as starting with the output of the generators or
|
||||
preprocessors.
|
||||
|
||||
A Compilation Process is "Eligible" if it is done using GCC, alone or
|
||||
with other GPL-compatible software, or if it is done without using any
|
||||
work based on GCC. For example, using non-GPL-compatible Software to
|
||||
optimize any GCC intermediate representations would not qualify as an
|
||||
Eligible Compilation Process.
|
||||
|
||||
1. Grant of Additional Permission.
|
||||
|
||||
You have permission to propagate a work of Target Code formed by
|
||||
combining the Runtime Library with Independent Modules, even if such
|
||||
propagation would otherwise violate the terms of GPLv3, provided that
|
||||
all Target Code was generated by Eligible Compilation Processes. You
|
||||
may then convey such a combination under terms of your choice,
|
||||
consistent with the licensing of the Independent Modules.
|
||||
|
||||
2. No Weakening of GCC Copyleft.
|
||||
|
||||
The availability of this Exception does not imply any general
|
||||
presumption that third-party software is unaffected by the copyleft
|
||||
requirements of the license of GCC.
|
||||
|
||||
Vendored
+18
@@ -0,0 +1,18 @@
|
||||
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
|
||||
Reference in new issue
Block a user