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
theonecookie says:
Dec 2nd 2022
great update it really improves mutliplayer very excited for 1.0
NewtBest says:
Dec 3rd 2022
An android version of local multiplayer and camera compatibility would be great.
Gavin says:
Dec 3rd 2022
hopefully we can 3ds support
Noah.Cfgeek says:
Dec 5th 2022
Can anyone help me with the parsec method for Dragon Quest IX? I'm new to melon and parsec. We've got two instances of DQIX running together and connected through multiplayer but how can you control both windows at once? Even with different keybinds the computer only focuses one window at a time. If we use a controller can both be controlled simultaneously?

But like others have said I will donate $500 if Dragon Quest IX can work with the next update with netplay. Too much nostalgia I would do anything to play that multiplayer over the internet without using the parsec method.
leptiphoenix says:
Dec 7th 2022
Hello !

We played via parsec for more than 20 hour with 4 player at dq9 using this last update. And we loved it !
First: no crash, even when the connection is disrupted because the game bug or the emulator goes slow, we are only ejected from multiplayer but the game still run. and we are only talking about 3 or 4 bugs in 20 hours and that can be attributed to the game code.
second: easiest setup ever seen, only to start the app, create 3 instances, and play the game, we only have to setup the gamecontroller each time we open parsec tho, because parsec view online controller as new controllers at each new connection but this is some parsec issues.
third: support multiple background play, when we are not focused on a singular app, it still compute input and run in background letting us play all at the same time with no problem, and this makes funny behavior because if you select same controller for multiple instance, each instance will compute the input and we can control the four characterss with one controller.

Finnaly, I really enjoy a lot this last version and thank so much all the people that worked on it, especially Arisotura.

on a side note, for Noah.Cfgeek
parsec support the usage of controllers online, so the host must invite the client in parsec, the client must press a controller key to activate the controller via parsec, and the host must setut the controller in the menu (displayed as virtual gamecontroller or something like that). then the client can play with his instance even if the app is not focused and the host can play on his instance with his controller. also, there is a really cool feature to output the sound of only the main instance, to enjoy the really gound dq9 soundtrack during our multiplayer sessions
Ilovemelonds says:
Dec 13th 2022
I noticed that fullscreen works on Wayland now, in the flatpak version! Dope!
Christopher says:
Dec 17th 2022
I have support Boxing multiplayer like.
kunhee213 says:
Dec 28th 2022
I want to apply this to the switch. But I don't know how. Should I download Windows?
Post a comment