Sneak peek of melonDS 0.9
There's not going to be any fancy screenshot here, simply because there isn't much that is worth a screenshot. However, I figured I'd give a little status update, because it's been a while. There's been a lot of work done so far, and we're not done yet.


So, first of all, the whole 'new UI' adventure.

Again.

At this point, it's been what, four total UIs melonDS has had, counting the one being made.

The very first one didn't even see an actual release. Can't even really call it an UI, it was nothing more than a bare window using the Win32 API directly, along with some hardcoded input mappings, that just served to help me get the emulator core going.

Obviously, it was specific to Windows, and I wanted melonDS to be cross-platform, so it was thrown away. I didn't want to have to maintain separate frontends for each OS, so using a cross-platform UI toolkit was a must. I wanted something that was relatively lightweight, and if possible, used native widgets instead of reimplementing them.

Thus, the 0.1 release came with a wxWidgets UI. Due to not being able to make wxWidgets and SDL interoperate smoothly, the UI was a clunky mess that came in separate windows. But atleast it was more user-friendly, and worked under Linux.

The wxWidgets UI was eventually retired with the 0.5 release. I went with libui, which was small enough that I was able to modify it to meet my needs. The new UI even had several improvements over the previous one. libui's design was not optimal, but it was good enough for what we wanted, so we built upon it for the next releases.

Fast forward to now. As you might have read in the previous posts, we've been wanting to add new features to melonDS, but found that libui lacks support for what we need. We didn't want to spend forever building upon libui, so we decided it was time, after more than two years of service, to retire the good ol' libui UI.

We thought about this for a long while, and in the end, went with Qt for the new UI. I have concerns about this, but I'm hoping for the best.


So how is the Qt adventure going so far?

Pretty good. Qt is fairly nice to work with. The new UI is almost on par with the old one, and in some ways it's better. You can see the progress in our git, in the qt branch.

At the time of writing this, the big things that still need to be taken care of are OpenGL support and the wifi interfaces. And, of course, building an UI for the cheat engine I wrote in February.

There will also be the whole issue of packaging this all up, especially on Windows. The current Qt builds require no less than 25 DLLs. Compare that to the measly 4 DLLs the libui versions came with... We'll need to look into static linking to avoid this madness.

I also want to look into providing Mac builds. Will probably involve installing an OSX VM, sounds like a lot of fun.


As for the rest, I'm keeping some surprise on the upcoming 0.9 features :)
poudink says:
May 21st 2020
wouldn't it be five UIs? the repository has an old imgui branch too.
Amnesia says:
May 21st 2020
Awesome
Generic aka RSDuck says:
May 21st 2020
> wouldn't it be five UIs? the repository has an old imgui branch too.

if you were that exact you could also add Hydr8gon's and mine switch gui ^^
Arisotura says:
May 21st 2020
I was referring to desktop UIs, also the imgui branch doesn't really count, it never went anywhere :P
MelonMan says:
May 22nd 2020
Nice to see progress! Also didn't Apple decaprecate OpenGL and replace it with Metal?
Amnesia says:
May 22nd 2020
You could put the new dependencies needed to compile the qt version (just to see the preview). Thanks again for this excellent emulator.
poudink says:
May 22nd 2020
yes, they did, but OpenGL is still available for now despite being deprecated. After it is removed though, the only options will be either to implement a Vulkan renderer with moltenVK or a Metal renderer, or to stick with the software renderer.
Zinx says:
May 22nd 2020
I dont think OpenGL is deprecated yet.
The renderer is quite good and give good performance for all vendors (even AMD) but I think there might be some vender specfiic bugs in it.
No need for replacement.
MelonMan says:
May 22nd 2020
Amnesia: I built the qt branch using msys2. Do you want it?
MelonMan says:
May 22nd 2020
I have to say, its actually quite nice! Great work Arisotura & co.!
hammy3502 says:
May 22nd 2020
Happy to hear all of the progress that's being made; thank you for all the work you're doing for the DS emulation community!
Amnesia says:
May 22nd 2020
MelonMan: That would be excellent. If you could pass me the new units and commands I would appreciate it, to follow the development of the new UI.
Amnesia says:
May 22nd 2020
units=dependencies (translator error)
Comlud says:
May 23rd 2020
Updates are highly appreciated! Good luck with 0.9 :)
MelonMan says:
May 23rd 2020
A build from yesterday - https://mega.nz/file/3ewAFSSK#vXGaV9e4_j8zpD0m3gRB7oLBWKi4J6iRVjMnOM13h6c

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
MelonMan's guide to building melonDS - qt branch.
-
Note: Run commands without the quotes.

1. Download and install MSYS 2 (msys2.org)
2. Open the MSYS2 MinGW 64-bit terminal (important!)
3. Run the command "pacman -Sy msys2-runtime" and reopen the terminal if it asks you to. Then run "pacman -Syu" and reopen the terminal if it asks you to. Remember, open the MSYS2 MinGW 64-bit terminal.
4. Run "pacman -S git make mingw-w64-x86_64-{cmake,mesa,SDL2,toolchain,qt5}"
5. Now run these commands:
"
git clone -b qt https://github.com/Arisotura/melonDS.git
cd melonDS
mkdir build
cd build
cmake .. -G "MSYS Makefiles"
make -j$(nproc --all)
../msys-dist.sh
"
6. Now open your MSYS directory in Windows File Explorer (default C:\msys64) => home => Your Name => melonDS => build => dist.
7. Now unzip this file to the dist folder -
https://mega.nz/file/LDpgnSDL#-baDWWhKC-FEeooxkseg_lBFqZhyfpXQm-Rd2t-uSa8
8. And, you're done. It isn't finished yet so some settings may not be available (for example Video Settings.)
Post a comment
Name:
DO NOT TOUCH