#!/usr/bin/env bash # Compila Sushi Nights (homebrew de Game Boy de Zalo, Kirblue, Maikel Ortega e Sergio de Prado, GB Compo 2021, # MIT) do commit 11bfad4 do repositorio Zal0/SushiNights, com a engine ZGB (MIT) no commit 6a84b3e (1 de # novembro de 2022, o "updated to the latest changes in the engine" do jogo pede esse estado) e o GBDK-2020 # 4.1.0. O repositorio nao traz ROM. Ferramentas: o GBDK 4.1.0 para macOS e x86_64 (roda no Rosetta 2); os # conversores do ZGB (gbr2c, gbm2c, gbr2png, em C++ no proprio ZGB) e o mod2gbt (gbt-player, MIT, versao para # GBDK) sao compilados aqui, e o Makefile do ZGB (feito para Windows) roda com as variaveis trocadas pela linha de comando. # # src/FredGames.Bundler/Builds/build-sushi-nights.sh # # Saida: artifacts/build/sushi-nights/SushiNights.gb set -euo pipefail GBDK=4.1.0 GBDK_SHA256=da4833934f7fa6052981d2bcf7f1fd8f2d3b6b4f866ff9774a5fcf36e1c4d519 ZGB_COMMIT=6a84b3e0c6050643022e684b71d4869d245983a3 ZGB_SHA256=bfcd56134683572dfb92394b60c0b6948036cef20097b892d509647eaf6d9f21 GBT_COMMIT=efd8e754c9ae0ca444d48fced58ca99f0510faaf GBT_SHA256=884bd2dc87db639f2aa855669541d8bec6fa08957ae858f363ca858051dfb910 GAME_COMMIT=11bfad461858a071d755a816547ba06cb022865e GAME_SHA256=3d6bc62ae5e820ff53c3888447b9e2e01500b7031bd28b21c36dbd8430dc71b5 here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/sushi-nights" cache="$root/artifacts/build/cache" gbdk="$root/artifacts/tools/gbdk-$GBDK" mkdir -p "$cache" fetch() { [ -f "$2" ] || curl -fsSL --retry 4 "$1" -o "$2"; echo "$3 $2" | shasum -a 256 -c -; } fetch "https://github.com/gbdk-2020/gbdk-2020/releases/download/$GBDK/gbdk-macos.tar.gz" "$cache/gbdk-$GBDK-macos.tar.gz" "$GBDK_SHA256" fetch "https://github.com/Zal0/ZGB/archive/$ZGB_COMMIT.tar.gz" "$cache/zgb-6a84b3e.tar.gz" "$ZGB_SHA256" fetch "https://github.com/AntonioND/gbt-player/archive/$GBT_COMMIT.tar.gz" "$cache/gbt-player-efd8e75.tar.gz" "$GBT_SHA256" fetch "https://github.com/Zal0/SushiNights/archive/$GAME_COMMIT.tar.gz" "$cache/sushi-nights-11bfad4.tar.gz" "$GAME_SHA256" if [ ! -x "$gbdk/bin/sdcc" ]; then rm -rf "$gbdk" "$gbdk.tmp" && mkdir -p "$gbdk.tmp" tar -xzf "$cache/gbdk-$GBDK-macos.tar.gz" -C "$gbdk.tmp" mv "$gbdk.tmp/gbdk" "$gbdk" && rm -rf "$gbdk.tmp" xattr -dr com.apple.quarantine "$gbdk" 2>/dev/null || true fi rm -rf "$out" && mkdir -p "$out/zgb" "$out/gbt" "$out/game" "$out/bin" tar -xzf "$cache/zgb-6a84b3e.tar.gz" -C "$out/zgb" --strip-components 1 tar -xzf "$cache/gbt-player-efd8e75.tar.gz" -C "$out/gbt" --strip-components 1 tar -xzf "$cache/sushi-nights-11bfad4.tar.gz" -C "$out/game" --strip-components 1 t="$out/zgb/tools" c++ -O1 -w -std=c++14 -o "$out/bin/gbr2c" "$t/gbr2c/gbr2c.cpp" "$t/gbr2c/gbrParser .cpp" c++ -O1 -w -std=c++14 -I"$t/gbr2c" -o "$out/bin/gbm2c" "$t/gbm2c/gbm2c.cpp" "$t/gbr2c/gbrParser .cpp" c++ -O1 -w -std=c++14 -I"$t/gbr2c" -I"$t/gbr2png/lodepng" -o "$out/bin/gbr2png" "$t/gbr2png/gbr2png.cpp" "$t/gbr2png/lodepng/lodepng.cpp" "$t/gbr2c/gbrParser .cpp" cc -O1 -w -o "$out/bin/mod2gbt" "$out/gbt/gb/legacy_gbdk/mod2gbt/mod2gbt.c" printf '#!/bin/sh\nexit 0\n' > "$out/bin/romview" && chmod +x "$out/bin/romview" cd "$out/game/src" export PATH="$gbdk/bin:$out/bin:/usr/bin:/bin:/usr/sbin:/sbin" make SHELL=/bin/bash ZGB_PATH="$out/zgb/common" GBDK_HOME="$gbdk" PATH="$PATH" \ GBR2C="$out/bin/gbr2c" GBM2C="$out/bin/gbm2c" GBR2PNG="$out/bin/gbr2png" MOD2GBT="$out/bin/mod2gbt" \ ROMVIEW="$out/bin/romview" build_gb >"$out/make.log" 2>&1 || { tail -30 "$out/make.log"; exit 1; } cp ../bin/SushiNights.gb "$out/SushiNights.gb" shasum -a 256 "$out/SushiNights.gb"