- Move the two N64 reference screenshots out of the repo root into docs/reference/ (n64-footage-2026-08-24.jpg, n64-footage-gun-barrel.png); HANDOFF.md now points there. - Gitignore screenshots/ (session captures) and tools_pc/mupen64/ (local Mupen64 Plus checkout used for N64 reference footage; 8 MB of binaries). - Commit tools_pc/mtxtest.c, the standalone fast3d matrix-convention harness that HANDOFF/D72.3 docs reference as kept-for-reference. - Refresh PORTING.md: status was still 'scaffolding / building once implementation lands'; now reflects Phase 2 in progress and points at docs/HANDOFF.md for current session state.
2.7 KiB
GoldenEye 007 — PC Port
A work-in-progress port of GoldenEye 007 to modern platforms (Windows / Linux / macOS), built on the decompilation in this repository.
It follows the approach of the Perfect Dark PC port, which ports the same Rare "Indy" engine (a later revision).
Status: Phase 2 (rendering) in progress. The game boots on PC, plays the intro music, and renders the entire intro (logo → gun barrel → cast); the current blocker is first stage load (BG-file endianness, finding D69). Current session state and immediate tasks: docs/HANDOFF.md.
Read this first
- docs/PCPortResearch.md — the preliminary
research: how the PD port works, what GE-specific work remains (the
G_SETTEXRSP command, custom color-combiner/render modes), the hardware surfaces that must be shimmed, and the phased plan. Start here. - port/README.md — the port layer layout and how it fits together.
How it works (one paragraph)
The N64 game code (src/game, src) is compiled unmodified for the host.
The RSP (the N64's 3D coprocessor) is emulated in software
(port/fast3d/): it interprets the display list the game builds and emits
OpenGL calls, bypassing the RDP. All other N64 hardware (VI, AI, PI, SI, OS
threads/timers) is shimmed in port/src/libultra.c and friends. Saves
(Memory Pak / EEPROM) are backed by files.
Layout
CMakeLists.txt # PC build (parallel to the N64 Makefile)
cmake/ # CMake helper modules
build-pc.sh # configure + build helper
port/
├── fast3d/ # software RSP (adapted from the PD port)
├── include/ # port-facing headers
└── src/ # port layer (main, libultra shims, video, audio, input, ...)
docs/PCPortResearch.md
The N64 build (Makefile, tools/, rsp/, etc.) is untouched.
Building
./build-pc.sh ntsc-final # or pal-final / jpn-final
Then put your ROM in ./data/ and run the binary from the repo root.
(The ROM is not distributed; you must own the game.)
Phased plan (summary)
| Phase | Goal | Status |
|---|---|---|
| 0 | Scaffolding: build system + port-layer interfaces | done |
| 1 (+1.5) | Boot to window / first frame: ROM map, OS shims, ABI reconciliation | done |
| 2 | Rendering: fast3d software RSP, asset conversion/fixups | in progress (full intro renders; stage load = D69) |
| 3 | Audio + input (SDL device, mixer, gamepad) | not started |
| 4 | Saves + polish (file-backed EEPROM, widescreen, config) | not started |
Details and risks: docs/PCPortResearch.md §8–9.