The Nintendo DS (Codename NITRO) utilises a number of different file formats either created by Nintendo or a third party developer. If you are interested in reverse engineering a DS game then you will most likely come across these formats, so it is a good idea to have at least some knowledge of how they work.
The main file formats used in Nintendo DS games are outlined in the table below, with further detail in the sections of this post.
|.tad||Installable application for Nintendo Dsi (similar to the WAD format on Wii)|
|.nds||Dump of a Nintendo DS Game Card (unofficial)|
|.srl||Official Dump of a Nintendo DS Game Card|
TAD files are installable applications for the Nintendo DSi, similar in function to the WAD file for the Wii console.
Developers would create these files by converting an SRL ROM to TAD format with a tool called maketad.
It is not common to see TAD files out in the wild as they tend to be used by developers. However in the Platinum leak there was a huge archive of DSi applications in TAD format. Some of these are even debug versions so may contain full debug symbols useful for reverse engineering.
Developers would use an application called TwlNmenu to install TAD files on their DSi hardware.
However there doesn’t seem to be a tool capable of installing TAD files on a modified DSi as of September 2020. However you can use the details in the next section to extract a DS ROM file (SRL) from the TAD file.
Using the split_tad_console script (from twToolsRed) one can extract the Nintendo DSi ROM (SRL) file from a TAD file 1. This has been tested with The Legend of Zelda 4 Swords Tad file available in the Platinum Leak.
There is also an alternative python script from a user on 4chan: #This is for Python 2from Crypto.Cipher import AES #pycrypto. If on windows, h - Pastebin.com
One can then use the steps in the SRL section below to mount the SRL to a directory and view its contents.
From the sounds of it on a 3DS you can use GodMode9 to convert the SRL to a CIA, or on preview, install the SRL directly. NO$GBA should be able to launch it too once it’s in SRL format 1.
Interestingly it is possible to resign a TAD file using the Wii resigning tools, but it won’t be able to be installed on a modified DSi due to anti-tampering methods 2.
Do not run TwlNmenu on 3DS unless you have backed up your TWLN partition and you find a way to get valid certificates. In theory if you got valid certificates you would be able to install the TAD files but noone has yet managed to do it.
You can see a video of running TwlNmenu on a 3DS below:
SRL is the extension Nintendo uses for Nintendo DS ROMS and is the same as the NDS format. You can rename .srl files to .nds and they should play in an emulator 3.
Also it seems that on the Wii U Nintendo used the .srl file extension for their Nintendo DS emulated ROMs.
To extract the content of a SRL ROM file you can use the ninfs tool to mount the SRL to a directory and then view its contents, like so 1:
mount_srl swords.srl ~/mnt_srl
A TMD file is simply just a meta data file that stores information about an App such as the contents and SHA1 hashes for verification. The format is also used for 3DS and Wii titles.
For more information check out the DSiBrew page: Title metadata - DSiBrew
The .NLF file is interesting as it is a NitroROM List File as it seems to list the contents of the DS SRL file. It is believed these are generated by a tool in the SDK and are used by developers to make it easier to see the contents of what is in the ROM.