Files
vpinball-wasm/scripts/versions.sh
T
valknarandClaude Sonnet 5 9479cea280 Add real PinMAME (VPinMAME.Controller) integration for ROM-based tables
Statically links the real PinMAME emulation core (libpinmame) instead of
leaving VPinMAME.Controller creation to fail, which was crashing table
scripts on ROM-based tables before they could spawn a ball. PinMAME's own
run_game()->cpu_run() loop is split into a one-shot init, a per-frame step,
and a one-shot teardown (patches/pinmame/0004) so it runs cooperatively on
the same frame callback as vpinball's own loop instead of on a real
std::thread, which hard-aborts under Emscripten's single-threaded runtime -
three smaller wasm32 portability fixes to libpinmame itself round out the
patch set (0001-0003). Adds pinball.loadRom() to supply a ROM zip, written
to the table-relative pinmame/roms/ path vpinball's own plugin already
checks. Confirmed against a real community ROM-based table: Controller
creation and game identification succeed, and a missing ROM now fails
cleanly instead of crashing the page - actual ROM-driven gameplay is still
unconfirmed since no ROM was available (or sought out) to test with.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SoSarxLgY33Kax5UNXcafZ
2026-08-23 12:09:35 +02:00

40 lines
2.0 KiB
Bash
Executable File

#!/usr/bin/env bash
# Single source of truth for every pinned version/commit this project builds
# against. Sourced by every other script in this directory and used to derive
# CI cache keys. Keep these in sync with the upstream vpinball checkout's own
# platforms/config.sh - do not drift silently.
# Pinned to the exact commit already researched/verified in
# /home/valknar/Projekte/vpinball-rust/repos/vpinball (HEAD as of 2026-08-21).
VPINBALL_SHA=195f214dd4849b8ef6113fd377258b78d0dec3bf
# Pinned to the exact commit already validated end-to-end by the
# libwinevbs-wasm spike (compiles + runs real VBScript under Emscripten).
# This matches vpinball's own platforms/config.sh LIBWINEVBS_SHA exactly.
LIBWINEVBS_SHA=bcc790e58d394b282c327feca2a7c921ca022e8d
# Mirrors vpinball's platforms/config.sh pins, so this project's wasm build
# stays close to what every other vpinball platform actually ships.
SDL_SHA=147a8ee32dbf9ac02f3794964490687b6bbda1bc
SDL_IMAGE_SHA=bec9134a26c7d0f31b36d6083c25296e04cabff5
SDL_TTF_SHA=a1ce3670aec736ecbf0936c43f2f0cc53aa61e5b
FREEIMAGE_SHA=b1613452a0c3849d43ac877b154cf51ff9e078d3
# PinMAME (the real ROM/hardware emulation core VPinMAME.Controller wraps on
# every other platform). Mirrors vpinball's own platforms/config.sh pin
# exactly (like LIBWINEVBS_SHA/SDL_SHA above) - vpinball's plugins/pinmame/
# glue code is written against this specific libpinmame API surface (e.g.
# PinmameSetMsgAPI), so a newer/older pinmame commit than this one won't
# necessarily still match it. Validated end-to-end for wasm32 by this
# project's own pinmame-wasm spike (compiles + runs the full driver database
# under Emscripten - see patches/pinmame/ for the 3 portability fixes that
# spike needed; re-verified against this exact pinned commit).
PINMAME_SHA=23321ec7de6dfd563a1c64153bc75f26e5059b9f
# Emscripten SDK version already validated by both spikes
# (spikes/libwinevbs-wasm and spikes/sdl3-gles3-wasm).
EMSDK_VERSION=6.0.8
# Matches libwinevbs's `find_package(BISON 3.8.2 REQUIRED)`.
BISON_MIN_VERSION=3.8.2