diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b323a133..8602d822 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,7 +1,8 @@ name: Release -# Builds the macOS, Windows, and Linux desktop apps plus an Android APK -# on the self-hosted Mac runner, and publishes them as a GitHub Release. +# Builds the macOS, Windows, and Linux desktop apps, an Android APK, and the +# Anbernic RG34XXSP (Stock OS 64-bit MOD / PortMaster) port on the self-hosted +# Mac runner, and publishes them as a GitHub Release. # # Versioning: # - First ever release is 0.1.0. @@ -169,6 +170,13 @@ jobs: set -euo pipefail scripts/build_android.sh --version "${{ steps.ver.outputs.version }}" + - name: Build Anbernic RG34XXSP port + run: | + set -euo pipefail + # Self-contained aarch64 PortMaster-style pack; pulls the LÖVE 11.5 + # runtime from PortMaster-GUI, so it needs no signing/notarization. + ./build-rg34xxsp.sh --version "${{ steps.ver.outputs.version }}" + - name: Notarize & staple macOS app run: | set -euo pipefail @@ -218,6 +226,12 @@ jobs: [ -n "$apk" ] || { echo "::error::no Android APK found under dist/android/debug"; exit 1; } cp "$apk" "$outdir/gen1recomp-${v}-android.apk" + # Anbernic handheld port (suffix names the CFW it targets, so a + # future RG35XX/other-CFW pack can ship alongside it). + rg34="dist/rg34xxsp/gen1recomp-rg34xxsp-stockos64-mod.zip" + [ -f "$rg34" ] || { echo "::error::$rg34 not found (expected from ./build-rg34xxsp.sh)"; exit 1; } + cp "$rg34" "$outdir/gen1recomp-${v}-rg34xxsp-stockos64-mod.zip" + # Platform-independent update payload, built alongside the desktop # apps above (same game.love that gets fused into each of them). love_file=".bazinga/work/game.love" @@ -283,6 +297,7 @@ jobs: "dist/release/gen1recomp-${v}-windows.zip" \ "dist/release/gen1recomp-${v}-linux.zip" \ "dist/release/gen1recomp-${v}-android.apk" \ + "dist/release/gen1recomp-${v}-rg34xxsp-stockos64-mod.zip" \ "dist/release/gen1recomp-${v}.love" \ "dist/release/sha256sums.txt" diff --git a/README.md b/README.md index a88c01f4..f7d101c5 100644 --- a/README.md +++ b/README.md @@ -31,40 +31,6 @@ The packaged app contains neither a ROM nor pre-extracted game data. Music, sound effects, and cries are synthesized while the game runs from compact audio channel programs copied out of the verified ROM. -## Anbernic RG34XXSP (Stock OS 64-bit MOD) - -Download `gen1recomp-*-rg34xxsp-stockos64-mod.zip` from -[Releases](https://github.com/bryanthaboi/gen1recomp/releases). This build -targets **Stock OS 64-bit MOD** on the RG34XXSP with PortMaster installed -(TF1). - -1. Unzip the release on your computer. You get `Gen1recomp.sh` and a - `gen1recomp/` folder. -2. Copy **both** onto the SD card under **`Roms/PORTS/`** so the layout is: - - ``` - Roms/PORTS/Gen1recomp.sh - Roms/PORTS/gen1recomp/ - ``` - - On the device that path is `/mnt/mmc/Roms/PORTS/`. Keep the launcher and - the `gen1recomp/` folder as siblings — do not nest the `.sh` inside the - folder. -3. Put your legal US Red and/or Blue `.gb` files inside the game folder: - - ``` - Roms/PORTS/gen1recomp/lovegame/ - ``` - - Example: `Roms/PORTS/gen1recomp/lovegame/Pokemon - Red Version.gb` -4. Eject the card, boot the handheld, open **Ports → Gen1recomp**. -5. On the launcher, move the cursor with the D-pad or left stick, press **A** - to click. Choose the Red or Blue tab, then **Choose ROM** — with no file - picker on stock OS, that scans `lovegame/` for the `.gb` you dropped in. - -After import, saves and the ROM-derived cache stay next to the game on the -SD card (`portable.txt`). - ## Controls @@ -167,7 +133,12 @@ even on a different computer, as long as the same folder comes along. already written to either location is touched automatically, so copy files over yourself if you want to carry existing progress across the switch. +## Handhelds +A PortMaster-style port for the **Anbernic RG34XXSP** on Stock OS 64-bit MOD +ships with every release as `gen1recomp-*-rg34xxsp-stockos64-mod.zip`. +Install steps, controls, and troubleshooting live in +[docs/anbernic-rg34xxsp.md](docs/anbernic-rg34xxsp.md). ## Modding diff --git a/docs/anbernic-rg34xxsp.md b/docs/anbernic-rg34xxsp.md new file mode 100644 index 00000000..8e41d4f5 --- /dev/null +++ b/docs/anbernic-rg34xxsp.md @@ -0,0 +1,81 @@ +# Anbernic RG34XXSP (Stock OS 64-bit MOD) + +Download `gen1recomp-*-rg34xxsp-stockos64-mod.zip` from +[Releases](https://github.com/bryanthaboi/gen1recomp/releases). This build +targets **Stock OS 64-bit MOD** on the RG34XXSP with PortMaster installed +(TF1). + +## Install + +1. Unzip the release on your computer. You get `Gen1recomp.sh` and a + `gen1recomp/` folder. +2. Copy **both** onto the SD card under **`Roms/PORTS/`** so the layout is: + + ``` + Roms/PORTS/Gen1recomp.sh + Roms/PORTS/gen1recomp/ + ``` + + On the device that path is `/mnt/mmc/Roms/PORTS/`. Keep the launcher and + the `gen1recomp/` folder as siblings — do not nest the `.sh` inside the + folder. +3. Put your legal US Red and/or Blue `.gb` files inside the game folder: + + ``` + Roms/PORTS/gen1recomp/lovegame/ + ``` + + Example: `Roms/PORTS/gen1recomp/lovegame/Pokemon - Red Version.gb` +4. Eject the card, boot the handheld, open **Ports → Gen1recomp**. +5. On the launcher, move the cursor with the D-pad or left stick, press **A** + to click. Choose the Red or Blue tab, then **Choose ROM** — with no file + picker on stock OS, that scans `lovegame/` for the `.gb` you dropped in. + +The port ships with `portable.txt` already in place, so after import the +saves and ROM-derived cache stay next to the game on the SD card. See +[Portable Mode](../README.md#portable-mode) for what that means. + +Only the canonical 1 MiB US carts import: + +- Red: `ea9bcae617fdf159b045185467ae58b2e4a48b9a` +- Blue: `d7037c83e1ae5b39bde3c30787637ba1d4c48ce2` + +## Launcher controls + +| Input | Action | +| ------------------ | ------------------ | +| D-pad / left stick | Move cursor | +| A | Click | +| L1 / R1 | Switch tabs | +| Right stick | Scroll lists | +| Start / Select | Play or Choose ROM | + +In-game controls use the normal PortMaster / SDL pad map, rebindable under +**OPTIONS → CONTROLS**. + +## Notes + +The pack bundles the LÖVE 11.5 aarch64 runtime from +[PortMaster](https://portmaster.games/), so the device does not need a +separate `love_11.5` runtime download on first launch. The launcher resolves +paths relative to its own directory rather than PortMaster's `$directory`, +because stock Anbernic firmware runs ports out of `roms/PORTS/` with its own +casing and mount points. + +If a launch fails, `Roms/PORTS/gen1recomp/log.txt` holds the output of the +last run. + +## Building the port + +Release runs build this automatically (see `.github/workflows/release.yml`). +To build it by hand: + +```sh +./build-rg34xxsp.sh --version 0.1.0 # -> dist/rg34xxsp/gen1recomp-rg34xxsp-stockos64-mod.zip +``` + +`install-rg34xxsp.sh` copies that pack straight onto a mounted SD card for +local testing. + +Stock OS 64-bit MOD comes from +[cbepx-me](https://github.com/cbepx-me/Anbernic-H700-RG-xx-StockOS-Modification).