#!/usr/bin/env bash # Compila AStar (homebrew de Atari 2600 de Aaron Curtis / hippopotamus-prime, GPL-3.0-or-later) da tag # v1.0 (commit bcc9420) com o dasm 2.20.14.1, pelo CMake do proprio repositorio (o solver em C++ gera o # asm das fases e o dasm monta a ROM de 4 KB). Sem o patch, esta build reproduz byte a byte o # astar-ntsc.bin do release v1.0. # # O repositorio traz i2c.inc e speakjet.inc, drivers do AtariVox de Alex Herbert (2004) sem licenca; o # autor confirmou (issue astar-free#1, 2026-10-14) que nao estao cobertos pela GPL e que sao codigo morto # desde que ele desligou o cartao de memoria. Apagamos os dois e o astar-no-atarivox.patch tira os # includes (e o memory.asm, inalcancavel, que so chama o driver), deixando o espaco zerado para o resto da # ROM ficar nos mesmos enderecos do v1.0. O site hospeda o tarball sem os dois arquivos, o patch e este # script. Quem partir desse tarball hospedado (o mesmo commit, sem os dois drivers) troca o GAME_SHA256 # pelo dele (8e10d5f54902fbd255f9b669c43798cf34b1c975f5ad997bf01f22a9502916e2): o rm -f abaixo nao falha. # # src/FredGames.Bundler/Builds/build-astar.sh # # Saida: artifacts/build/astar/astar-ntsc.bin set -euo pipefail DASM=2.20.14.1 DASM_SHA256=ec71ffd10eeaa70bf7587ee0d79a92cd3f0a017c0d6d793e37d10359ceea663a COMMIT=bcc94200ec5a9bc5ab4b2b30d303240e03b67717 GAME_SHA256=219110eec13dcf106d2726ee3003b30cef418eccb1f99feba2073912a150c1f1 here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/astar" 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 "https://github.com/hippopotamus-prime/astar-free/archive/$COMMIT.tar.gz" "$cache/astar-free-$COMMIT.tar.gz" "$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" tar -xzf "$cache/astar-free-$COMMIT.tar.gz" -C "$out/tree" --strip-components 1 rm -f "$out/tree/i2c.inc" "$out/tree/speakjet.inc" patch -d "$out/tree" -p1 --quiet < "$here/astar-no-atarivox.patch" cmake -S "$out/tree" -B "$out/tree/build" -DDASM_ROOT="$tools/src" -DVCS_ROOT="$tools/machines/atari2600" >/dev/null make -C "$out/tree/build" binary_NTSC >/dev/null cp "$out/tree/build/astar-ntsc.bin" "$out/" shasum -a 256 "$out/astar-ntsc.bin"