The NDS core in BizHawk uses MelonDS, which is written primarily by Arisotura along with various contributors.
BIOS, Firmware, and You
The NDS uses 2 BIOS files and 1 firmware file. The 2 BIOS files contain various functions games may call, and the firmware file stores the code for the boot screen you would typically have when booting a real DS, along with various user settings.
MelonDS uses freebios from DraStic when BIOS files are not provided. However, these are not perfect, and may result in graphical/audio bugs in a few games that the real BIOS does not have. It is recommended to use real BIOS files whenever possible.
MelonDS will generate a firmware file with only user settings present. This is not bootable, but it is sufficient for most games. However, some games may not play nice with this fake firmware, and if you wish to change user settings midway through a movie, you would need to use a real firmware file (as that contains actual boot code). For such cases, you will need to use a real firmware file.
However, using a real firmware file has potential issues. Often firmware gets hacked, and is thus unusable for TASing. Along with that, firmware has user settings which change, and the boot code is encrypted, so it's rather difficult to verify firmware is correct. BizHawk has special handling to check the integrity of firmware files using various internal firmware checksums, checks against hacked firmware files, and decrypting the firmware code and checking its hash against known good dumps, which should cover 99% of cases. Still, this is not perfect, so if you don't need to use real firmware, it's recommended to not use it.
On a minor note, you must use real BIOS files when using real firmware, as freebios lacks the code to boot to firmware.
Format the DSi NAND
TODO: This section is probably not that needed once BizHawk 2.9.2/2.10 is out, as latest BizHawk dev builds can directly boot DSi (including DSiWare) titles.
Every DSi has unique NAND and there's no definitive version that many authentic devices share, so there can't be a strict rule on which exact NAND you end up using.
But since the NAND is a complex thing with many unknowns attached to it, the best way to create a semi-consistent environment is to wipe it with its Format option.
BizHawk is unable to write to NAND, so you have to format the NAND using melonDS GUI.
- Run melonDS
- Go to Config -> Emu settings
- General tab -> Console type -> select DSi
- DSi-mode tab -> Specify paths to the 4 required files (in some unclear cases, melonDS may need file paths to not contain spaces)
- DSi ARM9 BIOS
- DSi ARM7 BIOS
- DSi firmware
- DSi NAND
- Hit OK
- File -> Boot firmware
- If the NAND has been set up before, just navigate to System Settings -> Format System Memory and proceed to Format in all the menus. After melonDS has formatted your NAND, it will shut down the system, and your NAND will be ready for use.
Keep in mind that DSi NANDs are region locked between the US, European, Australian, Japanese, Korean, and Chinese regions. So make sure to match the region between your game and NAND. Note that some games might allow multiple regions to be used (commonly Europe and Australia get the exact same release), and a few games are region free.