NDS Homebrew SDK

The Nintendo DS is the newest handheld console from Nintendo, released in the U.S. in November, 2004. In general, console manufacturers do not support independent development (homebrew), and the DS is no exception. Everything must be reverse engineered and documented, and free headers, libraries, and tools created

I have been involved in the community since before launch and have made significant contributions to making homebrew on the DS possible.  I co-authored the first homebrew development library ndslib with Jason Rogers (dovoto), which provides startup files, link scripts, and a library of functions to utilize the DS hardware.  The library was renamed to libnds when it merged repositories with devkitpro, and I continue to maintain and contribute to it there.  I also maintain the NDSTech Wiki (posting as Joat), a central repository for all homebrew knowledge about the Nintendo DS.

Below are a few pictures of my early development environment.

First homebrew use of the touch screen
My passthrough unit, which enables me to bypass the normal boot sequence and execute code in DS mode from a GBA cartridge.
First visual test. Everything before this was non-visual code dumping registers and probing memory. The count shows the number of command transactions observed on the DS bus (in hex).

Speedy Gonzales the robot

For my Building Intelligent Robots class at the University of Missouri – Columbia, we worked in teams of two to create (and recreate) a robot for a number of different tasks.

The robot’s brain is a MIT Handyboard, and we used LEGO bricks and motors to actually build the thing.  We designed him for high torque, and as a consequence he was one of the slowest robots in the class, earning him the moniker Speedy.  The sombrero came during a late night build session after taping out some boundaries on the floor…

The final project report is available, and it includes more pictures, prose, and the source code.

Ultrasonic sensor visualization

I got a pair of nice SRF-08 ultrasonic rangefinders for a robot project some time ago and decided to test them out with a PC first. I built a I2C adaptor for the parallel port and wrote some logging/graphing code to display the time-of-flight for the first eight echos returned.

Nothing fancy, but it was interesting to see how different obstacles affected the readings, and I added a little ‘Theremin’ mode for fun, where the first echo determines the frequency of a tone.

MB v.2

My good friend Jeff Frohwein has started production of his MultiBoot Version 2 cable, which allows you to download up to 256 kbytes of code to your Gameboy Advance and test your programs on the actual hardware. I have one and I must say it is a wonderful development tool.

Update: The first batch of 50 cables sold out rapidly, but there are more batches on the horizon, check www.devrs.com/gba periodically for more information.