melonDS 0.9.5 is out!
First of all, a bit of a special announcement.

As of today, the melonDS project is 6 years old. For this occasion, we present you this special version of the melonDS logo, recolored to the same pretty sky-blue color as 6 itself:



We wanted to have Peach bake a cake shaped like this, but Bowser kidnapped her again. We aren't great bakers at the melonDS HQ, so... yeah.

Regardless, these 6 years are a great success. Back in 2016, when I started working on melonDS, I was mostly just making it to have fun and pass time until my job started. I had absolutely no idea the project would go on for so long, and be as much of a success as it has been. So, first of all, I want to thank all the comrades who have helped make this possible. The melonDS team and other contributors. nocash and his great documentation. Everybody else who has been involved in reverse-engineering the DS/DSi hardware, cracking the DSi security, etc... And of course, everybody who has been using melonDS, testing games in it, reporting issues, suggesting improvements, etc...

Thank you all. melonDS is a team effort, and you deserve your part of the birthday cake.

And, of course, the birthday present. There's only one, but it's a big one. We bring you melonDS 0.9.5, and if you've been following the blog lately, you know it's going to be big.


melonDS 0.9.5



So what are the highlights of this 0.9.5 release?


Improved local multiplayer

This is a big change. If you know melonDS, you know that local multiplayer has always been finicky. You had to disable your framerate limiters, sacrifice some goats to the wifi deities, and hope everything would work without disconnecting. Well, this is past now! melonDS 0.9.5 is the result of the first season of the local multiplayer saga, and I dare say that the result is pretty good.

As an example: there was no way to get Mario Kart DS multiplayer to stay connected for more than a few seconds, before. Now? It's smooth as butter. Many games have been tested and most of them work absolutely fine, atleast in two-player mode. It is also possible to go for three players and more, but more atypical multiplayer settings might run into problems, or suffer from decreased performance. Oh and if you have an original DS firmware, it's also possible to use download play and Pictochat.

However, it is worth noting that I've had to completely rework the way local multiplayer communication and sync were handled. The new method requires all participating melonDS instances to be running on the same machine, so it isn't possible to play over LAN. Not that it has ever worked well tbh. But, essentially, the new IPC communication layer has extra smarts to avoid lag as much as possible, which are made possible by the use of shared memory -- these would be much more difficult, if not impossible, to replicate with BSD sockets over the network.

The melonDS UI has also been revamped to make the multiplayer experience smoother. It is possible to launch new isntances of melonDS easily from the emulator's System menu (opening them just by opening the melonDS executable should also work). Certain parts of the emulator's configuration will be unique to each instance, for example it is possible to configure each instance to use a different joystick, to select which instances can output sound, and so on.

There are a couple shortcomings to this. First one, some emulator settings (like BIOS/firmware files) are shared across all instances, but if you modify them, they may not reflect to instances which are already opened. These settings should be easily identifiable as I made them editable from the first melonDS instance only. Also, keyboard input, due to how it works, won't be suitable for playing a multiplayer game with a friend -- you will need joysticks for that.

However, we have big plans for this. There will be a second season to the local multiplayer saga, where we will implement netplay. This will make it possible to play with your friends over LAN, or even over the internet. The downside is that it will require each participating machine to run every participating melonDS instance, but we're confident that any decent computer can handle this. Besides, this is the cost to keeping a multiplayer game in sync. Due to how tight the local multiplayer timings are, there's no way Nintendo's wifi protocol would ever work over the internet.

The improvements to local multiplayer include improvements to wifi emulation itself, which may also improve stability in WFC games.


DSi camera support

melonDS had basic DSi camera emulation since version 0.9.1, but it wasn't very useful as it was just feeding a fixed stripe pattern as camera input. You guess this doesn't help sell our DSi emulation, seeing as cameras are the number one feature of that console, and the main reason some games support it at all instead of just sticking to the original DS.

melonDS 0.9.5 has actual DSi camera support now. That is, you can configure camera input to be sourced either from physical cameras on your computer, or from a fixed image file. Camera emulation has also been improved, which means that for example it is possible to take pictures in the DSi camera app, and they will be saved to your emulated SD card if you have one. Not the most useful thing, but this should also mean better camera support in DSi games.


Revamped OpenGL context handling

The way melonDS handled OpenGL contexts in the Qt frontend was weird. It was responsible for a number of problems, such as for example the inability to support proper vsync.

