Archive for July, 2007

Nintendo DS Homebrew: Tools of the Trade

Monday, July 23rd, 2007

How the heck do you do this?

There are few things more essential to the budding homebrew developer than their development environment. As we’re just starting out, we have yet to even get our environment together. As such our first task should be to gather our tools and get ready to install.

There are two very important packages every homebrew developer should be aware of.

The first of these two is a package called devkitARM. DevkitARM is a full compiler toolchain for the ARM chipset on which all Nintendo DS games run.

Why do you need a toolchain?

Because executables differ from platform to platform. If you just take your home Visual Studio install and compile a “hello world” application, it will compile for your host operating system and architecture. Unfortunately the set of instructions that your (likely intel) CPU and the instructions that the Nintendo DS’s ARM CPUs understand are not very similar at all. As such you need a set of tools which can create executables for your target platform.

Getting devkitARM.

DevkitARM provides just those tools, as well as an additional set of tools which should make your homebrew development that much more fun.

Now that you’re excited to get those files, devkitARM can be found at the following addreses:

For windows, you’ll want the devkitPro updater, which is a full installer for windows, and will get you up and running with minimal work.
Download the devkitProUpdater for Windows from Sourceforge.

For Linux or Mac OSX, you’ll want to grab the binaries for devkitARM at the following address:

(There are windows binaries as well, but windows users should just use the super spiffy auto updater.. it’s much easier.)
Download the devkitARM binary archive from Sourceforge

Now that your programming arsenal has increased by one cool package, it’s time to get your Nintendo DS development library.

Getting libnds.

The only library you should concern yourself with at this point is libnds. Libnds began as a series of useful #define statements to make Nintendo DS development a bit easier. Over time it evolved into a full development library with support for most of the functionality of the Nintendo DS. Through libnds, the enterprising developer even has support for 3d through a series of functions which look incredibly similar to OpenGL.

If you’re running Linux or Mac OSX you can get the library here:
Download the libnds source archive from Sourceforge

If you’re running Windows, don’t fret, the auto updater will fetch libnds for you!

Example code anyone?

The final archive I would suggest everybody have on hand is the latest copy of the nds examples. This archive contains a series of example code showing most of the implemented functionality within libnds.

As above, Linux and OSX users use the below URL. Windows programmers should use the auto updater to get these files.
Download the Nintendo DS example code from Sourceforge

Tune in later for information on how to turn these archives into a full fledged development environment!

Firefox Extension Development

Thursday, July 19th, 2007

My current position gives me the opportunity to do web development on a daily basis. Thanks to tools like the Web Developer Toolbar, and Firebug extensions for Mozilla Firefox, web development has been made much less painful than it once was.

These extensions are a boon to my daily development schedule. The extensions increase my productivity by keeping me from spending a majority of my time tracking down simple problems and instead let me focus on fixing the big things. In addition they provide a number of tools that allow me to carefully tweak my pages without altering any actual backend code, experimenting on the fly, and saving precious time which might be lost to repeated “edit -> page load -> test” cycles.

No matter how much I optimise my process I keep finding situations in my current development at work which could be streamlined through the careful application of custom scripting in my browser. Until recently I would satisfy my need for automation of repetitive tasks by creating a carefully crafted Greasemonkey script or by crafting a cleaver bookmarklet. At the end of the day yesterday I decided to take stock of the tools that I had created or modified to help speed up the majority of my repetitive day-to-day development tasks. Needless to say, there were more than a few.

Inspired by the web developer toolbar I’ve decided to develop my own Firefox extension. This extension would provide a number of tools to simplify my life when developing within Oracle’s Application Express which will provide a number of customization options to the existing Application Express editor, as well as a number of shortcuts for common development tasks.

I’ve only just begun development, but I’m hoping the end result will be a benefit to more than just myself.

My initial experience with extension development has been full of swinging mixed emotions.

