#!/usr/bin/env bash # Compila Spider Web (homebrew de Atari 2600 de D Cooper Dalrymple / relic-se, LGPL-3.0) do commit e1892e0 # (o HEAD do master, "Last revision: May 23rd, 2022" no README; o repositorio nao tem tags nem release # com a ROM) com o dasm 2.20.14.1, como o build.sh do autor no modo NTSC: "dasm kernel.asm -DSYSTEM=1 # -f3" dentro de src/ (ROM crua de 4 KB). Os .asm gerados das imagens ja estao no commit, entao o passo # assets-ntsc.sh (Python) nao muda nada e fica de fora. Dois builds seguidos dao o mesmo sha256. # # O repositorio traz em src/ 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; a ROM sai identica a montada com a copia do repositorio. O macro.h do repositorio fica # (o cabecalho so veta redistribuir versoes modificadas). O site hospeda o tarball do commit sem o vcs.h # e sem a pasta physical/ (arte da caixa e do cartucho, que nao entra na ROM), 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-spider-web.sh # # Saida: artifacts/build/spider-web/spider-web-ntsc.bin set -euo pipefail DASM=2.20.14.1 DASM_SHA256=ec71ffd10eeaa70bf7587ee0d79a92cd3f0a017c0d6d793e37d10359ceea663a COMMIT=e1892e0b8f53af77e25daa830ab1786f647fc287 GAME_SHA256=4c34bd8d868e1c564b982fda03267df1c3c650f6a245a7a0897f0ec1f1b23b57 ROM_SHA256=b7c3586abb18c3760648af451397b2af1b2736aa3b46ce2c66aeba6969176b78 here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/spider-web" 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/relic-se/vcs-spider/archive/$COMMIT.tar.gz" "$cache/vcs-spider-$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/vcs-spider-$COMMIT.tar.gz" -C "$out/tree" --strip-components 1 --exclude '*/physical/*' rm -f "$out/tree/src/vcs.h" (cd "$out/tree/src" && "$tools/src/dasm" kernel.asm -DSYSTEM=1 -f3 -I"$tools/machines/atari2600" -o"$out/spider-web-ntsc.bin" >/dev/null) rm -rf "$out/tree" echo "$ROM_SHA256 $out/spider-web-ntsc.bin" | shasum -a 256 -c -