I've wanted to make a DS game for years and never got around to it (mostly since I didn't know C until now). Super Crate Box is a simple enough yet fun game that would have fit really well on the DS.

What it does

It's a very unfinished version of Super Crate Box. You can move about and jump with B, map collisions sort of work, you can shoot (with X), and an enemy spawns and falls in the hole in the map. Note that there aren't any character collisions, so you can't shoot the enemy and the enemy won't kill you if it touches you. Also, it doesn't seem to work on real hardware (it fails to remove the enemy sprite when it falls through the map), although it works on DeSmuME until the sprite count ticks over 128, as I forgot to decrement it when a sprite is deleted.

How I built it

libnds/DevKitArm with NFLib for sprite handling. Usenti was used to draw the sprites, and Grit was used to convert the BMPs to the correct sprite format.

Challenges I ran into

There isn't exactly a thriving StackOverflow community for the DS, and most of the tools are from around 2008. It took about 12 hours to get sprites properly working because of how picky Grit (the sprite converter) is. If you ever make a DS game, use Usenti - it's made by the same person as Grit and exports as BMP in the expected format. Since getting sprites working took so long (sprites weren't consistently working until the 12 hour mark), the rest of the game is very hastily thrown together.

Also, I did this on a MacBook, so I couldn't natively run Grit or Usenti, as Grit wouldn't compile and Usenti is closed source. I used a Windows 7 VM to get around this, which wasn't a great experience.

Accomplishments that I'm proud of

I actually managed to get something resembling a game on the system, and I somehow didn't just give up when the sprites weren't working properly.

What I learned

I've learned the basic concepts behind using the DS homebrew tools to make DS games.

What's next for Super Crate Box DS

If I decide to continue this project, I'll probably start from scratch since most of the actual code was thrown together in 3 hours with about the same amount of sleep the night before. I might use it as a chance to learn C++ too, since this seems like the sort of application where object oriented design would really help, especially around sprite handling. Ideally, I'd end up with a port basically identical to the original game, but that will be pretty hard (and will probably infringe on copyright).

Built With

Share this project: