Guide

MelonDS Setup Guide: Nintendo DS Emulation on Handhelds and Desktop

2026-03-30
MelonDS Setup Guide: Nintendo DS Emulation on Handhelds and Desktop guide cover image

Affiliate disclosure: This guide contains affiliate links. As an Amazon Associate and Anbernic affiliate, we earn from qualifying purchases at no extra cost to you. Learn more.

Nintendo DS emulation has a challenge no other system shares: two screens. The DS ran two 256×192 displays simultaneously — one for gameplay, one for maps, menus, inventory, or touch input — and any emulator that wants to replicate it faithfully has to solve the problem of showing both at once on a single modern screen. MelonDS solves this well, and on the right hardware it's the best DS emulator available. This MelonDS setup guide covers everything from first install to a fully dialed-in Nintendo DS emulation experience for 2025 and beyond.

Affiliate disclosure: As an Amazon Associate I earn from qualifying purchases. Links in this guide help support the site at no extra cost to you.


What DS Emulation Actually Needs

Before picking an emulator or device, it's worth understanding what makes DS emulation distinct from emulating other handhelds.

The Nintendo DS runs two ARM processors simultaneously — a 66 MHz ARM9 and a 33 MHz ARM7 — and renders graphics to two separate 256×192 LCDs. The bottom screen is a resistive touchscreen used for everything from Nintendogs puppy-petting to map navigation in The Legend of Zelda: Phantom Hourglass. Getting all of this right in emulation requires:

  • Dual-screen rendering — both displays shown simultaneously, in a layout that fits your device's screen
  • Touch input emulation — either a real touchscreen, or the DS touchscreen mapped to a joystick or button combination
  • BIOS and firmware files — dumped from a real DS (more on this below)
  • Reasonable CPU headroom — DS emulation is not demanding by modern standards, but the dual-CPU architecture means weaker devices can still hit limits on demanding titles

The good news: DS emulation is one of the most accessible targets in the emulation world. Almost any modern handheld handles it at full speed.


Devices That Handle DS Emulation Well

DS emulation runs on almost everything, but the dual-screen requirement means your experience varies significantly by device type.

Retroid Pocket 5 is the best Android handheld for DS emulation handheld play. Its large display gives you room to run both DS screens at a comfortable size — either stacked vertically or side-by-side — without either becoming too small to read. MelonDS standalone and the RetroArch core both run flawlessly. Its touchscreen also works directly as DS bottom-screen input when needed. See our Retroid Pocket 5 vs RG40XXV comparison for a full hardware breakdown.

