View Page Source

Revision (current)
Last Updated by CasualPokePlayer on 1/17/2024 3:02 AM
Back to Page

%%TOC%%

The NDS core in BizHawk uses [https://github.com/Arisotura/melonDS|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 [https://github.com/Arisotura/melonDS/tree/master/freebios|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 [https://en.wikipedia.org/wiki/Flash_memory#NAND_flash|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 [https://melonds.kuribo64.net/downloads.php|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.