mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-28 10:59:16 -04:00
874df9b5bb
Retire the setup-host release model (CI wiped generated/ and shipped
emitters + sources + a wizard so every player regenerated and rebuilt the
title). Titles now commit generated/ and CI ships the compiled game.
- docs/ci/templates/game-release.yml replaces setup-release.yml: gate on
committed game C (tools/ci/check_generated.sh), emit the OpenBIOS backend
in CI (tools/ci/generate_openbios.sh), configure with
PSXRECOMP_REQUIRE_GAME_C=ON and assert the full path was taken, package
with tools/package_game_release.sh, verify the zip is a game not a kit.
- tools/package_game_release.sh: exe, assets, bundled OpenBIOS, configs, mod
catalog + overlay toolchain via release_stage.py, notices; refuses sources,
emitters, generated C, BIOS dumps. clear_generated.sh removed;
package_setup_host.sh marked retired.
- Scaffold: gitignore templates track generated/, package_release.sh.in
wrapper, setup_project.{sh,ps1} commit generated/ after Generate.
- Project Studio: audit flags ignored/untracked generated/, retail BIOS C
and setup-host workflows; merge_gitignore un-ignores generated/; ops emit
the bundled packager + workflow; generate_ci uses the new template.
- Docs: docs/ci/BUNDLED_RELEASES.md replaces HOST_ONLY_RELEASES.md.
- Tests: tools/tests/test_bundled_release_layout.py; fix pre-existing
false positives in the packager-surface and overlay-static tests.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
# @WINDOW_TITLE@ <!-- retcomm-readme-metrics --> [](https://github.com/@GITHUB_OWNER@/@GITHUB_REPO@/releases) [](https://github.com/@GITHUB_OWNER@/@GITHUB_REPO@/releases/latest) [](https://github.com/@GITHUB_OWNER@/@GITHUB_REPO@/releases/latest) <!-- /retcomm-readme-metrics --> Static recompilation of **@GAME_NAME@** built on [psxrecomp](https://github.com/mstan/psxrecomp) and [recomp-ui](https://github.com/RetroPortingToolKit/recomp-ui). @DESCRIPTION@ | | | |---|---| | Players | @PLAYERS@ | | Region | @REGION@ | | Publisher | @PUBLISHER@ | | Year | @YEAR@ | Scaffolded with the New Project Layout. See `psxrecomp/docs/GAME_PROJECT_SETUP.md` for the full flow. <!-- retcomm-readme-launcher --> ## Retro Launcher You can run this title **standalone** (download the release zip, point it at your disc, play), or manage installs, updates, and disc/BIOS wiring with **[Retro Launcher](https://github.com/RetroPortingToolKit/Retro-Launcher)** — the Retro Compilation Manager hub for self-compiling recomps. [Downloads](https://github.com/RetroPortingToolKit/Retro-Launcher/releases) · [Full README & features](https://github.com/RetroPortingToolKit/Retro-Launcher#readme) <p align="center"> <img src="https://raw.githubusercontent.com/RetroPortingToolKit/Retro-Launcher/main/docs/screenshots/hub-and-game-launcher.png" alt="Retro hub with a background build, next to a title’s recomp-ui launcher" width="720"> </p> <p align="center"> <img src="https://raw.githubusercontent.com/RetroPortingToolKit/Retro-Launcher/main/docs/screenshots/queue-and-background-build.png" alt="Background cmake build with titles queued" width="720"> </p> Retro checks for updates, installs the prebuilt release zips, and automates BIOS/ROM/save plumbing so you are not stuck repeating each game’s first run by hand. <!-- /retcomm-readme-launcher --> ## Legal You must own the original game. Disc images under `disc/` are gitignored and must never be committed. Retail BIOS dumps are not redistributed and no C derived from one may be committed; releases run on the bundled MIT OpenBIOS. `generated/` (the recompiled game C) **is committed**: releases ship the compiled game, built by CI from that tree. Regenerate and commit it whenever seeds or the framework pin change. Default app icon: `assets/psxrecomp.ico` (and `.png` / `.svg`) — Retro-themed controller mark from `psxrecomp/assets/`. Windows builds embed it via `APP_ICON`. Optional box art under `launcher_assets/img/` may come from [libretro-thumbnails](https://github.com/libretro-thumbnails/libretro-thumbnails) (`Named_Boxarts`); see `BOXART_SOURCE.txt` when present. ## Quick start (dev) ```bash git submodule update --init --recursive ./psxrecomp/tools/ci/build_emitters.sh python3 psxrecomp/psxrecomp_cli.py generate \ --config game.toml --project-root . --disc disc/<your>.cue git add generated && git commit -m "Regenerate game C" cmake -S . -B build-release -G Ninja -DCMAKE_BUILD_TYPE=Release cmake --build build-release --target psx-runtime ``` Releases: tag `vX.Y.Z` (or run the *Release builds* workflow). CI builds the committed `generated/` C on Linux, Windows and macOS and attaches `@ZIP_PREFIX@-<version>-<platform>.zip`, the compiled game. Locally: `scripts/package_release.sh build-release linux-x64`. ## Symbols Progressive map: `symbols.toml` → `python3 tools/sync_symbols.py` → `psx_symbols.h` (`PSX_FN_*`). See `psxrecomp/docs/SYMBOLS.md`. ## Framework pins Submodule gitlinks (`psxrecomp`, optional `recomp-ui`, nested `recomp-net`) are authoritative. `framework_pins.txt` is an optional scaffold snapshot; release CI logs SHAs with `record_pins.sh` but builds whatever the gitlinks resolve to. Bump submodules deliberately — do not float on `main`/`master` in release CI. <!-- retcomm-readme-raid --> --- <p align="center"> <sub><b>R.A.I.D. — Retro AI Development</b> · a Discord for AI-assisted retro reverse-engineering, decomp & recomp</sub> </p> <p align="center"> <a href="https://discord.gg/Ad9BwSzctP"><img src=".github/raid-discord.png" alt="Join the Retro AI Development (R.A.I.D.) Discord" width="200"></a> </p> <!-- /retcomm-readme-raid -->