DSi cartridge header
Jump to navigation
Jump to search
The following tries to document the structure of the NDS ROM format and its DSi extended version. Nintendo calls this the SRL format.
OFFSET | SIZE | DESCRIPTION |
---|---|---|
0x000 | 12 | Game Title |
0x00C | 4 | Gamecode |
0x010 | 2 | Makercode |
0x012 | 1 | Unitcode |
0x013 | 1 | Encryption seed select |
0x014 | 1 | Devicecapacity |
0x015 | 9 | Reserved |
0x01E | 1 | ROM Version |
0x01F | 1 | Internal flags, (Bit2: Autostart) |
0x020 | 4 | ARM9 rom offset |
0x024 | 4 | ARM9 entry address |
0x028 | 4 | ARM9 load address |
0x02C | 4 | ARM9 size |
0x030 | 4 | ARM7 rom offset |
0x034 | 4 | ARM7 entry address |
0x038 | 4 | ARM7 load address |
0x03C | 4 | ARM7 size |
0x040 | 4 | File Name Table (FNT) offset |
0x044 | 4 | File Name Table (FNT) length |
0x048 | 4 | File Allocation Table (FAT) offset |
0x04C | 4 | File Allocation Table (FAT) length |
0x050 | 4 | ARM9 overlay offset |
0x054 | 4 | ARM9 overlay length |
0x058 | 4 | ARM9 overlay offset |
0x05C | 4 | ARM9 overlay length |
0x060 | 4 | Normal card control register settings |
0x064 | 4 | Secure card control register settings |
0x068 | 4 | Icon Banner offset |
0x06C | 2 | Secure area (2K) CRC |
0x06E | 2 | Secure transfer timeout |
0x070 | 4 | ARM9 autoload |
0x074 | 4 | ARM7 autoload |
0x078 | 8 | Secure disable |
0x080 | 4 | NTR region ROM size |
0x084 | 4 | Header size |
0x088 | 56 | Reserved |
0x0C0 | 156 | Nintendo Logo |
0x15C | 2 | Nintendo Logo CRC |
0x15E | 2 | Header CRC |
0x160 | 32 | Debugger reserved |
0x180 | 52 | Config settings |
0x1B4 | 4 | Access control |
0x1B8 | 4 | ARM7 SCFG EXT mask (controls which devices to enable) |
0x1BC | 4 | Reserved |
0x1C0 | 4 | ARM9i rom offset |
0x1C4 | 4 | Reserved |
0x1C8 | 4 | ARM9i load address |
0x1CC | 4 | ARM9i size |
0x1D0 | 4 | ARM7i rom offset |
0x1D4 | 4 | Reserved |
0x1D8 | 4 | ARM7i load address |
0x1DC | 4 | ARM7i size |
0x1E0 | 4 | Digest NTR region offset |
0x1E4 | 4 | Digest NTR region length |
0x1E8 | 4 | Digest TWL region offset |
0x1EC | 4 | Digest TWL region length |
0x1F0 | 4 | Digest Sector Hashtable offset |
0x1F4 | 4 | Digest Sector Hashtable length |
0x1F8 | 4 | Digest Block Hashtable offset |
0x1FC | 4 | Digest Block Hashtable length |
0x200 | 4 | Digest Sector size |
0x204 | 4 | Digest Block sectorcount |
0x208 | 40 | Reserved |
0x230 | 8 | Title ID |
0x238 | 200 | Reserved |
0x300 | 20 | ARM9 (with encrypted secure area) SHA1 HMAC hash |
0x314 | 20 | ARM7 SHA1 HMAC hash |
0x328 | 20 | Digest Block Hashtable SHA1 HMAC hash |
0x33C | 20 | Banner SHA1 HMAC hash |
0x350 | 20 | ARM9i (decrypted) SHA1 HMAC hash |
0x364 | 20 | ARM7i (decrypted) SHA1 HMAC hash |
0x378 | 40 | Reserved |
0x3A0 | 20 | Unknown hash |
0x3B4 | 2636 | Reserved |
0xE00 | 0x180 | Reserved and unchecked region, always zero. Used for passing arguments in debug environment. |
0xF80 | 0x80 | RSA signature |
The first 0xE00 bytes of the SRL header is signed with an 1024-bit RSA signature.