From 64913054ce22611023d6eaf5630360a855d0ba4b Mon Sep 17 00:00:00 2001 From: James Dansereau <106631954+jkdansereau@users.noreply.github.com> Date: Mon, 28 Sep 2026 01:32:13 -0400 Subject: [PATCH] release: v0.4.0 site/README consistency + Web 1.0 re-skin - Docs site: drop jekyll-theme-cayman for a hand-rolled _layouts/default.html (masthead band + middot text nav + footer with last-updated stamp and legal line; head re-plumbed with {% seo %}, viewport, favicon); head-custom.html fully rewritten to the chosen design tokens - charcoal/off-white/amber, Libre Baskerville headings over system sans, square corners, 1px borders, flat (no gradients/shadows), mermaid wrapper re-skinned. - docs/index.md: v0.4.0 status (native widescreen, aim system, rebinding, crosshair, rumble, rebuilt overlay); Honest status replaced by the v0.4.0 release-notes known issues; body anchor-nav line; legal footer moved to layout. - security-and-fidelity-status.md: front matter so {% seo %} titles it. - README.md: v0.4.0 truth pass (status, Working/Known issues, Deck preset 2x MSAA / 250% per code, background stats 981 commits / 283 findings, comparison table, GEPD-default controls paragraph, earlier builds) plus markdown-native motifs matching the site: top anchor-nav line, --- section rules, last-updated footer stamp, license badge in the amber accent. - release-notes: SFTP sideload mention (leftover from the Deck session). --- .github/release-notes.md | 2 +- README.md | 94 +++++--- docs/_config.yml | 4 +- docs/_includes/head-custom.html | 320 ++++++++++++--------------- docs/_layouts/default.html | 48 ++++ docs/index.md | 84 +++---- docs/security-and-fidelity-status.md | 6 + 7 files changed, 308 insertions(+), 250 deletions(-) create mode 100644 docs/_layouts/default.html diff --git a/.github/release-notes.md b/.github/release-notes.md index 7d10d8ae..cd0b9de2 100644 --- a/.github/release-notes.md +++ b/.github/release-notes.md @@ -282,7 +282,7 @@ to install. `prepare-assets/ge007-convert` inside the bundle; you can also run it manually; it prints what it's doing.) -**Steam Deck:** sideload the unpacked folder (USB or a file manager), do +**Steam Deck:** sideload the unpacked folder (SFTP, USB or a file manager), do steps 2–3, then add the executable to Games → *Add Game* as a non-Steam game. The first launch in Game Mode picks up the Deck preset (native 1280×800, 2× MSAA, vsync) automatically if no config exists yet. diff --git a/README.md b/README.md index 0ab2b314..71662bf8 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ # GoldenEye 007 PC Port [](https://github.com/jkdansereau/goldeneye-pc-port/actions/workflows/ci.yml) - + + +[Download](#download) · [Status](#status) · [Roadmap](#roadmap) · [Building](#building) · [Docs](#documentation) · [Legal](#legal) A native PC port of _GoldenEye 007_ (Rare, 1997, Nintendo 64), compiled from the [GoldenEye 007 decompilation](https://github.com/n64decomp/007): the @@ -12,7 +14,7 @@ in a dedicated `port/` layer, following the architecture of the [Perfect Dark PC port](https://github.com/fgsfdsfgs/perfect_dark), the same Rare "Indy" engine family, one hardware generation apart. -**v0.3.0** is out for Windows and Linux (including Steam Deck, where the +**v0.4.0** is out for Windows and Linux (including Steam Deck, where the Linux bundle sideloads as-is) and runs the full campaign at a steady 60 fps with known rough edges ([Status](#status)). Free to download, build on and modify (you bring the ROM). @@ -44,6 +46,8 @@ account of what worked and what didn't. from live v0.3.0 play sessions.
+--- + ## Download | Platform | Bundle | Notes | @@ -53,8 +57,8 @@ account of what worked and what didn't. Both bundles contain **no ROM and no game assets**: you supply your own (see [Requirements](#requirements)), which keeps the release legal to -distribute. Earlier builds: v0.2.2, v0.2.1, v0.2.0, and v0.1.0 alpha, same -page. You can also build it yourself; see [Building](#building). +distribute. Earlier builds: v0.3.0, v0.2.2, v0.2.1, v0.2.0, and v0.1.0 +alpha, same page. You can also build it yourself; see [Building](#building). ### Quick start @@ -67,12 +71,14 @@ included or distributed. Then: 2. Make a `data/` folder next to the executable and drop the ROM in as `ge007.ntsc-final.z64`. 3. Launch the executable from that folder. The first run takes a few extra seconds: it detects the ROM and generates the derived asset folders once (no Python or other tooling needed). -Read the [Status](#status) caveats first: v0.3.0 has known rough edges, +Read the [Status](#status) caveats first: v0.4.0 has known rough edges, listed plainly there. +--- + ## Status -**v0.3.0 - playable, with known rough edges.** The full single-player +**v0.4.0 - playable, with known rough edges.** The full single-player campaign is completable end to end (all 20 missions, Agent difficulty, playtested), at a steady 60 fps; all 20 solo missions — plus the end-of-campaign credits sequence — load, render and run crash-free, verified @@ -87,15 +93,19 @@ game's logic: [Security & fidelity status](docs/security-and-fidelity-status.md) start), front-end menu navigation on the left stick to match the F10 overlay (D282); all 20 solo missions load, render and are crash-free (full campaign playtested end to end at Agent difficulty, including the ending sequence); steady 60 fps -(software RSP off the presentation critical path); full audio: in-level music and SFX; keyboard + mouse (click-to-lock, proportional aim mode, a single -simplified sensitivity control) and a modern dual-stick controller layout; -native widescreen at any aspect ratio (undistorted world, HUD anchored to the -screen edges, 4:3 menus pillarboxed); Bond is fixed in cutscenes (no more +(software RSP off the presentation critical path); full audio: in-level music and SFX; keyboard + mouse (click-to-lock, an aim style of your +choice — N64 or centred FPS-style — with per-device sensitivity) and a modern +dual-stick controller layout (use/reload/weapon-cycle on A/X/Y, rumble-pak +vibration on supported pads); native widescreen at any aspect ratio +(undistorted world, HUD anchored to the screen edges, 4:3 menus pillarboxed); +in-game key rebinding (keyboard/mouse) with a GEPD-style default layout; +crosshair customization (opt-in); Bond is fixed in cutscenes (no more floating or spin-glitching) and his third-person model positioning generally is right the large majority of the time now, at most a small drift when off; file-backed saves; faithful N64 progression by default (F10 → *All unlocked* opens every level, 007 mode and the full -cheat menu); F10 in-game options overlay (resolution, frame cap, MSAA, -filtering, FOV, sensitivity); Windows and Linux, including Steam Deck. +cheat menu); F10 in-game options overlay (display, audio, gameplay, HUD; +resolution, frame cap, MSAA, filtering, FOV, sensitivity); Windows and +Linux, including Steam Deck. **Known issues:** @@ -103,10 +113,10 @@ filtering, FOV, sensitivity); Windows and Linux, including Steam Deck. ~10 s before resuming the scripted shootout — a latent race that exists in the N64 original too (where it softlocks permanently); the port detects and auto-recovers it (D318). -- **Native widescreen is new in v0.4.0**: the world renders undistorted at - your display's aspect (wider view, same vertical FOV) and the HUD keeps its - shape; front-end menus are shown 4:3 with side bars. The F10 *Native - widescreen* toggle restores the old stretched frame. +- With native widescreen on, the F10 options overlay stretches with the + window instead of pillarboxing like the front-end menus (legible; cosmetic; + the F10 *Native widescreen* toggle restores the old stretched frame + throughout). The world/HUD widescreen rendering itself is correct (D335b). - The Rareware front-end logo shows a subtle texture-filtering artifact (Nintendo logo and legal page are clean). Cosmetic only (D75). - This release ships NTSC (US) assets; PAL/JP ROMs are not supported in this @@ -118,7 +128,8 @@ filtering, FOV, sensitivity); Windows and Linux, including Steam Deck. original progression you need to preserve. - Assorted further cosmetic defects are tracked in [`docs/dev/GRAPHICS-BACKLOG.md`](docs/dev/GRAPHICS-BACKLOG.md). -- No macOS or ARM support; no controller rebinding UI. +- No macOS or ARM support. Keyboard/mouse rebinding shipped in v0.4.0; + controller-button rebinding is not supported yet. Root causes and fix status for every item: the [release notes](https://github.com/jkdansereau/goldeneye-pc-port/releases) and the finding log in [`docs/dev/findings.md`](docs/dev/findings.md). @@ -130,8 +141,8 @@ it straight from the [releases page](https://github.com/jkdansereau/goldeneye-pc unzip, drop your ROM in `data/`, launch it once (the first run generates the derived assets), and add the executable as a non-Steam game. SDL2 is bundled, so no dependencies need installing. On SteamOS the first launch seeds `ge007.ini` with Deck-friendly -defaults: native 1280×800 fullscreen, VSync, MSAA 4, and 150% draw/LOD -distance (the authored N64 fade distances read short on the close-up panel); +defaults: native 1280×800 fullscreen, VSync, 2× MSAA, and 250% draw/LOD +distance (the N64-authored fade distances read short on the close-up 7" panel); everything is changeable in the options overlay and persists afterwards. **Do that first launch in Game Mode, not Desktop Mode** — an ini created by an earlier Desktop Mode launch (e.g. while testing before adding it as a @@ -152,6 +163,8 @@ options, **A** steps the selected option forward, **B** steps it back, and filtering cycle, sliders step in increments. With a keyboard attached the same overlay is `F10` + arrows/Enter. +--- + ## Roadmap No fixed timeline or committed feature list — this is spare-time work — but @@ -160,7 +173,8 @@ directionally, on the way to v1.0: - Working through the [known issues](#status) above and the fuller list in [`docs/dev/findings.md`](docs/dev/findings.md). - **PAL and JP ROM support** ([issue #85](https://github.com/jkdansereau/goldeneye-pc-port/issues/85)); NTSC-U is the only supported region today. -- **Controller rebinding UI**, and macOS/ARM builds. +- **Controller (pad) button rebinding UI** (keyboard/mouse rebinding shipped + in v0.4.0), and macOS/ARM builds. - **LAN multiplayer**: reviving GoldenEye's original split-screen/deathmatch netplay across multiple PCs on a local network. Genuinely under consideration, but early and not started; no ETA. @@ -171,11 +185,14 @@ Not currently planned: new game modes GE never shipped (e.g. co-op), online (non multiplayer, ray tracing. If any of these matter to you, open an issue — it helps prioritize. +--- + ## Beyond playing - **Tweak it**: `ge007.ini` and the F10 in-game overlay expose resolution, - frame cap, MSAA, texture filtering, FOV/draw distance and mouse feel; - launch with `-fresh` for a clean-slate run. + frame cap, MSAA, texture filtering, FOV/draw distance, mouse feel, key +rebinding, crosshair and vibration; launch with `-fresh` for a clean-slate +run. - **Read it**: [`docs/internals.md`](docs/internals.md) maps the architecture and the software RSP; [`docs/porting-notes.md`](docs/porting-notes.md) is the catalogue of N64→PC bug classes hit along the way. Game logic in @@ -186,6 +203,8 @@ it helps prioritize. the ground rules for getting changes in, and [`docs/dev/`](docs/dev/) is the raw engineering record behind every fix. +--- + ## Background The port was built by two coding agents, a local open-weight model @@ -195,8 +214,8 @@ asset pipeline, first frames), and **Claude Code** (Sonnet 5, Opus 5 for the hardest bugs) joining for the collaborative phase (the 21-level sweep, the ABI finding catalog, SDL input, front end), handing work back and forth through shared written notes, directed by one person part-time. In short: -36 days (16 Aug – 20 Sep), ~835 commits, 199 findings root-caused and -logged (`D1`–`D321`). +43 days (16 Aug – 28 Sep), 981 commits, 283 findings root-caused and +logged (`D1`–`D405`). 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). @@ -204,6 +223,8 @@ The workflow itself: [`docs/dev-process.md`](docs/dev-process.md). To cite the project or its findings: [`CITATION.cff`](CITATION.cff) (GitHub's "Cite this 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 @@ -219,13 +240,15 @@ 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; no source-level understanding | | **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** | v0.3.0 public release; full campaign playable at 60 fps (see [Status](#status)) | Playable full game | +| **Status** | v0.4.0 public release; full campaign playable at 60 fps (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](#background) on a hard low-level codebase | To get a playable PC release of the remaster | They answer a different question: how to get the *remaster* onto PC by machine translation. This project answers how to get the *original 1997 game* onto PC, running from its reconstructed source. +--- + ## Requirements You need a GoldenEye 007 (Nintendo 64) ROM that you legally own, in @@ -245,6 +268,8 @@ The port also relies on the decompilation's asset-extraction step, which pulls the level, model, texture and music data out of your ROM at build time. That step, too, requires your ROM and is part of [Building](#building). +--- + ## Building Prerequisites: CMake >= 3.16, a C/C++ toolchain, SDL2, zlib, OpenGL, Python 3, @@ -284,6 +309,8 @@ cd goldeneye-pc-port The executable is written to `build-pc/ge007.x86_64` (on Windows, `build-pc/ge007.x86_64.exe`). +--- + ## Running 1. Create a `data/` directory in the repo root. @@ -323,12 +350,15 @@ accepts and B cancels. RB's *updated graphics* toggle cannot be provided by the original N64 port (no remastered assets); it is reserved. Back opens PC options rather than Xbox's *view scores*; exact menu parity is not claimed. The other Xbox schemes (1.2 Christmas, 1.3 Frost, 1.4 Elektra) are planned, -not yet selectable. Input → Bindings → Movement/Actions edits **keyboard/mouse +not yet selectable. Keyboard → Bindings edits **keyboard/mouse only**; a controller can navigate those pages and use B to go back, but controller-button rebinding is not supported yet. Mouse sensitivity, Y-inversion and the aim/turn split are tunable in the -`[Input]` section of `ge007.ini`. +F10 overlay (*Keyboard → Sensitivity*) or the `[Input]` section of +`ge007.ini`. + +--- ## How it works @@ -361,6 +391,8 @@ tools_pc/ PC-port helper + analysis scripts docs/ see below ``` +--- + ## Documentation Key docs are also published as a site: @@ -376,6 +408,8 @@ Key docs are also published as a site: | [`docs/dev/`](docs/dev/) | The raw engineering record: the full finding log, per-level status, graphics backlog, playtest matrices, and [`docs/dev/game-behavior-reference.md`](docs/dev/game-behavior-reference.md) (a secondary-sourced playtest reference for how the retail game is meant to behave; repo-only, code is ground truth). | | [`docs/SetupGuide.md`](docs/SetupGuide.md), [`docs/StyleGuide.md`](docs/StyleGuide.md) | Inherited from the decompilation this repo forks. | +--- + ## Credits This port is a thin layer on a large amount of other people's work. @@ -433,6 +467,8 @@ This port is a thin layer on a large amount of other people's work. - [pi](https://pi.dev/): the local coding-agent harness. - [Claude / Claude Code](https://claude.com/claude-code) (Anthropic). +--- + ## Legal This is a non-commercial fan preservation/research project, in the same @@ -465,3 +501,7 @@ The original work in this repository, the port layer (`port/`), the PC build system, `tools_pc/`, and the documentation, is released under the MIT License; see [`LICENSE`](LICENSE). Everything inherited from the upstream decompilation is covered by [`NOTICE`](NOTICE), not by that license. + +--- + +*Last updated 2026-09-28 — v0.4.0.* diff --git a/docs/_config.yml b/docs/_config.yml index c4e66b6c..7ec684a5 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -7,7 +7,9 @@ title: GoldenEye 007 PC Port # tagline on every page. Per-page meta/og descriptions come from each page's # front matter `description:` (see index.md), not from here. description: N64 GoldenEye 007, decompiled for PC. -theme: jekyll-theme-cayman +# No GitHub theme: the site uses a hand-rolled _layouts/default.html plus the +# design in _includes/head-custom.html (charcoal/off-white/amber, square and +# flat.) show_downloads: false # Canonical site location - used by jekyll-seo-tag (canonical URLs, og: tags) diff --git a/docs/_includes/head-custom.html b/docs/_includes/head-custom.html index 253dcf8d..7f7e687c 100644 --- a/docs/_includes/head-custom.html +++ b/docs/_includes/head-custom.html @@ -3,267 +3,242 @@ - + diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html new file mode 100644 index 00000000..f1fd73f4 --- /dev/null +++ b/docs/_layouts/default.html @@ -0,0 +1,48 @@ + + + + + + + {%- seo -%} + {%- include head-custom.html -%} + + +
Non-commercial fan preservation/research project. No ROM or game assets
-are distributed; you supply a ROM you already own. Not affiliated with or
-endorsed by Nintendo, Rare, Microsoft, MGM, Danjaq, or EON Productions.
diff --git a/docs/security-and-fidelity-status.md b/docs/security-and-fidelity-status.md
index 47e61657..8f0b0c00 100644
--- a/docs/security-and-fidelity-status.md
+++ b/docs/security-and-fidelity-status.md
@@ -1,3 +1,9 @@
+---
+title: Security & fidelity status
+description: What a release actually installs (no networking, no telemetry, no ROM or assets)
+and how faithfully the port tracks the original N64 game's logic.
+---
+
# Security & fidelity status
This page answers two questions plainly: *what does installing this put on