Mega-Mario
Emulator Developer
There's a new DS emulator in the town, and it's finally seeing its first public release!
melonDS is part of a second wave of DS emulators. There are a few other emulator projects that are part of it, which you might have already heard of. Either way, check them out!
Why start this project? Mostly for the sake of the challenge, but also because I believe the DS emulation scene needs some fresh air. The NO$GBA author is working hard to reverse-engineer, document and emulate the DSi, but aside from that, there isn't a lot of progress regarding the DS, and I feel that there are still things to be done.
So, without further ado, let's relive 2007!
melonDS 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
melonDS 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
melonDS 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
Features
* complete 2D graphics
* 3D graphics (software renderer) with all features except antialiasing
* input: keyboard and joystick, touchscreen
* backup memory
* booting from the BIOS
* resizable video output window, preserving aspect ratio of individual screens
How to use
melonDS requires BIOS/firmware dumps from a DS.
The files must be placed in the same directory as the melonDS executable, as follows:
* bios7.bin -- ARM7 BIOS, 16KB
* bios9.bin -- ARM9 BIOS, 4KB
* firmware.bin -- firmware, 256KB or 512KB
Note: the DS-mode firmware in the 3DS isn't bootable. It only contains the bare minimum required to run DS games. Be sure to enable direct game boot when using a firmware dump from a 3DS.
Settings
Emulation: settings related to emulation. For now it lets you enable direct game boot (directly runs the game instead of going through the firmware).
There's also a wifi-related setting (which only ended up there because I'm lazy and I need to redo the UI). You should try toggling it if you have trouble getting multiplayer working.
Input: allows you to configure keyboard and joystick input. You can change a mapping by clicking the corresponding entry, then pressing a keyboard key or joystick button. For now, joystick input uses the first joystick available if multiple joysticks are plugged.
If your game fails to save
Check the size of the savefile. melonDS can, in some circumstances, misdetect the save memory type.
Save memory type detection is done only when no existing savefile is present.
If you provide an existing savefile with the correct size, melonDS will use the correct save memory type and saving should work properly.
Downloads
* 0.4, Windows 64-bit
* 0.4, Linux 64-bit
* 0.3, Windows 64-bit
* 0.3, Linux 64-bit
* 0.2, Windows 64-bit
* 0.2, Linux 64-bit
* 0.1, Windows 64-bit
* 0.1, Linux 64-bit
If you feel generous
melonDS Patreon
Check out the melonDS site for more.
Have fun!
melonDS is part of a second wave of DS emulators. There are a few other emulator projects that are part of it, which you might have already heard of. Either way, check them out!
Why start this project? Mostly for the sake of the challenge, but also because I believe the DS emulation scene needs some fresh air. The NO$GBA author is working hard to reverse-engineer, document and emulate the DSi, but aside from that, there isn't a lot of progress regarding the DS, and I feel that there are still things to be done.
So, without further ado, let's relive 2007!
melonDS 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
melonDS 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
melonDS 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
Features
* complete 2D graphics
* 3D graphics (software renderer) with all features except antialiasing
* input: keyboard and joystick, touchscreen
* backup memory
* booting from the BIOS
* resizable video output window, preserving aspect ratio of individual screens
How to use
melonDS requires BIOS/firmware dumps from a DS.
The files must be placed in the same directory as the melonDS executable, as follows:
* bios7.bin -- ARM7 BIOS, 16KB
* bios9.bin -- ARM9 BIOS, 4KB
* firmware.bin -- firmware, 256KB or 512KB
Note: the DS-mode firmware in the 3DS isn't bootable. It only contains the bare minimum required to run DS games. Be sure to enable direct game boot when using a firmware dump from a 3DS.
Settings
Emulation: settings related to emulation. For now it lets you enable direct game boot (directly runs the game instead of going through the firmware).
There's also a wifi-related setting (which only ended up there because I'm lazy and I need to redo the UI). You should try toggling it if you have trouble getting multiplayer working.
Input: allows you to configure keyboard and joystick input. You can change a mapping by clicking the corresponding entry, then pressing a keyboard key or joystick button. For now, joystick input uses the first joystick available if multiple joysticks are plugged.
If your game fails to save
Check the size of the savefile. melonDS can, in some circumstances, misdetect the save memory type.
Save memory type detection is done only when no existing savefile is present.
If you provide an existing savefile with the correct size, melonDS will use the correct save memory type and saving should work properly.
Downloads
* 0.4, Windows 64-bit
* 0.4, Linux 64-bit
* 0.3, Windows 64-bit
* 0.3, Linux 64-bit
* 0.2, Windows 64-bit
* 0.2, Linux 64-bit
* 0.1, Windows 64-bit
* 0.1, Linux 64-bit
If you feel generous
melonDS Patreon
Check out the melonDS site for more.
Have fun!
Last edited: