I'm considering trying to decompile Monkey Ball for the Sega NAOMI arcade system.
So far (thanks in large part to the debug mode left in the game), I have about 20% of the functions labeled. You can find the Ghidra project and everything else done so far here.
However there are a couple challenges.
First, emulators for the Sega NAOMI system (as well as the Dreamcast and other derivatives such as Atomiswave) have very poor debugger support. Memory poke/peek and memory/code breakpoint support is nonexistent in Demul, and is very poor in NullDC. I can use Cheat Engine to get around the memory poke/peek issue, but the latter has no solution currently.
Second, no part of the Sega NAOMI SDK has ever been discovered or leaked. This is unfortunate as it means that the libraries will have to be decompiled as well, and we can only guess at the names (just as is the case for the rest of the game). It also means setting up a build system will be a challenging task.
I'd imagine it'd be best to make this a team effort, so hopefully I can figure out a way to make that happen. For the time being though, I do wanna get more of a codebase going before considering that.
So far (thanks in large part to the debug mode left in the game), I have about 20% of the functions labeled. You can find the Ghidra project and everything else done so far here.
However there are a couple challenges.
First, emulators for the Sega NAOMI system (as well as the Dreamcast and other derivatives such as Atomiswave) have very poor debugger support. Memory poke/peek and memory/code breakpoint support is nonexistent in Demul, and is very poor in NullDC. I can use Cheat Engine to get around the memory poke/peek issue, but the latter has no solution currently.
Second, no part of the Sega NAOMI SDK has ever been discovered or leaked. This is unfortunate as it means that the libraries will have to be decompiled as well, and we can only guess at the names (just as is the case for the rest of the game). It also means setting up a build system will be a challenging task.
I'd imagine it'd be best to make this a team effort, so hopefully I can figure out a way to make that happen. For the time being though, I do wanna get more of a codebase going before considering that.
Last edited: