release: add Linux x86-64 bundle + dual-platform release notes

- tools_pc/bundle-linux.sh: package a Linux build (exe + README + licenses +
  prepare-assets) as a .tar.gz. Mirrors bundle-win.sh's ROM / size guards and
  prepare-assets assembly. No shared libs bundled — the generated README tells
  the user to install SDL2 / zlib / libGL from their distro.
- tools_pc/dist/README.md.in: made OS-neutral via @PLATFORM@ / @EXE@ / @DEPS@ /
  @LICENSE_EXTRA@ tokens; refreshed the known-issues list (dropped the stale
  "ladders don't work" line — D177 fixed M-36; added black sky + missing HUD
  weapon icon).
- .github/workflows/ci.yml: linux-build now packages + uploads the Linux
  bundle; the release job attaches both platforms to the draft pre-release.
- .github/release-notes.md: rewritten for the two-platform NTSC-U alpha with
  the prepare-assets step and current known issues.

Alpha scope: NTSC-U only, one-time prepare-assets step (Part A launcher and
Part B native converter from release-dropin-rom-plan.md remain follow-ups).

Claude-Session: https://claude.ai/code/session_01V4pK3pT83YnPsBp3Ey4RP2
This commit is contained in:
James Dansereau committed 2026-09-03 10:54:06 -04:00
1 parent 362a386650
commit a0611727e9
5 files changed
+199 -35

No files matched your search

+31 -9
View File
@@ -3,31 +3,53 @@
> ⚠️ **Very early research alpha. Not a playable game.**
> The intro and menus render and all 21 solo missions load, but:
> - **no audio** (Phase 3, not started);
> - some front-end 3D models and some text are broken;
> - **ladders don't work** and can block progression on some levels;
> - some front-end 3D models and some text are broken (the spinning Nintendo
> logo, MISSION COMPLETE / mode-select models, some briefing objective text);
> - outdoor levels render with a **black sky**;
> - the in-HUD **weapon icon is missing** (the ammo count still shows);
> - expect crashes and glitches once past the level intro.
>
> This is a technical demo of the porting work. If you want to *play* GoldenEye
> on PC, use one of the Xbox 360 recompilation projects instead — see the
> [project README](https://github.com/jkdansereau/goldeneye-pc-port#how-this-differs-from-the-other-goldeneye-pc-projects).
### Download
### Downloads
`goldeneye-pc-port-<version>-win64.zip` — the engine executable, its runtime
DLLs, a README, and license texts. **Windows x86-64 only.** No ROM, no game
assets.
| File | Platform |
|---|---|
| `goldeneye-pc-port-<version>-win64.zip` | Windows x86-64 |
| `goldeneye-pc-port-<version>-linux-x86_64.tar.gz` | Linux x86-64 |
Each contains the engine executable, a README, license texts, and the
`prepare-assets` tool. **No ROM, no game assets.** The Windows bundle also
carries its runtime DLLs; the Linux bundle links against your distro's SDL2 /
zlib / libGL (`sudo apt install libsdl2-2.0-0 zlib1g libgl1`, or the equivalent).
Windows development and playtesting is the primary path; the Linux build boots
and renders (tested on WSLg) but has had far less exercise.
### Running it
You supply your own **NTSC-U GoldenEye 007 N64 ROM** (`.z64`, big-endian,
`SHA-1 abe01e4aeb033b6c0836819f549c791b26cfde83`). Unzip, put the ROM in a
`data/` folder next to the exe as `ge007.ntsc-final.z64`, run the exe from that
folder. Full steps in the bundled `README.md`.
`SHA-1 abe01e4aeb033b6c0836819f549c791b26cfde83`). Only the US ROM is supported
in this alpha.
1. Unpack the archive.
2. Make a `data/` folder next to the executable and put the ROM in it as
`ge007.ntsc-final.z64`.
3. Run the one-time asset step (needs Python 3.8+):
`python3 prepare-assets/prepare-assets.py`
— it reads your ROM and writes the two `data/pc*-ntsc-final/` folders the
engine needs. Standard library only; a few seconds.
4. Run the executable **from that folder**.
Full steps are in the bundled `README.md`.
### Verify the download
```
sha256sum -c goldeneye-pc-port-<version>-win64.zip.sha256
sha256sum -c goldeneye-pc-port-<version>-linux-x86_64.tar.gz.sha256
```
### Source & docs
+44 -12
View File
@@ -26,8 +26,11 @@ concurrency:
# Jobs:
#
# linux-build — ubuntu, system GCC. Actually compiles + links (unlike
# validate). Surfaces GCC-on-Linux strictness gaps MinGW
# misses. Not a runtime claim; not a required check yet.
# validate), then packages the Linux bundle (exe + README +
# licenses + prepare-assets, NO ROM / assets / bundled libs)
# via tools_pc/bundle-linux.sh and uploads it. Surfaces
# GCC-on-Linux strictness gaps MinGW misses. Not a runtime
# claim; not a required check yet.
#
# validate — ubuntu, configure-only. Byte-compiles the tooling,
# regenerates the US ROM-asset symbol file, and CMake-
@@ -43,10 +46,10 @@ concurrency:
# the ROM nor extracted assets are needed to BUILD (they are
# runtime-only), so CI builds but never runs the port.
#
# release — tags only (v*). Downloads the bundle from windows-build and
# attaches it to a DRAFT pre-release for that tag. Draft, so a
# human does the ROM smoke-test and hits Publish. This is the
# only job granted contents: write.
# release — tags only (v*). Downloads the Windows + Linux bundles and
# attaches both to a DRAFT pre-release for that tag. Draft, so
# a human does the ROM smoke-test on each platform and hits
# Publish. This is the only job granted contents: write.
jobs:
# Did this push touch anything outside docs / licenses? Branch pushes to main
@@ -153,6 +156,29 @@ jobs:
ls -la build-linux/ge007* || true
file build-linux/ge007* || true
# Package the Linux bundle on every run so the release path stays
# exercised. No shared libs are bundled — the README tells the user to
# install SDL2 / zlib / libGL from their distro. Same ROM / size guards
# as the Windows bundle.
- name: Package Linux bundle
run: |
if [ "${GITHUB_REF_TYPE}" = "tag" ]; then
V="${GITHUB_REF_NAME}"
else
V="0.0.0-ci.${GITHUB_SHA::7}"
fi
tools_pc/bundle-linux.sh "$V"
- name: Upload bundle
uses: actions/upload-artifact@v7
with:
name: goldeneye-pc-port-linux-x86_64
path: |
dist/*.tar.gz
dist/*.tar.gz.sha256
if-no-files-found: error
retention-days: 14
# Real Windows (MSYS2 MINGW64) build — the only platform the port is
# developed and tested on. This compiles and LINKS the full executable.
#
@@ -219,12 +245,12 @@ jobs:
# -level_09 soak, a golden-frame diff) would run on a self-hosted runner
# instead. Not planned.
# Tags only. Attach the packaged bundle to a DRAFT pre-release so a human can
# do the ROM smoke-test before publishing. This job — and only this job —
# gets contents: write.
# Tags only. Attach the packaged Windows + Linux bundles to a DRAFT
# pre-release so a human can do the ROM smoke-test on each platform before
# publishing. This job — and only this job — gets contents: write.
release:
if: github.ref_type == 'tag'
needs: [ changes, validate, windows-build ]
needs: [ changes, validate, windows-build, linux-build ]
runs-on: ubuntu-22.04
permissions:
contents: write
@@ -238,15 +264,21 @@ jobs:
name: goldeneye-pc-port-win64
path: dist
- uses: actions/download-artifact@v7
with:
name: goldeneye-pc-port-linux-x86_64
path: dist
- name: Create or update draft pre-release
env:
GH_TOKEN: ${{ github.token }}
run: |
TAG="${GITHUB_REF_NAME}"
ASSETS=(dist/*.zip dist/*.zip.sha256 dist/*.tar.gz dist/*.tar.gz.sha256)
if gh release view "$TAG" >/dev/null 2>&1; then
gh release upload "$TAG" dist/*.zip dist/*.zip.sha256 --clobber
gh release upload "$TAG" "${ASSETS[@]}" --clobber
else
gh release create "$TAG" dist/*.zip dist/*.zip.sha256 \
gh release create "$TAG" "${ASSETS[@]}" \
--draft --prerelease \
--title "GoldenEye 007 PC Port $TAG" \
--notes-file .github/release-notes.md