DS commercial roms (running) and general usage
From EZ-Flash Wiki
Running Nintendo DS commercial roms is a popular thing to do these days and some would appreciate a basic introduction to the whole thing.
Contents |
History and Basics
As with most consoles people were interested in running their own code on it (be it homebrew or commercial ROMs), the DS however posed a major challenge as (DS carts are what stores the data for the DS and they are very small making it fairly hard to replicate, it is however worth noting DS slot cards are starting to come about using internal memory and microSD memory).
Initially it was assumed that code would either have to be made run from the DS slot and a cart within it or by opening/modifying the case and piping code in directly, fortunately it was found that it is possible to trick the DS into loading code whilst in DS mode from the GBA slot.
The first person to get their own code to run on the DS was an individual known as Darkfader whom was a well known person in the console hacking scene. What Darkfader did was get a message to be displayed in the metroid prime first hunt demo bundled with most early DS systems using a FPGA (field programmable gate array) developers kit. The information gained from this would later be used in development of the passme and Darkfader would also later write a loader that was used with the EZ3 before the EZTeam brought out their DS supporting EZManager software.
This FPGA hack is generally regarded as the "hello world" moment for the DS programming world ("hello world" is the phrase normally used by programmers when coding for a new system).
Although it took a while to get from "hello world" to a (semi) commercially available solution a person known as Natrium42 turned the FPGA hack into the first passme and many people managed to get code to run on the DS and as many already had GBA flash carts the interest in homebrew (and commercial ROMs) increased dramatically.
Fast-forward a little while and three main methods to get code to run (from flash carts in the GBA slot or small files in the case of WMB) have come around, you will need one of the following methods to get commercial roms to run (WifiMe will not work as is: just use it to run flashme):
The methods
nopass See the article linked for more infomation. Owing to the fact that DS cart encryption was cracked it was then made possible to make pass devices without the need of a "real" cart. These are DS cart sized devices that act in the same way as a passme in that they redirect to the GBA slot. The EZTeam have their own nopass called the EZPass 3.
Flashme A detailed explanation is on the article linked but put simply it is a way of modifying the firmware of the DS so as to no longer need the pass device or wifime, requires a pass device or wifime to do though. (It also can do things like remove the health screen from startup).
WifiMe Similar to the passme but using a certain series of wifi cards (they are all 802.11g cards in case you ask) and special drivers for them. Used in place of a passme. For more information head to the Wifime Homepage or check the article linked.
Passme (The EZTeam made their own version called the EZPass and later the EZPass_2 and a nopass by the name of the EZPass3)
Effectively obsolete now Nopass devices exist but passme devices are small device which plugs into the DS slot and redirects the DS to load code from the GBA slot.
Later the passme method was blocked by Nintendo, a workaround was made and became the Passme2. To check whether you need a passme or a passme 2 do as follows:
If you are considering buying a DS the ones that will likely require a Passme2 are as follows
- iQue DS. (all)
- Japanese Version. Serial Numbers beginning with NJH/NJF/NJM and the second number >=2
- USA Version. Unable to provide accurate information
- European Version. Serial Number beginning with NEH/NEM. Most of the DS' released are the new version (silver mario kart bundles are likely not affected).
- All versions which have been bought after Oct. 2005. Or more importantly manufactured after Oct. 2005.
- Australian Version. Serial Number beginning with NAF/NAH and the number greater than 100xxxxx. This appears to only be for the Silver DS, all non Silver DS' will only work with EZPass 2.
- Covered above but all DSlite models as well will not work with a first generation passme.
If however you actually have a DS a way of checking whether you will require an EZPass or EZPass_2 is done by using Pictochat. Follow these simple instructions and you will know which EZPass/Passme Variant is for you. Note, you cannot damage your DS by doing this.
- 1. Insert a DS game in DS slot.
- 2. Turn up your DS and open Pictochat, room A.
- 3. Now remove the DS cartridge from the DS slot (don't worry, you can't do much harm).
- 4. Both screens should turn in the same colour.
Basically if the screens do not turn a colour indicating version 4 onwards (and you're not using iQue DS), it is a safe bet that it's PassME1 and WifiMe compatible, on the flipside a v5 DS and above can possibly have the increased/variable brightness settings of the DSLite by use of the latest V7 flashme.
The colour 'chart':
- Version 1: The DS will freeze
- Version 2: Grayish Blue
- Version 3: Dark Green (Note! A silver DS bought in MK:DS bundle is most probably NOT installed with FW4!)
- Version 4: Yellow
- Version 5: Purple
- Version 6: Purple
- iQue: Dark Green
- DSLite: Purple
- FlashMe: Dark Green
This information was adapted from GBA Dev.
Nintendo DS homebrew History cont.
Now a bit more history which may be important if you get ROMs from older/infrequently updated sites, initially commercial ROMs were dumped yet not able to be played, then along came the Neoflash cart (basically a rebadged XG-Flash cart with a passme) which allowed you to play commercial DS roms provided they were dumped (and patched) by the release group golden sun team (GST) and later by the patcher released by GST. These ROMs were made to not work on other carts and due to bad design, software... the neoflash 1 did not make that much of an impression and went on to sell few units.
Other groups of people were still dumping roms however.
Now a GBA ROM can be dumped by just about anyone with a linker,flashcart,multiboot cable.... DS ones however can not: currently they need software and specific carts or some custom (and unreleased) hardware, see here for methods.
The software came first and is still widely used but initial versions had a bug causing roms to be dumped badly: therefore early ROMs may need patching when you get them (various release groups also made errors in dumping which means a bunch of their ROMs may need patching too).
Long story short make sure you ROMs are good before using them (there was also some trojan code released so it is wise to make sure you ROMs are good anyway, Flashme also provides a level of malware protection by having fundamental bootable code contained within an area that can only be written to by shorting the SL1 connection on the DS board). Offline List and ADVANsCEne's DATS are a good way to do it. (ADVANsCEne is a good place to get DS patches for corrupt ROMs as well)
The EZTeam made their own DS patching mechanisms and built them into EZClient 3.20 and EZManager 2.09test and above but this is getting ahead of the game.
So all the GST ROMs are around and a)confusing for those new to the scene (especially with the NDSSave and GBASave versions of the same ROM) and b)useless for all but the few neoflash owners (later carts/DS solutions also support, but do not require, GST ROMs but that is it).
A patcher was made!
Known by most simply as NDSpatcher compatibility was low (the author stated the patcher was only made to get Castlevania to work and save of off the GBA cart which it does) however many other roms work fine with it, the source was never released and is likely to never see another update and as time goes on (and ROMs get dumped) compatibility worsens but still it was a defining moment.
Release group WRG made a patcher of their own called LoadMe which works on most flash carts (some obscure and very early GBA ones have problems) has fairly high compatibility and is an ongoing project.
This article however assumes most people reading this use (or are intending to use) EZFlash products so this is likely to be not much more than a brief DS scene history lesson/introduction.
So (severely condensed) history and basics over we can now get on to more interesting/relevant things, onto the EZFlash then:
EZFlash and commercial roms
Now there are effectively three EZFlash product lines: the EZFlash I/EZFlash II (EZ1/2), the EZFlash III (EZ3) and the EZFlash IV (EZ4). The EZ1/2 series uses EZClient, the EZ3 series uses EZManager and the EZ4 uses EZ4 Client.
The first DS commercial ROM supporting EZClient version was 3.20 released in early November 2005 (a beta was leaked a few days previously but anyway) which touted fairly high compatibility at the time and mixed GBA and DS ROMs (previously not done/available) as well as the ability to run ROMs bigger than 256mbit in size (some other carts have trouble doing this as the gba memory size limit, and so the software's ROM size support limit, is 256mbit)
- You will likely want to read the section below on DS ROM ripping/shrinking if you have a smaller cart as you can fit bigger/more DS ROMs onto you cart that way.
About three weeks later (still in November 2005) EZManager 2.09test was released, this was not so good (unstable, not too many ROMs working (compared with EZClient anyhow), poor Flashme support, poor save support....) but this was rapidly followed by a series of betas which greatly improved support and stability (see Game compatibility).
First off EZClient. This allows owners of EZ1/EZ2 carts (all versions) to run commercial DS ROMs.
The ROMs to be used are clean roms. A detailed guide to clean ROMs is on the article linked but clean roms are ROMs that have not been patched by any other patcher or have had the secure area re-encrypted. Simply burn them to your cart like any .gba ROM before (you can even leave it zip/rar compressed). If you want multiple DS ROMs or mixed GBA and DS you will have to enable the DS loader under the system config pulldown menu. As this loader is DS code it means that you can not use the cart in a GBA/GBM/GBPlayer (or a DS that is not using flashme or a passme/WifiMe) until you reburn with the GBA loader. As of version 3.26 of EZClient DS compatibilty is in line with the EZ4 list
Now onto EZManager.
clean roms are needed and currently only the NAND/EZDisk section is available to be used for commercial DS ROMs (the NOR is used for GBA and DS homebrew) and due to the way the DS handles code they do not need to be decompressed causing a load time like GBA ones do which is a bonus. Drag your ROM to it like you would with a GBA one.
However seen as NAND memory is being used without the need for transfer to the PSRAM it is wise to reformat the section when altering its contents (the files get fragmented which decreases stability of the rom). Once again only use clean roms and the same loader restrictions apply as with the EZ1/2.
As a nice little bonus you can grab the EZ4 Client software and use it to pre-patch ROMs to run with your other EZFlash equipment.
Finally EZ4 Client
Seen as the EZFlash IV was always intended for the Nintendo DS every version of EZ4 Client supports DS ROMs with current versions supporting nearly every DS ROM going (certainly most of the big ones). Simply open the ROM in EZ4 Client patch it and burn it to your memory card (non EZ4 users can patch a rom with EZ4 Client and then burn it to your cart for a compatibility boost, an EZ4 compatibility list is here an EZ3 one is here.
There are no loader issues this time around in terms of GBA and DS.
DS Rom Ripping: shrinking DS ROMs
As mentioned above the GBA can only support 256mbit of cart (it could go higher if it used a method called bankswitching but that has not been done with commercial carts: very few are even 256mbit, a lot of Flash_carts however use it).
This means that when people designed the GBA carts (and their respective software) they were rarely very big as they only had to cope with a few 256mbit ROMs (not to mention flash memory does not get that large and is very expensive when it does get bigger in size), pre-3.20 versions of EZClient (as well as a lot of other flashing software for other carts) can not write ROMs bigger than 256mbit.
Problem: Nintendo DS roms can be up to 1 gigabit in size and as time goes on a lot of them are getting to be that big.
A solution was found: chop or replace the useless, unnecessary or unseen parts out. For instance intro movies, hidden characters/levels not unlocked automatically, ending credits, wireless multiboot sections...... or split the ROM into two sections for different characters: this was done with Sonic Rush and Biohazard (resident evil).
A few ways of doing this exist:
This was done in the early days and a method using a hex editor was actually included in the help file for NDSPatcher:
In Castlevania - Dawn of Sorrow (the ROM the patcher was designed for) the last 256 megabit (32 megabytes) of the ROM is junk or the introduction movie and so can be trimmed off. While you can do this you can also use NDSTool (see below) to replace the movie with a empty file with the same name and still have the ROM work.
Hex editors are not used so much anymore as hex editors are on occasion hard to use especially for beginners and also for doing more advanced things than deleting sections, it is still wise to get and be reasonably familiar with a hex editor as some ROMs require it if you have a small cart: EZClient sometimes adds code to the ROM making it too big for a cart e.g. animal crossing.
CUT32
An early tool but unwieldy and primitive, surpassed by NDSTool.
NDStool The file is about halfway down the page.
Source is located here.
NDSTool is a command prompt based program coded by a few people including Darkfader. It became part of the (unofficial) DS dev kit and as well as being an ongoing project it is also open source. As stated it is command line based but is very powerful and able to extract single files or entire ROMs into their separate components amongst other things. A GUI is available here but it requires .NET framework to run, most find NDSTool and windows explorer in conjunction with a few basic batch files a better way to go (you can use NDSTS below to extract individual files).
See the thread basic ripping/enhancement guide and collection of rips/enhancements for a guide and some batch file suggestions to simplify use.
Used by many (most of the rip techniques you will see around the internet will use NDStool at some stage) this is a very useful tool. You can also use NDStool to do things like replace audio files with other region releases: Megaman Battle Network 5 can have the English dub replaced with the audio from the Japanese release (Rockman EXE 5 DS - Twin Leaders) while still keeping the English text.
Coded by CoolHJ of GBATA (GBA tool advance) fame this is a program similar to GBATA but designed for DS ROMs. Is has a graphical user interface built in unlike NDSTool, file extraction/import abilities as well as a header viewer (it can also grab the games DS icons if you want). Currently it is only able to import files of the same size as the one it is replacing so except for getting individual files out for use with NDStool or giving an overall impression of the file system contained it is of little use when ripping, editing a rom is somewhat of a different matter. The program is still in early beta's and shows massive potential, grab it anyway.
You can use this tool on ROMs that your patcher does not like to have been deconstructed and rebuilt with NDSTool such as New Super Mario Brothers and the EZ4. A French translation was made this way
A link to a thread that contains many rips and enhancements is here (if you make any feel free to add your own) Basic ripping guide and collection of rips
