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
Maxim Katsur says:
Nov 7th 2022
Finally, the update is here! But, about the launching DSiWare games... does it still requires DSi mode and launching directly from DSi BIOS?
Sammy says:
Nov 7th 2022
Windows Defender got mad. Virustotal says it's fine. What should I do?
Arisotura says:
Nov 7th 2022
it's fine
^.^ says:
Nov 9th 2022
ari32 says:
Nov 9th 2022
This is historic. After decades of whole teams efforts, this is the only project to succeed in multiplayer.

I hope you're patting yourself on the back for all the good you've done
i says:
Nov 14th 2022
Face Training: The DS Camera
...unnn...s o .. mu .. ch .. slooooowllly...
but ingame ok.
very thanks!! fantastic!!
HI says:
Nov 14th 2022
After downloading this version everytime I stop fast forwarding the screen flickers, not a very big deal but it gets a bit annoying after a while. How can I fix it?
HI says:
Nov 14th 2022
Oh nevermind, I just saw that someone with the same issue already made a forum post.
Csb says:
Nov 14th 2022
Hi, with this version of melonDS if I use my headphones via the ps4 controller connected via usb (for some reason the headphones do not work if I connect them directly to the pc) I cannot start any rom because melonDS crashes. The only solution I found is to set the audio output to the PC speakers instead of the headphones (recognized by the PC as USB headphones) before starting melonDS.

I don't speak english, so for any mistakes you can thank google translator
Csb says:
Nov 14th 2022
I forgot to mention that melonDS only crashes if I try to start a rom or firmware
DSiLover says:
Nov 19th 2022
Hello, since receiving this new update, Pokemon Heartgold crashes when loading a save file and also will just freeze with music playing when starting a new game.
Guest says:
Nov 20th 2022
Sir I faced some problem in fast forwarding,entering cheats and connecting wifi. plz make a tutorial for fixing all the problems
And I love playing Pokemon in melonds
So, thank you for giving best experience of game and I hope your team give us better and better experiences in future. All the best and keep being awesome.
bu says:
Nov 20th 2022
fucking awesome work
Brazil_trembala says:
Nov 20th 2022
Anon says:
Nov 21st 2022
Hey, there's some issues in the flatpak version(using Ubuntu 22.04). When I use the Shift+F1 hotkey to save state, the emulator crashes. It also can't open the second or third file in a compressed archive (if the archive contains more than one nds file). Just thought you should know, fantastic work on the emulator!
Post a comment