#!/usr/bin/env bash # Compila Terra7 (homebrew de Atari 2600 de Cisano Carmelo, GPL-3.0-or-later) do commit 586275f (o HEAD; # o repositorio nao tem tags nem release com a ROM) com o dasm 2.20.14.1: "Terra7 - NTSC.asm", formato 3 # (ROM crua de 4 KB, sem bankswitching). Dois builds seguidos dao o mesmo sha256. # # O repositorio traz uma copia do vcs.h 1.05, cujo cabecalho pede "PLEASE DO *NOT* REDISTRIBUTE THIS # FILE!". Apagamos essa copia e montamos com o vcs.h 1.06 que vem com o dasm 2.20.14.1 (GPL), sem aquele # pedido; os registradores sao os mesmos e a ROM sai identica a montada com a copia do repositorio. O # macro.h 1.06 do repositorio fica (o cabecalho dele so veta redistribuir versoes modificadas, e ele vai # sem mudanca; o macro.h 1.09 do dasm gera codigo diferente). O site hospeda o tarball do commit sem o # vcs.h, o tarball do dasm e este script. Quem partir do tarball hospedado troca o GAME_SHA256 pelo dele: # o rm -f abaixo nao falha. # # src/FredGames.Bundler/Builds/build-terra7.sh # # Saida: artifacts/build/terra7/terra7-ntsc.bin set -euo pipefail DASM=2.20.14.1 DASM_SHA256=ec71ffd10eeaa70bf7587ee0d79a92cd3f0a017c0d6d793e37d10359ceea663a COMMIT=586275f58091f330e93bb9604b339a24477c009c GAME_SHA256=612039694bbe9ad5da76a4621e87e14c807d5ee358b22f0aaec220266b533d67 ROM_SHA256=70087f3498843823b76587a3986a211f9ef35353453134346c99446f3db4e64e here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/terra7" 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/Cisano/Terra7/archive/$COMMIT.tar.gz" "$cache/Terra7-$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/Terra7-$COMMIT.tar.gz" -C "$out/tree" --strip-components 1 rm -f "$out/tree/vcs.h" (cd "$out/tree" && "$tools/src/dasm" "Terra7 - NTSC.asm" -f3 -I"$tools/machines/atari2600" -o"$out/terra7-ntsc.bin" >/dev/null) rm -rf "$out/tree" echo "$ROM_SHA256 $out/terra7-ntsc.bin" | shasum -a 256 -c -