This is past now. Generic has been porting Stenzek's OpenGL context code from DuckStation to melonDS. This reworks the way OpenGL contexts are handled to be more sane and less prone to problems. This also means that we now have an actual, proper vsync setting.


DSi DSP support

Well, technically, we've had support for that since melonDS 0.9.3. It just didn't work due to a bunch of issues with it. Now it does.

Don't get overly excited over this, though. While I have verified that it atleast works to some extent, teakra (the DSP interpreter) is slow enough that melonDS will likely fall to a single-digit framerate when the DSP is used. That's an improvement over just freezing, but certainly nowhere near playable. We will work on a DSP JIT to alleviate this.


CLI improvements courtesy patataofcourse

The command line interface (CLI) of melonDS has been revamped. Most notably:

• It is possible to boot melonDS with no game loaded, or to load a game without booting, with the -b (or --boot) switch (values: always/never/auto)
• the -f (or --fullscreen) switch lets you start the emulator in fullscreen
• when loading an archive via the CLI, it is possible to specify which file to load from the archive
• the CLI help (invoked by the --help option) will show all the possible CLI arguments and values


We plan for this release to be the last of the 0.9.x series. melonDS 1.0 is coming next, and it will be big.

In the meantime, enjoy, and stay tuned for more!


melonDS 0.9.5, Windows x64
melonDS 0.9.5, Linux x64
melonDS 0.9.5, Linux ARM64
melonDS 0.9.5, macOS universal
Saizo7 says:
Nov 3rd 2022
Congratulations! 1.0 is gonna be hype!
Guest says:
Nov 3rd 2022
That is really great. Keep up the good job.

I wonder, whether something could be implemented for thin clients in a local network, as the actual processing would be done on a central computer via virtual machines, and using NetPlay could introduce an additional issue where, depending on the amount of players, you could easily be running 4-16 instances on the same machine (25 if there are 5 players, such as with Pokémon DS games allowing up to 5 players for some of the local multiplayer functions).
me says:
Nov 4th 2022
woooooo!!!
Guest says:
Nov 4th 2022
In general, this could prove to be an issue for LAN parties (though LAN parties for emulated DS should be extremely rare in the first place), since I believe the DS supports multiplayer with up to 16 players, and there are games that capitalize on that (again, Pokémon comes to mind, although you don't really have any activities that actually have 16 players participating in them, usually up to 4, with Record Mixing going up to 5).
NICOEMU says:
Nov 4th 2022
Really im very excited for melonDS!!!
I cant wait to receive melonDS version 1.0!!!! :D
lucaspltn says:
Nov 4th 2022
This all looks really cool, can't wait to try out the DSi Camera!

One issue though...when I downloaded the macOS Universal version and tried to run it, an alert showed up saying "'melonDS' is damaged and can’t be opened. You should move it to the Trash." And this happened even after multiple redownloads. So, um, that's a bit of a roadblock...
Pk11 says:
Nov 4th 2022
@lucaspltn Does right click -> open work? It works fine for me.
i says:
Nov 4th 2022
wowowow!!
cameraAaaaaa!!
greatFull!!
genius!!
Player 3 says:
Nov 4th 2022
Fantastic Job, Emulation saving the (Final Fantasy Crystal Chronicles) saga again , multiplayer Echoes of Time :chefkiss:
Frank85 says:
Nov 4th 2022
WOW!!! Thank you so so much!!
Dextersu says:
Nov 4th 2022
I just tested legend of zelda 4 swords in dsi platform.
god... i have to say it was amazing,so smooth...but i could not actually play it with friends 'cause i cannot control the character of the other instance when my mouse focus on mine.
Hope that the next version can fix that problem, good job!
Dextersu says:
Nov 4th 2022
I just tested legend of zelda 4 swords in dsi platform.
god... i have to say it was amazing,so smooth...but i could not actually play it with friends 'cause i cannot control the character of the other instance when my mouse focus on mine.
Hope that the next version can fix that problem, good job!
Johna says:
Nov 4th 2022
Does melonDS still crash when using frontend launcher like ["playnite"] to load game?
Arisotura says:
Nov 4th 2022
@lucaspltn there's an issue with the macOS build apparently, I'll replace it when I'm home
android melonds fan says:
Nov 4th 2022
oh boy no support for mobile ... so sad
Post a comment
Name:
DO NOT TOUCH