Подготовить автономную сборку и запуск перед разделением проектов

This commit is contained in:
Александр Петров
2026-09-15 23:04:04 +03:00
parent 5323b168a7
commit 0e74aaa7ee
116 changed files with 6908 additions and 333 deletions
+12 -29
View File
@@ -1,6 +1,6 @@
#!/bin/sh
# Запускает MAME с локальным тестовым CHD как hard2 (D:) и заданным Lua.
# Скрипт не пересобирает образ и не чистит каталог кадров.
# Состояние эмулятора изолировано; каталог кадров задаёт вызывающий.
set -eu
@@ -10,36 +10,19 @@ if [ "$#" -lt 3 ] || [ "$#" -gt 4 ]; then
fi
PROJECT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
MAME_DIR="$PROJECT_DIR/../../mame/v306"
if [ -z "${SPRINTER_ROOT:-}" ] && [ -f "$PROJECT_DIR/../../bin/sprinter-cc" ]; then
SPRINTER_ROOT="$PROJECT_DIR/../.."
fi
if [ -z "${MAME_HOME:-}" ] && [ -f "$PROJECT_DIR/../../mame/v306/mame.arm" ]; then
MAME_HOME="$PROJECT_DIR/../../mame/v306"
fi
: "${SPRINTER_ROOT:?задайте SPRINTER_ROOT для запуска теста}"
export MAME_HOME
IMAGE=$(CDPATH= cd -- "$(dirname -- "$1")" && pwd)/$(basename -- "$1")
LUA=$(CDPATH= cd -- "$(dirname -- "$2")" && pwd)/$(basename -- "$2")
SNAPSHOT_DIR=$(mkdir -p "$3" && CDPATH= cd -- "$3" && pwd)
TIMEOUT=${4:-75}
if pgrep -fl 'mame[^ ]* sprinter( |$)' | grep . >/dev/null 2>&1; then
echo "run_mame_hdd.sh: уже запущен MAME sprinter" >&2
exit 1
fi
cd "$MAME_DIR"
# В macOS GNU timeout может отсутствовать; Python обеспечивает тот же лимит.
if command -v timeout >/dev/null 2>&1; then
set -- timeout "$TIMEOUT"
else
set -- python3 -c '
import subprocess, sys
try:
sys.exit(subprocess.run(sys.argv[2:], timeout=float(sys.argv[1])).returncode)
except subprocess.TimeoutExpired:
print("run_mame_hdd.sh: истёк лимит времени", file=sys.stderr)
sys.exit(124)
' "$TIMEOUT"
fi
exec "$@" ./mame.arm sprinter \
-skip_gameinfo -video opengl -window -nofilter \
-beta:wd179x:0 35hd -beta:wd179x:1 35hd \
-flop1 ./IMG/mc.img -flop2 ./IMG/dss171u.img \
-isa0 zxbus_adapter -isa0:zxbus_adapter:card neogs \
-hard1 ./IMG/sp_hdd_sys.chd -hard2 "$IMAGE" \
-ata2:0 cdrom -cdrom ./IMG/SprinterCD.iso -bios v3.06 \
-snapshot_directory "$SNAPSHOT_DIR" -autoboot_script "$LUA"
exec python3 "$SPRINTER_ROOT/toolchain/run_sprinter_mame.py" \
--hdd "$IMAGE" --script "$LUA" --snapshot-dir "$SNAPSHOT_DIR" \
--timeout "$TIMEOUT" --video opengl