DSperate¶
Technical notes
Nintendo DS emulator for ARM handhelds with a DSi mode. ROCKNIX installs the release tarball for its architecture and runs it with --config pointing at /storage/.config/dsperate/dsperate.ini.
No file name is built in: every system file is a [paths] key of the ini (or the matching command-line flag), and a key that is unset or names no file counts as absent. The names below are the ones ROCKNIX's dsperate.ini gives, all in /storage/roms/bios/. ref: src/frontend/sdl/config.cpp:184-205, src/frontend/sdl/main.cpp:1289-1303
DS BIOS: both halves or neither, the ARM9 image 4 KB and the ARM7 image 16 KB exactly. Without them the built-in FreeBIOS runs games by direct boot. The firmware may be any non-empty file. Without one a firmware is generated from the [user] settings. Booting the DS menu needs both BIOS dumps and a real firmware. No hash is checked: an FNV-1a of the loaded regions only tags save states. ref: src/core/nds.cpp:101-133, src/core/mem/bus.h:121-131, src/frontend/sdl/main.cpp:1410, src/frontend/sdl/main.cpp:1440-1447
DSi: DSiWare and --dsi-mode need the DSi BIOS pair, 64 KB each, and the DS BIOS dumps as well. FreeBIOS cannot run a DSi session. dsi_firmware replaces firmware for a DSi session when no --firmware is given. The NAND is needed by --dsi-mode and by NAND title shortcuts only, and it must carry the nocash footer (at the end, or at 0x000FF800). DSiWare without a NAND runs on a generated console whose system font is DSperate's own unless dsi_font names a TWLFontTable.dat. ref: src/frontend/sdl/main.cpp:1294-1308, src/frontend/sdl/main.cpp:1452-1460, src/core/nds_dsi.cpp:95-112, src/core/nds_dsi.cpp:121-127, src/core/io/dsi_sd.cpp:111-140, src/core/nds_dsi.cpp:356-373, src/frontend/sdl/main.cpp:1915-1919
Cheats come from usrcheat.dat: the [paths] cheats entry, else beside the ROM, else the config directory. ref: src/frontend/sdl/main.cpp:709-735
9 files (11 accepted versions) | 0 required, 9 optional | 9 in repo, 0 missing | 4 with HLE fallback Categories: 10 BIOS, 1 game data
bios9.bin optional in repo HLE fallback #
DS ARM9 BIOS
- System: nintendo-ds
- Size: 4.0 KB
- Validation: size
- Source:
src/core/nds.cpp:105-108,src/core/mem/bus.h:130,src/frontend/sdl/main.cpp:1440-1460 - Collection copy:
bios/Nintendo/DS/NDS_Bios9.bin - Platforms: batocera
bios9.bin, bizhawkNDS_Bios9.bin, emudeckbios9.bin, lakkabios9.bin,nds9.bin, recalboxnds/bios9.bin, retroarchbios9.bin,nds9.bin, retrobatbios9.bin, retrodeckbios/bios9.bin, retropiebios9.bin,nds9.bin, rocknixbios9.bin, rommnds/bios9.bin - Config key:
paths.bios9 - Loaded only together with bios7.bin. Absent, FreeBIOS runs games by direct boot. Needed to boot the DS menu and for any DSi session.
bios7.bin optional in repo HLE fallback #
DS ARM7 BIOS
- System: nintendo-ds
- Size: 16.0 KB
- Validation: size
- Source:
src/core/nds.cpp:105-109,src/core/mem/bus.h:131,src/frontend/sdl/main.cpp:1440-1460 - Collection copy:
bios/Nintendo/DS/NDS_Bios7.bin - Platforms: batocera
bios7.bin, bizhawkNDS_Bios7.bin, emudeckbios7.bin, lakkabios7.bin,nds7.bin, recalboxnds/bios7.bin, retroarchbios7.bin,nds7.bin, retrobatbios7.bin, retrodeckbios/bios7.bin, retropiebios7.bin,nds7.bin, rocknixbios7.bin, rommnds/bios7.bin - Config key:
paths.bios7 - Loaded only together with bios9.bin. Absent, FreeBIOS runs games by direct boot. Needed to boot the DS menu and for any DSi session.
firmware.bin optional in repo HLE fallback #
DS firmware
- System: nintendo-ds
- Source:
src/core/nds.cpp:110,src/core/nds.cpp:124-125,src/frontend/sdl/main.cpp:1441-1447 - Collection copy:
bios/Nintendo/Nintendo DS/firmware.bin - Platforms: batocera
firmware.bin, emudeckfirmware.bin, lakkafirmware.bin, retroarchfirmware.bin, retrobatfirmware.bin, retrodeckbios/firmware.bin, retropiefirmware.bin, rommnds/firmware.bin - Config key:
paths.firmware - Any non-empty file is accepted. Absent, a firmware is generated from [user]. Needed to boot the DS menu.
dsi_bios9.bin optional in repo #
DSi ARM9 BIOS
- System: nintendo-dsi
- Size: 64.0 KB
- Validation: size
- Source:
src/core/nds_dsi.cpp:95-106,src/core/mem/bus.h:121,src/frontend/sdl/main.cpp:1301-1308 - Collection copy:
bios/Nintendo/DS/dsi_bios9.bin - Platforms: lakka
dsi_bios9.bin, retroarchdsi_bios9.bin, retrobatdsi_bios9.bin, retropiedsi_bios9.bin - Config key:
paths.bios9i - Loaded only together with dsi_bios7.bin. Without the pair DSiWare and --dsi-mode are refused, while DS games do not use it.
dsi_bios7.bin optional in repo #
DSi ARM7 BIOS
- System: nintendo-dsi
- Size: 64.0 KB
- Validation: size
- Source:
src/core/nds_dsi.cpp:95-106,src/core/mem/bus.h:122,src/frontend/sdl/main.cpp:1301-1308 - Collection copy:
bios/Nintendo/DS/dsi_bios7.bin - Platforms: lakka
dsi_bios7.bin, retroarchdsi_bios7.bin, retrobatdsi_bios7.bin, retropiedsi_bios7.bin - Config key:
paths.bios7i - Loaded only together with dsi_bios9.bin. Without the pair DSiWare and --dsi-mode are refused, while DS games do not use it.
dsi_firmware.bin optional in repo #
DSi firmware
- System: nintendo-dsi
- Source:
src/frontend/sdl/main.cpp:1294-1298 - Collection copy:
bios/Nintendo/Nintendo DS/dsi_firmware.bin - Platforms: batocera
dsi_firmware.bin, lakkadsi_firmware.bin, retroarchdsi_firmware.bin, retrobatdsi_firmware.bin, retropiedsi_firmware.bin - Config key:
paths.dsi_firmware - Used instead of firmware.bin for a DSi session when no --firmware is given.
dsi_nand.bin optional in repo #
DSi NAND image with nocash footer
- System: nintendo-dsi
- Source:
src/frontend/sdl/main.cpp:1263-1272,src/core/nds_dsi.cpp:121-127,src/core/io/dsi_sd.cpp:111-140 - Collection copy:
bios/Nintendo/DS/dsi_nand.bin - Platforms: batocera
dsi_nand.bin, lakkadsi_nand.bin, retroarchdsi_nand.bin, retropiedsi_nand.bin - Config key:
paths.dsi_nand - Read only by --dsi-mode and NAND title shortcuts. DSiWare run from the game list does without it. Opened read-only, rejected without the "DSi eMMC CID/CPU" footer.
TWLFontTable.dat optional in repo HLE fallback #
DSi system font (Japan, Americas, Europe, Australia)
- System: nintendo-dsi
- Size: 843.1 KB
- SHA1:
c1101d7c9224acfa0350b5fc62da97d4c6d36141 - Source:
src/core/nds_dsi.cpp:356-373,src/core/io/dsi_font.cpp:38-43,src/core/io/dsi_nand_fs.cpp:794-809,src/core/io/dsi_aes.cpp:39-47,src/frontend/sdl/main.cpp:1915-1919 - Collection copy:
bios/Nintendo/DS/TWLFontTable.dat - Config key:
paths.dsi_font - Used for DSiWare run without a NAND. Absent, DSperate's own font table is generated. ROCKNIX's ini leaves the key unset. A file under 256 bytes is refused. No hash is checked, only the layout bytes 0x84 and 0x86, and a table whose layout differs from the title's region draws a warning. This is the normal layout (0x84 = 3, 0x86 = 0), read from nand:/sys/TWLFontTable.dat of a retail DSi NAND dump. The FAT16 partition is AES-CTR encrypted with the normal key ROL128((KeyX XOR KeyY) + 0xFFFEFB4E295902582A680F5F1A4F3E79, 42), where KeyX is built from the console ID in the nocash footer and KeyY is 0x0AB9DC76 0xBD4DC4D3 0x202DDD1D 0xE1A00005. The counter is the first 16 bytes of SHA-1 of the footer's eMMC CID, and each 16-byte block is byte-reversed before and after AES. The USA, Europe, Japan and Australia consoles, four different console IDs, give the same bytes.
TWLFontTable.dat optional in repo HLE fallback #
DSi system font (China)
- System: nintendo-dsi
- Size: 568.0 KB
- SHA1:
5170aff7e9766baadbbf2943c41f5634e82aaf2d - Source:
src/core/nds_dsi.cpp:360-367,src/core/io/dsi_font.cpp:38-43,src/core/io/dsi_nand_fs.cpp:794-809,src/core/io/dsi_aes.cpp:39-47 - Collection copy:
bios/Nintendo/DS/.variants/TWLFontTable.dat.5170aff7 - Config key:
paths.dsi_font - The Chinese layout (0x84 = 9, 0x86 = 4), which Chinese DSiWare needs to find its fonts. Read from nand:/sys/TWLFontTable.dat of a retail Chinese DSi NAND dump, decrypted as for the normal table.
TWLFontTable.dat optional in repo HLE fallback #
DSi system font (Korea)
- System: nintendo-dsi
- Size: 158.9 KB
- SHA1:
f0a37b073eb0208d3a54c9a6bb94292dbec1192a - Source:
src/core/nds_dsi.cpp:360-367,src/core/io/dsi_font.cpp:38-43,src/core/io/dsi_nand_fs.cpp:794-809,src/core/io/dsi_aes.cpp:39-47 - Collection copy:
bios/Nintendo/DS/.variants/TWLFontTable.dat.f0a37b07 - Config key:
paths.dsi_font - The Korean layout (0x84 = 9, 0x86 = 5), which Korean DSiWare needs to find its fonts. Read from nand:/sys/TWLFontTable.dat of a retail Korean DSi NAND dump, decrypted as for the normal table.
usrcheat.dat optional in repo game_data #
Action Replay cheat database
- System: nintendo-ds
- Source:
src/frontend/sdl/main.cpp:709-735 - Collection copy:
bios/Other/drastic/usrcheat.dat - Config key:
paths.cheats - Looked up by game code and header checksum. Nothing is enabled by its presence.
Generated on 2026-10-20T03:49:41Z