So today I got the Apparatus decomp to run on desktop after splitting up the codebase into an Android-specific project and a common project, and then brought in some code from my previous desktop port attempt putting that into a new desktop project.

It works much better than my previous attempt! Sandbox works, you can play through challenge levels and such. Absolutely spectacular seeing it running natively on desktop like this.

#gaming #reverseengineering #decompilation

However one limitation with this desktop version is of course that the dialogs that are implemented as Android native dialogs are unimplemented. To follow Principia's footsteps in choosing the worst GUI toolkit that makes the least amount of sense for a game, I guess these could be reimplemented in Swing.

However there are a lot of undocumented keybindings that can be used to e.g. save and load sandbox levels, which I would assume is how the desktop version was used during development.

Otherwise the game is very cleanly structured so "dirty" classes that use Android APIs are clearly distinct from "clean" ones that build on desktop, and there is a backend interface to implement platform-specific methods for each. Probably the most structurally sound part of this horrifying codebase.

Either way, the decompilation is available on GitHub to build for either platform. Apparatus fans rejoice, things are finally looking up again.

https://github.com/rollerozxa/apparatus-decomp

#android #apparatus #reverseengineering #decompilation

GitHub - rollerozxa/apparatus-decomp: A decompilation of the 2011 Android game Apparatus

A decompilation of the 2011 Android game Apparatus - rollerozxa/apparatus-decomp

GitHub