#!/usr/bin/env bash # Gera o blasphemer.wad servido no fredygames.com a partir do release 0.1.8 do Blasphemer (BSD-3-Clause, # https://github.com/Blasphemer/blasphemer/releases/tag/v0.1.8, blasphem-0.1.8.zip), com tres mudancas # nossas no IWAD (o resto dos lumps sai byte a byte igual): # - tira as fases dos episodios 4 e 5 (E4M1-E5M9) e do episodio 6 (E6M1-E6M3): o 4 so tem fases de # deathmatch, o 5 e o 6 sao quartos em branco ("PLACE HOLDER" no wadinfo.txt do projeto), e o lump # EXTENDED (que faz o motor oferecer cinco episodios): o jogo fica com os tres episodios completos; # - troca o GENMIDI (instrumentos do chip OPL, que o proprio projeto marca como "PLACE HOLDER" e que veio # de um import de 2010 sem origem registrada) pelo do Freedoom 0.13.0, tambem BSD-3-Clause (instrumentos # de Matt Cadirao, nos CREDITS do Freedoom), para a musica nao depender de um lump de origem desconhecida. # # src/FredGames.Bundler/Builds/build-blasphemer.sh # # Saida: artifacts/build/blasphemer-0.1.8/blasphemer.wad (determinístico: mesma ordem dos lumps do original). set -euo pipefail BL_SHA256=5838d211add81e1696a621485c1e40771035daf6609d08bad7018f52acfa5e54 FD_SHA256=3f9b264f3e3ce503b4fb7f6bdcb1f419d93c7b546f4df3e874dd878db9688f59 here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/blasphemer-0.1.8" cache="$root/artifacts/build/cache" mkdir -p "$cache" "$out" blzip="$cache/blasphem-0.1.8.zip" fdzip="$cache/freedoom-0.13.0.zip" [ -f "$blzip" ] || curl -fsSL "https://github.com/Blasphemer/blasphemer/releases/download/v0.1.8/blasphem-0.1.8.zip" -o "$blzip" [ -f "$fdzip" ] || curl -fsSL "https://github.com/freedoom/freedoom/releases/download/v0.13.0/freedoom-0.13.0.zip" -o "$fdzip" echo "$BL_SHA256 $blzip" | shasum -a 256 -c - echo "$FD_SHA256 $fdzip" | shasum -a 256 -c - python3 -I - "$blzip" "$fdzip" "$out/blasphemer.wad" <<'PY' import re, struct, sys, zipfile blzip, fdzip, dest = sys.argv[1:] def read_wad(data): kind, count, offset = struct.unpack('<4sii', data[:12]) assert kind == b'IWAD', kind lumps = [] for i in range(count): pos, size, name = struct.unpack('