Howto/FAQ

This page contains all the information you may need to get melonDS going. If you still need something, don't hesitate to ask on our forums!

LinkGetting started with melonDS

First of all, melonDS requires BIOS and firmware dumps from a DS or if you want to emulate the DSi, melonDS requires the BIOS, firmware and NAND image. We haven't gotten around to making alternate BIOS/firmware yet. So, you will need to obtain those:

DS Emulation

  • bios9.bin - 4KB - ARM9 BIOS
  • bios7.bin - 16KB - ARM7 BIOS
  • firmware.bin - 128/256/512KB - firmware dump

You can then configure the BIOS and Firmware by going to Emu Settings -> DS-mode and then navigate to the paths of each file.

You can dump these files from a DS/DSi/3DS with this dumper by running it on a flashcart.

The firmware can come in three flavors:

  • DSi/3DS DS-mode firmware: 128KB
  • regular DS firmware: 256KB
  • iQue DS firmware: 512KB

DSi/3DS DS-mode firmwares are not bootable. They only contain configuration data.

DSi Emulation

As of melonDS 0.9, melonDS can also emulate the DSi. To get the DSi BIOS, firmware and NAND image, you need these files:

  • DSi ARM9 BIOS: 64KB
  • DSi ARM7 BIOS: 64KB
  • DSi Firmware: 128KB
  • DSi NAND image: ~240MB

To obtain the DSi required files, you can use this dumper.

Once that is done, you can launch melonDS and set it up.

Emu settings

  • Boot game directly: when loading a ROM, this will run the ROM directly instead of running the 'Nintendo DS' boot screen. Note that if your firmware comes from a DSi or 3DS, you should keep this enabled.

Input config

This is where you map keyboard and joystick input. To map a button, click it, then press the desired key or joystick button. You can press Escape to cancel the mapping process, leaving the previous mapping unchanged. Joystick mappings can also be cleared by pressing Backspace.

As of 0.8.1, it is possible to map keys with modifiers (Ctrl+Z, Shift+Q, Ctrl+Alt+K...). Key mappings can also be cleared by pressing Backspace, just like for joystick mappings. And joystick mappings can have both a button/hat direction and axis assigned; mapping one type will leave the other mapping type intact (for example mapping a button leaves the axis mapping intact). Pressing Backspace clears both mappings.

Hotkey config

This functions the same as input config, but pertains to hotkeys, which are like special buttons controlling the emulator's features (for example, fullscreen, closing the lid, playing a microphone sample, ...).

Video settings

Display settings

  • 3D renderer: chooses which renderer to use to render the DS's 3D graphics. The software renderer is the most accurate, but also the most intensive on your CPU. The OpenGL renderer will use your GPU, making it potentially faster but also less accurate. The OpenGL renderer is also capable of rendering at higher internal resolutions, allowing for better quality of 3D graphics.
  • OpenGL display: uses OpenGL instead of Qt to draw the DS screens to the window. This is forcefully enabled when using the OpenGL renderer as they work faster together.

Software renderer

  • Threaded: runs the rasterizer on a separate thread for better performance on multicore CPUs. (in 0.7.3 and older this setting is found in the emulation settings dialog)

OpenGL renderer

  • Internal resolution: the resolution at which the renderer will render graphics. Higher resolutions yield smoother graphics but may require more GPU power and may cause visual issues in certain games. Note that changing this setting only changes the internal resolution for 3D graphics and does not affect the window size.

Audio settings

Audio output

  • Volume: sets the general volume for the emulated audio output.

Microphone input

  • None: no microphone input.
  • Microphone: uses input from the microphone connected to your PC, if any.
  • White noise: feeds random noise as microphone input, which is enough for a lot of games. Controlled by the microphone hotkey.
  • WAV file: feeds a small WAV file as microphone input. Controlled by the microphone hotkey.

Wifi settings

Local

  • Bind socket to any address: enables local multiplayer over LAN. Toggling this may also help getting local multiplayer to work even on the same machine.

Online

  • Direct mode: directly forwards network traffic to the host network by using libpcap.
  • Network adapter: under direct mode, chooses which adapter to forward to.

Savestate settings

  • Separate savefiles: when enabled, loading/saving states will redirect regular saves to a separate file, as to keep your original save file intact.

Display settings

  • Screen size: sets the window size to an integer size (1x, 2x, 3x, 4x).
  • Screen rotation: rotates the screens, to simulate holding your DS sideways.
  • Mid-screen gap: the space between the screens.
  • Screen layout: how the screens are laid out; Natural keeps them stacked like an actual DS, the other options keep them aligned horizontally or vertically regardless of rotation.
  • Screen sizing: how the window space is distributed; you can choose to keep the screens at the same size or to emphasize one, keeping the other at native resolution. Auto tries to determine the ideal mode based on how the game configures the display.
  • Screen filtering: when enlarging the screens, applies a bilinear filter.
  • Limit framerate: limits the emulator's framerate, typically at 60FPS.

