Getting started with melonDS
First of all, melonDS requires BIOS and firmware dumps from a DS. We haven't gotten around to making alternate BIOS/firmware yet. So, you will need to obtain those:

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

The files should be placed in the same directory as melonDS, under these exact names (watch out for the extensions, and case if you're running Linux).

You can dump these files from a DS with this dumper.

The firmware can come in three flavors:
• DSi/3DS DS-mode firmware: 128KB
• regular DS firmware: 256KB
• iQue DS firmware: 512KB

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

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, 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 libui 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

• 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.

• 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!
How 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.

To use a savefile from DeSmuME or DraStic, 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 will need to feed it to a converter.

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.


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. 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 tries to use BSD sockets to forward network traffic. It doesn't require anything fancy, but it is more likely to break and is still in alpha stages.
I 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:
• on the issue tracker on Github
• on the forums
Where do I get ROMs?

We can't help you with this, sorry.

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
Minimum system requirements
CPU: Intel Pentium II / AMD Athlon X2, 12GHz
GPU: nVidia GeForce 2 / AMD Radeon HD3500 / ZARG X152 / Voodoo 2
RAM: 12.6TB
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)