#!/usr/bin/env bash # Compila o Fifteen (joyrider3774, a partir do 2048 de Carra; 3-Clause BSD) para o Vircon32, do repositorio do autor # (github.com/joyrider3774/fifteen_vircon32, commit 84cb48c) com a toolchain oficial pinada (Builds/vircon32/). # Mudanca nossa: a musica da partida ("Chill Air", de Frank Nora, dada como dominio publico sem licenca verificavel) # sai do cartucho e do fonte hospedado; a partida toca a musica do titulo, do proprio autor (projeto LMMS no repo). # Dois builds seguidos; os dois .v32 precisam ter o mesmo SHA-256. # src/FredGames.Bundler/Builds/vircon32/install-toolchain.sh # uma vez # src/FredGames.Bundler/Builds/build-fifteen-vircon32.sh # Saida: artifacts/build/fifteen-vircon32/fifteen-vircon32-84cb48c.v32 e fifteen-vircon32-84cb48c-src.tar.gz set -euo pipefail here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" . "$here/vircon32/env.sh" [ -x "$V32_TOOLS/compile" ] || "$here/vircon32/install-toolchain.sh" SLUG=fifteen-vircon32 SRC_URL=https://github.com/joyrider3774/fifteen_vircon32/archive/84cb48c631f095d0b24d0a381751484ce62c99fa.tar.gz SRC_SHA256=db2a637f1ff56518ef23e76bb05fd92374c32b64ef1a167454303444ee6a2b11 OUT_NAME=fifteen-vircon32-84cb48c out="$v32_root/artifacts/build/$SLUG" tgz="$out/cache/fifteen_vircon32-84cb48c.tar.gz" mkdir -p "$out/cache" [ -f "$tgz" ] || curl -fsSL "$SRC_URL" -o "$tgz" echo "$SRC_SHA256 $tgz" | shasum -a 256 -c - >/dev/null prepare() { # $1 = pasta rm -rf "$1"; mkdir -p "$1/fifteen" tar -xzf "$tgz" -C "$1/fifteen" --strip-components 1 rm -f "$1/fifteen/music/MusicGameplay.wav" "$1/fifteen/music/MusicGameplay.txt" sed -i '' 's#music/MusicGameplay.wav -o obj/MusicGameplay.vsnd#music/MusicTitle.wav -o obj/MusicGameplay.vsnd#' "$1/fifteen/Make.sh" grep -q 'music/MusicTitle.wav -o obj/MusicGameplay.vsnd' "$1/fifteen/Make.sh" } for i in 1 2; do prepare "$out/tree$i" ( cd "$out/tree$i/fifteen" && PATH="$V32_TOOLS:$PATH" bash Make.sh >"$out/build$i.log" 2>&1 ) || { tail -20 "$out/build$i.log" >&2; exit 1; } done a="$(shasum -a 256 "$out/tree1/fifteen/bin/Fifteen.v32" | cut -d' ' -f1)" b="$(shasum -a 256 "$out/tree2/fifteen/bin/Fifteen.v32" | cut -d' ' -f1)" [ "$a" = "$b" ] || { echo "Dois builds deram ROMs diferentes ($a x $b)" >&2; exit 1; } cp "$out/tree1/fifteen/bin/Fifteen.v32" "$out/$OUT_NAME.v32" prepare "$out/srctree" files=(); while IFS= read -r -d '' f; do files+=("$f"); done < <(cd "$out/srctree" && find fifteen -type f -print0) python3 -I "$here/sprig-web/pack-source.py" "$out/$OUT_NAME-src.tar.gz" "$out/srctree" "${files[@]}" rm -rf "$out/tree1" "$out/tree2" "$out/srctree" echo "$a $out/$OUT_NAME.v32 (dois builds iguais)"