melonDS 0.7.1 -- here it is!
As title says.

We're not showing screenshots because they wouldn't be a good medium for conveying the number of changes in this release.


The biggest change here is that the core timings were entirely renovated to try being closer to the hardware.

First of all, after several days of gruelling testing and guesswork, we were finally able to understand the GX timings, and emulate them properly for the first time. But, as we weren't gonna stop there, we also renovated the timings for DMA and memory accesses, so that both of them are closer to their hardware counterparts. DMA and ARM7 should be pretty close to perfection now, ARM9 less so but it's still more realistic.

We have also been fixing the emulator's main loop, so that the ARM9, ARM7 and system clocks shouldn't desync anymore.

All of this, with a few added optimizations, fixes a whole bunch of issues, from things flickering to audio crackling to games outright going haywire (hi RaymanDS). Your games are now running better than ever!

... or not. That's also the point of the 0.7.1 release, I want to hear about any issues caused by the timing renovation, so we can get them fixed for the epic 0.8.

We already have one such issue, all of this is causing sprite flickering in Pokémon Platinum. Quick attempts at fixing this went nowhere, so we will have to investigate this proper.


There's also a number of misc fixes. For example, the 3D glitches that showed up in Mario Kart DS were fixed, but there's already a lengthy post about this.

There's a small fix to 2D windows, nothing really noteworthy, just fixes a game that was setting up backwards windows.

The input system no longer requires a dpad to be mapped to directional keys for joystick axes to work.

The code that looks for local files (melonDS.ini, BIOS, firmware...) was modified to explicitly check the directory melonDS is in, if that is not the same as the working directory. So in these cases it will no longer fail to find its files. Also, if melonDS.ini is absent, the preferred directory for creating it is the directory melonDS is in.

And, finally, we finally got rid of the old savemem type autodetect code. Considering its complexity and the amount of failures, it was a trainwreck. So instead, now, melonDS will pull that information from the provided ROM database (romlist.bin).

Edit- If your game is still failing to save: you might have an old failed save file lying around, try deleting it. When a save file is present, melonDS determines the savemem type from the file size, so if a file is present with a wrong size, you will have to delete it.


Enjoy!


Windows 64-bit
Linux 64-bit

melonDS Patreon
blank says:
Dec 12th 2018
Is there a turbo button?
Arisotura says:
Dec 12th 2018
not yet
Nick says:
Dec 12th 2018
The only graphical problem I noticed while running it that you didn't mention was the visual glitching on the parachutes in the CoD:MW3 intro. Your threaded 3D render is pretty damn fast too. I was surprised how smooth everything ran. Audio wise it sounds very much like a real DS. I do kind of miss the clean sounding audio in desmume, but I'll take not configuring much of anything over tweaking a bunch of options. Oh I did notice a single pixel line from the top screen above the bottom screen when they were oriented horizontally. As far as software quality goes if I had to give it a score I'd say maybe 8 out of 10, but I can tell if it's developed further it'd surpass most DS emulators out there
Arisotura says:
Dec 12th 2018
I didn't mention it because I didn't test that game, heh

which is why we have people test melonDS and all :P
Dante Seal says:
Dec 12th 2018
Great work. :D

You who understands the subject... What kind of magic do the No$GBA be so fast (1.5 ~2x faster than DesMume)?
Nick says:
Dec 12th 2018
StapleButter: Lol sorry I screwed up my wording. What I meant was I noticed an error besides the one you mentioned.
poudink says:
Dec 12th 2018
from what I understand, the magic no$gba uses is speed hacks.
Dante Seal says:
Dec 13th 2018
Poudink - Hm... Doesn't look like it, mate. Because in Desmume with speedhacks games run slow and crashing, and in No$GBA all is quite fluid. .-.
Arisotura says:
Dec 13th 2018
NO$GBA is written completely in i386 ASM. it's also far from accurate. for example it runs everything way too fast -- start a new game in Rayman DS and you'll see what that implies.

to give you an idea: playing it atm. the intro travelling went completely haywire, but regardless, I was able to start a game. I broke the fence thing and jumped in the vent, and then... it froze.
Dante Seal says:
Dec 13th 2018
I think I understand... Although impressive, the No$Gba solution exchange compatibility for speed. BTW, maybe if the emulator had an option to switch between a recompiler for speed and a different one for compatibility would be amazing.

In fact, at that time Melon still uses an interpreter, mate?
Arisotura says:
Dec 14th 2018
it does, yeah. I'm not positive about the whole dynarec thing tho, I'm afraid it'd either lose too much accuracy or not be worth it considering the timing requirements.

I mean, there's the ARM9 which is a puny 66MHz, but also the ARM7, GX (command processor), timers, and all the other hardware which we have to keep in sync. let those drift too far away from eachother and shit goes haywire.
Dante Seal says:
Dec 15th 2018
But with the interpreter will be possible to run all games at 60 fps on a average CPU ?

I don't know if this is a bug, but I noticed that even in emulators that already use recompiler(Desmume and No$GBA), some games are particularly hard to run on average/mid cpu (i5 4460), sometimes even an i7-(non K) cannot keep 60 fps stable.
Post a comment
Name:
DO NOT TOUCH