#!/usr/bin/env bash # Compila Race for the PS9 (homebrew de Game Boy Color de Joserichi, GB Compo 2025, GPL-3.0) do commit # a48a5ed com o RGBDS 1.0.3. Mesmos passos do makefile do autor (rgbasm em cada .asm de src/ com # -i inc -i bin, rgblink, rgbfix com as opcoes dele; os .bin de bin/ ja vem convertidos no repositorio), # sem o tools/romusage (so imprime o uso da ROM). Ordem de ligacao: src/*.asm e depois src/*/*.asm, como # o $(wildcard) do makefile. O RGBDS 1.0.3 e compilado em artifacts/tools/rgbds-1.0.3-full com o Bison # 3.8.2 e a libpng 1.6.50 estatica que o build-gigant-golf.sh deixa em artifacts/tools/. # # src/FredGames.Bundler/Builds/build-race-for-the-ps9.sh # # Saida: artifacts/build/race-for-the-ps9/PS9Race.gbc set -euo pipefail export LC_ALL=C COMMIT=a48a5ed1fa5ce29b7a3ff66cc02e7f0aa6da4427 GAME_SHA256=faac0e9158e671076e325f968077cce7ec49c4a337de47e2549979e9467c3c89 RGBDS_SHA256=e79e51bdc0e53d8b52b5b9b58a5cbe15d6a380092da67dd625aeca29f6679660 here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/race-for-the-ps9" cache="$root/artifacts/build/cache" rgbds="$root/artifacts/tools/rgbds-1.0.3-full" bison="$root/artifacts/tools/bison-3.8.2" libpng="$root/artifacts/tools/libpng-1.6.50" mkdir -p "$cache" if [ ! -x "$rgbds/rgbgfx" ]; then src="$cache/rgbds-1.0.3.tar.gz" [ -f "$src" ] || curl -fsSL "https://github.com/gbdev/rgbds/archive/refs/tags/v1.0.3.tar.gz" -o "$src" echo "$RGBDS_SHA256 $src" | shasum -a 256 -c - rm -rf "$rgbds.src" && mkdir -p "$rgbds.src" "$rgbds" tar -xzf "$src" -C "$rgbds.src" --strip-components 1 PATH="$bison/bin:$PATH" make -C "$rgbds.src" -j8 WARNFLAGS=-w \ PNGCFLAGS="-I$libpng/include" PNGLDFLAGS="-L$libpng/lib" PNGLDLIBS="$libpng/lib/libpng16.a -lz" \ rgbasm rgblink rgbfix rgbgfx >/dev/null cp "$rgbds.src/rgbasm" "$rgbds.src/rgblink" "$rgbds.src/rgbfix" "$rgbds.src/rgbgfx" "$rgbds/" rm -rf "$rgbds.src" fi tarball="$cache/race-for-the-ps9-a48a5ed.tar.gz" [ -f "$tarball" ] || curl -fsSL "https://github.com/gbcompo25/Race-for-the-PS9/archive/$COMMIT.tar.gz" -o "$tarball" echo "$GAME_SHA256 $tarball" | shasum -a 256 -c - rm -rf "$out" && mkdir -p "$out/tree" tar -xzf "$tarball" -C "$out/tree" --strip-components 1 cd "$out/tree" objs=() for s in $(ls src/*.asm | sort) $(ls src/*/*.asm | sort); do o="obj/${s#src/}.o" mkdir -p "$(dirname "$o")" "$rgbds/rgbasm" -w -i inc -i bin -o "$o" "$s" objs+=("$o") done "$rgbds/rgblink" -o PS9Race.gbc "${objs[@]}" "$rgbds/rgbfix" -v -c -i PS9 -t PS9Race -j -k 'J*' -m "ROM ONLY" -r 0 -l 0x33 -p 0xFF PS9Race.gbc cp PS9Race.gbc "$out/" shasum -a 256 "$out/PS9Race.gbc"