#!/usr/bin/env bash # Compila Lander Advance (homebrew de Game Boy Advance de Ernesto De Felice, Pierluca De Felice, Raffaele # Colamarino e Raffaele Aucelli, GBA Jam 2026; codigo MIT, graficos e sons CC BY 4.0) do commit 78ed8a1 do # repositorio edefelice/lander-advance. O repositorio nao traz ROM. Toolchain: ver gba-butano-toolchain.sh # (GCC arm-none-eabi 14.3.rel1, regras e crt0 do devkitARM, grit, bin2s, gbafix), mais a libtonc (MIT) que o # jogo usa, compilada aqui do commit ccc03fa de devkitPro/libtonc sem src/tte/tte_iohook.c (precisa do # libsysbase do devkitPro, e o jogo nao usa). # Mudancas nossas (Builds/lander-advance/no-jam-splash.patch): a tela de abertura com o logo da GBA Jam 2026 # (graphics/ScratchLogoSmall1.png, CC BY-NC 4.0, nao livre) sai; o jogo abre direto na tela de titulo. O # Makefile deixa de ligar libmm e libgba, que o codigo nao usa. O grit (blocksds, commit 8820a32, o mesmo da # toolchain) recusa um mapa afim com exatamente 256 tiles (comparacao >= no lugar de >, que cabe no campo de # 8 bits): Builds/lander-advance/grit-256-tiles.patch corrige isso num grit compilado so para este jogo. # # src/FredGames.Bundler/Builds/build-lander-advance.sh # # Saida: artifacts/build/lander-advance/lander-advance.gba set -euo pipefail COMMIT=78ed8a17cf983c24aa82533f37d75956906d5860 GAME_SHA256=8edfa129d4c5cfca702e5c69b9306aff8172c174dd7ce6ee3a696e16914dcee3 TONC_COMMIT=ccc03fa321e56f51aed5e2ee1d6e3df3d1cbc803 TONC_SHA256=606288d42d2abb2e7a4cc0e151feb816aa960a88def4dda5a7b07f79e9b9f973 here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/lander-advance" cache="$root/artifacts/build/cache" dkp="$root/artifacts/tools/devkitpro-compat" "$here/gba-butano-toolchain.sh" mkdir -p "$cache" fetch() { [ -f "$2" ] || curl -fsSL --retry 4 "$1" -o "$2"; echo "$3 $2" | shasum -a 256 -c -; } fetch "https://github.com/edefelice/lander-advance/archive/$COMMIT.tar.gz" "$cache/lander-advance-78ed8a1.tar.gz" "$GAME_SHA256" fetch "https://github.com/devkitPro/libtonc/archive/$TONC_COMMIT.tar.gz" "$cache/libtonc-ccc03fa.tar.gz" "$TONC_SHA256" GRIT_SHA256=399ae8617fa94f811aa20d995a7b1efb096d29a2ab8fa4ea16d98f9ae97021dc fetch "https://github.com/blocksds/grit/archive/8820a3228c71302244574961d365265a080b501f.tar.gz" "$cache/blocksds-grit-8820a32.tar.gz" "$GRIT_SHA256" rm -rf "$out" && mkdir -p "$out/tonc" "$out/tree" "$out/grit" tar -xzf "$cache/libtonc-ccc03fa.tar.gz" -C "$out/tonc" --strip-components 1 tar -xzf "$cache/lander-advance-78ed8a1.tar.gz" -C "$out/tree" --strip-components 1 export DEVKITPRO="$dkp" DEVKITARM="$dkp/devkitARM" export PATH="$dkp/devkitARM/bin:$dkp/tools/bin:$PATH" tar -xzf "$cache/blocksds-grit-8820a32.tar.gz" -C "$out/grit" --strip-components 1 ( cd "$out/grit" && patch -p1 < "$here/lander-advance/grit-256-tiles.patch" >/dev/null \ && make -j8 VERSION_STRING=blocksds-8820a32-256 >"$out/grit.log" 2>&1 ) || { tail -20 "$out/grit.log"; exit 1; } ( cd "$out/tonc" && rm src/tte/tte_iohook.c && make -j8 >"$out/tonc.log" 2>&1 ) || { tail -20 "$out/tonc.log"; exit 1; } cd "$out/tree" patch -p1 < "$here/lander-advance/no-jam-splash.patch" >/dev/null rm graphics/ScratchLogoSmall1.png graphics/ScratchLogoSmall1.grit make -j8 TARGET=lander-advance GRIT="$out/grit/grit" LIBTONC="$out/tonc" ROM_TITLE=LANDERADV ROM_GAMECODE=LNAD >"$out/make.log" 2>&1 || { tail -30 "$out/make.log"; exit 1; } cp lander-advance.gba "$out/lander-advance.gba" shasum -a 256 "$out/lander-advance.gba"