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.
Generic aka RSDuck says:
Oct 18th 2020
SIGMA: unfortunately latency is too high if the data is sent over the internet
A dragon says:
Oct 18th 2020
Generic, you wouldn't happen to know what the command line switches for MelonDS are by any chance, would you?
Generic aka RSDuck says:
Oct 19th 2020
well there's nothing WaluigiWare64 hasn't already said. melonDS takes a rom for the first parameter, that's it.
A dragon says:
Oct 19th 2020
Okay, I've tried that, but as far as I know it won't autoboot, which is why I asked about this kind of thing.
A dragon says:
Oct 19th 2020
Okay, I'm not sure how, but I got it working now. Strange.
A dragon says:
Oct 19th 2020
I'm guessing I might be doing something to keep steam from saving the shortcuts. Anyway, I think having a command line switches for things such as fullscreen, screen rotation, borderless window mode (I'd recommend this as an alternative option for fullscreen as it solves screen tearing on some of my steam games), etc. might be useful. Arisotura, if you feel like you need a break from those issues, but still want to work on MelonDS, there's some ideas for you to implement for a smaller revision.
A dragon says:
Oct 19th 2020
Okay, so an update on the steam shortcut thing. If you change the name of a shortcut while editing the shortcut and commands, it won't save the shortcut and command changes; only the name gets changed. So if anyone wants to add MelonDS shortcuts to Steam, you might want to set up the shortcut first in properties, then close it, go to properties again, and change the name afterwards.
kevincrans says:
Oct 19th 2020
@Arisotura, can u tell if my post on the first page can help? It also mentions it with 6 vertexes per polygons I recall.
poudink says:
Oct 19th 2020
I think a few people have been able to play melonds local multiplayer through hamachi.
JuanchoES says:
Oct 22nd 2020
ryan says:
Oct 23rd 2020
is there going to be any options to turn on and input cheat codes like in desmume? this would definitely a giant game changer which im sure many would want
WaluigiWare64 says:
Oct 23rd 2020
ryan: action replay code support was added in the 0.9 release.
Landimizer says:
Oct 24th 2020
Something like what Citra does, where you can emulate Local Communications online, is my god damned DREAM! Good luck on working on this, mate. I can't wait to see Local Communications properly.
Anon0 says:
Oct 25th 2020
the audio in Professor Layton games seems to clip when the frame rate limiter is enabled. Plus, higher scaling for some 2d graphics might also be something you could try. Along with custom BIOS and more customisable hotkeys.

Also, take care of yourself. Under these circumstances, it's really easy to overwork yourself and feel like crap all the time. It's great to take a break, even necessary on large ambitious projects like these. You guys have effectively dethroned DesMume.

Stay safe!
Mantazzo says:
Nov 10th 2020
I still want to say - thanks for all your work with the emulator (and everyone else who have helped) - I enjoyed playing some DS games quite a bit.
If I could "throw" a suggestion - if it wouldn't be too difficult and wouldn't throw everything off, maybe you'd consider having "split screen" option in? And not the literal split-screen, I mean that the screens would be split into 2 separate windows instead of being in one window. But I do understand that this could be a difficult (and unnecessary) task, so just a suggestion. Thanks anyway!
Post a comment