Recently, I flashed my first NDS firmware. The process was, in the end, fairly trivial, though putting all the pieces together (and figuring out exactly what I needed!) was slightly less so. Plus, there’s a good deal of terminology out there regarding the various approaches, and it all gets pretty confusing. I’m going to cover some of the details here, as well as try to answer the questions I had when I was going through the process.
Equipment and Setup
My basic setup involved a European NDS with firmware v3, a PassMe2 with the appropriate game cartridge, and a Supercard reader. Already lost? Let’s take a look at what all this means.
First, the Nintendo DS. This was purchased in France for me by a friend, and it came with version 3 of the firmware. Firmware is like the operating system of the NDS, it’s responsible for that first warning screen you see, the loading screen where you select the game you want to play, and loading the game from the cartridge itself. The last part is the most important, as the firmware is what verifies the “validity” of the NDS software you’re trying to run. If it’s not valid, it doesn’t run. You can see what version of the firmware you have by following the steps indicated.
As the page indicates, there are several different firmwares on the market right now. Most of the newer NDS will be shipping with the later firmwares, but I picked up a V3 off the shelfs as recently as late Febuary, 2006, so don’t expect one or the other. It’s not critical which firmware you have, as long as you have the right pieces later on.
Take a look at that site. It talks a bit about using a PassMe card. The Passme card acts as a middleman allowing you to load programs from the GBA slot in the bottom of your NDS. This is used to circumvent the authentication checks that the firmware does on software it loads, so as long as you’re using the official firmware, you need to have a PassMe device to load your NDS roms. There’s two types of PassMe devices out there, the appropriately named PassMe1 and PassMe2. If you have firmwares 1, 2, or 3 on your NDS then you can use a PassMe1 device. If you have anything later (or aren’t sure which firmware you will have), then you want a PassMe2 device, which works on all firmwares up to 5, including the iQue and DSLite firmwares. I didn’t know which firmware I would have on my NDS, so I ordered a PassMe2. I ended up having v3, but it all works out anyways.
You can order a PassMe2, like I did, from Natrium42’s shop. When you do so, you need to specify which NDS cartridge you will have available. In my case, I obtained the Nintendogs Lab and Friends European Version, so I specified that on the list and ordered it. It’s possible to change this afterwards, but you need to make a (relatively) simple cable and it’s a little more involved, so try to get it right the first time around.
The last physical hardware you need is a Supercard, M3, or some other storage reader. I used the Supercard CF reader, myself. Natrium 42 has the M3 for sale on his site. These devices, originally developed for the Game Boy Advance, allow you to plug in a CompactFlash Type 1 or SD card (depending on the flavor of the device you bought) for additional storage capacity. You need this capacity to load the new Firmware we’ll talk about later, as well as any homebrew roms you might want to play with. You can plug these into the GBA port in the bottom of your NDS, and then select ‘Start GBA Game’ from the front menu.
I also picked up a nice little USB Compact Flash reader to make it easy moving files back and forth, and a PCMCIA Wireless Adapater (the MSI CB54G2) for uploading files via the wifi connection, which we’ll cover later.
So at this point you should have, in your hands, the NDS (duh!), a Supercard with a media card, a PassMe2 with related NDS cartridge, and a screwdriver you can unscrew the battery compartment with. Now you’ll need some software to replace the firmware on your NDS with one that’s a little more permissive and flexible.
Start by picking up the ‘FlashMe’ firmware replacement. This is a modified version of the original firmware with several advantages. You can find the newest version of the FlashMe Firmware by clicking on the “installation” file link. You want to save this file to your media card.
Next, you need to supply what’s called an SRAM file. This is a file that assists the PassMe2 in running programs from the GBA slot (and, by extension, from your Supercard). You need to pick up the right SRAM file for the NDS cartridge you have. Find your game as listed (be sure to get the right region version!) and then downloading the “GBA” file for that game. Put the GBA file on your media card as well.
At this point, you should have most everything you need except the actual process. For those details, I draw your attention to the following sites:
- http://ndshb.com/modules.php?name=News&file=article&sid=60 for a step by step use and upgrade of the firmware.
- http://www.dspassme.com/FlashMe.shtml for various pictures relating to the PassMe1, but still accurate for the pin shorting
The first link is probably the most useful of the two, and it’s the one I followed as much as possible. The “passme2buttonwait.gba” file he talks about is actually the SRAM file we downloaded above — I never did figure out where he got that name from. To summarize the steps:
- Put all the devices into the NDS, and PLUG THE POWER IN.
- Unscrew the Battery compartment, take the piece of tape off the hole for the pin you need to short (look at the pictures on the second site above). See the pins? That’s a pretty long hole, isn’t it! Go find yourself a nice NON-magnetic screwdriver that will fit down there (flathead, please), or the filed off end of a nail (make sure it’s clean!). Don’t bother trying it with a paperclip, you’ll drive yourself nuts trying to get it to stay in contact.
- Boot up the NDS, select “Start GBA game.”, and load the .gba file you downloaded above (mine looks something like ‘ad3p-0.gba’). This will say ‘SRAM Written… done.’
- Now, QUICKLY turn the NDS off and on again. You’ll know this worked if you don’t see the NDS welcome screen but instead see the Supercard screen and it goes directly to the Supercard display. You will now have the ‘flashme.nds’ on your screen in the LIST. Select it, and you’ll be prompted to enter the X B X B sequence to start the burn process. Once you do so, it will show 0% until you short the pin that’s next to the battery compartment. Keep it shorted until it reaches 100% and you’re told to turn it off.
This is probably the most hair-raising part of the whole affair. If you screw it up by turning the power off at the wrong time (you have it plugged in, right?) it’s definitely possible to irretrievably crash your NDS. The plus side is that the process, baring power failures, is otherwise quite forgiving.
Now, at this point, I screwed up a couple of times. That I’m still alive and writing this should tell you that not all screwups are fatal. Here’s a couple things that happened to me:
- I unplugged the power at 0% — This was a real heartstopper because it wouldn’t turn back on! The power socket was still in place, but pushing it did absolutely nothing. I unplugged all the cartridges (the Supercard and the PassMe2), replaced the battery pack, and then was finally able to turn it on. Once I’d stopped hyperventilating and re-configured the date, time, and other first-time prompts, everything was ok. Still, I thought I’d killed it!
- Loosing the short on the Pin — That pin is really buried in there, and it’s dang hard to get the short exactly right. I started by using small screwdriver I had (2.4mm for anyone keeping track) which got me to 1% and then it stopped again. Now, 1% is exactly the wrong place to be stuck, as it’s probably written over the most important part of the firmware — the part that controls the bootup — but not enough of it to recover from. I fiddled for a bit, but wasn’t able to get the percentages to increase anymore. I took a good look at the screwdriver, and scrapped off some of the black covering material on the tip so that it was shiny metal, in the hopes of getting a better contact. Sure enough, I was able to re-short the pins and it all proceeded.
At this point, I let the process continue to 100%, at which point it told me that everything was ok, and I could turn my NDS off.
I restarted, and up came the normal boot screen, but this time without the annoying warning display and so forth. My Supercard is one of the older ones, so to boot it up to load NDS homebrew games from I have to hold A+B+X+Y at the same time. Newer versions of the Supercard firmware, which you can download from www.Supercard.cn or www.scdev.org in the Downloads section, will automatically boot into “NDS” mode without needing to push the keys down whenever the SC is plugged in with a CF card in it. If you upgrade, and want to get back to the normal NDS screen without taking the Supercard out (since it can be a bit of a tight squeeze), apparently you can hold ‘Select’ while turning it on.
Go ahead and download Simple Paint, stick it on your CF, boot up the NDS in Supercard mode, and give it a try! You can change colors by pressing the ABXY buttons, clear using Select, and draw on the touchscreen.
Now, in addition to the PassMe2 and FlashMe, there’s also a bit of software out there to support Wireless MultiBooting (WMB). If you have a supported WiFi card with the proper Ralink chipset, you can act as a Nintendo Download Point. I purchased the MSI CB54G2 PCMCIA for my laptop (where I do most of my development) and it seems to work pretty well. Once you have the card, but BEFORE you install or insert it (to save an annoying “remove drivers” step, pick up the WMB drivers and applications. If you ran the registry patch included with the Wireless Multiboot Application archive, you’ll even get a nice association to automatically run the boot application by doubleclicking on a .nds file. The text files included with these archives are quite sufficient to get you started, or you can look at this for an extensive pictorial walkthrough of the NDS Ralink driver installation process (though you don’t need to use the WifiMe binaries, so ignore the latter part).
You’ll also see WifMe on the site. This is an old passthrough method that worked for some of the earlier versions of the NDS, but not the later ones. If you have a version 1-3 NDS then it’s possible to use the WifiMe to boot the Supercard without the use of a PassMe. This can save you around $30, if you’re really tight on cash. Follow the link above for the boot process, and then the normal processes outlined elsewhere for loading the FlashMe program from your Supercard (or whatever).
As far as development toolchains, right now the DevKitPro is fairly popular. Pick it up and install the ARM toolchain. The examples built right out of the installation process for me, which is actually pretty impressive. For a few other references for development, and other in-general useful links, I’d suggest looking at:
- http://www.pineight.com/ds/pass/ for a good overview of the various passthrough methods historically used.
Also, irc://irc.efnet.org/#dsdev has a lot of really smart people, many of whom contributed extensively to this document. Deserving special mention are HonkyKong and JaJa_ due to their help and assistance while under fire during the actual firmware upgrade. MrShlee also chipped in with a few astute observations during the whole affair.
Sorry, the comment form is closed at this time.