Anbernic RG35XX / RG40XX series handles DS emulation well in terms of raw CPU performance — the Allwinner H700 chip runs the DS dual-processor architecture without slowdown on virtually every title in the library. The tradeoff is screen size: on smaller devices like the RG35XX (3.5" display), running both DS screens stacked means each one occupies a fairly small area. Single-screen mode with a swap button is worth considering on these devices. See our Anbernic RG40XXV review for display size context.

Miyoo A30 is a capable DS emulation device. The A30's vertical form factor and 4" display make the stacked dual-screen layout feel natural — the tall aspect ratio matches how the DS itself oriented its two screens when held normally.

Android phones are excellent DS emulation devices for anyone who already has one. A phone's touchscreen handles DS bottom-screen touch input natively, which eliminates the single hardest input-mapping problem. MelonDS on Android supports direct touchscreen input out of the box.

Touchscreen note: If your device has a touchscreen (Retroid Pocket 5, most Android phones), MelonDS can use it directly for DS touch input with no extra configuration. If your device does not have a touchscreen (most Anbernic and Miyoo devices), you will need to map the DS touchscreen to a joystick or button combination — covered in the touch input section below.

Technical Specifications

Retroid Pocket 5 SoCMediaTek Dimensity 1100 (4× A78 + 4× A55)
RP5 DS performanceExcellent — full speed, large screen, native touchscreen input
Anbernic RG40XXV SoCAllwinner H700 (4× Cortex-A53 @ 1.8 GHz)
RG40XXV DS performanceFull speed on all titles; no touchscreen
Miyoo A30 SoCAllwinner A133P
A30 DS performanceFull speed; vertical form factor suits stacked layout
Android phonesGenerally excellent; touchscreen input works natively

MelonDS vs. DraStic: Which Should You Use?

Two emulators dominate DS emulation: MelonDS and DraStic. They serve different audiences.

✓ Pros

  • MelonDS: fully open-source (GPL v3) — auditable, forkable, community-maintained
  • MelonDS: available on Windows, macOS, Linux, Android, and as a RetroArch core
  • MelonDS: excellent accuracy — cycle-accurate CPU emulation catches edge cases DraStic misses
  • MelonDS: actively developed with frequent updates
  • MelonDS: JIT recompiler on Android delivers strong performance
  • DraStic: extremely polished Android app with a long track record
  • DraStic: fast and highly compatible on older or weaker Android hardware
  • DraStic: intuitive built-in layout editor

✗ Cons

  • MelonDS: slightly more setup work for BIOS files and screen layout configuration
  • DraStic: closed-source — no Linux or CFW desktop builds available
  • DraStic: paid app ($4.99) — not an option on Linux-based CFW handhelds
  • DraStic: no RetroArch core — can't use RetroAchievements or a unified interface

The recommendation:

  • Use MelonDS on desktop (Windows/macOS/Linux), on Linux-based CFW handhelds (KNULLI, muOS), or via RetroArch on any device where you want a unified emulation setup.
  • Use DraStic on Android if you want a zero-configuration experience and don't mind a paid app. It's genuinely excellent for casual Android DS play.
  • Use MelonDS on Android if you're already using RetroArch for other systems, want open-source software, or want RetroAchievements support.

This guide focuses on MelonDS. If you're on Android and prefer DraStic, setup is minimal — install from the Play Store, point it at your ROMs folder, and play.


Installing MelonDS

Standalone (Windows, macOS, Linux)

  1. Go to melonds.kuribo64.net and download the latest stable release for your platform.
  2. Extract the archive to a folder of your choice — MelonDS is portable and doesn't install anything system-wide.
  3. Launch melonDS.exe (Windows) or the melonDS binary (macOS/Linux).
  4. On first launch, MelonDS will prompt for BIOS and firmware files. You can skip this and configure them later under Config → Emu Settings → DS-mode.

Linux note: MelonDS is available in many distribution package managers (apt, flatpak, pacman). Installing via Flatpak is often the easiest path on desktop Linux.

MelonDS Android

Install MelonDS from the Google Play Store, or sideload the APK from the official GitHub releases page at github.com/melonDS-emu/melonDS. The Android build includes JIT compilation and full touchscreen input support.

Via RetroArch (melonDS DS Core)

The RetroArch core is called melonDS DS — a more recent, enhanced fork of the original melonDS core with better per-game configuration support.

  1. Open RetroArch and navigate to Online Updater → Core Downloader.
  2. Find Nintendo DS → melonDS DS and press A to download.
  3. Load a .nds ROM via Main Menu → Load Content and select the melonDS DS core.

For a full RetroArch setup walkthrough, see our RetroArch setup guide. BIOS files for the RetroArch core go in your RetroArch system/ folder — the exact same files, same filenames, as standalone MelonDS.


BIOS Files: What They Are and How to Get Them

The Nintendo DS requires three firmware files to run games accurately:

FileDescription
bios7.binARM7 processor BIOS (16 KB)
bios9.binARM9 processor BIOS (4 KB)
firmware.binDS firmware / settings chip (256 KB)

Why they matter: The DS BIOS handles the boot sequence, system initialization, and a set of hardware subroutines that games call directly. The firmware chip stores your DS username, language, and other settings — MelonDS reads these at boot. Without proper BIOS files, some games won't boot at all, and others will show incorrect behavior or missing intro screens.

MelonDS can run without BIOS files using a built-in HLE (high-level emulation) fallback, but accuracy and compatibility are lower. Games that call BIOS functions directly may fail or behave incorrectly. For the best experience, provide the real files.

How to obtain BIOS files legally: The only legal source for DS BIOS and firmware files is a Nintendo DS or DS Lite that you own. You dump them from your own hardware using a BIOS-dumping homebrew application. This requires a way to run homebrew on your DS — typically a DS flashcart. Search for "DS BIOS dumper homebrew" to find current open-source tools that output the three required files.

If you own DS cartridges and want to dump them to .nds files for use in emulation, a dedicated cartridge dumper is the right tool. These USB devices connect to your PC and read the ROM data from your physical cartridges — the legally sound approach to building a DS library from games you own:

Browse DS cartridge dumpers on Amazon(affiliate link)

Where to place BIOS files in MelonDS standalone:

  • Go to Config → Emu Settings → DS-mode
  • Set the path for each of the three files: bios7.bin, bios9.bin, and firmware.bin

Where to place BIOS files in RetroArch:

  • Drop all three files into your RetroArch system/ folder
  • Filenames are case-sensitive on Linux and Android — use lowercase exactly as listed above

Dual-Screen Layout Options

This is the most important MelonDS configuration decision for handheld use. You have three main options.

Stacked (Vertical)

Both screens are displayed one above the other — top screen on top, bottom (touch) screen below. This matches how the DS itself looked when held normally and is the most natural layout on tall or square screens.

  • Best for: Miyoo A30 (vertical form factor), phones in portrait mode, square-ish displays
  • In MelonDS standalone: Config → Video Settings → Screen layout → Vertical
  • In RetroArch core: Quick Menu → Core Options → Screen layout → Top/Bottom

Side-by-Side (Horizontal)

Both screens are shown next to each other on a single wide display. Each screen is roughly half the total display width.

  • Best for: wide-screen handhelds with large displays, like the Retroid Pocket 5
  • Each screen is smaller than in stacked mode, but the layout uses widescreen real estate well
  • In MelonDS standalone: Config → Video Settings → Screen layout → Horizontal
  • In RetroArch core: Quick Menu → Core Options → Screen layout → Left/Right

Single Screen with Swap

Show only one screen at a time and toggle between the two with a button press. You see the top screen during normal gameplay and switch to the bottom screen when you need to interact with the touch layer.

  • Best for: devices with small displays (RG35XX series), or games where the second screen is primarily a static map
  • Loses the ability to see both screens simultaneously — not ideal for games that require constant reference to both
  • In MelonDS standalone: Config → Video Settings → Screen layout → Single screen, then assign a hotkey to Screen Swap under Config → Input Config → Hotkeys
  • In RetroArch core: Quick Menu → Core Options → Screen layout → Single screen, map Screen Swap to a button under Controls

Screen Gap and Sizing

In stacked or side-by-side mode, you can add a gap between the screens (to visually separate them) and independently resize each. For most games the default sizing is fine. If a game relies heavily on the bottom screen, shrink the top screen and enlarge the bottom to give it more display area.


Touch Input Mapping (For Devices Without a Touchscreen)

If your handheld doesn't have a touchscreen, you need a way to move the cursor around the DS bottom screen and register taps. MelonDS gives you two approaches.

Map to Right Analog Stick (Recommended)

This is the best solution for any handheld with a second analog stick. The right stick moves a cursor around the DS touchscreen, and a button (typically R3 or a face button) registers a tap.

In MelonDS standalone:

  1. Go to Config → Input Config
  2. Under DS touch screen, find Touch cursor X axis and Touch cursor Y axis
  3. Map these to your right stick X and Y axes
  4. Map Touch (the tap action) to a convenient button — R3 (right stick click) is a natural choice

In RetroArch core (melonDS DS):

  1. Open the Quick Menu while a game is running
  2. Go to Core Options → Touch mode → Joystick
  3. The right analog stick will now control the touch cursor
  4. The configured touch button (default: right stick click) registers taps

If cursor movement feels too fast or too slow, adjust the touch cursor speed under Core Options (RetroArch) or in the input config (standalone).

Map to D-Pad or Face Buttons

For devices with no second analog stick, you can map touch cursor movement to the d-pad or face buttons. This is less precise but works for menus, maps, and inventory screens that don't require fine positioning.

Keep in mind that games which use the stylus for primary input — like The Legend of Zelda: Phantom Hourglass, which controls entirely through stylus drawing — are genuinely difficult without an analog stick cursor. For those titles, consider playing on a touchscreen device instead.


Performance Settings

DS emulation is not demanding on modern handheld hardware, but a few settings are worth knowing.

Renderer

MelonDS offers two renderers:

  • Software renderer — accurate, runs on any hardware, uses CPU only. This is the safe default and handles nearly all games correctly.
  • OpenGL / hardware renderer — offloads rendering to the GPU, enables higher internal resolutions (2×, 4×), but has occasional compatibility issues with a small number of titles.

Start with the software renderer. If you want higher-resolution output and your device supports OpenGL, switch to the hardware renderer and try 2× internal resolution. On Android, the OpenGL renderer generally gives better performance.

In MelonDS standalone: Config → Video Settings → 3D renderer In RetroArch core: Quick Menu → Core Options → Renderer

Frameskip

DS games run at a locked 60 fps. If your device can't hit full speed (unlikely on most modern handhelds), enable frameskip as a last resort.

  • Auto frameskip in the RetroArch core handles this automatically
  • In standalone: Config → Emu Settings → Frameskip
  • Set to 1 only if needed. Higher values make games feel choppy.

Audio Sync

If you hear audio crackling or popping, try toggling audio sync:

  • In RetroArch: Settings → Audio → Synchronization — try toggling off on faster devices
  • In standalone: Config → Audio Settings → Audio sync — try both on and off

JIT Recompiler

MelonDS includes a JIT (just-in-time) recompiler that dramatically speeds up emulation on supported platforms. It's on by default on x86/x64 desktop and Android. If you're seeing unexpectedly poor performance, verify it's enabled under Config → Emu Settings → JIT Recompiler Enable.


Save Compatibility: Save States vs. In-Game Saves

MelonDS has two save systems. Understanding the difference matters, especially if you plan to move saves between standalone and the RetroArch core.

In-Game Saves (.sav files)

When a DS game saves to its cartridge via the in-game save menu, MelonDS writes a .sav file alongside the ROM. These are the correct format to use:

  • Compatible across MelonDS versions
  • Compatible between MelonDS standalone and the RetroArch melonDS DS core
  • Portable to real DS hardware (with the right flashcart)
  • Will survive emulator updates indefinitely

Save file location:

  • MelonDS standalone: same folder as your ROM by default, or set a custom path under Config → Emu Settings → Saves
  • RetroArch core: in your RetroArch saves/ folder, named <romname>.sav

Save States

Save states capture the entire emulator state at a specific moment. They're powerful but fragile:

  • Save states from MelonDS standalone will not load in the RetroArch core (and vice versa)
  • Save states may break after emulator version updates
  • A save state only works with the exact core/emulator version that created it

Use in-game saves as your primary save method. Use save states as a quick suspend feature during a session, not for long-term storage.

Tip: If you want to move a playthrough from standalone to the RetroArch core (or vice versa), use an in-game save first, close the game, then open it in the other emulator. The .sav file is cross-compatible — your progress will be there.



Related Guides

melonds nintendo ds ds emulation setup guide handheld retroarch