Nintendo DS & Homebrew

October 4th, 2008 at 11:28

A few days ago, I purchased a Nintendo DS Lite from a friend of mine.  It came with a R4DS, which much like the mod chip for the xbox, makes a decent gaming system into a great one.  Aside from the nice part about being able to download all the games, a R4DS (which is only one of the many mod options) allows you to run homebrew code.  That is, anyone with the desire to write and deploy their own programs to the NDS can; without the trouble of having to buy a development kit from Nintendo and pay licensing fees on the stuff we release.  This isn’t to paint Nintendo in a bad light; I understand their business model and it works, but it can be frustrating sometimes when you have a cool device that is restricted by the unfortunate business policies of its corporate creator.  See: iPhone, Zune.

The homebrew scene is a bit disjointed, but that’s to be expected.  It could be described as both ragtag and mature. It has been possible to run homebrew code on the NDS for a few years now, so the community is well formed, and it is possible to jump in and have something running in a few days.  It isn’t particularly hard to get from zero to “Hello World” in maybe a few hours of reading, downloading, and going through tutorials.  After that however, the amount of available documentation starts to drop off.  This isn’t the first time I’ve noticed this sort of thing either, and it seems really common with open source libraries.  Ruby On Rails is a good example – tons of documentation on how to do really simple things, but as soon as you leave the basic tutorial behind, you’re on your own.  That didn’t stop with RoR, and it hasn’t stopped me this time either.

The two main components to homebrew development are libnds, which is distributed as part of devkitpro, and palib.

libnds is almost essential, since it gets you off the bare metal; that is, it provides a barebones API on top of machine instructions, and little else.  When I asked in the development IRC channel if there was somewhere I could find more documentation for libnds, I was told to go look at gbatek, which has the machine instruction specifications for GBA and NDS.  That’s what I mean when I say ragtag.  Like many tiny game development libraries, things are often functional, but not well documented, if at all.

palib is a bit higher level, providing what is actually quite a comprehensive library for all sort of things such as I/O, sprites, and filesystem support.  I’ve been using it so far, but you can tell it is not a professional-level library.  Still, it gets the job done, and the author has been nice enough to make a very large number of tutorials.  I have no complaints yet, unless you count the sense of unprofessionalism it exudes.

The games for DS are pretty fun too.  I’m currently enjoing Advance Wars: Age of Ruin, the Ace Attourney Series, Warioware, and Brain Age.  I am NOT enjoying Stephanie saying her stupid Nintendog’s name over and over again, just to have it forget.  I’m certain she ended up saying that stupid thing’s name over 100 times in the course of an hour.

More to come later on homebrew.

Comments (0)

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment