diff --git a/services/wolf.sh b/services/wolf.sh index 00352b8..3d21cc2 100644 --- a/services/wolf.sh +++ b/services/wolf.sh @@ -945,9 +945,12 @@ UDEV # TI-99/4A emulator, a separate non-Wolf service) is deliberately not # used here — it's not something ES-DE can launch as a system. # - # ti99sim-sdl (billzajac/ti99sim) is the real target — genuine SDL2 - # joystick/gamepad support, confirmed against its own README — but it's - # source-only with no AppImage, so unlike Azahar/PCSX2/Dolphin/Cemu this + # ti99sim-sdl is the real target — genuine SDL2 joystick/gamepad + # support (v0.16.0 from the original author, mrousseau.org — the same + # source RetroPie's own ti99sim.sh scriptmodule builds from; an older + # GitHub fork under a different account turned out to still target + # SDL 1.2 and was dropped after failing to compile against SDL2) — but + # it's source-only with no AppImage, so unlike Azahar/PCSX2/Dolphin/Cemu this # installer can't just download a working binary. Building it against the # HOST's glibc/SDL2 risks a mismatch against the ES-DE container's own # (different) runtime, so instead it's built INSIDE a throwaway container @@ -1003,26 +1006,31 @@ XMLEOF # it (copies to /opt/ti99sim/bin, symlinks into # /usr/local/bin), so use that instead of guessing the exact # build subpath. - # ti99sim's SDL frontend (src/sdl/main.cpp) is written against - # the real SDL 1.2 API, not SDL2 — confirmed live: compiling - # against libsdl2-dev fails outright on symbols SDL2 genuinely - # removed (SDL_keysym, SDL_WM_SetCaption, SDL_EnableUNICODE, - # SDL_JoystickOpened, the old integer-index SDL_JoystickName), - # not a tooling/config problem a shim can paper over. The actual - # fix: libsdl1.2-compat-dev, the SDL project's own official - # compatibility package (libsdl-org/sdl12-compat) — real SDL 1.2 - # headers and its own sdl-config, implemented on top of real - # SDL2 underneath, so the code compiles against the API it - # actually expects while still running on modern SDL2 at - # runtime. Packaged in Ubuntu's universe repo. + # billzajac/ti99sim on GitHub (used in the two previous attempts) + # turned out to be a stale fork whose SDL frontend still targets + # the real SDL 1.2 API — confirmed live, it fails to compile + # against SDL2 outright on symbols SDL2 removed. RetroPie's own + # ti99sim.sh scriptmodule doesn't build from that fork at all: + # it fetches upstream v0.16.0 directly from the original + # author's own site (mrousseau.org), applies exactly one trivial + # patch (a missing #include for modern g++), and + # builds straight against libsdl2-dev + libssl-dev with no SDL1 + # compatibility layer — confirming v0.16.0 genuinely supports + # SDL2 natively, unlike the old fork. Verified the download URL + # actually serves the real tarball, and the patch content, + # before using either. if docker run --rm -u root --entrypoint /bin/bash \ -v "$GAME_STORAGE_DIR/emulators:/output" \ ghcr.io/games-on-whales/es-de:edge -c ' set -e apt-get update -qq - apt-get install -y -qq git build-essential libsdl1.2-compat-dev ca-certificates - git clone -q https://github.com/billzajac/ti99sim.git /tmp/ti99sim + apt-get install -y -qq build-essential libsdl2-dev libssl-dev ca-certificates curl xz-utils + mkdir -p /tmp/ti99sim + curl -fsSL -o /tmp/ti99sim.tar.xz \ + https://www.mrousseau.org/programs/ti99sim/archives/ti99sim-0.16.0.src.tar.xz + tar -xJf /tmp/ti99sim.tar.xz -C /tmp/ti99sim --strip-components 1 cd /tmp/ti99sim + sed -i "s/#include /#include \n#include /" src/core/device-support.cpp make make install cp /usr/local/bin/ti99sim-sdl /output/ti99sim-sdl @@ -3519,18 +3527,20 @@ service, which is browser-based and isn't something ES-DE can launch as a system. The emulator itself, \`ti99sim-sdl\` (real SDL2 gamepad support), has no -AppImage — so instead of a plain host build (which risks a glibc/SDL2 -mismatch against the ES-DE container's own runtime), this installer builds -it inside a throwaway container running the exact same image ES-DE itself -runs (\`ghcr.io/games-on-whales/es-de:edge\`), guaranteeing compatibility, -and drops the result at \`emulators/ti99sim-sdl\` automatically. Re-run -\`sudo ./setup.sh wolf\` if the build ever needs retrying (network hiccup, -etc.) — it skips the build if the binary's already there. +AppImage — this installer builds it from source (v0.16.0, the original +author's own release — the same one RetroPie's own ti99sim.sh +scriptmodule builds from) inside a throwaway container running the exact +same image ES-DE itself runs (\`ghcr.io/games-on-whales/es-de:edge\`), +guaranteeing compatibility, and drops the result at +\`emulators/ti99sim-sdl\` automatically. Re-run \`sudo ./setup.sh wolf\` if +the build ever needs retrying (network hiccup, etc.) — it skips the build +if the binary's already there. The one thing this can't do for you: your own TI-99/4A console ROM + GROM dump — same legal situation as any other console BIOS, and not something -any installer can supply — ti99sim-sdl's own README covers exactly where -it expects that once you have it. Then just drop \`.ctg\`/\`.rpk\`/\`.bin\` +any installer can supply. Per RetroPie's own documentation for this exact +emulator, it expects that combined into a single cartridge file named +\`TI-994A.ctg\` (case-sensitive). Then just drop \`.ctg\`/\`.rpk\`/\`.bin\` cartridge files into \`roms/ti994a/\`. ## MAME: sample packs showing up as games