![]() |
Home | Downloads | Screenshots | Forums | Source code | RSS | Donate |
Register | Log in |
![]() • Nearly complete core (CPU, video, audio, ...) • JIT recompiler for fast emulation • OpenGL renderer, 3D upscaling • RTC, microphone, lid close/open • Joystick support • Savestates • Various display position/sizing/rotation modes • (WIP) Wifi: local multiplayer, online connectivity • (WIP) DSi emulation • DLDI • (WIP) GBA slot add-ons • and more are planned! Download melonDS If you're running into trouble: Howto/FAQ |
Pages:12345678···21 |
LAN: finally merged! Aug 10th 2024, by Arisotura |
As promised, LAN multiplayer is mostly finished, and a first version of it has been merged. This feature was already largely functional, so all that was needed was to backport it to the modern melonDS codebase and fix up the UI side of it. We can also thank Nadia who provided great help fixing up the ENet integration. You may now grab it over at Github, in the Actions tab (you will need a Github account). The way this works is the same, so I will simply copy-paste from that old post: How to get a LAN game going: 1. On the host machine: open melonDS, then System -> Multiplayer -> Host LAN game. You enter a player name and you're good to go. 2. On client machines: open melonDS, then System -> Multiplayer -> Join LAN game. Enter your player name there, then it should list any existing LAN games. If not, you can always try using the direct connect button. 3. Once all sides are connected to the LAN game, you can open a ROM on each machine and try getting a game going. Do note that you will need a good local network for this to work. Ethernet should work, but anything else may fail if the latency can get too high. In my experience, wifi has too much latency. This marks the end of season 3, and the beginning of season 4: netplay. Ironically, netplay was the original goal of season 2 -- LAN happened more or less as an experimental side project, and it happened to work out rather well, so it stuck around. So, stay tuned for the netplay adventures! Also, we are working out how to properly label melonDS builds from the CI, releases and nightlies alike. When we figure it out, I will probably add the download section for nightlies. |
18 comments (last by Arisotura) | Post a comment |
Updates to the downloads section Aug 9th 2024, by Arisotura |
I have been making updates to the site lately. About time. Namely, the downloads page didn't do our project justice. It was just a very plain listing of all the melonDS releases since 0.1. Technically, it was a static page that I manually updated after each release. But this is no more! Go check out the new downloads page. Now it shows just the last melonDS release. However, if you go down, there is an extra page that will list all the older releases, just like the old download page. Except it's not a static page, so new releases can be added without having to modify everything by hand. I am even thinking of adding a Github hook to post releases automatically when they are posted there, but one thing at a time. There is also another section named 'Misc. tools'. For now, there's nothing in it, but I plan to add all sorts of tools that are relevant to melonDS or DS emulation in general. For example the DSi dumper comes to mind -- there would be a stable place to get it rather than having to dig into the blog. I will probably add that in real quick. (edit- I did; after 3 years, about time) And there's a last section, that isn't finished yet: nightly builds. The idea was to provide access to builds from the Github CI without requiring users to have a Github account. I coded a Github hook and a backend for it, which downloads the builds from Github onto the server, and keeps the last 100 commits. However, this raises a few questions. We need to make sure nightly builds don't spread and cause confusion. Right now, any melonDS build just uses the same version number as the last release, which isn't ideal. We would need a way to properly identify builds to avoid confusion. ... read more |
3 comments (last by Dwight Thomas) | Post a comment |
LAN: almost done! Aug 7th 2024, by Arisotura |
Those of you who pay attention to our git repo may have noticed the recent activity in the season3 branch. The plan was to backport the LAN and netplay features to a recent branch, since the old season2 branch was way outdated. It is over one year old, and a lot of refactoring has happened since then. I figured that backporting them would be easier than trying to get season2 up to date, so that was why season3 was started. I didn't even realize season2 was that old before I checked. Shows how good my perception of time is, really. Anyway, the backporting is going smoothly so far. The LAN feature is fully ported, and it seems to be functioning. Also, JesseTG helpfully moved the network interfaces to their own module, so different frontends can reuse them. I based my work on that, and added an interface to switch between multiplayer modes (local, LAN, netplay). All that is missing is some polish on the UI side. I will take care of the biggest problems, make sure it all works smoothly, and we will merge season3 very quickly. This will enable you to test LAN multiplayer by simply grabbing our nightly builds (from Github's Actions tab; you need a Github account). After that, I will tackle netplay in what will be season4. For now, I brought in the netplay related code, but I just commented out a lot of it so melonDS would build. It is nowhere near functional for now, and there is more work with it. But on the other hand, several of the issues I had encountered during the original implementation are now solved. For example, my original idea to get multiple instances started with the exact same state was to use the savestate system. Take a snapshot of one instance's state, send it over the network to other instances, which can just apply it and be all set (or so I hope). Sounds easy enough. Except the savestate system was coded to deal with files directly. I had worked around it in a very ugly way, but the issue has since been fixed, the savestate system operates on memory chunks now. ... read more |
6 comments (last by Unknown Messenger) | Post a comment |
Sorry for the downtime Jul 24th 2024, by Arisotura |
For some reason we had DNS trouble affecting our kuribo64.net subdomains. Things should progressively go back to normal now. |
10 comments (last by melonJYC) | Post a comment |
Backporting LAN and netplay: we're getting started! Jul 18th 2024, by Arisotura |
Progress on this will happen in the season3 branch. For now, this branch doesn't even build, so don't get all excited about it yet :P LAN should not be too difficult to backport, as it was largely functional. Netplay will be another story. It was built around the old multi-process IPC system, and is generally obsolete, so a lot of reworking will be needed to get it functional again. I'm hoping to be able to get all that to a functional state by November. We'll see how this goes. There's also work needed to properly integrate this to the UI. I'm thinking of enforcing one melonDS instance only when using LAN or netplay, to keep things simpler. For netplay, it would pretty much be required anyway, as we will need to have instances set up in a specific way. You can tell things aren't super fast on my side, I've pretty much taken a one-month break after getting doublemelon done. I need a big break from melonDS, which I will hopefully take after 1.0 is released. |
10 comments (last by kikilxve) | Post a comment |
News of the refactor: doublemelon is merged Jun 15th 2024, by Arisotura |
Finally, time has come to merge the doublemelon branch. This was the second big step of the refactor (after refactoring the core). It is now done, so we have a good base upon which to build the features we want for melonDS 1.0. There is still a lot of work to do. Many areas of the codebase are less than ideal, there are some old bugs that linger and that we need to address, but we will get there in due time. melonDS 1.0 will be big, and we can't afford to let any stupid bugs slide. But for now, a quick list of the changes the doublemelon merger is bringing in: Some base work is laid for multi-window support. There will be more work to get it working correctly, but we do have a good base going now. This was the original intention behind the doublemelon branch, it just became a step in the refactor because it was pretty much required. The configuration system has been remade to be much more flexible. There is code in place to translate legacy config files to the new format, so you won't lose your settings. The frontend components have been properly encapsulated, which allows for proper multi-instance support. As of now, we still need to deal with a workaround in the JIT, so multi-instance will only work with the interpreter. Thank you all for your support, and stay tuned for more! |
19 comments (last by Luxion) | Post a comment |
News of the refactor: almost there! Jun 10th 2024, by Arisotura |
Basically what it says on the tin. I am working on the last big part of this refactor: the network interfaces. You might already know melonDS employs two different network interfaces: one for local multiplayer (between multiple melonDS instances) and one for outer network, which lets melonDS connect to external servers (like WFC) through libslirp or PCap. These need to be adapted to the refactor, too. Adapting the local multiplayer interface wasn't that hard. What I did was simply change the shared memory buffer to a regular memory buffer guarded by a mutex, and change the interprocess semaphores to regular semaphores. This makes the code simpler and easier to deal with. From a performance perspective, I haven't observed a huge improvement from this change, atleast under Linux. However, the gains will be apparent when we will be reimplementing netplay: managing multiple emulator instances is going to be a whole lot easier and more reliable when they are all contained within the same process. Then I moved on to the outer network interfaces. I had a bit of a debate as to whether to make them instance-specific. Because it could make sense to have them be shared across instances: these instances could be networked together rather than being isolated. It's a bit of a hypothetical scenario, but I like the possibility. It requires, among other things, sharing around data frames. So this is what I'm working on: designing a packet queue system that can broadcast packets across all emulator instances in a reliable and efficient way. Once I've tackled the network part of melonDS, the refactor will be mostly done. There will be a few bugs and misc things to iron out, and we will be good to finally merge it. There will still be a lot of stuff to fix and rework, but we will atleast be in a somewhat workable state. |
13 comments (last by Isabella) | Post a comment |
Refactor still underway... May 27th 2024, by Arisotura |
There has been pretty good progress done, though. We have decided against merging my branch until it's a bit more complete, but it's getting pretty close at this point. I finished porting everything to use the new configuration system, and thus the old system (really just a pile of global variables) is no more. Most of the frontend is also properly encapsulated. What remains at this point is the core-frontend glue (Platform.cpp) and the networking code. There will still be a bunch of cleanup and fixes to do, but we're getting there! The first goal is to get everything encapsulated so it becomes possible to run multiple DS instances within the same melonDS process. The code may not be the best or the prettiest, but we can always go back and fix up things later, when the bulk of the work is done. Quite the audacious refactor, given the sheer scale of it, but it's definitely worth it. Even if it can feel paralyzing at times. Stay tuned! |
17 comments (last by AlexHalley) | Post a comment |
Refactor underway May 15th 2024, by Arisotura |
Due to the scope of the refactor, keeping it all in a separate branch will not be feasible. I will have to merge my branch soon (hopefully by the end of the week). This means that while the refactor is in progress, CI builds will be more or less rather broken and unstable, so don't rely on them. We also plan on putting up 'beta' builds with certain features of interest, namely the compute shader renderer that has been merged recently, or season2 (the experimental LAN/netplay branch). Also, side note: the comment section is not for posting your brainfarts. Pointless comments will be deleted. Repeated pointless comments will get you banned. Thank you. |
12 comments (last by IdkWhatItIs) | Post a comment |
A couple notes about the Delta release Apr 24th 2024, by Arisotura |
It appears that the recent release of Delta on the Apple app store is giving us extra attention. While this is nice, I would like to state a few things. First, we the melonDS team are not responsible for third-party ports (with the exception of Generic supporting the Switch port, since he made it). Our scope is limited to the melonDS core and the desktop frontend (ie. the Windows, Linux and macOS versions). If you are running into issues with Delta, or with any port of melonDS: you should contact the authors of that port. Members of our community may also be able to help you, but contacting the port authors directly may be quicker. It is also worth noting that port authors are responsible for keeping their port up-to-date. At the time of writing this, Delta is using melonDS 0.9.1 as its core, which is quite outdated by now. If you're running into emulation issues with Delta, chances are that the bugs have long been fixed, but you will need to bug the Delta authors to update their port. We have tried to contact them about this, but haven't received a response yet. tl;dr: if you are running into any issue with Delta, or any melonDS port, please ask the authors of that port first. Second point, emulation frontends like Delta, RetroArch or BizHawk (to name a few) are definitely impressive pieces of work, but it is worth keeping in mind that they wouldn't be possible without the work from the emulator authors who provide the cores these frontends use. So if you're considering donating towards these frontend projects, try to keep the underlying emulator core projects in mind too. That being said, we have already seen an influx of new patrons, so thank you folks! Third point, not related to Delta per se, but this is prompted by the situation: I'm planning a bunch of updates to the site. ... read more |
20 comments (last by Matthew) | Post a comment |
Pages:12345678···21 |