46 lines
1.5 KiB
Bash
Executable file
46 lines
1.5 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Install MAME (via apt) and fetch Apple IIgs ROM sets into the project-local
|
|
# rompath. Self-contained — MAME is launched with -rompath to point here, so
|
|
# this does not touch the user's ~/.mame directory.
|
|
|
|
set -euo pipefail
|
|
source "$(dirname "$0")/common.sh"
|
|
|
|
MAME_ROMS="$TOOLS_DIR/mame/roms"
|
|
ROM_BASE="https://archive.org/download/mame-0.240-roms-split_202201/MAME%200.240%20ROMs%20(split)"
|
|
|
|
install -d "$MAME_ROMS"
|
|
|
|
# 1. MAME binary via apt. Ubuntu noble ships 0.264.
|
|
if ! haveCmd mame; then
|
|
log "installing mame"
|
|
sudo apt-get install -y --no-install-recommends mame mame-tools
|
|
else
|
|
log "mame already installed: $(mame -version 2>/dev/null | head -1 || true)"
|
|
fi
|
|
|
|
# 2. ROM sets. apple2gs is current ROM 03; apple2gsr1 is ROM 01 (many 1986-era
|
|
# titles require this variant). Pull both so we can test against either.
|
|
for romName in apple2gs.zip apple2gsr1.zip; do
|
|
dest="$MAME_ROMS/$romName"
|
|
if [ -s "$dest" ]; then
|
|
log "rom already present: $romName"
|
|
continue
|
|
fi
|
|
log "downloading $romName"
|
|
curl -fL --retry 3 --progress-bar \
|
|
-o "$dest.part" "$ROM_BASE/$romName"
|
|
mv "$dest.part" "$dest"
|
|
done
|
|
|
|
# 3. Quick Lua capability check — we rely on -console for the test harness.
|
|
if mame -showusage 2>&1 | grep -q -- '-console'; then
|
|
log "mame Lua console available"
|
|
else
|
|
warn "mame binary does not appear to support -console / Lua scripting"
|
|
fi
|
|
|
|
log "mame install done"
|
|
log " binary: $(command -v mame)"
|
|
log " rompath: $MAME_ROMS"
|
|
log " launch: mame -rompath $MAME_ROMS apple2gs"
|