#!/usr/bin/env bash # Compila o JamClown (Lorenzo Langlois, MIT; modelos, texturas e sons do proprio autor, ver README) do repositorio # github.com/lorenzolanglois/JamClown, commit e35774b (2025-04-13, v1.0), com o BlocksDS 1.25.0 (Builds/blocksds/) e o # Makefile do proprio jogo (ja e o do BlocksDS), sem mudar o fonte. Os modelos 3D ja vem convertidos em data/. # src/FredGames.Bundler/Builds/blocksds/install-toolchain.sh # uma vez # src/FredGames.Bundler/Builds/build-jamclown.sh # Saida: artifacts/build/jamclown/jamclown-e35774b.nds set -euo pipefail here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" . "$here/blocksds/env.sh" SLUG=jamclown SRC_URL=https://github.com/lorenzolanglois/JamClown/archive/e35774b344d89ecc1ffce761eb657ac9225e253d.tar.gz SRC_SHA256=d95040eaf244ec5f7d83c86349c3abbd493eb6d751c9ccfbc49b248e5ce37505 SRC_NAME=jamclown-e35774b.tar.gz NDS_NAME=jamclown.nds OUT_NAME=jamclown-e35774b # o bash 3.2 do macOS com "set -u" falha com a lista de audio vazia do bds_build; o jogo nao usa o Maxmod (os sons # sao PCM em data/), entao a busca numa pasta sem audio so passa SOURCES_AUDIO vazio ao make AUDIO_DIRS=source # o gcc 16 usa C23 por padrao, em que "model *initializeModels();" declara uma funcao sem argumentos e a chamada com # um argumento nao compila; o jogo foi escrito para C17 (o Makefile do BlocksDS acrescenta os seus -D a este DEFINES) export DEFINES=-std=gnu17 bds_build a="$(shasum -a 256 "$bds_root/artifacts/build/$SLUG/$OUT_NAME.nds" | cut -d' ' -f1)" bds_build b="$(shasum -a 256 "$bds_root/artifacts/build/$SLUG/$OUT_NAME.nds" | cut -d' ' -f1)" [ "$a" = "$b" ] || { echo "Dois builds deram ROMs diferentes ($a x $b)" >&2; exit 1; } rm -rf "$bds_root/artifacts/build/$SLUG/tree" echo "$a (dois builds iguais)"