melonDS 0.8.3
About fucking time, I guess.

So what does this release bring? Well, we have been trying to address the issues present in previous 0.8.x releases (or sometimes even older releases, heh).

For example, I fixed the bug that was introduced with the new support for Ctrl+K type hotkeys. Basically, using Shift/Ctrl/etc as regular keys mapped to buttons was no longer possible. So, support for key mappings with modifiers was restricted to hotkeys. Meaning that using right Shift as R (as done by the default key mapping) should no longer cause input problems.

I have been trying to fix the issues we had with the framerate limiter and audio output, too, with moderate success. As I haven't been able to come up with a one-size-fits-all fix, there are now three different sync modes you can use, individually or together:

* Limit framerate: the oldschool framerate limiter. Although this is a revamped version that tries to average over several frames, reducing the likelihood of limiting too aggressively on certain games that internally run at 30FPS and are otherwise able to run fullspeed.

* Audio sync: synchronizes emulation to the audio output system. Seems to result in a bit more fluctuation in the framerate, but should prevent any audio stuttering.

* VSync (in the video settings dialog): synchronizes video output to your monitor's refresh rate. This only works with OpenGL, and currently only works under Windows (OpenGL support under Linux still needs more love). Also, DS games/programs may alter their framerate by messing with VCount, which VSync would be ill-equipped to deal with (unlike the two other sync methods).

I think most of the audio issues came from not properly syncing, which resulted in semi-regular overflows or underflows in the SPU FIFO, causing stuttering. The current audio output system cannot be precise enough to prevent those, as it works with small audio frames.

Speaking of which, I have also been revising it to use a more standard output frequency, in case some bad audio driver doesn't appreciate the previous frequency of 47340Hz. Now, it will attempt to run at 48000Hz, but it also allows SDL to specify another frequency if needed.

There are also a few other fixes that were long due (like OpenGL initialization failing under OpenGL <4.2), and some accuracy improvements, as usual.

As promised, beta builds of the JIT and DSi branches are coming soon, so stay tuned! Those will be based off older melonDS versions (0.8.2 and 0.8.1 respectively), though.


melonDS 0.8.3, Windows 64-bit
melonDS 0.8.3, Linux 64-bit

If you're feeling generous: here's our Patreon
Skylark says:
Sep 4th 2019
keep up the good work!
Dante says:
Sep 4th 2019
Sounds great.
Guest says:
Sep 4th 2019
I just updated myself with new info regarding MelonDS, and I can say that V-Sync does appear to be working for me on Linux, however as you had already posted, OpenGL needs more polish on Linux, and while V-Sync appears to smoothen some lags on OpenGL here (most of which have disappeared), the best performance for is indeed without OpenGL altogether.

A different issue though, that came up in my testing, is that the microphone function does not appear to function reliably. It works, but at random intervals (~2% of the time), regardless of the microphone hooked up (neither internal, nor external, nor external via USB audio card, or even using the hotkey). From my testing, all microphone-related tasks work flawlessly outside of MelonDS.

I'm not sure what the source of this issue is, however I do remember meeting this issue a few years ago in DeSMuME, though I hadn't tested DeSMuME for a few years, so I have no idea whether this issue is still there.
And no, I am not suggesting this is a bug carried over, I fully realize that the codebase is completely different.

How should I get logs from MelonDS? Using STrace did not bring me any meaningful information.
thelolest says:
Sep 4th 2019
Thanks for the new release! This emulator is getting better and better :D
Did you get in contact with stuck pixel/dark_samus ?
He was trying to dump the DSi BootROM with an hardware attack some time ago...
Moody says:
Sep 4th 2019
Thank you so much! Hype!
AGW says:
Sep 4th 2019
Thank you so much. This version is a huge improvement compared to 0.8.1. Wanted to share my findings regarding the new sync modes.
Software Mode + New Audio Sync = Perfect Frame pacing & Perfect Sound (No jitters)
OpenGL + VSync = Perfect Frame pacing & Occasional Jitters (Same issue as earlier versions had, still perfectly playable)
OpenGL + New Audio Sync = Frame pacing Issues & Perfect Sound
Arisotura says:
Sep 4th 2019
AGW: try combining OpenGL, VSync and audio sync? :P
Sorer says:
Sep 4th 2019
The last time I compiled the JIT branch i got weird frame skipping issues.
I hope it's fixed when the beta builds out.
Generic alias RSDuck says:
Sep 4th 2019
> The last time I compiled the JIT branch i got weird frame skipping issues.

could you name me the games tested and the git revision?
Sorer says:
Sep 4th 2019
I tried Mario Kart DS using the latest git but i think it happens on every game.
The frame rate is choppy.
It even happens if I disable JIT so it's not that (and even hardware/software renderers wont matter).
They says:
Sep 5th 2019
OpenGL renderer problem (in Pokemon SoulSilver):
Guest says:
Sep 5th 2019
@They, that's a known problem with OpenGL, there's an issue on the GitHub page regarding this which has more information as to why this happens.
Try raising the resolution, the higher the resolution, the less apparent this issue is.
nathanielcwm says:
Sep 5th 2019
The audio is actually better for me without audio sync on but thats probably because my computer isn't powerful enough to run it with audio sync on at 60 fps lol
MelonMan says:
Sep 5th 2019
I have a PC with integrated Intel HD graphics 2000 (windows 10) and when i select my CC in Mario Kart DS (Europe) the screen "shrinks" and I can't click on the screen properly. I have OpenGL on, VSync on, 8x upscaling on and everything else is default. Also, there is no savefile.
Comlud says:
Sep 5th 2019
Yo, nice progress, keep on rolling!
Post a comment