{"id":13591247,"url":"https://github.com/k4zmu2a/SpaceCadetPinball","last_synced_at":"2025-04-08T14:33:05.947Z","repository":{"id":37102468,"uuid":"334165650","full_name":"k4zmu2a/SpaceCadetPinball","owner":"k4zmu2a","description":"Decompilation of 3D Pinball for Windows – Space Cadet","archived":false,"fork":false,"pushed_at":"2024-08-21T06:56:55.000Z","size":5518,"stargazers_count":3448,"open_issues_count":41,"forks_count":212,"subscribers_count":57,"default_branch":"master","last_synced_at":"2024-11-06T11:45:51.772Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/k4zmu2a.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-29T14:15:43.000Z","updated_at":"2024-11-06T08:18:35.000Z","dependencies_parsed_at":"2024-08-21T07:59:56.337Z","dependency_job_id":null,"html_url":"https://github.com/k4zmu2a/SpaceCadetPinball","commit_stats":{"total_commits":271,"total_committers":33,"mean_commits":8.212121212121213,"dds":0.4022140221402214,"last_synced_commit":"75d2d98a46329a3d21816a2a72ad4f52ce2a22c6"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k4zmu2a%2FSpaceCadetPinball","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k4zmu2a%2FSpaceCadetPinball/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k4zmu2a%2FSpaceCadetPinball/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k4zmu2a%2FSpaceCadetPinball/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/k4zmu2a","download_url":"https://codeload.github.com/k4zmu2a/SpaceCadetPinball/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247861113,"owners_count":21008426,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T16:00:55.084Z","updated_at":"2025-04-08T14:33:00.925Z","avatar_url":"https://github.com/k4zmu2a.png","language":"C++","funding_links":[],"categories":["C++","Remakes / Ports","Games","Nintendo Wii"],"sub_categories":[],"readme":"\u003c!-- markdownlint-disable-file MD033 --\u003e\n\n# SpaceCadetPinball\n\n## Summary\n\nReverse engineering of `3D Pinball for Windows - Space Cadet`, a game bundled with Windows.\n\n## How to play\n\nPlace compiled executable into a folder containing original game resources (not included).\\\nSupports data files from Windows and Full Tilt versions of the game.\n\n## Known source ports\n\n| Platform           | Author          | URL                                                                                                        |\n| ------------------ | --------------- | ---------------------------------------------------------------------------------------------------------- |\n| PS Vita            | Axiom           | \u003chttps://github.com/suicvne/SpaceCadetPinball_Vita\u003e                                                        |\n| Emscripten         | alula           | \u003chttps://github.com/alula/SpaceCadetPinball\u003e \u003cbr\u003e Play online: \u003chttps://alula.github.io/SpaceCadetPinball\u003e |\n| Nintendo Switch    | averne          | \u003chttps://github.com/averne/SpaceCadetPinball-NX\u003e                                                           |\n| webOS TV           | mariotaku       | \u003chttps://github.com/webosbrew/SpaceCadetPinball\u003e                                                           |\n| Android (WIP)      | Iscle           | https://github.com/Iscle/SpaceCadetPinball                                                                 |\n| Nintendo Wii       | MaikelChan      | https://github.com/MaikelChan/SpaceCadetPinball                                                            |\n| Nintendo 3DS       | MaikelChan      | https://github.com/MaikelChan/SpaceCadetPinball/tree/3ds                                                   |\n| Nintendo DS        | Headshotnoby    | https://github.com/headshot2017/3dpinball-nds                                                              |\n| Nintendo Wii U     | IntriguingTiles | https://github.com/IntriguingTiles/SpaceCadetPinball-WiiU                                                  |\n| PlayStation 2      | Headshotnoby    | https://github.com/headshot2017/3dpinball-ps2                                                              |\n| Sega Dreamcast     | Headshotnoby    | https://github.com/headshot2017/3dpinball-dc                                                               |\n| MorphOS            | BeWorld         | https://www.morphos-storage.net/?id=1688897                                                                |\n| AmigaOS 4          | rjd324          | http://aminet.net/package/game/actio/spacecadetpinball-aos4                                                |\n| Android (WIP)      | fexed           | https://github.com/fexed/Pinball-on-Android                                                                |\n\nPlatforms covered by this project: desktop Windows, Linux and macOS.\n\n\u003cbr\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\n## Source\n\n* `pinball.exe` from `Windows XP` (SHA-1 `2A5B525E0F631BB6107639E2A69DF15986FB0D05`) and its public PDB\n* `CADET.EXE` 32bit version from `Full Tilt! Pinball` (SHA-1 `3F7B5699074B83FD713657CD94671F2156DBEDC4`)\n\n## Tools used\n\n`Ghidra`, `Ida`, `Visual Studio`\n\n## What was done\n\n* All structures were populated, globals and locals named.\n* All subs were decompiled, C pseudo code was converted to compilable C++. Loose (namespace?) subs were assigned to classes.\n\n## Compiling\n\nProject uses `C++11` and depends on `SDL2` libs.\n\n### On Windows\n\nDownload and unpack devel packages for `SDL2` and `SDL2_mixer`.\\\nSet paths to them in `CMakeLists.txt`, see suggested placement in `/Libs`.\\\nCompile with Visual Studio; tested with 2019.\n\n### On Linux\n\nInstall devel packages for `SDL2` and `SDL2_mixer`.\\\nCompile with CMake; tested with GCC 10, Clang 11.\\\nTo cross-compile for Windows, install a 64-bit version of mingw and its `SDL2` and `SDL2_mixer` distributions, then use the `mingwcc.cmake` toolchain.\n\n[![Packaging status](https://repology.org/badge/tiny-repos/spacecadetpinball.svg)](https://repology.org/project/spacecadetpinball/versions) \n\nSome distributions provide a package in their repository. You can use those for easier dependency management and updates.\n\nThis project is available as Flatpak on [Flathub](https://flathub.org/apps/details/com.github.k4zmu2a.spacecadetpinball).\n\n### On macOS\n\nInstall XCode (or at least Xcode Command Line Tools with `xcode-select --install`) and CMake.\n\n**HomeBrew**\n\nYou can easily install the build artifact by using `brew`.\n\n```sh\nbrew tap draftbrew/tap\nbrew install --no-quarantine space-cadet-pinball\n```\n\nBe aware that the flag `--no-quarantime` will disable macOS's Gatekeeper during installation.\n\n**Manual compilation:**\n\n* **Homebrew**: Install the `SDL2`, `SDL2_mixer` homebrew packages.\n* **MacPorts**: Install the `libSDL2`, `libSDL2_mixer` macports packages.\n\nCompile with CMake. Ensure that `CMAKE_OSX_ARCHITECTURES` variable is set for either `x86_64` Apple Intel or `arm64` for Apple Silicon.\n\nTested with: macOS Big Sur (Intel) with Xcode 13 \u0026 macOS Montery Beta (Apple Silicon) with Xcode 13.\n\n**Automated compilation:**\n\nRun the `build-mac-app.sh` script from the root of the repository. The app will be available in a DMG file named `SpaceCadetPinball-\u003cversion\u003e-mac.dmg`.\n\nTested with: macOS Ventura (Apple Silicon) with Xcode Command Line Tools 14 \u0026 macOS Big Sur on GitHub Runner (Intel) with XCode 13.\n\n## Plans\n\n* ~~Decompile original game~~\n* ~~Resizable window, scaled graphics~~\n* ~~Loader for high-res sprites from CADET.DAT~~\n* ~~Cross-platform port using SDL2, SDL2_mixer, ImGui~~\n* Full Tilt Cadet features\n* Localization support\n* Maybe: Support for the other two tables - Dragon and Pirate\n* Maybe: Game data editor\n\n## On 64-bit bug that killed the game\n\nI did not find it, decompiled game worked in x64 mode on the first try.\\\nIt was either lost in decompilation or introduced in x64 port/not present in x86 build.\\\nBased on public description of the bug (no ball collision), I guess that the bug was in `TEdgeManager::TestGridBox`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fk4zmu2a%2FSpaceCadetPinball","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fk4zmu2a%2FSpaceCadetPinball","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fk4zmu2a%2FSpaceCadetPinball/lists"}