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
21 lines
508 B
Diff
21 lines
508 B
Diff
diff --git a/cmake/libpinmame/CMakeLists.txt b/cmake/libpinmame/CMakeLists.txt
|
|
index a2dfd1a..119e3ec 100644
|
|
--- a/cmake/libpinmame/CMakeLists.txt
|
|
+++ b/cmake/libpinmame/CMakeLists.txt
|
|
@@ -745,6 +745,7 @@ set(PINMAME_INCLUDE_DIRS
|
|
src/cpu/m68000/generated_by_m68kmake
|
|
src/unix
|
|
src/unix/sysdep
|
|
+ ext/zlib
|
|
)
|
|
|
|
|
|
@@ -752,7 +753,6 @@ if(PLATFORM STREQUAL "win" OR PLATFORM STREQUAL "win-mingw")
|
|
list(APPEND PINMAME_INCLUDE_DIRS
|
|
src/vc
|
|
src/windows
|
|
- ext/zlib
|
|
)
|
|
endif()
|
|
|