melonDS 1.1 is out!
As promised, here is the new release: melonDS 1.1.

So, what's new in this release?

EDIT - there was an issue with the release builds that had been posted, so if your JIT option is greyed out and you're not using a x64 Mac, please redownload the release.


DSP HLE

This is going to be a big change for DSi gamers out there.

If you've been playing DSi titles in melonDS, you may have noticed that sometimes they run very slow. Single-digit framerates. Wouldn't be a big deal if melonDS was always this slow, but obviously, it generally performs much better, so this sticks out like a sore thumb.

This is because those titles use the DSi's DSP. What is the DSP, you ask? A specific-purpose (read: weird) processor that doesn't actually do much besides being very annoying and resource-intensive to emulate. They use it for such tasks as downscaling pictures or playing a camera shutter sound when you take a picture.

With help from CasualPokePlayer, we were able to figure out the 3 main classes of DSP ucodes those games use, determine their functionality, and implement HLE equivalents in melonDS. Thus, those wonderful DSP features can be emulated without utterly wrecking performance.

DSP HLE is a setting, which you will find in the emulation settings dialog, DSi-mode tab. It is enabled by default.

Note that if it fails to recognize a game's DSP ucode, it will fall back to LLE. Similarly, homebrew ucodes will also fall back to LLE. There's the idea of adding a DSP JIT to help with this, but it's not a very high priority right now.


DSi microphone input

This was one of the last big missing features in DSi mode, and it is now implemented, thus further closing the gap between DS and DSi emulation in melonDS.

The way external microphone input works was also changed: instead of keeping your mic open at all times, melonDS will only open it when needed. This should help under certain circumstances, such as when using Bluetooth audio.


High-quality audio resampling

The implementation of DSP audio involved several changes to the way melonDS produces sound. Namely, melonDS used to output at 32 KHz, but with the new DSi audio hardware, this was changed to 47 KHz. I had added in some simple resampling, so melonDS would produce 47 KHz audio in all cases. But this caused audio quality issues for a number of people.

Nadia took the matter in her hands and replaced my crude resampler with a high-quality blip-buf resampler. Not only are all those problems eliminated, but it also means the melonDS core now outputs at a nice 48 KHz frequency, much easier for frontends to deal with than the previous weird numbers.


Cheat database support

If you've used cheats in melonDS, surely you've found it inconvenient to have to manually enter them into the editor. But this is no more: you can now grab the latest R4 cheat database (usrcheat.dat) for example, and import your cheat codes from that.

The cheat import dialog will show you which game entries match your current game, show the cheat codes they contain, and let you select which codes to import. You can also choose whether to clear any previously existing cheat codes or to keep them when importing new codes.

melonDS's cheat code system was also improved in order to fully preserve the structure found in usrcheat.dat. Categories and cheat codes can now have descriptions, categories have an option to allow only one code in them to be enabled, and codes can be created at the root, without having to be in a category.

The cheat file format (.mch) was also modified to add support for this. The parser is backwards-compatible, so it will recognize old .mch files just fine. However, new files won't be able to be recognized by older melonDS versions.

The cheat editor UI was also revamped to add support for the new functionality, and generally be more flexible and easier to work with. For example, it's now possible to reorder your cheat codes by moving them around in the list.


Compute shader renderer fix

Those of you who have tried the compute shader renderer may have noticed that it could start to glitch out at really high resolutions. This was due to running out of tile space.

We merged FireNX70's pull request, which implements tile size scaling in order to alleviate this problem. This means the renderer should now be able to go pretty high in resolution without issues.


Wayland OpenGL fix

If you use Wayland and have tried to use the OpenGL renderers, you may have noticed that it made the melonDS window glitchy, especially when using hiDPI scaling.

I noticed that glitch too, but had absolutely no idea where to start looking for a fix. So I kinda just... didn't use OpenGL, and put that on the backburner.

Until a while ago, when I felt like trying modern PCSX2. I was impressed by how smoothly it ran, compared to what it was like back in 2007... but more importantly, I realized that it was rendering 3D graphics in its main window alongside UI elements, that it uses Qt and OpenGL just like melonDS, and that it was flawless, no weird glitchiness.

So I went and asked the PCSX2 team about it. Turns out they originally took their OpenGL context code from DuckStation, but improved upon it. Funnily enough, melonDS's context code also comes from there. Small world.

In the end, the PCSX2 folks told me about what they did to fix Wayland issues. I tried one of the fixes that involved just two lines of code, and... it completely fixed the glitchiness in melonDS. So, thanks there!


BSD CI

We now have CI for FreeBSD, OpenBSD and NetBSD, courtesy Rayyan and Izder456. This means we're able to provide builds for those platforms, too.

Adjustments were also done to the JIT recompiler so it will work on those platforms.


Fixing a bunch of nasty bugs

For example: it has been reported that melonDS 1.0 could randomly crash after a while if multiple instances were opened. Kind of a problem, given that local multiplayer is one of melonDS's selling points. So, this bug has been fixed.

Another fun example, it sometimes occured that melonDS wouldn't output any sound, for some mysterious reason. As it was random and seemingly had a pretty low chance of occuring, I was really not looking forward to trying to reproduce and fix it... But Nadia saved the day by providing a build that exhibited this issue 100% of the time. With a reliable way to reproduce the bug, I was able to track it down and it was fixed.

Nadia also fixed another bug that caused possible crashes that appeared to be JIT-related, but turned out to be entirely unrelated.

All in all, melonDS 1.1 should be more stable and reliable.

There's also the usual slew of misc bugfixes and improvements.

However, we realized that there's a bug with the JIT that causes a crash on x86 Macs. We will do our best to fix this, but in the meantime, we had to disable that setting under that platform.


Future plans

The hi-res display capture stuff will be for release 1.2. Even if I could rush to finish it for 1.1, it wouldn't be wise. Something of this scope will need comprehensive testing.

I also have more ideas that will also be for further releases. I want to experiment with RTCom support, netplay, a different type of UI, ...

And then there's also changes I have in mind for this website. The current layout was nice in the early days, but there's a lot of posts now, and it's hard to find specific posts. I'd also want the homepage to present information in a more attractive manner, make it more evident what the latest melonDS version is, maybe have less outdated screenshots, ... so much to do.


Anyway, you can grab melonDS 1.1 on the downloads page, as usual.

You can also donate to the project if you want, that's always appreciated.
9wo says:
Nov 21st 2025
i wish it had achievement too
poudink says:
Nov 22nd 2025
RTCom is the thing that allows joystick support mods for DS games on the 3DS to work. So RTCom support would allow those mods to also work on melonDS, which would be very cool. Sounds like it might be tricky to implement, though.
kevincrans says:
Nov 22nd 2025
That reminds me of analog stick in PS1 games.
poudink says:
Nov 22nd 2025
Well, analog stick PS1 games were a thing that actually officially existed. Sony released official analog controllers and eventually bundled them with most PS1s they sold. Dozens of games supported them and no PS1 emulator would be complete without analog support. Not so with the DS. RTCom is purely a 3DS homebrew thing to be used by DS-mode homebrew and romhacks.
jcolell says:
Nov 22nd 2025
Thanks! hope you will continue to work on this project
kevincrans says:
Nov 23rd 2025
Yeah, but in Harry Potter PS1, use analog stick, and autojump will abandon u drowning in a lava pit.
I assume similar fun glitches could happen if you auto-patch all DS games for analog movement, however every game is different, so I wonder how many games will be supported.

Also, Wall-E could especially use such patch, as you can just move in 4 directions, not even 8.
Caffeine Addict says:
Nov 23rd 2025
I really appreciate you keeping the old opengl renderer as an option, it may not be as accurate as the new compute shader renderer, but because it doesn't properly emulate some things, there is no vertex warping and textures are scaled in a way i like better.
poudink says:
Nov 23rd 2025
This repo has a bunch of RTCom codes for DS games: https://github.com/shocoman/Analog-Controls-for-NDS-Games-on-3DS/tree/master/patches_for_other_games

There's also SM64DS support elsewhere in the repo. Wall-E doesn't seem to be supported, though maybe someone else has made a code for it,.

Also, vertex warping? You mean like on the PS1? As far as I know that shouldn't be a thing on the DS period. And actually, the old OpenGL renderer does having warping issues with textures near screen edges, which is only somewhat mitigated using the polygon splitting option. Also, what about texture scaling? I think every renderer just does nearest neighbour, like the DS does.
joseph says:
Nov 27th 2025
Is it just me or does the audio crackle a lot when the game speed is above 100%? Also slow-mo seems to be bugged for me, when using it the audio sound super distorted and glitchy.
Post a comment
Name:
DO NOT TOUCH