#!/usr/bin/env bash # Compila Ratcatcher (homebrew de Atari 5200 de Ryan Witmer / Average Software, GPL-3.0-or-later) do pacote # que o proprio autor publica em phasercat.com (ratcatcher.zip: License.txt, source/ e ratcatcher.bin) com o # dasm 2.20.14.1, pelo comando do Makefile dele: "dasm ratcatcher.s -f3 -oratcatcher.bin" dentro de source/. # A ROM crua de 32 KB sai identica, byte a byte, ao ratcatcher.bin do pacote; dois builds seguidos dao o mesmo # sha256. O site hospeda o zip inteiro, o dasm e este script. # # src/FredGames.Bundler/Builds/build-ratcatcher.sh # # Saida: artifacts/build/ratcatcher/ratcatcher.a52 set -euo pipefail DASM=2.20.14.1 DASM_SHA256=ec71ffd10eeaa70bf7587ee0d79a92cd3f0a017c0d6d793e37d10359ceea663a GAME_URL=https://phasercat.com/wp-content/uploads/2020/08/ratcatcher.zip GAME_SHA256=07b5e287883cd2a7a70bf3c512ac498f72b2a60dbd8484476bb329996d011852 ROM_SHA256=6f1a4c0ca3d679363d6615e0903714bd49ac99163965662f6c2c527983dd7f25 here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/ratcatcher" cache="$root/artifacts/build/cache" tools="$root/artifacts/tools/dasm-$DASM" mkdir -p "$cache" fetch() { [ -f "$2" ] || curl -fsSL --retry 4 "$1" -o "$2"; echo "$3 $2" | shasum -a 256 -c -; } fetch "https://github.com/dasm-assembler/dasm/archive/refs/tags/$DASM.tar.gz" "$cache/dasm-$DASM.tar.gz" "$DASM_SHA256" fetch "$GAME_URL" "$cache/ratcatcher-phasercat.zip" "$GAME_SHA256" if [ ! -x "$tools/src/dasm" ]; then rm -rf "$tools" && mkdir -p "$tools" tar -xzf "$cache/dasm-$DASM.tar.gz" -C "$tools" --strip-components 1 make -C "$tools/src" dasm >/dev/null 2>&1 fi rm -rf "$out" && mkdir -p "$out/tree" unzip -q "$cache/ratcatcher-phasercat.zip" -d "$out/tree" (cd "$out/tree/ratcatcher/source" && "$tools/src/dasm" ratcatcher.s -f3 -o"$out/ratcatcher.a52" >/dev/null) rm -rf "$out/tree" echo "$ROM_SHA256 $out/ratcatcher.a52" | shasum -a 256 -c -