loading_reduced.jpg

0.9.3 / 02-09-2021

MelonDS

Accuracy

Performance

Features

competition

MelonDS is a work-in-progress Nintendo DS emulator aiming for better performance while being able to to emulate Wi-Fi and local multiplayer capabilities. It's developed by a former contributor of DeSmuME and even has libretro core available. There's also active development of an Android port.


It also requires DS BIOS/firmware copies

  • bios7.bin, 16KB: ARM7 BIOS

  • bios9.bin, 4KB: ARM9 BIOS

  • firmware.bin, 128/256/512KB: firmware


Please note firmware boot requires a firmware dump from an original DS or DS Lite. DS firmwares dumped from a DSi or 3DS aren't bootable and only contain configuration data, thus they are only suitable when booting games directly.

--

Windows: None Reported

Mac: Install the appropriate libraries beforehand with the Homebrew Package Manager.

         In Terminal, type  "brew install qt5 sdl2 libslirp"

Most Recent Changes

--0.9.3--

Fix macOS right modifier detection (Nadia)
• Fill most gaps in ROMList (Arisotura)
• Fix touchscreen code in non-hybrid layout mode (Arisotura)
• GBACart: simulate open-bus decay roughly (Arisotura)
• Frontend: handle tablet and touch events (Generic aka RSDuck)
• Implement NO$GBA debug registers (BlueTheDuck)
• Make Setup Cheats option reappear on macOS (Nadia)
• Add frame step hotkey (Yukitty, additional fixes by Gal20)
• Add DSP code (PoroCYon, purringChaos)
• Save window state (Arisotura)
• JIT optimisations and fixes (Generic aka RSDuck)
• Add ROM info dialog (WaluigiWare64)
• Allow using DSi footer within NAND images (MightyMax)
• More accurate NWRAM implementation (MightyMax)
• Only open microphone if necessary (Arisotura)
• Fix undo load savestate loading (Generic aka RSDuck)
• Fix pause when inactive (Generic aka RSDuck)
• Add audio interpolation (Arisotura)
• Add SOUNDBIAS and optional 10bit audio (Nadia)
• Patch touchscreen calibration data in DSi mode (Arisotura)
• Add DSi title manager (Arisotura)
• Fix threaded rasteriser deadlock when VCount is moved (Generic aka RSDuck)
• Add preliminary DSi-mode direct boot (MightyMax, Arisotura)
• More accurate DMA timings (Arisotura)


--0.9.2--
• fix JIT on ARM Macs
• add proper Mac builds
• GX: optimize single-param commands
• add recent-files menu (abcdjdj)
• add support for loading files from archives
• fix JIT bugs
• fix wifi bugs
• improve performance of save-memory writeback
• add hotkey for swapping screens
• 3D/GL: attempt fixing various bugs
• fix OpenGL scaling on hiDPI displays
• rework GPU2D for easier integration of full GL rendering
• rework NDSCart and GBACart to make it easier to implement new cart types
• add support for NAND save memory (WarioWare DIY, Jam with the Band)
• fix bugs in DSi I2C and SD/MMC interfaces
• new screen modes

--0.9.1--

  • add fullscreen hotkey

  • remove hardcoded F11-debug key (oops)

  • fix some gaps in the IO handlers

  • add ability to run unlaunch'd DSi NANDs

  • add preliminary camera support (feeds fixed stripe pattern)

  • fix potential bugs with tight timers (fixes ZXDS)

  • SPU: small optimization to the mixer

  • better framerate limiter

  • fix several JIT issues

  • GPU: lay bases for EVIL PLANS

  • GPU: emulate separate scroll register for 3D layer scrolling

  • some corrections to the ROM savetype list

  • a bunch of misc fixes, as usual



--0.9--

  • merge in experimental DSi support

  • 2D: delay palette lookup for sprites

  • 2D: some attempts at fixing mosaic

  • CP15: only update PU regions when actually needed

  • 2D: fix sprite Y-flip

  • 3D/GL: fix transparency bugs

  • add warning against hacked firmwares

  • fix libpcap bug (i404788)

  • better file handling code (Nadia)

  • GBA slot and solar sensor support (rzumer)

  • add support for AR cheat codes

  • fix handling of ROMs with encrypted secure area

  • 3D: change clipping to be closer to hardware

  • 3D: implement DISP_1DOT_DEPTH

  • 3D: more accurate viewport transform

  • build fixes (Nadia)

  • add JIT recompiler (RSDuck)

  • new Qt UI

  • SPU: only start channels when they can actually run

  • 2D: allow writes to DISPCNT/masterbright/capture/dispFIFO regardless of POWCNT

  • SPU: don't process channels with len<4

  • 3D/GL: cleaner polygon generation code

  • 3D/GL: add attempt at reducing warping on quads/etc

  • 3D: add missing variables to savestates

  • wifi: avoid potential out-of-bounds writes with invalid RX buffer setups

  • 3D/GL: fix issues with framebuffer handling

  • make MAC randomization optional

  • make software renderer the default

  • add basic DLDI



