From 4ea24a0a6faf9d8dc71f6893dd9696bc9e85d3d5 Mon Sep 17 00:00:00 2001 From: Andrew Quenehen Date: Sat, 1 Aug 2026 04:32:01 -0300 Subject: [PATCH] feat(switch): build fused gen1recomp NRO Co-authored-by: Cursor --- assets/switch/icon.jpg | Bin 0 -> 1901 bytes scripts/switch/build_fused.sh | 56 ++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 assets/switch/icon.jpg create mode 100755 scripts/switch/build_fused.sh diff --git a/assets/switch/icon.jpg b/assets/switch/icon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8cb70c629734078fea6b2b71220e046948ce6b25 GIT binary patch literal 1901 zcmex=LK$;OGwtxvH%gC^R8NmiA{Qs80A|NBbB)>Q#zd*rQ&w#S{3 zNli=7$jmA(DJ?6nsH|#kX>Duo=KJpKI>wBq8(evg`Twv? GH#Y&6>x+f} literal 0 HcmV?d00001 diff --git a/scripts/switch/build_fused.sh b/scripts/switch/build_fused.sh new file mode 100755 index 00000000..246dd22c --- /dev/null +++ b/scripts/switch/build_fused.sh @@ -0,0 +1,56 @@ +#!/usr/bin/env bash +# Build fused gen1recomp Switch NRO (romfs game.love + nacp + icon). +# +# Usage: scripts/switch/build_fused.sh GAME_LOVE VERSION OUT_NRO + +set -euo pipefail + +ROOT="$(cd "$(dirname "$0")/../.." && pwd)" +LOVE_NX_TAG="11.5-nx1" +LOVE_NX_DIR="$ROOT/.bazinga/love-nx/$LOVE_NX_TAG" +LOVE_ELF="$LOVE_NX_DIR/love.elf" +ICON="$ROOT/assets/switch/icon.jpg" +APP_NAME="gen1recomp" +BUNDLE_ID="com.theboisclub.pokemonred" + +GAME_LOVE="${1:-}" +VERSION="${2:-}" +OUT_NRO="${3:-}" + +fail() { printf 'error: %s\n' "$*" >&2; exit 1; } +say() { printf '\033[1;32m==>\033[0m %s\n' "$*"; } + +[ -n "$GAME_LOVE" ] && [ -n "$VERSION" ] && [ -n "$OUT_NRO" ] \ + || fail "usage: $0 GAME_LOVE VERSION OUT_NRO" + +[ -f "$GAME_LOVE" ] || fail "missing game.love at $GAME_LOVE" + +"$ROOT/scripts/switch/verify_love_nx.sh" + +command -v nacptool >/dev/null \ + || fail "nacptool not found (install devkitPro switch-dev; never download love-nx latest)" +command -v elf2nro >/dev/null \ + || fail "elf2nro not found (install devkitPro switch-dev; never download love-nx latest)" + +[ -f "$ICON" ] || fail "missing Switch icon at $ICON" + +WORK="$(mktemp -d "${TMPDIR:-/tmp}/gen1recomp-fused.XXXXXX")" +trap 'rm -rf "$WORK"' EXIT + +ROMFS_DIR="$WORK/romfs" +mkdir -p "$ROMFS_DIR" +cp "$GAME_LOVE" "$ROMFS_DIR/game.love" + +NACP="$WORK/control.nacp" +nacptool --create "$APP_NAME" "$BUNDLE_ID" "$VERSION" "$NACP" + +say "building fused NRO with pinned love.elf" +elf2nro "$LOVE_ELF" "$OUT_NRO" \ + --icon="$ICON" \ + --nacp="$NACP" \ + --romfsdir="$ROMFS_DIR" + +mkdir -p "$(dirname "$OUT_NRO")" +shasum -a 256 "$OUT_NRO" | awk '{print $1}' > "${OUT_NRO}.sha256" +say "fused NRO: $OUT_NRO" +say "sha256: $(cat "${OUT_NRO}.sha256")"