Sorry for the silence lately
I know that since the 0.9 release, there hasn't been a lot of progress. On my side, things have been pretty rough, especially regarding depression. Under these circumstances, it's good to take a break.

Anyway, what can we attempt doing, at this point?

Besides dealing with the pull requests and issue reports?

One thing I was working on lately was DSi camera support, but I didn't get too far. I'm going to need hardware tests to figure out how the camera hardware works. Considering the lenghty initialization procedure for those, it's not quite something I look forward to. So I'll post more about this when I get further into it.

I have ideas for the OpenGL renderer, namely, a better method for rendering quads. It would need more work for an implementation though, but might be worth it.

But, one of my main concerns is about wifi, especially local multiplayer.

At this point, melonDS is mainly known as 'the wifi emulator'. It's a bit sad that, 3 years after we got it working, we're still telling people to disable their framerate limiter and pray. We can probably do better.

It's not like we haven't tried, though. You might have seen that branch named 'betterer_wifi' in the repo. I was hoping to run the wifi with more stable timing, but it was a trainwreck, it performed even worse than our current method.

The main issue with local multiplayer is that it requires tight synchronization to function. You might remember how finicky it was back in the old days, you would start lagging and disconnecting as soon as your friend was more than 10m away from you. Long story short, the protocol works by having the host repeatedly poll its clients, multiple times per frame, and each client is given a narrow window to respond (the time given is barely greater than what it takes to transfer the response frame).

On melonDS, things are even worse as it's difficult to tell whether wifi issues arise from bad emulation of the wifi hardware, or from transmit errors, or both. We use BSD sockets as a means of transmitting frames, which inherently adds some lag. The way melonDS runs is also problematic in that it's just running as fast as possible, which can result in the wifi system running faster than it should. The throttling mechanisms, be it audio sync or framerate limiter, only kick in every once in a while, so they only make things worse at the scale of wifi operation.

So, for local multiplayer to function correctly, we would need to overhaul it. Basically, synchronize things tightly based on multiplayer frame exchanges. How to do so without ruining performance, good question.

One possibility I thought of would be running multiple DSes inside one melonDS instance, akin to NO$GBA. However this would require quite some refactoring, as the melonDS codebase was built around the assumption that it would only ever emulate one system per instance.

The other possibility is, well, reworking how we do the whole IPC. Figuring out a fast way to do IPC (we're talking about microsecond-order timings). Synchronizing melonDS instances tightly. And so on.

Welp. Time will tell how this goes, I guess.
pokemon says:
Oct 14th 2020
fake sd card for dsi
like using a folder says:
Oct 14th 2020
like using a folder instead of an sd card image(.img)
WaluigiWare64 says:
Oct 14th 2020
>fake sd card for dsi
You can already use images for the sd card.

>use a folder instead of an sd card image.
You can mount it with a tool like OSFMount and after you do that you can use the image like a normal drive.
kevincrans says:
Oct 14th 2020
Or ImDisk virtual disk, that one supports a lot of formats
Sharkyolk says:
Oct 15th 2020
Fullscreen would make MelonDS nearly perfect, it's so close. Supporting those 16:9 patches people are making for DS games could bring a lot of eyes to the emulator too!
Pokemon says:
Oct 15th 2020
Generate an sd card image via melonds
WaluigiWare64 says:
Oct 15th 2020
Sharkyolk: As poudink said recently, my PR for a fullscreen hotkey was merged recently.
You'll see fullscreen in the next version!
=< says:
Oct 16th 2020
I hope things get better Ari <3
Tada! says:
Oct 16th 2020
I hope you feel better soon! You've done amazing work, and I'm always amazed at what you all have done. As for a feature I'm hoping, I would say touch screen support for windows 10. I know it works a bit differently with taps, and games like OSU and retroarch have options to enable touch mode, otherwise you need to double tap to make a single tap
Generic aka RSDuck says:
Oct 17th 2020
the touchscreen works fine on Windows 10. Do you have a hiDPI display, those are known to give all sorts of issues?
thatguysN64 says:
Oct 17th 2020
depression sucks. and today its very common considering whats going on. i was hit hard with it 5 years ago. heres what helped me. many bananas and a bike ride. i read somewhere bananas can help with depression. anyways dont burn your self out just pace your self with this project :P Get better!
Tada! says:
Oct 17th 2020
I've used a standard touch screen monitor. From looking online, a lot of programs have this issue as windows 10 itself doesn't let you change a singe tap to recognize as a click, so two taps are necessary. While this isn't an issue if you drag the touch along since it picks up the movement, for games like rhythm heaven this can be trickier as you need to double tap to register a single. I'm not sure on the specifics, but programs can be coded to look for single taps and register that as a click, like Osu. Oddly enough, retroarch has this function built in, so playing the melonds core with this option turned on fixes this problem, I've just double checked. It's pretty niche of an issue since most people aren't playing melonds on a pc with a touch screen. Sorry if I'm taking away from the post, I really do appreciate your work and I don't want to come off as rude or entitled
Generic aka RSDuck says:
Oct 17th 2020
I see, so you're using a real touchscreen. We have any specific code for touchscreens, only for mice, so we're currently entirely reliant on how Windows translates touchscreen actions into mouse input.
Sorer says:
Oct 18th 2020
I know that Citra got support for touchscreen monitors on PCs so maybe someone could import the code from there.
SIGMA says:
Oct 18th 2020
With how hard it is to get local multiplayer running right, I am going to assume it'll be impossible to play it online through virtual LAN programs like Hamachi/Radmin VPN?
Post a comment
Name:
DO NOT TOUCH