Although no one has found multiplayer code in Mario’s Tennis so far, I decided to take a look for myself. So first I modified an emulator to to help me identify data and code sections. Then I spent a while playing the game to collect enough data and to identify unused code paths. Next, I wrote a disassembler that was able to disassemble the whole game by using the collected data.

After taking a first look at the unused code, I was surprised to find quite much code that looked like proper multiplayer code. So I spent some time doing an in-depth analysis of the code and eventually I was able to reintegrate it into the game. A first test revealed that the controls of one of the players were inverted. This was probably done by the developers for easier testing. Unfortunately, the proper code bits were probably removed by a compile switch, so I had to rewrite them myself.

So far, I got 2 of 3 game modes (P1 vs P2 and P1/COM vs P2/COM) working properly. The third mode (P1/P2 vs COM/COM) is buggy and I probably won’t fix it anytime soon, because debugging and testing is too time-consuming without an emulator with link cable support. But once I have the necessary tools, I will try to fix it. Till then enjoy the first version of my patch. To apply the patch you have to use the tool bspatch.