|Home | Downloads | Screenshots | Forums | Source code | RSS | Donate|
|Register | Log in|
melonDS aims at providing fast and accurate Nintendo DS emulation. While it is still a work in progress, it has a pretty solid set of features:
• Nearly complete core (CPU, video, audio, ...)
• JIT recompiler for fast emulation
• OpenGL renderer, 3D upscaling
• RTC, microphone, lid close/open
• Joystick support
• Various display position/sizing/rotation modes
• (WIP) Wifi: local multiplayer, online connectivity
• (WIP) DSi emulation
• (WIP) GBA slot add-ons
• and more are planned!
If you're running into trouble: Howto/FAQ
When your innocuous little code goes kaboom
Oct 18th 2018, by Arisotura
So until we get something amazing to release, we're going to post some technical shito again.
As said in the previous post, I've been coding savestates. The base idea seems simple enough, just throw all the emulator's state into a file (or read it from that file if you were loading a state), make extra sure that you're not missing anything important, regenerating things that need it when loading, etc...
So I first designed the bases of the implementation:
• A savestate file is divided in several sections. Those can be ordered arbitrarily. The file format itself is very simple.
• To reduce complexity, we only handle loading/saving between frames.
• Some questions are still not clear, and I still need a way to avoid loading a savestate over the wrong ROM. (or I could allow it as a fun Easter egg, even if it generally results in a crash)
Then, the gruelling work, storing all the emulator state.
Including, you guess, the event scheduler, which is an array of event structures with an entry per possible event source. Just write that to the savestate file, right?
... read more
|2 comments (last by Anonymous) | Post a comment|
Oct 18th 2018, by Arisotura
Apologies for not keeping this up to date lately.
Anyway, savestates are being coded, and we need your help to test them out. More about this in this reddit post.
Other than that, I tried some hax on my new green DSi. Was able to install unlaunch. I'm not yet able to run DSi homebrew though-- ndstool builds oldschool DS ROM headers, which causes unlaunch to load these ROMs in DS mode. I have yet to figure out how to make ndstool build DSi ROM headers.
On the real life side... I'm getting there. Depression is a bitch tho. And capitalism too. I would feel a lot better if that didn't exist.
|2 comments (last by Micro) | Post a comment|
the plaaaaaans: getting staaaaaarted
Aug 11th 2018, by Arisotura
It's a big DSi. Pretty cool, eh?
Quick inspection reveals that everything is alright. It was factory-reset, tho, so
Still no news of the other order. If you happen to remember, it was returned to sender, and the sender notified me about it and asked me what they should do. I gave them another address to ship to, and even offered to pay for the reship, but since then, silence.
I guess I'll have to give the seller a reminder. Or ask for a refund.
Regardless, I think we can get started with the interesting things... once I'm a bit more settled.
|17 comments (last by Arisotura) | Post a comment|
The 'timing' branch
Aug 7th 2018, by Arisotura
In the meantime, I figured I'd give this a try.
Basic idea is that emulating timings with reasonable accuracy will require emulating the ARM9 caches.
I want to see if I can emulate those without completely killing performance. If I pull it off, there'll be several benefits:
* much more accurate timings, fixing games that do weird things
* homebrew developers using melonDS wouldn't fall into the typical 'forgot to flush/invalidate cache' pitfall that reveals itself when testing on hardware
* if we take it even further, we can emulate the MPU (memory protection unit), which means emulating crashes
I guess that if I manage to get it going, there will be a sorta beta release so I can get feedback about this, whether it's killing performance, etc...
|8 comments (last by poudink) | Post a comment|
Updates on the plaaaaaaans
Jul 30th 2018, by Arisotura
The package was, surprise, returned to sender, because some idiot can't find a mailbox that is street-facing and not hidden or anything fancy. Hell, it's right next to the building's front gate.
I'm trying to see if I can have it shipped at another address which I know should work.
I ordered another one, too (that was before the seller for the first one contacted me about the package), but it won't be shipped until a week.
I guess it can't be a bad idea to get two consoles either way. Like, if one turns out to be less/not haxable, or if I need to do hardmods...
|3 comments (last by Thormented) | Post a comment|
Jul 23rd 2018, by Arisotura
The plan was to receive the package and post a picture of the contents as a reveal, but obviously this is not going as planned. So I guess a shitty reveal is better than teasing people and letting them hang in the void forever.
So here it is.
The next direction for this is DSi emulation.
In the meantime, depending on how things go, I might do some work on GPU accuracy again, but for now I'm taking a few days of vacation.
Upscaling is also something I might try someday. I have some ideas for it, but we'll see.
|16 comments (last by Marquissoats) | Post a comment|
Jul 21st 2018, by Arisotura
Did the package arrive since then?
Of couuuuurse not.
I guess I'm in for another round of fighting the incompetent postal services. Yay.
The sender also didn't provide a tracking number so I have no idea what's going on. This is so fucking amazing.
|2 comments (last by Thelolest) | Post a comment|
Thank you all! :)
Jul 15th 2018, by Arisotura
I don't always take the time to respond to your comments on this site, I'm sorry about it.
But I read your comments. I always do.
And I want to say, thank you. Those comments are real nice.
It's nice to see that you are still following this blog, despite the lack of modern subcription/following features.
(it's also nice to note that the viagra spammer stopped posting spam comments on the blog's second entry. not that their attempts at making links ever worked)
I have been ordering something that should arrive next week, hopefully Monday :)
This is related to the surprise. You'll know soon :)
|15 comments (last by Khangaroo) | Post a comment|
Jul 12th 2018, by Arisotura
I finally intend to keep going with melonDS, in one of the possible directions.
You will know more about this soon, but for now, it's a surprise ;)
|20 comments (last by Marquissoats) | Post a comment|
melonDS status, and plans for the future
Jun 2nd 2018, by Arisotura
I figured I would write this, to give you an idea of melonDS's current status, what has been done and what remains to do.
To reply to the comments on the previous post: melonDS is already open-source, and it has always been. You will find the source code on Github. You can do whatever you want with it, as long as you are respecting the GPL.
So, here's a quick list of how things are and what needs to be done, from the top of my head. Searching the codebase for TODO/FIXME/HACK will find all the items.
All the instructions supported by the ARM7 and ARM9 are implemented.
ARM9-only instructions are enforced, altough this may be incomplete. It's unclear how some of them behave on the ARM7: some throw undefined instruction exceptions, but some seem to do nothing or behave like another instruction.
Cycle counting is rather crude and likely to be wrong for the more complex ARM9. Speaking of, the MPU and cache still have to be implemented (hopefully without killing performance). The first would allow emulating some game/homebrew crashes that happen on hardware, the second would be a requirement for reasonably accurate timings.
All DMA types are implemented, with reasonably accurate timings and operation. Running DMA and ARM9 simultaneously (possible under specific conditions) isn't implemented.
... read more
|11 comments (last by Casgaro) | Post a comment|