diff --git a/.github/release-notes.md b/.github/release-notes.md index e0bc964b..3be7a0c8 100644 --- a/.github/release-notes.md +++ b/.github/release-notes.md @@ -5,10 +5,6 @@ The PC options menu: custom crosshair colour sliders

- - Platforms: **Windows x86-64** and **Linux x86-64 (including Steam Deck)**. Region: **NTSC-U (US) only**. See [Known issues](#known-issues). @@ -219,7 +215,6 @@ Rendering and gameplay fidelity: - **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). - Build-verified; a live Aztec re-check is owed. - **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, diff --git a/.github/social-preview.html b/.github/social-preview.html index 518a7a77..50cf14f3 100644 --- a/.github/social-preview.html +++ b/.github/social-preview.html @@ -127,7 +127,7 @@ Statistics:All 20 solo missions — full campaign completed in playtesting ~210 game-code units, compiled unmodified ~34k lines C/C++  ·  ~10k Python (port layer + tools) - 407 findings logged  ·  two coding agents, one human, part-time + 430 findings logged  ·  AI coding agents + a handful of contributors diff --git a/.github/social-preview.png b/.github/social-preview.png index c0701e6a..51734a70 100644 Binary files a/.github/social-preview.png and b/.github/social-preview.png differ diff --git a/README.md b/README.md index f0b702ed..4f8d2d84 100644 --- a/README.md +++ b/README.md @@ -421,7 +421,8 @@ these matter to you, open an issue — it helps prioritize. ## How it was made -The port was built by two coding agents, directed by one person part-time. +The port was built by several coding agents directed by one maintainer, with +contributions from a handful of people (credited in the release notes). A local open-weight model (`unsloth/Qwen3.8-27B-GGUF` on one RTX 5090, via the [pi](https://github.com/earendil-works/pi) agent) did the groundwork: build, boot chain, software-RSP integration, asset pipeline, first frames. **Claude Code** diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index c03ae167..05dd4a76 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -181,6 +181,7 @@ A single campaign pass with these on the checklist would clear most of them. | Statue/Cradle hitching (maintainer, 2026-09-30) | parked (not player-visible, 2026-10-02) | `GE_PERFSTAT` spike counters | **Diagnosed (D475, D477, D480):** no sustained load — the ~33 ms frames are the frame limiter skipping a retrace after a late gfx task (`boss.c`, D13-class timing); CPU bursts were CI-palette re-imports (ruled out, D477) and in-play shader compiles (fixed, D480). **Parked 2026-10-02:** a play session with the timeline probe felt no hitching. Reopen only if a visible hitch is reported (lever: pre-warm at level load). | | Steam Deck preset skipped when first launched from Desktop Mode | verify | D283 | Fixed on `release/v0.4.1`: the Deck is detected by DMI hardware id (Valve Jupiter/Galileo; `STEAMOS` as a second signal) and the preset applies once per ini, only while Fullscreen/Maximized are untouched. Only a Windows build and a Linux `-fsyntax-only` check ran. **Owed: one run on a real Deck** (Desktop-Mode-created ini, then Game Mode; expect fullscreen 1280x800 and the log line `video: Steam Deck (DMI Valve ...)`). The Known-issues row goes when this ships. | | Windows 7 | open | #98 | **Re-checked 2026-10-02: likely feasible around 1.0.** The exe imports no Windows 8+ functions and the bundled SDL2 2.32.10 still supports Windows 7. The real blocker is the first-run converter `ge007-convert.exe` (PyInstaller, Python 3.9+): the native C converter (#6 Part B) removes it, or a separate Python 3.8 build. Work: one Windows 7 VM test, then manual per-release checks (CI cannot test it). Supersedes the earlier 'won't-fix' call. | +| Windows display scaling: the game is not DPI-aware on scaled displays | open | — | Seen 2026-10-07 during the v0.5.0 4K captures: on a 3840x2160 display at 125% Windows gives the game a 3072x1728 surface and stretches it, so the picture is softer than native. `gfx_sdl2.cpp` sets `SDL_HINT_WINDOWS_DPI_AWARENESS` only when `allow_hidpi` is off; setting it (`permonitorv2`) on the HiDPI path too renders at native resolution. Workaround today: environment variable `SDL_WINDOWS_DPI_AWARENESS=permonitorv2`. | ## 5. Modern-remaster layer (port features beyond the N64) diff --git a/docs/dev/findings.md b/docs/dev/findings.md index d3400730..c32c3213 100644 --- a/docs/dev/findings.md +++ b/docs/dev/findings.md @@ -18410,3 +18410,10 @@ no longer serves `python3-pip`, so pip comes from a hash-pinned `get-pip.py` SDL `GLIBC_2.4`, `ge007-convert` built against 2.31. Verified: the container build run by hand on the X220 (podman) — fresh install there (ROM only -> converter -> boot -> clean quit, exit 0). No source changes; packaging only. + +CI-built tarball (run 37623073542, c45dece7, the v0.5.0 packaging): floor +`GLIBC_2.29`, bundled SDL identifies as `SDL-release-2.30.0`. Fresh install +(empty folder + ROM -> converter -> boot -> clean quit, exit 0) passed on the +X220 (Fedora 37, glibc 2.36: the box the 24.04 tarball refused to start on) and +the Steam Deck; the 21-level pixel gate ran on that binary on both, 21/21 PASS +each. Shipped in v0.5.0. diff --git a/docs/index.md b/docs/index.md index d810b60f..fcf3af78 100644 --- a/docs/index.md +++ b/docs/index.md @@ -30,7 +30,7 @@ Rare "Indy" engine family, one hardware generation apart. ## Status -
+
### v0.5.0 (2026-10-07) — split-screen multiplayer, one options menu, closer to the N64. @@ -98,7 +98,7 @@ single tracker for what comes next. ## Download -
+
| Platform | Bundle | Notes | |---|---|---| @@ -214,7 +214,7 @@ architecture, the N64→PC bug catalogue, and how the project is developed. i = (n + slides.length) % slides.length; img.src = slides[i].src; img.alt = "GoldenEye 007 PC port — " + slides[i].cap + - ", in-engine capture, 3072×1728"; + ", in-engine capture, 3840×2160"; cap.textContent = slides[i].cap; idx.textContent = (i + 1) + " / " + slides.length; }