I'm actually from a Super Monkey Ball 2 hacking community which, among other things, has been working on a Ghidra decompilation for a bit over a year now. We collaborate on a shared Ghidra server and have tons of stuff labelled and annotated at this point!
We also have the ability to inject C++ directly into the game for modding. I'm also the author of ApeSphere, a practice mod for SMB2 with features like savestates: https://github.com/complexplane/apesphere . Take a look at rel/savestate.cpp for a taste of what we can do.
do you have any tips for setting up a shared Ghidra server? the user management especially seemed scary, and has kept me from setting one up in the past.
How is it that the decompiled camera code has interesting variable names and even comments? I was expecting it to look more like the decompiled code from this article... With made-up and uninformative variable names.
You mentioned collaborating on annotating the decompiled code. Is the linked code something created manually based on the "raw" results of the decompilation? Or does the toolset allow you to annotate memory addresses etc in such a way that when you invoke the decompilation it uses the nice names automatically?
As an example, here's a full decompilation of the camera code which runs after the ball passes through the goal: https://cdn.discordapp.com/attachments/463221047471374337/79...
We also have the ability to inject C++ directly into the game for modding. I'm also the author of ApeSphere, a practice mod for SMB2 with features like savestates: https://github.com/complexplane/apesphere . Take a look at rel/savestate.cpp for a taste of what we can do.