# macrosoft3dpinball `3D Pinball for Windows – Space Cadet` on macOS. Vendored copy of [k4zmu2a/SpaceCadetPinball](https://github.com/k4zmu2a/SpaceCadetPinball) (MIT) at upstream commit `cb9b7b8`, not a submodule — patch it in place, pull upstream by re-vendoring. ## Build (Apple Silicon) ```bash cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=arm64 \ -DCMAKE_PREFIX_PATH="$(brew --prefix sdl2);$(brew --prefix sdl2_mixer)" cmake --build build -j8 ``` Binary lands in `bin/SpaceCadetPinball`. Needs `brew install sdl2 sdl2_mixer`. Do **not** use upstream `build-mac-app.sh` — it downloads SDL2 `.framework` DMGs and builds a signed universal `.app`+`.dmg`. Unnecessary here; brew SDL2 is already installed. ## Gotchas - `CMakeLists.txt` line ~27 upstream hard-set `CMAKE_OSX_ARCHITECTURES "arm64;x86_64"`, which silently overrode the `-D` flag the README tells you to pass. Universal linking then fails because brew SDL2 is arm64-only. Patched to only set the default when not given on the command line. Re-apply this when re-vendoring upstream. - Homebrew resolves `sdl2` to `sdl2-compat` (SDL2 API on top of SDL3). Links and runs fine. - Deployment target is 10.11, so the link emits "built for newer version 26.0" warnings against the brew dylibs. Harmless. ## Game data (not in this repo) The engine ships no assets. It needs the original data files, which are Microsoft's and are **not redistributable** — supply them from your own media (Windows XP or earlier install disc for `PINBALL.DAT`; the retail `Full Tilt! Pinball` CD for `CADET.DAT`). `.DAT`/`.MID` are gitignored so they never land in a commit. Drop them in any of these; first match wins in the order `CADET.DAT`, `PINBALL.DAT`, `DEMO.DAT`: - the working directory, or `bin/` next to the binary - `~/Library/Application Support/SpaceCadetPinball/` ← preferred, keeps the repo clean Without them the binary exits with "Could not load game data" and lists these paths.