--0.8.3--

  • fix ARM 'shift by register' operands (fixes Mario Party DS 'Stick and Spin' minigame)

  • remove glBindImageTexture() (not needed and requires GL 4.2)

  • fix input bugs when using Ctrl/Alt/Shift keys for buttons

  • fix possible crashes when exiting (again. heh)

  • 2D: support forcedblank+masterbrightness

  • 2D: fill gaps in implementation (mode6 on sub GPU, mode7, 'prohibited' modes/sizes for OBJ and largeBG)

  • build fixes

  • fix division edge case (xperia64)

  • new FPS limiter, audio sync, vsync for OpenGL

  • add warning message if romlist.bin is not found (Zettymaster)



--0.8.2--

  • fix GL renderer not working at all on certain setups (RSDuck)

  • add 32bit writes to certain IO ports (fixes some freezes)

  • OpenGL: disable vsync under Windows

  • fix bug when mapping a joystick axis but no button

  • set kMaxIterationCycles to 64 (old value 16)

  • fix potential crash when pressing Escape with menus opened

  • OpenGL: remove shitty hack

  • OpenGL: better lines

  • fix potential crash when closing emu



--0.8.1--

  • fix potential issue generating the config file path under Linux

  • fix 3D/2D blending bugs under OpenGL

  • fix potential crash under the software renderer when display capture is used

  • basic, optional OSD system

  • add support for setting key mappings to none

  • add fast-forward and pause/reset hotkeys

  • fix crash when closing an input config dialog during the joystick mapping process

  • fix bugs when changing video settings with no game loaded

  • faster IRQ checks

  • faster VRAM reads

  • 3D/OpenGL: preliminary edge marking

  • 3D/OpenGL: fix fog alpha

  • 2D: render sprites one scanline in advance (iCarly - Groovy Foodie)

  • 3D/software: fix rendering of line polygons

  • 3D/OpenGL: add proper-ish support for line polygons

  • support multiple joysticks

  • add support for mapping keys with modifiers

  • add support for mapping joystick axes alongside buttons, remove hardcoded axis 0/1 mapping

  • overall better input/hotkey code



--0.8--

  • fix CP15 init during direct boot

  • do not apply delays to cart transfers when the WR bit is set

  • misc fixes

  • OpenGL renderer and upscaling



--0.7.4--

  • fix potential spurious sounds when starting melonDS

  • fix crash when using microphone with a WAV that has multiple channels

  • small optimizations and tweaks

  • wifi: add wifi settings dialog, with libpcap adapter list

  • wifi: first version of indirect (non-libpcap) mode

  • move most of the config settings to a platform-specific array (really just making it easier to port melonDS)



--0.7.3--

  • fix STRD_POST (fixes Just Sing - Vol 2 music)

  • add support for POWCNT1 (fixes Imagine - Teacher)

  • 2D: fix fade effects to semitransp sprites and 3D layer (fixes Devil Survivor)

  • 3D: truncate W to 24 bits before viewport transform. do not render polygons with any W=0.

  • attempt at fixing hiDPI under Windows

  • fix input config dialog crashes under Linux

  • add support for hotplugging joysticks

  • make 'savefile relocation when using savestates' disabled by default

  • remember whether main window is maximized

  • add menu for setting main window to an integer size

  • init save memory to 0xFF instead of 0x00

  • romlist.bin: index games by serial rather than CRC. updated romlist.

  • add support for 128K EEPROM (Pokémon Mystery Dungeon - Explorers of Sky)

  • make nocashprint also work in ARM mode

  • GX: always latch rendering engine registers, even when not flushing

  • GX: fix polygon timings when polygon is rejected by culling/clipping

  • rewrite main emu loop to use absolute timestamps



--0.7.2--

  • microphone input (physical mic, noise, wav)

  • nocash-style console printing

  • send console output to cmd under Windows

  • corrections to romlist.bin

  • 2D: fix blending for semitransp sprites and 3D layer when windows are used (bypasses window 'color effect enable' check)

  • 3D: fix 'equal' depth test margin in Z-buffering mode, fixes Puzzlers World 2

  • SPU: add support for channel repeat mode 3 (behaves same as 1)

  • SPU: always clear channel buffers, even when running ch0-7 in mode 3 (fixes American Girl - Kit Mystery Challenge!)

  • libui/windows: cache ideal size for uiButton. fixes lag in input config dialog

  • close/open lid, sleep mode

  • hotkey system

  • audio settings dialog, with volume slider and microphone settings

  • libui/gtk: remember last directory in which a ROM was opened

  • libui/gtk: attempts at fixing input config dialog crashes

  • framerate limiter toggle (abcdjdj)

  • add Linux libpcap library names (dogtopus)

  • betterer readme (Aqueminivan)

  • GX: set busy flag immediately when putting things in the FIFO, fixing possible race condition

  • GX: revise timing for SWAP_BUFFERS command

  • add flatpak manifest (cpba)



--0.7.1--

  • fix glitched lines in 3D

  • fix backwards windows

  • more accurate GX timings

  • more accurate DMA and memory timings

  • check for config/etc files in melonDS's directory explicitly

  • allow joystick axis events even when no dpad buttons are mapped

  • detect savemem type from database instead of huge messy fucky code



--0.7--

  • fix possible crashes when exiting

  • wifi: add basic access point melonAP (very beta)

  • fix SMULWx/SMLAWx opcodes, fixes Sims 2 music

  • add support for loading BIOS/firmware files and config file from AppData or ~/.config/melonds or from the executable directory (hcorion)

  • add 32-bit IPCSYNC reads/writes (Dirbaio)

  • add savestates

  • 3D: (hopefully) fix bug in shadow/AA interaction (visible in the MKDS character select preview, bottom border of the platform thing)



--0.6--

  • don't fail completely if SDL haptic init fails (bentley)

  • fail gracefully when ROM loading fails

  • support Unicode filenames under Windows

  • FPS counter is back (sorry!)

  • allow Windows file picker to navigate through shortcuts (instead of trying to load the shortcut as a ROM)

  • screen layout/sizing/scaling modes, screen gap, rotation

  • toggle for screen linear filtering

  • add support for 8bit GXSTAT accesses

  • reset IE/IF properly

  • fix sound capture/playback for things like surround



--0.6b--

  • fix screen option menu init

  • add icon

  • add resampler with small tolerance to prevent sound clicks/pops at fullspeed



--0.5--

  • new UI, more stable, less windows all over the place

  • wxWidgets ditched, lost some weight

  • 2D: allow reading BLDALPHA

  • GPU: fix potential issues with VCount write

  • implement 8bit accesses to some registers

  • 2D: mosaic (not quite right for rotscaled sprites)

  • 3D: fix culling

  • allow 128KB firmwares from DSi/3DS

  • 3D: more accurate fog

  • 3D: more accurate polygon edges (but not perfect)

  • 3D: antialiasing

  • 3D: misc optimizations



--0.4--

  • implement access modes for certain IO registers that were unhandled

  • actually implement RCNT instead of hardcoding it

  • wifi: emulation of multiplayer cmd/reply/ack transfers

  • wifi: more accurate RFSTATUS/RFPINS

  • wifi: some games can go into multiplayer now (Pictochat, NSMB, Pokémon known working)

  • improved savemem detect heuristic

  • implement firmware write, fix SPI bugs

  • accurate emulation of 'main memory display FIFO'

  • 2D: fix render/capture order

  • 2D: implement mode6 large BG

  • 2D: fix bitmap BG sizes

  • 2D: fix rotscaled bitmap sprites

  • 3D: fix missing term in MatrixTranslate

  • 3D: fix toon highlight mode

  • 3D: fix boxtest bug

  • 3D: accurate viewport transform

  • 3D: polygon Y-sorting

  • 3D: more accurate interpolation, still not perfect

  • 3D: more accurate Z and W transforms, fix some cases of Z-fighting

  • 3D: separate polygonID attributes for opaque and translucent pixels

  • 3D: start documenting and implementing depth test edge cases

  • emulate delays for SPI transfers and div/sqrt

  • misc bugfixes/additions as usual



--0.3--

  • set POSTFLG when booting games directly, fixes Pokémon games and likely others

  • fix bug with cart DMA, booting a game from the firmware should be stable now

  • better emulation of cart transfer delays

  • better save type heuristics

  • support for writing to VCount

  • 2D: fix display capture blending modes

  • 2D: implement X-flip for bitmap sprites (oops)

  • 3D: fix mode3 (vertex) texcoord generation (Eledees no longer looks like your TV decoder broke)

  • 3D: fix Z-buffering

  • 3D: attempt at fixing culling, works better

  • 3D: latch all rendering-related registers upon VBlank

  • 3D: delay rendering start a bit, for games that run late

  • 3D: optional threaded renderer

  • 3D: change renderer to work per-scanline; accurate stencil buffer

  • 3D: fix alpha calculation when alphablending is disabled via DISP3DCNT

  • 3D: fog and edge marking

  • wifi: more functionality emulated, attempt at sending/receiving data

  • misc bugfixes and optimizations

  • better framerate limiter



--0.2--

  • preliminary sound

  • various compatibility improvements and fixes

  • various little speedups too

  • cart transfer delays emulated

  • RTC uses system time

  • wifi stub -- games requiring wifi functionality shouldn't hang anymore

  • 2D: windows

  • 2D: various fixes to display capture

  • 3D: toon/highlight shading, shadows, polygonID

  • 3D: box test, pos test, vec test



--0.1--

First release.