melonDS 0.8.3 released

melonDS 0.8.3 released


StapleButter has released a new version of melonDS, which is an open source Nintendo DS emulator for various computer platforms. melonDS allows you to play your classic collection of Nintendo DS games on your modern device. This new version features audio and video sync fixes and Hydr8gon the Nintendo Switch porter has mentioned that once ARM64 JIT is done we'll see a new release for that platform.

What's New?

• fix ARM 'shift by register' operands (fixes Mario Party DS 'Stick and Spin' minigame)
• remove glBindImageTexture() (not needed and requires GL 4.2)
• fix input bugs when using Ctrl/Alt/Shift keys for buttons
• fix possible crashes when exiting (again. heh)
• 2D: support forcedblank+masterbrightness
• 2D: fill gaps in implementation (mode6 on sub GPU, mode7, 'prohibited' modes/sizes for OBJ and largeBG)
• build fixes
• fix division edge case (xperia64)
• new FPS limiter, audio sync, vsync for OpenGL
• add warning message if romlist.bin is not found (Zettymaster)

Quote:

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.

Post a Comment

0 Comments