#!/usr/bin/env bash # Compila o Worm de joyrider3774 (Willems Davy; codigo MIT, DrawPrimitives/TextFonts do Vircon32 3-Clause BSD, fonte # TextureFont22x32.png do Vircon32 CC BY 4.0) para o Vircon32, do repositorio do autor # (github.com/joyrider3774/worm_vircon32, commit 76293dd, v1.2), sem mudancas, com a toolchain oficial pinada # (Builds/vircon32/). O Make.bat do autor e so para Windows; os mesmos passos estao aqui. # 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-worm-vircon32.sh # Saida: artifacts/build/worm-vircon32/worm-vircon32-76293dd.v32 e ...-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=worm-vircon32 SRC_URL=https://github.com/joyrider3774/worm_vircon32/archive/76293dda68f6b1fef458e2cf2b07302cd6aa6290.tar.gz SRC_SHA256=f0763e463245482d43e4dc6f7a1b4e759d2f0a4c89c59e67eddcfe8491225a28 OUT_NAME=worm-vircon32-76293dd out="$v32_root/artifacts/build/$SLUG" tgz="$out/cache/worm_vircon32-76293dd.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/worm" tar -xzf "$tgz" -C "$1/worm" --strip-components 1 rm -rf "$1/worm/screenshots" } for i in 1 2; do prepare "$out/tree$i" ( cd "$out/tree$i/worm"; mkdir -p obj bin export PATH="$V32_TOOLS:$PATH" compile Worm.c -o obj/Worm.asm assemble obj/Worm.asm -o obj/Worm.vbin png2vircon libs/TextFonts/TextureFont22x32.png -o obj/TextureFont22x32.vtex packrom Worm.xml -o bin/Worm.v32 ) >"$out/build$i.log" 2>&1 || { tail -20 "$out/build$i.log" >&2; exit 1; } done a="$(shasum -a 256 "$out/tree1/worm/bin/Worm.v32" | cut -d' ' -f1)" b="$(shasum -a 256 "$out/tree2/worm/bin/Worm.v32" | cut -d' ' -f1)" [ "$a" = "$b" ] || { echo "Dois builds deram ROMs diferentes ($a x $b)" >&2; exit 1; } cp "$out/tree1/worm/bin/Worm.v32" "$out/$OUT_NAME.v32" prepare "$out/srctree" files=(); while IFS= read -r -d '' f; do files+=("$f"); done < <(cd "$out/srctree" && find worm -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)"