melonDS 0.1: soon a thing!
And yet, it may very well take a while.

As stated in the TODO list, the main remaining thing to do, besides fixes to timers, is building an actual UI for melonDS. The current one was something I had thrown together quickly early in development so I could see graphics. melonDS was barely beginning to run things, it supported VRAM display so it could run ARMWrestler, then got some extra graphics support, enough to render the DS firmware interface.

Things have changed a lot since then. melonDS now has an almost-complete 2D renderer with more accurate colors than the other emulators out there, and even a 3D renderer that is more than satisfying for a first release. It got support for a bunch of things that don't sound very exciting but are required to get games working. All in all, I believe we have a fairly solid emulator base.

But the interface is still lame. It still loads a ROM from a hardcoded filename. It's still a barebones video output and a console spewing nonsense as the game runs. It still has hardcoded (and retarded) key mappings.

The current interface is made of Windows-specific code, which is why I didn't build upon it; I want something cross-platform.

I'm still having trouble deciding what I will work with for this UI. I'm considering libui and SDL, if I can get them to cooperate. I want something lightweight, melonDS is going to stay pretty simple. As for SDL, I'm going to need it (or an equivalent library) for things like joystick input or audio output.

I initially hoped to be able to stay away from Visual Studio as far as Windows is concerned, but to my regret, alternate solutions are more or less of a headache to get working. So I'm likely going to ditch the CodeBlocks project and use CMake.

Which reminds me why I have been postponing the UI stuff: I would rather work on interesting emulation stuff than go through this trouble for a cross-platform UI. I recently discovered that there is an aging cart (Nintendo-internal test ROM) for the DS, and of course, I want to run it in melonDS to see how good it does. None of the emulators I know of pass the whole test, which means that either the test ROM is tricky or the emulators aren't as good as we think. Well, in its current state, melonDS wouldn't pass it either, but there's room for improvement.

No screenshots for this post, I'm keeping some surprise for the release ;)
anonymous says:
Mar 21st 2017
Just an update on my previous comment. The wonky textures in Castlevania:DoS and many others were fixed by git#3dd79d6.
Arisotura says:
Mar 21st 2017
UI will eventually get more flexible, but it's not the highest priority.


Regarding wxWidgets, that sounds real bad. I hope I can get around it by linking wxWidgets statically. (I also doubt the ABI thing is really related to wxWidgets)

Otherwise, I considered libui, and am still thinking about it, but I haven't yet managed to build it -- VC throws nonsensical errors.

As for GTK or Qt, the former seems to require a ton of ported Linux libraries to run under Windows, and does its own thing instead of using native controls. The latter is a behemoth, and I don't need something huge for a simple UI.

I will likely switch to libui if wxWidgets turns out to be too much trouble. I don't want to have to make a different UI per platform and end up into the same mess as desmume.
CodeJuan says:
Mar 21st 2017
Good luck! DS deserves better than Desmume.
Dawn says:
Mar 22nd 2017
Thank you for your response, StapleButter!

The ABI thing is a conscious choice by the wxWidgets developers- normally programs are not required to use a library with a perfectly matching ABI.
See this line in the code here:
https://github.com/wxWidgets/wxWidgets/blob/b99d28bb4657c2533df717a5ddb1cfc19cabe92a/src/common/appbase.cpp#L846

I've worked with both GTK and Qt in the past, and I can't say I'm in love with either of them- they're both rather bulky. But they can get the job done.

I don't have experience with building/running anything that uses libui- it seems to be a relatively new library. I don't see any red flags from taking a cursory glance at its repository. I don't think most issues with UI libraries are discovered by cursory glances though.
The concept of a simplistic but portable UI library sound very much in-line with your design principles.

At any rate, I wish you the best of luck (and the least amount of hassle in getting a UI for melonDS)!
ufopaper says:
May 2nd 2017
If you go for libretro, you can focus on emulation and still have an interface running on Windows,Linux,Mac,PS3,Wii,Rasperberry Pi 2/3,Android,iOS
What is keeping you away from this? It would be interesting to know what the disincentives are to support libretro.
Darwin says:
Sep 14th 2017
<b>cant wait</b>
Post a comment
Name:
DO NOT TOUCH