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, ...)
• OpenGL renderer, 3D upscaling
• RTC, microphone, lid close/open
• Joystick support
• Savestates
• Various display position/sizing/rotation modes
• (WIP) Wifi: local multiplayer, online connectivity
• and more are planned!









Download melonDS

If you're running into trouble: Howto/FAQ

If you're feeling generous: melonDS Patreon
oh well
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.


See ya!
blarg.
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.
Thank you all! :)
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 :)
plaaaaans
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 ;)
melonDS status, and plans for the future
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.


CPU

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.


System

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
Sorry.
You probably have noticed it, things are going down.

It's been 5 months since the last release.

What do we have that would be worthy of a 0.7?

The JIT? I started working on it, and... lost motivation.

DLDI? Same story. I hackishly added some commands so it can access a FAT image, and lost motivation to take it any further. For example, accessing the actual host filesystem instead of having to use an image file.

I have pretty much lost motivation. The context I find myself in these days doesn't help, either. I'm mostly just... bouncing between places and having trouble getting really settled.

So for now, melonDS is on hiatus.

I feel bad for those who are still donating to the project. If you are, well... do whatever you want, but consider that melonDS isn't going to see progress for a good while, if not ever.

Sorry.
Long time no see
Things have been pretty busy real life wise. Apologies for the lack of updates regarding melonDS.

You might know how things went lately. I started coding a JIT recompiler for melonDS, then... lost motivation. Oh well.


Instead, I figured I would work on other things. Like, y'know, homebrew. melonDS runs commercial games all neatly and all, but its homebrew support is still subpar.

For one, DLDI support is one of the things I intend to work on. And not just granting filesystem access to homebrew, but actually attempting to emulate one of those flashcarts. It'd be amusing if melonDS could run a flashcart firmware. Not very practical or useful when you can load your ROM directly, but it'd be a cool feat. Besides, it's something the DS can do, so melonDS should also be able to do it.

Even that aside, there are some technically challenging homebrew games. A prime example would be Dirbaio's Fireworlds which pushes the system to its limits (and is also a cool game, try it).

Dirbaio recently put together a NitroFS build of Fireworlds, so that it can run on emulators that don't support DLDI. To give you an idea:

• NO$GBA: crashes after intro
• DeSmuME: runs okay, but no music (console complains about zero-length channels, likely related)
• medusa: crashes when loading level select menu
• dasShiny: gets stuck on NitroFS init

A quick test revealed that it didn't run on melonDS, but it was a rather silly issue (it tried accessing IPCSYNC via 32-bit reads/writes, which melonDS didn't handle). Dirbaio fixed it in a PR, which means Fireworlds finally runs... but not perfectly, heh.

Fireworlds seems to do some weird partial rendering to reduce the 3D engine load (noting that the most extreme levels do cause lagging-3D-engine glitches on the DS), and using display capture to mix together all the parts, or something like that. But it doesn't work right on melonDS and results in some flickering.

... read more
Network support: in the works
You might have seen this thread.

Network support was achieved, but it was roughly equivalent to that of DeSmuME.

Currently, the network interface used by libpcap is hardcoded, I haven't added a UI for this yet.

There is also a disadvantage to this: it only works if your computer is connected via ethernet. It also requires promiscuous mode, which might be a problem in some situations.

I am working on a workaround to this, that allows networking without promiscuous mode. It will have to be tested extensively, but so far I got promising results.
Slowdown
What an original title.


Regardless, it's the case again. Real life is... still a bitch.

I need to change my phone plan, because while it was fine when I mostly used home internet, it sucks big time for more nomad uses. It's one of those plans that completely block internet access once you reach the data cap. So I'm going to switch to a plan with more data and that throttles speed instead of outright blocking. But in the meantime, I'm having trouble getting internet access.


As far as melonDS is concerned, I'm not quite sure what to try.


I have been trying to address the wifi stability issues, without much success. I have been doing a bunch of research on the multiplay communication thing and how it handles errors, thinking that properly handling those would make for a more stable connection (as opposed to always reporting success even when some data didn't make it through).

But so far, it has largely been a failure. At best, my attempts fixed nothing, and they generally made things worse.

I don't understand what it's expecting, so for now I'm putting this on the back burner.


Upscaling is a possibility, but as explained in a previous post, it's not all easy and nice. It'll also require writing a hardware renderer first, which could be a fun challenge.

There are quite a few tricks we can pull with modern OpenGL to emulate the DS GPU as accurately as possible. Obviously it would never get perfect, but we can get close.

... read more
melonDS 0.6b
As promised, the quick fix release is out. There are a few other goodies too.


:)


Windows 64-bit
Linux 64-bit

melonDS Patreon