![]() (if you're wondering about these colors: I have synesthesia, that's all) To celebrate, like last year, have a new version of the melonDS icon, recolored to the same orange color as 7 itself: This also poses the question of OpenGL context management, all things we will need to look into.ġ0 comments (last by ^.^) | Post a comment For netplay purposes, we might also want to support headless instances, that is, running an emu thread with no window attached, no sound output, and inputs received from the network. We thought we might want to support attaching multiple windows to one emu thread, for example to support displaying each DS screen on a separate window. It wouldn't be difficult to spawn multiple emu threads, one per emulated DS. The latter provides a means to display the emulator's video output and lets the user interact with the emulator, the former feeds the inputs into the melonDS core, runs it and manages it. Historically, the frontend was structured around one emu thread and one emu window. On the frontend side, we need to add support for multiple different emulator windows. But atleast, the biggest part of the work is done. It's also likely not perfect, we will likely have to do more work to clean up and harmonize the codebase. I will need a while to adjust to the new changes that have been done to the melonDS core. On my side, I (finally) ordered a new laptop, so I'm waiting to receive it and set it up before I do more big work on melonDS. ![]() The frontend code is now going to need adequate refactoring too. JesseTG mostly finished the work on the core, so that's one big thing out of the way. What's new since the last post? I had started working on refactoring the melonDS codebase for the ambitious changes to come. Hopefully it's going to get better with the Christmas holidays. * EmuThread.cpp holds the emulation thread. There are two kinds of ScreenPanel: one that relies on Qt's graphics API, and one that uses OpenGL. * Screen.cpp holds the ScreenPanel code, that is, the panel widget that goes inside the emulator window and handles display and touchscreen input. We may also add support for multiple windows. * Window.cpp holds the MainWindow code, for managing the emulator window. * main.cpp just holds the entry point (main()) and global application-related stuff. We are far from done with the cleanup, so there's a lot of cruft around, but the basic idea is the following: I started by splitting main.cpp into separate files. Basically, the frontend code became a mess, and everything was more or less just dumped in the global namespace - there are some modules which live in their own namespaces, but it's all not very modular, and doesn't lend itself to running multiple instances of melonDS. ![]() Obviously, over time we added various features to the emulator, rebuilt the frontend around different UI toolkits, piled on more features, and so on. We had a simple window, a dedicated thread to run the actual emulation, and that was it. Originally, the frontend was just quickly built around the program entry point in main.cpp, as it just needed to provide a means to use the emulator. ![]() The frontend is proving to be tricky, because it was largely built without many regards for code quality. The goal is still the same: to adapt melonDS for supporting multiple instances within one process. Maybe I could have a sort of personal blog for non-melonDS projects of that kind, or just personal stuff in general.ġ1 comments (last by Wowzer) | Post a commentĪs I have received and set up my new laptop, I've been able to work on melonDS some. I've also been caught in a fun side project that involves reverse-engineering (and emulating, heh) ancient FPGAs. January has been rough for me, but things are getting better. Other than that, sorry for the lack of updates lately. I'm having a bit of a question there: if we got multiple windows, which one should have the OSD? The main window? The currently active one? All of them? This is not only part of the ongoing refactor, but would also pave the way for separate windows, a feature that has long been requested. There's still a whole pile of issues to fix, but it's looking promising so far. This is just a quick attempt at supporting multiple windows. If you're running into trouble: Howto/FAQ (WIP) Wifi: local multiplayer, online connectivity.Various display position/sizing/rotation modes.Nearly complete core (CPU, video, audio.While it is still a work in progress, it has a pretty solid set of features: MelonDS aims at providing fast and accurate Nintendo DS emulation.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |