Ingénierie inverse de 3D Pinball for Windows - Space Cadet
, un jeu fourni avec Windows.
Placez l'exécutable compilé dans un dossier contenant les ressources du jeu originales (non incluses).
Prend en charge les fichiers de données des versions Windows et Full Tilt du jeu.
Plate-forme | Auteur | URL |
---|---|---|
PSVita | Axiome | https://github.com/suicvne/SpaceCadetPinball_Vita |
Emscripten | alula | https://github.com/alula/SpaceCadetPinball Jouez en ligne : https://alula.github.io/SpaceCadetPinball |
Nintendo Switch | avérne | https://github.com/averne/SpaceCadetPinball-NX |
webOS TV | mariotaku | https://github.com/webosbrew/SpaceCadetPinball |
Android (en cours) | Île | https://github.com/Iscle/SpaceCadetPinball |
Nintendo Wii | MaikelChan | https://github.com/MaikelChan/SpaceCadetPinball |
Nintendo 3DS | MaikelChan | https://github.com/MaikelChan/SpaceCadetPinball/tree/3ds |
Nintendo-DS | Headshotnoby | https://github.com/headshot2017/3dpinball-nds |
Nintendo WiiU | Tuiles intrigantes | https://github.com/IntriguingTiles/SpaceCadetPinball-WiiU |
PlayStation 2 | Headshotnoby | https://github.com/headshot2017/3dpinball-ps2 |
Sega Dreamcast | Headshotnoby | https://github.com/headshot2017/3dpinball-dc |
MorphOS | ÊtreMonde | https://www.morphos-storage.net/?id=1688897 |
AmigaOS 4 | rjd324 | http://aminet.net/package/game/actio/spacecadetpinball-aos4 |
Android (en cours) | fessé | https://github.com/fexed/Pinball-on-Android |
Plateformes couvertes par ce projet : bureau Windows, Linux et macOS.
pinball.exe
de Windows XP
(SHA-1 2A5B525E0F631BB6107639E2A69DF15986FB0D05
) et son PDB publicCADET.EXE
version 32 bits de Full Tilt! Pinball
(SHA-1 3F7B5699074B83FD713657CD94671F2156DBEDC4
) Ghidra
, Ida
, Visual Studio
Le projet utilise C++11
et dépend des bibliothèques SDL2
.
Téléchargez et décompressez les packages de développement pour SDL2
et SDL2_mixer
.
Définissez les chemins d'accès dans CMakeLists.txt
, voir l'emplacement suggéré dans /Libs
.
Compiler avec Visual Studio ; testé avec 2019.
Installez les packages de développement pour SDL2
et SDL2_mixer
.
Compiler avec CMake ; testé avec GCC 10, Clang 11.
Pour effectuer une compilation croisée pour Windows, installez une version 64 bits de mingw et ses distributions SDL2
et SDL2_mixer
, puis utilisez la chaîne d'outils mingwcc.cmake
.
Certaines distributions fournissent un package dans leur référentiel. Vous pouvez les utiliser pour faciliter la gestion des dépendances et les mises à jour.
Ce projet est disponible en Flatpak sur Flathub.
Installez XCode (ou au moins les outils de ligne de commande Xcode avec xcode-select --install
) et CMake.
AccueilBrew
Vous pouvez facilement installer l'artefact de construction en utilisant brew
.
brew tap draftbrew/tap
brew install --no-quarantine space-cadet-pinball
Sachez que l'indicateur --no-quarantime
désactivera le Gatekeeper de macOS lors de l'installation.
Compilation manuelle :
SDL2
, SDL2_mixer
.libSDL2
, libSDL2_mixer
. Compilez avec CMake. Assurez-vous que la variable CMAKE_OSX_ARCHITECTURES
est définie pour x86_64
Apple Intel ou arm64
pour Apple Silicon.
Testé avec : macOS Big Sur (Intel) avec Xcode 13 et macOS Montery Beta (Apple Silicon) avec Xcode 13.
Compilation automatisée :
Exécutez le script build-mac-app.sh
depuis la racine du référentiel. L'application sera disponible dans un fichier DMG nommé SpaceCadetPinball-<version>-mac.dmg
.
Testé avec : macOS Ventura (Apple Silicon) avec Xcode Command Line Tools 14 et macOS Big Sur sur GitHub Runner (Intel) avec XCode 13.
Je ne l'ai pas trouvé, le jeu décompilé fonctionnait en mode x64 du premier coup.
Il a été soit perdu lors de la décompilation, soit introduit dans le port x64/non présent dans la version x86.
Sur la base de la description publique du bug (pas de collision de balle), je suppose que le bug était dans TEdgeManager::TestGridBox