At this point I have a number of thoughts on Firefox Extension Development:

  1. I love XUL… well.. I love XML, so it isn’t that much of a stretch. XUL’s simplicity and ability to extend the browser through overlays is amazing.
  2. I hate the default directory structure that the majority of the tutorials out there tell you to use.
  3. I hate that the default tutorial on XulPlanet makes note of required directory structure, but lacks any mention of the proper structure for extension development.
  4. I love that someone created a build script for extensions that follows a defined directory structure so I don’t have to worry about number 3.
  5. I love the built in localization functionality.
  6. I hate the chrome.manifest file. The only reason I can stand it is because the build script mentioned above will allow you to write it in such a way that it will work in both development and packaged form.

All and all I’ve learned a whole bunch about Firefox extension development over the past two days.

Maybe once I’m finished I’ll write my own Firefox extension development tutorial since I’ve found the majority of the tutorials on the internet to be severely lacking (with the exception of the XUL Tutorials from XulPlanet. Those are amazingly in depth).

Well folks, I’m officially overloaded with projects.

Wish me luck.

The internet returns!

Thursday, July 12th, 2007

For the past week or so I’ve been without a reliable internet connection. But now, I’m proud to say we have a reliable means of digital communication!

Now that I can get on the web I can get back to work on my Nintendo DS development and tutorial writing.

For those of you who I know are waiting on my tutorials keep in mind that the devkitPro website contains a good many tutorials in their FAQ and Setting Up websites (which I will be citing information from). So if you just can’t wait to get up and running, I highly suggest visiting their site.

So you want to make Nintendo DS Homebrew…

Tuesday, July 10th, 2007

If you’re like me, and you’re new to the Nintendo DS scene, the first thing you’ll notice is that you have a long road ahead of you before you can call yourself an expert homebrew developer.You’ve probably scoured message boards, websites, IRC channels, and source code soaking up as much information as you could so you could be somewhat ready to begin developing.

Well you’re ready to start… but how do you do that? Where are the tools? How do you install them?

Never fear folks, I’ve collected this information and will provide you with step by step instructions for getting your development information up and running!

Over the next few days I’ll be posting these how-to tutorials on my site which should explain every step you need in order to start developing for your Nintendo DS.

Topics which will be covered are as follows:

  1. Getting the tools of the trade.
    • devkitARM
    • libnds
  2. Setting up your development tool chain.
    • In Windows
    • In Linux
  3. Creating your first Nintendo DS development project

A Plethora of Summer Projects

Monday, July 9th, 2007

As is always the case, when I’m not studying, I’m working on my own little projects.

Last summer I set up this blog, developed my resume website, and learned Ruby. This summer I have my eyes set on something a little bit loftier.

Near the end of last summer I broke down and purchased a Nintendo DS. Rumored to stand for “developers system” I purchased the console for five very distinct reasons.

  1. New Super Mario Brothers (A new 2D side scrolling Mario game?! I’m in!)
  2. Mario Kart DS. (Mario Kart in your pocket! Who could say no!)
  3. Tetris DS. (Fit the blocks into rows… the 8bit music compels you!)
  4. The prospect of a new Zelda game (Still waiting for this to come out.)
  5. Homebrew Nintendo DS Development

That’s right, you read the last one correctly. Ever since I saw one of my friends complete his Computer Graphics 2 coursework on a Game Boy Advance I’ve wanted to write something for a Nintendo video game system. On one of my various expeditions onto the internet I stumbled across www.dev-scene.com which in turn pointed me to a whole host of homebrew Nintendo DS development resources. Well, 70 dollars of development hardware later I have a working homebrew Nintendo DS SDK.

Now it would be a shame to go through all that trouble to get my SDK working and not do anything with it, right?

Well as it would happen, I’ve had an idea for a console game which would work very nicely on a Nintendo DS! All I needed was the time, and the incentive. Now that I’m working full time again, I have quite a few weekday nights where I won’t be working on school projects! As for incentive, if I manage to complete this game maybe I’ll become famous! (Unlikely… but as good an incentive as any.)

As the weeks go on you should be able to find an ever growing number of posts about my progress in developing this game, as well as a chronicle of the things I’ll learn as I do my best to develop a Nintendo DS game.

Here goes nothing!