Once melonDS is set up to your liking, well, load a game and enjoy!

LinkHow to?

Running the system menu/Pictochat/download play

Use System -> Run with no ROM loaded. If you already had a ROM loaded, you can use System -> Stop to unload it.

Importing a savefile from another emulator

melonDS uses raw save files, which should be compatible with most other emulators. Note that melonDS determines the save memory type (and thus protocol) from the size of the save file, so it is important that the file be exactly the correct size.

Since version 0.9.1 the easiest way to use a savefile from DeSmuME, DraStic or a flashcard is by using the Import savefile function found in melonDS. Otherwise you can either use the Export backup memory feature (for DeSmuME), or open the .dsv save file in a hex editor, remove excess bytes at the end until the size is a power of two, and save with a .sav extension.

To use a savefile from NO$GBA you need go into it's settings and change the SAV/SNA File Format to Raw.

The following games may be problematic:

  • WarioWare DIY, Jam with the Band: special save memory type, not yet supported in melonDS
  • Pokémon Mystery Dungeon - Explorers of Sky: the correct save file size is 128KB. DeSmuME creates a 256KB file; you will need to open it in a hex editor and delete the upper half. This is unnecessary if you're using the Import savefile feature of melonDS.

Savestates

You can save a state at any time by using the keyboard shortcuts: Shift+F1..F8 for slots 1..8, or Shift+F9 to specify your own filename.

Similarly, you can load a saved state with F1..F8 for slots 1..8, or F9 to load any savestate file.

You can use F12 to undo a spurious state load.

Savestates for slots 1..8 are placed alongside the ROM file.

Local multiplayer/download play

You can open two melonDS instances on your computer and have them connect together. Or atleast try, wifi support is still WIP and not guaranteed to work. Local multiplayer is currently unstable due to the timing requirements. Disabling the framerate limiter has been found to help getting a stable connection.

By enabling the Bind socket to any address setting, you can try playing over LAN, but don't hold your breath. Nintendo's local multiplayer protocol requires tight timing for a good connection.

You can try connecting more than two melonDS instances together, but it will likely not function correctly.

Online connectivity

Online connectivity is achieved by emulating an access point (melonAP) the game can connect to. Past this, there are two methods for forwarding network traffic to the outer world:

  • Direct mode: This is the best mode, it is straightforward and less likely to break. However, it requires libpcap/winpcap, that your computer be connected to the network via an ethernet connection, and that you run melonDS with administrator/superuser privileges. But if you satisfy all the requirements, you can throw anything at it and it'll work.

  • Indirect mode: This is the easiest to get running as it does not require Ethernet and runs without administrator permissions.

LinkI am running into an issue / have a feature to suggest

melonDS is a work in progress, so we are open to requests for new features or bug fixes.

You can post those:

LinkLatest Development Builds

The latest development builds are the latest changes made to melonDS. This may fix bugs, but it also might be unstable. Only use these if you are recommended to. To try these out, click the build badge corresponding to your operating system.

GitHub (GitHub account needed)

Click the topmost result in the list, then click the download under 'Artifacts'. To download you need a GitHub account.

Azure (no account needed)

Click the topmost result in the list, then click '1 published'. From there you can download melonDS.dmg.

LinkUnofficial ports

We do not develop or support unofficial melonDS ports such as Android. Contact the developers of those ports for help.

LinkFAQ

Where do I get ROMs?

You can dump your carts using a DSi/3DS system and copy these over to a computer.

I can't get multiplayer to work

Keep in mind that wifi support is still WIP. Not all games work with it.

Why name it melonDS?

Why not? :D

LinkMinimum system requirements
  • CPU: Intel Pentium II / AMD Athlon X2, 12GHz
  • GPU: nVidia GeForce 2 / AMD Radeon HD3500 / ZARG X152 / Voodoo 2
  • RAM: 12.6TB
  • HDD: 6KB
  • 5"5 floppy drive
  • OS: Windows 3.1 or XP / Linux / haiku / 9os / AcmlmOS
  • PCI-Express or USB 4.1 bus
  • Network: SSLv3
  • Keyboard, mouse, cat
  • Sacrifice goat to Thargos while Jupiter and Pluto are aligned with the Earth

(more seriously, though, just try it out and see how well it runs; if it's too slow, remember there are other emulators you can try)