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
RandUser says:
Nov 22nd 2022
For some reason, Melonds closes right after I open it, though sometimes it works, Ive tried running as an admin and whatnot, and the issue persists.
RandUser says:
Nov 22nd 2022
Nevermind, I have solved this, another program was closing it for some reason.
idkdkak says:
Nov 23rd 2022
Will MelonDS and Dolphin connect to each other in the future?
Super Boliviano Play says:
Nov 23rd 2022
Parabéns, bicho
A dragon says:
Nov 23rd 2022
Peach isn't the only cake baker in video games. Do I've to remind you of GLaDOS? One of her cores does cite a cake baking recipe, but it might need some alterations.

Anyway, is it possible to use CLI to boot games with select rotation. Example, booting Animal Boxing with the screens rotated 180 degrees?
Juan says:
Nov 27th 2022
And will it come out for Android?
Generic aka RSDuck says:
Nov 27th 2022
Post a comment