Nintendo DS emulators
|Name||Operating System(s)||Latest Version||GBA||NDS||DSi||Libretro Core||Active||Recommended|
|MelonDS||Windows, Linux||0.6b||✗||✓||✗||✓||✗||✗ (WIP)|
|Medusa||Windows, Linux||alpha 2||✓||✓||✗||✗||✗||✗ (WIP)|
|GBE+||Windows, Linux||1.2||✓||✓||✗||✗||✓||✗ (WIP)|
- One of the most developed emulators for regular DS games, but works best with higher end computers. This emulator aims for accuracy over speed but you can tinker with the vast amount of setting to get some extra FPS (see Common Problems and Solutions for tips). If you're still having a hard time running anything without the output playing like syrup try No$GBA, or DraStic emulated through BlueStacks. DeSmuME is generally recommended regardless of your PC power. However, it's not perfect and is still very unoptimized. The official developers have taken major disdain for Wi-Fi features (outside of an online play fork) and DSi features. Because of this unique development philosophy, you'll have to look for alternatives in those cases.
- A closed-source payware emulator for Android devices that can run games at decent speed even on potato phones. Some unsubstantiated rumors have spread around that the developers deliberately put in issues to mess with pirated copies though. It's on par or better than DeSmuMe, and emulating it through BlueStacks on PC may actually be a viable and fast alternative aside from a slight input delay.
- Focuses on speed, and has major compatibility issues and glitches as a result. But because it was originally a GBA emulator, the DS's 3D features are still very poorly handled. However, it might be an option for a very low end machine but don't expect a lot of games to run perfectly, or at all. A fan program, No$Zoomer, was released for version 2.6 which increases compatibility and options, as well as the titular zooming abilities. The biggest addition is noise cancellation which clears up static that No$GBA makes with its 3D rendering. No$Zoomer hasn't rebased yet but does add options for window resizing. There hasn't been any noticeable changes with regards to accuracy however. As of v2.8, No$GBA supports DSi games, and is currently the only emulator that does. Only use No$GBA in the cases of DSi games, debugging (if you've taken up romhacking for DS games), if you value speed above everything, or just as a last resort.
- Probably the only emulator that's provided any signs of hope for competition in the PC space. StapleButter's goal is to make an emulator that's better optimized and includes features that others lack, either intentionally or not. While the developers of No$GBA had documented the Wi-Fi capabilities first, melonDS is the only emulator that's gotten as far as it has and it has been found to work reasonably well with a handful of games. It could surpass DeSmuME when it covers more features and supports more games, but it's unclear whether DSi games will be supported or not.
- mGBA developer endrift is also creating a DS emulator, but it's very much a work-in-progress and isn't nearly as far as melonDS in terms of the capabilities its covered. As of March 2018, Medusa's development is "suspended until further notice".
- An abandoned and experimental DS emulator that uses a plug-in system, it's very slow and buggy but has partially gotten some features working like the camera and slide accessories.
- Nintendo's official DS emulator that was leaked to the public. It's not very usable or compatible but it can run a few games.
- DeSmuME X432R
- A fork of DeSmuME, that has many more graphical enhancement such as an option to increase internal resolution and use MSAA, See the DeSmuME page for more details. Check out this site to see what you're missing out on.
- DeSmuME (libretro)
- Also has an option to increase internal resolution since August 8, 2015 git commit. It requires a very high-end CPU to run at reasonable framerate.
- Has released a beta version supporting double the original resolution.
- Virtual Console (Wii U)
- Has a configuration file with support for x2 internal resolution without any significant performance hit (as well as a brightness setting). However, there's no legit way to enable it without a homebrew-enabled console.
Local Multiplayer, Wi-Fi Connection, and Wii/DS Connection
- Local Multiplayer is not supported by any emulator. No$GBA can emulate it but the connection fails somewhere during establishing the actual connection (despite the names from the other DS showing just fine).
- Download Play isn't supported by any emulator so far, though NDS-bootstrap homebrew on the Nintendo 3DS can boot some of them.
- Nintendo WFC (Online Multiplayer) was successfully emulated with third-party DeSmuME forks, but has quite a bit of requirements (Ethernet cable, though this can be circumvented with external software). After service shutdown, there was a version compatible with the fan servers (restoring all DLC data but sadly most multiplayer games had their content lost forever).
- DS/Wii connection isn't emulated in any capacity. Pokémon Battle Revolution playability is very limited this way.
These features are not supported by the mainline DeSmuME project in particular due to timing inaccuracies and creative differences, and it's highly unlikely they will ever be included in the future. If you're interested in these features, follow other projects and refrain from contacting the developers about them as per their wishes in their "official stance" on Wi-Fi features in general.
Inserting GBA cartridges in Slot-2 of the Nintendo DS while a game is running can unlock various gameplay features in some DS games. It's unknown if NO$GBA supports this, but it can be done in DeSmuME by going to Config > Slot 2 (GBA Slot) and selecting GBA Cartridge. Select the GBA ROM file, and make sure its sav file is in the same folder. You may need to reset the game for it to take effect. However, DeSmuME does not support features like the solar sensor from GBA Boktai cartridges used in Boktai DS (Lunar Knight).
Nintendo released the DSi in 2009, doing away with Slot-2 (used by GBA cartridges and Guitar Hero games) but also adding new lighting effects, a camera, more RAM, and downloadable titles called DSiWare though those were capped to 16MB because they were installed to the very small internal NAND memory. DSiWare releases were also region locked, and the system language couldn't be changed. The Nintendo 3DS is also compatible with those games and offers a way to back them up to an SD card.
There's three types of games using DSi hardware enhancements:
- DSi-enhanced retail cartridges
- Regular DS retail cartridges compatible with the older DS models, but unlocking more RAM and features when used on the DSi, similar to some late GBC games on the GBA. A couple of dozen games from Japan and US/EUR relied on this method. Those games will still boot on DS emulators but without the DSi enhancements.
- DSi-exclusive retail cartridges
- Retail cartridges relying heavily on the DSi hardware features. A boot-up error screen will show when attempting to load those on regular DS models (and by extension, emulators for those). Only five games were released this way, either launch games or because they were too big to fit in 16MB.
- Downloadable titles downloaded only through the DSi eShop (discontinued), or the Nintendo 3DS eShop (though it uses a different file packaging format). They have a 16MB size limitation and there's lots of interesting exclusives for the system released that way.
All three formats can be converted to *.nds format. Compared to regular DS games, DSi games had some additional header information that wasn't even correctly dumped in the earlier broken dumps. The 2017 set has updated many of those, though it's still severely lacking in DSiWare exclusives. DSiWare dumps exist in both NDS format, or CIA format (for the ones who want to boot it on their 3DS).
On the old DS or DS Lite models, as well as most Nintendo DS emulators, the first type will load in regular DS mode without any DSi enhancements, the second will show an error message, and the third will crash on boot-up due to missing encryption abilities and DSi hardware support.
On the DSi/3DS family of handhelds, the first two formats can be played on some select DSi-compatible flashcarts like the (discontinued and now expensive) CycloDS iEvolution flashcard (which won't work on a stock 3DS not with custom firmware to whitelist it). As for the third type, it's available for digital purchase at their respective stores (DSi Shop for DSi, eShop for the 3DS) and installed as apps to the limited TWL NAND. In the 3DS' case, they can also be installed as custom titles in .cia format (like all 3DS applications, but here it's also a container for an .nds rom in this case, and converting back and forth is possible).
|Name||Operating System(s)||Latest Version||DSi (enhanced)||DSi (exclusive)||DSi (digital)||Recommended|
No$GBA added support for DSi games of all three formats starting with version 2.8, although some games wont boot and others have graphical glitches. You'll need to enable "16MB DSi/retail" under the settings. Emulation is very iffy due to a so-so DS emulation foundation in NO$GBA, and the camera is just spoofed as a static image but just causes an emulator crash whenever used, meaning games that use it may boot but it won't be very playable.
DSi used an encryption system for the game dumps that went on to be enhanced and used for the 3DS. This encryption is checked at start-up, hence why DS emulators don't even manage to boot DSiWare dumps. It's very unlikely DSi-mode emulation is ever going to be implemented in Desmume in particular due to various creative differences unique to that project.
DSi emulation requires a copy of the lower 32K-halves of the ARM7/ARM9 BIOSes (BIOSDSI7.ROM and BIOSDSI9.ROM), which are different from the regular DS BIOS files and needed for the decryption. All the needed files are bios7i.bin, bios9i.bin, BIOSDSI7.ROM, BIOSDSI9.ROM, BIOSNDS7.ROM, and BIOSNDS9.ROM. These unicorns can be found here.
It's also advised (but still completely optional) to use a NAND dump as well to increase compatibility (though adding games is more complex, and a soft-modding solution to dump it is still being worked on). Rename it to "DSi-1.mmc" (should be about 250MB). Change "Reset/Startup Entrypoint to "GBA/NDS BIOS" to now boot the emulator and games in DSi mode. Hex editing required to "install" new DSiWare titles, though loading retail games in DSi mode from the menu is still possible easily. This fixes lots of glitches and crashes related to languages and use of the internal DSi font.
- Guitar Hero Pad
- Used in the "Guitar Hero: On Tour" series (required) and Band Hero DS. Supported by DeSmuME (Slot 2).
- Piano for Easy Piano
- Supported by DeSmuME (Slot 2).
- Taito Paddle Controller
- Compatible with Arkanoid, Space Invaders Extreme, Space Invaders Extreme 2 and Space Bust-a-Move. Supported by DeSmuME (Slot 2).
- Tilt Sensor
- Used in "Tony Hawk's Motion/Hue's Pixel Painter." No emulators support this add-on yet.
- Rumble Pack
- Supported by DeSmuME (Slot 2). Requires compatible Joystick.
- Slide Controller
- Required by "Slide Adventure Mag Kid". Yasu made a shoddy plug-in for iDeaS (recommended version was 22.214.171.124.) to try to emulate it. No emulators support this add-on at the moment.
- Pokémon Keyboard
- Bundled with the Pokémon Typing game (JP/UK/FR). The game refuses to boot without a keyboard, but it can be run on emulators with an anti-piracy fix and another DeSmuME-specific save bug fix. There is also a pre-patched ROM. While it's playable using the on-screen keyboard on the lower screen, the keyboard isn't actually emulated. There is a Lua script that permits using the actual keyboard by mapping presses of the actual keyboard to taps of the virtual Touch Screen. However, you are going to need to blank out all the control/hotkey bindings of DeSMuMe if you are going to play this game because some of the keyboard keys also activate some controls; otherwise, pressing the Q key would also pause the game, given one example. A recomendation would be to have a separate copy of 32-bit DeSMuMe which purpose is playing *only* the Pokémon typing games. In that copy, place the patched ROM, the Lua script, and a 32-bit version of lua51.dll. (The platform used in building the dll should not matter.) Even then, not only is the emulated workaround a little slow, but saving is still broken. Use savestates, instead.
- DS Camera
- Accessory bundled with the Japan-only Face Training (an European localization for Christmas 2007 was cancelled, and it was released as a retail DSi game in 2010 using the internal camera rather than the original accessory). Not to be confused with the built-in DSi camera. No emulators exist for it at all.
iQue DS Region Lock
iQue is Nintendo's Chinese subsidiary (previously a partnership between them and Wei Yen until 2013), so when they released the DS with a few localized games, their ROMs had special flags set in them to check if the hardware that ran the cartridge was iQue's or Nintendo's as a sort of region lock. Nintendo's own hardware would fail this check, throwing an "Only for iQue DS" error in white text on a black background. No other DS games have this mechanism; not even for Korean releases. This region lock is bypassed by the 3DS for these DS games, even though 3DS games have their own region lock. It's weird.
Emulators differ in their behavior to this region lock. No$GBA crashes. DeSmuME is accurate to non-iQue hardware, and will replicate the failure.
The only way the ROM will accept other hardware (and thus emulators) is with a hack, involving a simple byte change. Use a hex editor to change the byte located at
0x1D from value
Certain games, such as American Girl titles (e.g. Julie Finds a Way and Kit Mystery Challenge) suffer from severe flickering issues which keep those games from being playable on most emulators; so far DraStic is the only emulator able to run the two games properly, and while Desmume r5043 had an initial fix that worked around the flickering issues, it was removed in later revisions as it broke compatibility with Pokemon SoulSilver among others; this has since been patched on r5531 once the true nature of the bug was better understood.