• Stars
    star
    129
  • Rank 279,262 (Top 6 %)
  • Language
    C++
  • License
    MIT License
  • Created about 3 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Android port of 3D Pinball for Windows – Space Cadet

SpaceCadetPinball

Summary

Reverse engineering of 3D Pinball for Windows – Space Cadet, a game bundled with Windows.

How to play

Place compiled executable into a folder containing original game resources (not included).
Supports data files from Windows and Full Tilt versions of the game.

Known source ports

Platform Author URL
PS Vita Axiom https://github.com/suicvne/SpaceCadetPinball_Vita
Emscripten alula https://github.com/alula/SpaceCadetPinball
Play online: https://alula.github.io/SpaceCadetPinball
Nintendo Switch averne https://github.com/averne/SpaceCadetPinball-NX
webOS TV mariotaku https://github.com/webosbrew/SpaceCadetPinball
Android (WIP) Iscle https://github.com/Iscle/SpaceCadetPinball
Nintendo Wii (WIP) MaikelChan https://github.com/MaikelChan/SpaceCadetPinball
Nintendo Wii U IntriguingTiles https://github.com/IntriguingTiles/SpaceCadetPinball-WiiU

Platforms covered by this project: desktop Windows, Linux and macOS.







Source

  • pinball.exe from Windows XP (SHA-1 2A5B525E0F631BB6107639E2A69DF15986FB0D05) and its public PDB
  • CADET.EXE 32bit version from Full Tilt! Pinball (SHA-1 3F7B5699074B83FD713657CD94671F2156DBEDC4)

Tools used

Ghidra, Ida, Visual Studio

What was done

  • All structures were populated, globals and locals named.
  • All subs were decompiled, C pseudo code was converted to compilable C++. Loose (namespace?) subs were assigned to classes.

Compiling

Project uses C++11 and depends on SDL2 libs.

On Windows

Download and unpack devel packages for SDL2 and SDL2_mixer.
Set paths to them in CMakeLists.txt, see suggested placement in /Libs.
Compile with Visual Studio; tested with 2019.

On Linux

Install devel packages for SDL2 and SDL2_mixer.
Compile with CMake; tested with GCC 10, Clang 11.
To cross-compile for Windows, install a 64-bit version of mingw and its SDL2 and SDL2_mixer distributions, then use the mingwcc.cmake toolchain.

On macOS

  • Homebrew: Install the SDL2, SDL2_mixer homebrew packages.
  • MacPorts: Install the libSDL2, libSDL2_mixer macports packages.

Compile with CMake. Ensure that CMAKE_OSX_ARCHITECTURES variable is set for either x86_64 Apple Intel or arm64 for Apple Silicon.

Tested with: macOS Big Sur (Intel) with Xcode 13 & macOS Montery Beta (Apple Silicon) with Xcode 13.

Plans

  • Decompile original game
  • Resizable window, scaled graphics
  • Loader for high-res sprites from CADET.DAT
  • Misc features of Full Tilt: 3 music tracks, multiball, centered textboxes, etc.
  • Cross-platform port
    • Using SDL2, SDL2_mixer, ImGui
    • Maybe: Android port
  • Maybe x2: support for other two tables
    • Table specific BL (control interactions and missions) is hardcoded, othere parts might be also patched

On 64-bit bug that killed the game

I did not find it, decompiled game worked in x64 mode on the first try.
It was either lost in decompilation or introduced in x64 port/not present in x86 build.
Based on public description of the bug (no ball collision), I guess that the bug was in TEdgeManager::TestGridBox

More Repositories

1

OrangePi_4G-IOT_Android_8.1_BSP

Mediatek MT6737 Android 8.1 BSP (For Orange Pi 4G IOT) THIS REPOSITORY IS NOT COMPLETE AND WILL NEVER BE, DON'T TRY TO BUILD IT!
37
star
2

ViPER4Android-RE

Kotlin
24
star
3

subut

