So, I hve been thinking a lot about DraStic Multiplayer recently, and I came up with an idea. In the post mentioned above, Exophase said that there was a latency issue with multiplayer, and that he couldn't get it to work as if the two Android devices were both DSes.Exophase wrote:Nintendo DS's wifi hardware has two use cases and a bunch of different modes to support both. One we'll call "infrastructure", where it's used to connect to some Nintendo server. This is supported by something like a few dozen games. DeSmuME supported this way back when although it was pretty buggy, but I hear it plays a lot better with the custom servers (makes sense since they can willingly optimize both sides for it)
The other mode is where multiple DS's talk to each other in close range, which I've called "NiFi." This mode requires an extremely low latency connection, and uses a lot of hardware features that aren't completely understood. And I don't think DeSmuME's support for this works yet. It was our focus to try to get it to work somehow because of the Nintendo servers closing (but this was before the custom servers), but we haven't been able to get it to do much in emulation, and we couldn't even get a tunnel working with DSes in the same room going over a wired ethernet and shielded DS compatible wifi dongles. I think even if we could get that working we wouldn't be able to emulate it well with a direct connection because the latency requirements are so ridiculously high.
What I think is the best potential path for NiFi emulation is the same that I think is the best method for Gameboy and GBA link emulation: emulate two instances of the DS on one machine and synchronize button presses across the network instead of the NiFi connection (with the NiFi connection emulated locally). This would allow it to be used over the internet to some extent, especially if the use is things like trading Pokemon. But there'd be a large performance overhead emulating two DSes, even where you could get away without emulating video and such on the other one. And it'd require a big rewrite to support this. That, and we still don't really understand the hardware enough to get emulation working.
Getting infrastructure to work so it matches up with DeSmuME's support and can work decently with custom servers is probably a better thing to focus on. That does however mean that patched ROMs need to be used, because they're normally hardcoded to only work with the WFC server (they need the right SSL keys that can't be faked) I think we would need an autopatcher at the very least, and one that requires as little user setup as possible, or we'd be inundated with people asking us how to use it..
But at least the custom servers have some support for Pokemon (presumably for trading?), which is mostly what anyone wants wifi for. At least according to the list here: https://github.com/polaris-/dwc_network ... patibility So that's promising.
Well, consider this: all you'd need to do is take the DS multiplayer signal, adjust the latency to a sendable form, send that to the other device using WiFi/Bluetooth/etc., and then re-adjust the signal to its original state.
(reader's mind explodes )
So, Exophase, does that solve the issue?