Decompilation of 3D Pinball for Windows – Space Cadet

Overview

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

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

Comments
  • MIDI fix for WINE

    MIDI fix for WINE

    Was wondering why none of the fixes for MIDI playback in WINE were working. Turns out this is a "bug" with the original code (mci.c in WINE is partly to blame but it looks like the fix never got merged upstream)

    https://www.winehq.org/pipermail/wine-bugs/2019-January/507548.html

    I want to test messing with SpaceCadetPinball/midi.cpp but I have no idea how I would compile this from Linux.

    opened by parkerlreed 19
  • Fix visual stuttering on WindowsClassic version

    Fix visual stuttering on WindowsClassic version

    While the ball moves, it visibly stutters, as if there was an FPS drop.

    Turns out that Windows timer resolution, more specifically Sleep() is the root cause, its precision is too high.

    Set the timer precision to 1ms and sleep for 1ms only. This still doesn't cause much CPU usage but provides a significantly better visual experience.

    opened by dobragab 18
  • Improve linux building

    Improve linux building

    This merge adds the following changes: Move Linux related files in folder Platform/Linux Change SpaceCadetPinball.desktop to reflect the original game name and description Add a metainfo.xml file to support Appstream data Add a new upscaled icon (at 192x192) that will be nicer in the launcher Update readme.md with a brief description of the original game, and some instruction for building on Linux

    opened by kowalski7cc 15
  • Use more authentic fonts

    Use more authentic fonts

    Once I tried Hungarian translation (which is my native language, I grew up playing this) I immediately noticed that Arial doesn't match the original vibe:

    original

    I went ahead and I can see three real options to get better results, focusing on European languages with Latin characters:

    1. Decompile a Hungarian (or any localized) exe to get original font rendering mechanism. I tried using Process Monitor, and it looks like it isn't using a Windows font, but some built-in rendering mechanism. Note that I only tried Hungarian 3DSC version.
    2. Find the original font in TTF, and use that instead of Arial.
    3. Use an approximation font.

    Good news is, 2. does exist, it's called PIXymbols WINmenu W01 Menu, I tried that, and it actually is the original font, with 17 px base size. I don't know about higher resolutions, I don't have FT.

    winmenu see in a bigger window

    Bad news are:

    • It doesn't contain some accented characters from half the supported languages. I spent a few hours with a font editor, and now I have added all accented characters for all the languages that Pinball has localizations for. Most of them were just putting existing accents on basic latin characters, only Polish Ł was tricky.
    • The original game just replaced the characters with accent-less ones in the texts. I'm pretty sure we don't want to follow that path.
    • I don't know whether we can redistribute it. Either the third-party one, or with my modifications. It's possibly the greyest of grey areas, as the font was visually copied from the game itself (or from some other Microsoft or EA property, who knows).
    • I tried rendering the texts with WinMenu font plus falling back to 3. when there is a missing character, MS Sans Serif would have been a good candidate, but that didn't work and can't really work for multiple reasons. It ended up being a lot easier to fix the font itself.

    So, assuming 2. can be a no-go, I explored 3. and found three similarly looking, authentic XP fonts: MS Sans Serif (a.k.a Helv), Helvetica and Tahoma (also available as MS Shell Dlg 2). All of which are most likely installed on all the target systems of WindowsClassic branch: Windows versions and Wine.

    I used 16 px Bold fonts, with NONANTIALIASED_QUALITY.

    This is how they look:

    MS Sans Serif MS Sans Serif see in a bigger window

    Helvetica Helvetica see in a bigger window

    Tahoma Tahoma see in a bigger window

    I prefer MS Sans Serif out of these, but I think accented characters look more authentic with Tahoma.

    As I have no means to properly perform option 1., I'd recommend trying to open WinMenu font, if that's not found then fall back to MS Sans Serif. And provide installation link for the WinMenu font.

    There's a huge difference between 2, and 3. though: WinMenu font is a bitmap font, so it basically doesn't scale. Others are TrueType fonts, and scale nicely and (in this context) weirdly. We could get bitmap font-like results with rendering the fonts with fixed size, and then stretching that out on the final screen.

    enhancement 
    opened by dobragab 15
  • Cannot play Full-Tilt version after 2.0 version

    Cannot play Full-Tilt version after 2.0 version

    The 2.0 release works only with XP version of Space Cadet. Attemting to run Full-Tilt version gives error "The .dat file is missing" even though older versions before 2.0 worked.

    bug 
    opened by HarGabt 12
  • Thanks! -- not an issue, just a thanks!

    Thanks! -- not an issue, just a thanks!

    This built right through on MacOS Monterey using the sdl2 libraries from homebrew in a minute or two, and with the resources from my old Windows Pinball installation, works just great!

    Well done -- I had no idea you could decompile an older game like this and remake it in SDL2.

    now I'm in for some serious wasted time!

    opened by kencu 9
  • Add linux desktop file and install

    Add linux desktop file and install

    In this PR:

    1. Some of the images inside Icon_1.ico have been extracted and converted to png
    2. A basic Linux desktop file has been added, which uses the new icons
    3. Cmake adds an install phase, which copies the binary and installs the desktop file

    All of this should only affect Linux systems, and from my tests works as intended. It should also help with packaging (see #95), since right now maintainers have to manually move the executable. Please note that although it is probably fine, I have not tested this on other operating systems.

    opened by NicolaSmaniotto 7
  • Trouble compliling.

    Trouble compliling.

    Result of compilation

    [email protected]:~/Publiczny/git/SpaceCadetPinball/build> make -j 8 [ 2%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/cmake_pch.hxx.gch [ 2%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/imgui_sdl.cpp.o [ 4%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/imgui_demo.cpp.o [ 5%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/imgui_tables.cpp.o [ 8%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/imgui_draw.cpp.o [ 8%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/imgui_impl_sdl.cpp.o [ 10%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/imgui.cpp.o [ 11%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/imgui_widgets.cpp.o [ 20%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/GroupData.cpp.o [ 20%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/control.cpp.o [ 20%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/loader.cpp.o [ 20%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/memory.cpp.o [ 20%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/fullscrn.cpp.o [ 22%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/gdrv.cpp.o [ 22%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/maths.cpp.o [ 22%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/high_score.cpp.o [ 24%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/midi.cpp.o [ 25%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/nudge.cpp.o [ 27%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/options.cpp.o [ 28%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/partman.cpp.o [ 30%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/pb.cpp.o [ 31%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/pinball.cpp.o [ 32%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/proj.cpp.o [ 34%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/render.cpp.o [ 35%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/score.cpp.o [ 37%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/Sound.cpp.o [ 38%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/SpaceCadetPinball.cpp.o [ 40%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TBall.cpp.o [ 41%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TBlocker.cpp.o [ 42%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TBumper.cpp.o [ 44%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TCircle.cpp.o [ 47%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TComponentGroup.cpp.o [ 47%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TCollisionComponent.cpp.o [ 48%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TDemo.cpp.o [ 50%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TDrain.cpp.o [ 51%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TEdgeBox.cpp.o [ 52%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TEdgeManager.cpp.o [ 54%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TEdgeSegment.cpp.o [ 55%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TFlagSpinner.cpp.o [ 58%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TFlipperEdge.cpp.o [ 58%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TFlipper.cpp.o [ 60%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TGate.cpp.o [ 61%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/THole.cpp.o [ 62%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/timer.cpp.o [ 64%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TKickback.cpp.o [ 65%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TKickout.cpp.o [ 67%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TLight.cpp.o [ 70%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TLightBargraph.cpp.o [ 70%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TLightGroup.cpp.o [ 71%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TLightRollover.cpp.o [ 72%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TLine.cpp.o [ 74%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TOneway.cpp.o [ 75%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TPinballComponent.cpp.o [ 77%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TPinballTable.cpp.o [ 78%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TPlunger.cpp.o [ 80%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TPopupTarget.cpp.o [ 81%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TRamp.cpp.o [ 82%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TRollover.cpp.o [ 84%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TSink.cpp.o [ 85%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TSoloTarget.cpp.o [ 87%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TSound.cpp.o [ 88%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TTableLayer.cpp.o [ 90%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TTextBox.cpp.o [ 91%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TTextBoxMessage.cpp.o [ 92%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TTimer.cpp.o [ 94%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TTripwire.cpp.o [ 95%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/TWall.cpp.o [ 97%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/winmain.cpp.o [ 98%] Building CXX object CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/zdrv.cpp.o [100%] Linking CXX executable ../bin/SpaceCadetPinball /usr/lib64/gcc/x86_64-suse-linux/11/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/SpaceCadetPinball.dir/SpaceCadetPinball/options.cpp.o: in functionoptions::init()': options.cpp:(.text+0x2c0): undefined reference to options::MinUps' /usr/lib64/gcc/x86_64-suse-linux/11/../../../../x86_64-suse-linux/bin/ld: options.cpp:(.text+0x2cd): undefined reference tooptions::MaxFps' /usr/lib64/gcc/x86_64-suse-linux/11/../../../../x86_64-suse-linux/bin/ld: options.cpp:(.text+0x2f8): undefined reference to options::MinUps' /usr/lib64/gcc/x86_64-suse-linux/11/../../../../x86_64-suse-linux/bin/ld: options.cpp:(.text+0x305): undefined reference tooptions::MaxUps' collect2: error: ld returned 1 exit status make[2]: *** [CMakeFiles/SpaceCadetPinball.dir/build.make:1310: ../bin/SpaceCadetPinball] Błąd 1 make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/SpaceCadetPinball.dir/all] Błąd 2 make: *** [Makefile:91: all] Błąd 2

    `

    No errors during cmake. System is openSUSE Tumbleweed. Development libraries fro SDL2 and SDL2_mixer are installed. Help appreciated.

    bug 
    opened by Gryxx 7
  • Add translations

    Add translations

    Hi,

    Here is the PR to add translations as discussed in https://github.com/k4zmu2a/SpaceCadetPinball/issues/152.

    I've used the C++11 version as there is no significant performance impact (I've checked with valgrind that the initialization doesn't use much cpu time).

    I've also added a when to change the font, this is required to display characters that the default font doesn't support. For that, I use the current language to construct the font atlas with only needed characters. When using a non-default font, text is not as good, but I can't make it better. I think subpixel rendering is what is needed, but ImGui doesn't support it (yet).

    Fixes: #152

    opened by amurzeau 6
  • add higher-res table from full tilt pinball

    add higher-res table from full tilt pinball

    since 3D Pinball: space cadet is just a slightly modified version of the space cadet version of full tilt pinball, I thought you could take the CADET.DAT from the original, which has a 1024x768 version of the table and copy it over or something.

    question 
    opened by RiedleroD 6
  • CMake complains about no runtime destination

    CMake complains about no runtime destination

    https://github.com/k4zmu2a/SpaceCadetPinball/blob/de13d4e326b2dfa8e6dfb59815c0a8b9657f942d/CMakeLists.txt#L222

    When I try to compile with CMake 3.10.2 on Ubuntu 18.04 gives the error:

    CMake Error at CMakeLists.txt:222 (install):
      install TARGETS given no RUNTIME DESTINATION for executable target
      "SpaceCadetPinball".
    

    I think this can be fixed by adding DESTINATION bin to line 222 like so:

    install(TARGETS "${PROJECT_NAME}" RUNTIME DESTINATION bin)

    Note: CMake on Ubuntu 20.04 and MSYS2/MinGW doesn't seem to have any issue with it being left off, it's only CMake on Ubuntu 18.04 that complains.

    bug 
    opened by krishean 6
  • Enhancement request - Add Pause to Player Controls

    Enhancement request - Add Pause to Player Controls

    I've got this running on my linux-ified Chromebook and as such, I don't have an F3 button to pause. Can you add either an auto-pause feature to the game when anything in the menu is clicked or maybe add the Pause option to the Player Controls so players can map that button to something other than F3.

    Love this project! Thanks for all the hard work on this.

    enhancement 
    opened by MattTheQuick 0
  • Hang when switching language or game data

    Hang when switching language or game data

    Hi Muzychenko!

    When I'm switching language or game data via "Option" on the menu bar, the game hangs (a.k.a. no response).

    This is a piece of terminal output when it hangs:

    (process:19001): GLib-GObject-WARNING **: 22:27:12.935: cannot register existing type 'IpatchSplitsType'
    
    (process:19001): GLib-GObject-CRITICAL **: 22:27:12.935: g_param_spec_enum: assertion 'G_TYPE_IS_ENUM (enum_type)' failed
    
    ** (process:19001): CRITICAL **: 22:27:12.936: ipatch_type_install_property: assertion 'G_IS_PARAM_SPEC(prop_spec)' failed
    
    (process:19001): GLib-GObject-CRITICAL **: 22:27:12.936: g_boxed_type_register_static: assertion 'g_type_from_name (name) == 0' failed
    
    (process:19001): GLib-GObject-WARNING **: 22:27:12.936: cannot register existing type 'IpatchSF2GenType'
    
    (process:19001): GLib-GObject-WARNING **: 22:27:12.936: cannot retrieve class for invalid (unclassed) type '<invalid>'
    
    ** (process:19001): CRITICAL **: 22:27:12.936: file /build/libinstpatch/src/libinstpatch-1.1.6/libinstpatch/IpatchSF2Gen.c: line 152 (_ipatch_sf2_gen_init): assertion `enum_class != NULL' failed.
    
    (process:19001): GLib-GObject-CRITICAL **: 22:27:12.936: g_type_class_unref: assertion 'g_class != NULL' failed
    
    (process:19001): GLib-GObject-WARNING **: 22:27:12.936: cannot register existing type 'IpatchSample'
    
    (process:19001): GLib-GObject-WARNING **: 22:27:12.936: cannot register existing type 'IpatchItem'
    
    (process:19001): GLib-GObject-CRITICAL **: 22:27:12.936: g_type_interface_add_prerequisite: assertion 'G_TYPE_IS_INTERFACE (interface_type)' failed
    
    (process:19001): GLib-GObject-WARNING **: 22:27:12.936: cannot register existing type 'IpatchSF2GenItem'
    
    (process:19001): GLib-GObject-WARNING **: 22:27:12.936: cannot register existing type 'IpatchItem'
    
    (process:19001): GLib-GObject-CRITICAL **: 22:27:12.936: g_type_interface_add_prerequisite: assertion 'G_TYPE_IS_INTERFACE (interface_type)' failed
    
    (process:19001): GLib-GObject-WARNING **: 22:27:12.936: cannot register existing type 'IpatchSF2ModItem'
    
    (process:19001): GLib-GObject-WARNING **: 22:27:12.936: cannot register existing type 'IpatchItem'
    
    (process:19001): GLib-GObject-CRITICAL **: 22:27:12.936: g_type_interface_add_prerequisite: assertion 'G_TYPE_IS_INTERFACE (interface_type)' failed
    
    (process:19001): GLib-GObject-WARNING **: 22:27:12.936: cannot register existing type 'IpatchSF2VoiceCache'
    
    (process:19001): GLib-GObject-WARNING **: 22:27:12.936: cannot retrieve class for invalid (unclassed) type '<invalid>'
    
    (process:19001): GLib-GObject-WARNING **: 22:27:12.936: cannot register existing type 'IpatchItem'
    
    (process:19001): GLib-GObject-CRITICAL **: 22:27:12.936: g_type_register_static: assertion 'parent_type > 0' failed
    
    (process:19001): GLib-GObject-CRITICAL **: 22:27:12.936: g_type_register_static: assertion 'parent_type > 0' failed
    
    (process:19001): GLib-CRITICAL **: 22:27:12.936: g_once_init_leave: assertion 'result != 0' failed
    
    (process:19001): GLib-GObject-WARNING **: 22:27:12.936: cannot retrieve class for invalid (unclassed) type '<invalid>'
    
    (process:19001): GLib-GObject-WARNING **: 22:27:12.936: cannot register existing type 'IpatchItem'
    
    (process:19001): GLib-GObject-CRITICAL **: 22:27:12.936: g_type_register_static: assertion 'parent_type > 0' failed
    
    (process:19001): GLib-GObject-WARNING **: 22:27:12.936: cannot retrieve class for invalid (unclassed) type '<invalid>'
    
    (process:19001): GLib-GObject-WARNING **: 22:27:12.936: cannot register existing type 'IpatchConverter'
    
    (process:19001): GLib-GObject-WARNING **: 22:27:12.936: cannot retrieve class for invalid (unclassed) type '<invalid>'
    
    
    bug 
    opened by AnClark 7
  • Audio not working.

    Audio not working.

    Built successfully on Fedora 37.

    I did read #59, did not see the same error I'm having.

    I initially tried export SDL_SOUNDFONT=/path/to/your/soundfont as indicated in BUILD.md with a custom soundfont but got:

    Log
    Loading game from: /home/3laws/.local/share/SpaceCadetPinball/PINBALL.DAT
    SDL Error: Couldn't open /etc/timidity++.cfg
    

    Using fluidsynth now I get:

    Log
    Using SDL renderer: opengl
    Loading game from: /home/3laws/.local/share/SpaceCadetPinball/PINBALL.DAT
    SDL Error: Couldn't open /usr/share/soundfonts/fluid-soundfont-lite-patches/FluidR3_GM-Standard/Splash
    
    bug question 
    opened by 3laws 1
  • MacBook Pro 2019 - Could not load game data

    MacBook Pro 2019 - Could not load game data

    After compiling using cmake and attempting to run, I get the following error:

    Could not load game data

    The .dat file is missing. Make sure that the game data is present in any of the following locations: working directory /Users/danielcarlson/SpaceCadetPinball/bin/ /Users/danielcarlson/Library/Application Support/SpaceCadetPinball/ /usr/local/share/SpaceCadetPinball/ /usr/share/SpaceCadetPinball/

    question 
    opened by builtbydc 5
Releases(Release_2.0.1)
Owner
Muzychenko Andrey
Muzychenko Andrey
[WIP] A media playback library for Dart & Flutter apps on Windows & Linux. Based on libVLC & libVLC++.

dart_vlc Bringing power of VLC to Flutter & Dart apps on Windows & Linux Installation dependencies: ... dart_vlc: ^0.0.1 Documentation Create a ne

Hitesh Kumar Saini 417 Dec 29, 2022
Pencil2D is an animation/drawing software for Windows, macOS, Linux, and FreeBSD.

Pencil2D is an animation/drawing software for Windows, macOS, Linux, and FreeBSD. It lets you create traditional hand-drawn animation (cartoon) using both bitmap and vector graphics. Pencil2D is free and open source.

Pencil2D 1.2k Jan 7, 2023
Simple and efficient screen recording utility for Windows.

simple and efficient screen recording utility for Windows

Mārtiņš Možeiko 484 Dec 31, 2022
Paint program for Unix. Inspired by MS Paint (Windows 95-98).

Classic Colors Classic Colors is a simple and efficient paint program for Unix systems, inspired by MS Paint (Windows 95-98 version). It is built on t

Justin Meiners 25 Dec 9, 2022
This repo will sort of document my story of learning vulkan with VulkanSDK and cl (msvc) on windows.

Learning Vulkan This repo is a means of documenting my journey with learning Vulkan's basics on windows. Because of the binaries in the LunarG VulkanS

null 2 Dec 8, 2021
Alpha Plot is a free application for Scientific Data Analysis and Visualization for Windows, Linux and Mac OS X

Alpha Plot is a free application for Scientific Data Analysis and Visualization for Windows, Linux and Mac OS X (probably BSD also). Web Link Website

Arun Narayanankutty 171 Dec 26, 2022
This repo contains the DirectX Graphics samples that demonstrate how to build graphics intensive applications on Windows.

DirectX-Graphics-Samples This repo contains the DirectX 12 Graphics samples that demonstrate how to build graphics intensive applications for Windows

Microsoft 4.9k Dec 26, 2022
Android port of 3D Pinball for Windows – Space Cadet

SpaceCadetPinball Android port of 3D Pinball for Windows – Space Cadet Based on: https://github.com/k4zmu2a/SpaceCadetPinball TODO Add proper controls

Iscle 108 Dec 31, 2022
This game is a nice pinball.

PelotaPlayaPinball Description This game is a nice pinball. Key Features 1 player Control with the keyboard Controls Keyboard Left and Right - Movemen

David 1 Nov 7, 2021
This is the second project in the 42 Cadet Curriculum

This is the second project in the 42 Cadet Curriculum. The aim of this project is to make you code a function that returns a line, read from a file descriptor. Overall, it is an easy project once you comprehend what is being asked from you. It gets complicated by the fact that you are only allowed to use the following functions: read, malloc and free.

Paulo Rafael Ramalho 0 Jan 1, 2023
This is the second project in the 42 Cadet Curriculum.

This is the second project in the 42 Cadet Curriculum. The aim of this project is to make you code a function that returns a line, read from a file descriptor. Overall, it is an easy project once you comprehend what is being asked from you. It gets complicated by the fact that you are only allowed to use the following functions: read, malloc and free.

Face Tattoo 2 Mar 26, 2022
Hex-Rays microcode plugin for automated simplification of Windows Kernel decompilation.

NtRays NtRays is a Hex-Rays microcode plugin for automated simplification of Windows Kernel decompilation. Features Cleanup of instrumentation and sch

Can Bölük 359 Jan 3, 2023
A WIP decompilation of Dinosaur Planet for the Nintendo 64

Dinosaur Planet A WIP decompilation of Dinosaur Planet for the Nintendo 64 Note: To use this repository, you must already have a ROM for the game. OS:

null 133 Dec 30, 2022
A decompilation of Banjo Kazooie. (MIRROR of https://gitlab.com/banjo.decomp/banjo-kazooie)

banjo Building Grab tools git submodule update --init --recursive Drop in US v1.0 as baserom.us.v10.z64 (sha1sum: 1fe1632098865f639e22c11b9a81ee8f29c7

Nintendo 64 Decompilation Projects 186 Jan 3, 2023
PaRappa the Rapper Decompilation

PaRappaSource PaRappa the Rapper Decompilation Compiling The instructions for this should largely be the same as PSXFunkin without the iso makes. You

null 15 Dec 2, 2022
A decompilation of Guxt (2007 game by Studio Pixel)

Guxt Decompilation Project WIP. Mostly based on work of @tilderain. Reverse engineering of remaining parts and various fixups was done by me (Alula).

null 2 May 25, 2022
Decompilation of The Legend of Zelda: Ocarina of Time

The Legend of Zelda: Ocarina of Time - WARNING! - This repository is a work in progress, and while it can be used to make certain changes, it's still

Zelda Reverse Engineering Team 3.9k Jan 3, 2023
An in-progress matching decompilation of Final Fantasy VII For the PSX.

FFVII An in-progress decompilation of the original US release of Final Fantasy VII on the PSX. Building (Linux) Install build dependencies The build p

null 17 Dec 14, 2022
An in-progress decompilation of the 1.1 US release of Silent Hill on the Playstation 1.

Silent Hill Decompilation Project An in-progress decompilation of the 1.1 US release of Silent Hill on the Playstation 1. Building (Linux) Install bui

Nicolas 35 Dec 25, 2022
Ezfrags - Decompilation of the CS:GO cheat ezfrags

Ezfrags Ezfrags was the first cheat of a lot of people, and probably their last. This cheat is so popular that it became a meme in the CS:GO community

null 14 Jul 7, 2022