Spreadtrum / Unisoc Bootloader Unlock Tool
JavaScript
21
star
4

sprdclient

A friendly Spreadtrum / Unisoc flashing tool.
C
14
star
5

mtk_bloader_info_extractor

Extracts MTK_BLOADER_INFO (aka eMMC, eMCP, NAND, DRAM info) from MediaTek Preloaders
C
13
star
6

android_kernel_unisoc_ums512

C
8
star
7

TeyesCanBusGolf7RZC

Reimplementation of the CAN bus app for Teyes CC2P, CC3 and SPRO. Everything has been reverse engineered by me. Some assets are taken and decrypted from the official Teyes firmware.
Java
8
star
8

unpac

Unpack Spreadtrum/Unisoc ".pac" files to a specified folder.
C
8
star
9

MainUI

Base project for MainUI used in Junsun V1 (AC8227L) units. Includes native libraries with corresponding Java classes.
Java
7
star
10

AndroidAutoPlus

Repository for Android Auto+, an Xposed module that brings extra features to Android Auto and related apps.
Kotlin
7
star
11

sprdflash

Implementation of Spreadtrum's flashing protocol in Java (WIP)
Java
6
star
12

SignTool_PFOSS

Reverse engineered MediaTek SignTool_P
C
6
star
13

TSHR-Android

Android port of The Simpsons: Hit & Run
C++
5
star
14

mt8127_preloader

WIP preloader for AC8227L based on MT8127 preloader and reverse engineering :)
C
5
star
15

Mediatek-Logo-Creator

MediaTek logo creator, extracted from the official BSP, modified to run standalone.
Makefile
5
star
16

hi3520dv400_linux

Linux kernel source for HiSilicon Hi3520DV400 pulled from the official SDK.
C
5
star
17

librespot-cpp

WIP! librespot port to C++, based on librespot-java
C++
5
star
18

twrp_device_xiaomi_munch

C++
4
star
19

android_kernel_spreadtrum_sc9853

C
3
star
20

My-GPS-Tracker

Open-Source alternative to the 365GPS app used by some chinese GPS trackers.
Java
3
star
21

mksprdpac

Generate SC6531E .pac flashable images
C
3
star
22

NiceDatasheets

This is a collection of nice and/or hard to find datasheets that I found around the internet :)
2
star
23

u-boot-1013d

C
2
star
24

SigmaStar-SSD202D-Docs

2
star
25

android_kernel_autochips_ac8227l

C
2
star
26

AB1562_SDK

Airoha AB1562 V1.5.0 leaked SDK (cleaned)
Assembly
2
star
27

DanaRS-encryption

Dana Diabecare RS encryption library reverse-engineering
C
2
star
28

SpotifyPlus

Kotlin
2
star
29

BecaTimer

Java
1
star
30

android_kernel_mediatek_mt8127

C
1
star
31

twrp_device_xiaomi_cupid

Makefile
1
star
32

dashd-re

OnePlus dashd binary reverse engineering
C
1
star
33

Watch_nRF52840

C
1
star
34

PAED_PS1_2

Backtracking, Greedy, Branch & Bound
Java
1
star
35

CipherToolFOSS

Reverse engineered MediaTek CipherTool
C
1
star
36

ch552_template

CH552 Template for SDCC with Makefile
C++
1
star
37

Paraulogic

Java
1
star
38

mini_httpd

C
1
star
39

LinkPlay-OTA-Dumper

Java
1
star
40

u-boot-v851s

C
1
star
41

vendor_qcom_proprietary

LA.UM.8.6.2.r2-10.0.0-89xx.0 : Android 10 bsp for msm8953 & msm8937
Objective-C
1
star
42

IronOSLite

C
1
star
43

foster_oven_psu

Makefile
1
star
44

u-boot-sl8541e

C
1
star
45

qemu-s5l8950

C
1
star
46

BuyAround

BuyAround is an app for making purchases at nearby stores easily and quickly.
Java
1
star
47

u-boot-f1c100s

C
1
star