Super Mario 64 (1996) Port for DSi
Yes, you read that right! This is a port of the original Super Mario 64 from 1996 to the Nintendo DSi, based on the open-source decompilation of the game. It originally started out as a joke idea that I didn't think would go very far, but once I actually got the game running on the DSi, I saw potential. The initial version was based on the PC port of the game, but that port is designed with modern hardware in mind, and its graphics abstraction layer is slow. I decided to scrap it and start from scratch, writing a new graphics interpreter designed to work directly with the DS hardware for maximum performance. The results were better than I expected; the game runs full speed in most cases, and the graphics don't look too bad, either!
Compiling
Just like the original decompilation and the PC port, this requires you to provide your own legally dumped Super Mario 64 ROM file in order to compile it. I can't provide compiled binaries, so don't ask for them or share them. The source code is available here. It's already configured to build the DSi port, so just follow the build instructions included in the readme and you should be good to go.
Usage
Once you've compiled the game, you can load it through unlaunch, memory pit, or whatever DSi homebrew method you prefer. The game uses libfat to save to a file just like the PC port. For some reason there are issues launching the game from TWiLightMenu with libfat enabled; if you have no other way of launching homebrew, it can be disabled in the makefile by removing -DLIBFAT. Note that if you do this, you won't be able to use saves.
Issues
The game runs full speed for the most part, but there are slowdowns in certain areas. There are also some minor graphical issues; translating N64 graphics calls to the DS isn't an easy task, and while there are hacks in place to accomodate for most of what the game does, some issues might be unfixable. Audio is unfinished, and causes additional slowdown; it can be toggled with the select button.
DS Support?
The only real thing stopping this from working on the original DS is lack of RAM. Right now the entire game is loaded into memory on boot, and it's simply too big to fit in the 4MB that the DS has to offer. Eventually I'd like to load in assets dynamically with NitroFS, but this will require hacking up how the game loads things. Performance would also of course be worse on the DS, but not much can be done about that.
Screenshots
The above screenshots were taken with my emulator for the sake of quality, but here's a picture of it running on real hardware in case you weren't convinced
Yes, you read that right! This is a port of the original Super Mario 64 from 1996 to the Nintendo DSi, based on the open-source decompilation of the game. It originally started out as a joke idea that I didn't think would go very far, but once I actually got the game running on the DSi, I saw potential. The initial version was based on the PC port of the game, but that port is designed with modern hardware in mind, and its graphics abstraction layer is slow. I decided to scrap it and start from scratch, writing a new graphics interpreter designed to work directly with the DS hardware for maximum performance. The results were better than I expected; the game runs full speed in most cases, and the graphics don't look too bad, either!
Compiling
Just like the original decompilation and the PC port, this requires you to provide your own legally dumped Super Mario 64 ROM file in order to compile it. I can't provide compiled binaries, so don't ask for them or share them. The source code is available here. It's already configured to build the DSi port, so just follow the build instructions included in the readme and you should be good to go.
Usage
Once you've compiled the game, you can load it through unlaunch, memory pit, or whatever DSi homebrew method you prefer. The game uses libfat to save to a file just like the PC port. For some reason there are issues launching the game from TWiLightMenu with libfat enabled; if you have no other way of launching homebrew, it can be disabled in the makefile by removing -DLIBFAT. Note that if you do this, you won't be able to use saves.
Issues
The game runs full speed for the most part, but there are slowdowns in certain areas. There are also some minor graphical issues; translating N64 graphics calls to the DS isn't an easy task, and while there are hacks in place to accomodate for most of what the game does, some issues might be unfixable. Audio is unfinished, and causes additional slowdown; it can be toggled with the select button.
DS Support?
The only real thing stopping this from working on the original DS is lack of RAM. Right now the entire game is loaded into memory on boot, and it's simply too big to fit in the 4MB that the DS has to offer. Eventually I'd like to load in assets dynamically with NitroFS, but this will require hacking up how the game loads things. Performance would also of course be worse on the DS, but not much can be done about that.
Screenshots
The above screenshots were taken with my emulator for the sake of quality, but here's a picture of it running on real hardware in case you weren't convinced
Last edited by Hydr8gon,