4 ms·
A decade+ ago I played Pokemon on GBC/GBA emulators and I always wondered why I can't play online link cable multiplayer and back then I heard that the link cab
by hatsunearu 5y ago
A decade+ ago I played Pokemon on GBC/GBA emulators and I always wondered why I can't play online link cable multiplayer and back then I heard that the link cable requires real time communication and any sort of network latency will kill the RT guarantee--I wonder what's different now?
edit: okay looks like their scheme doesn't work for arbitrary games and arbitrary protocols.
- raldi 5y agoThat doesn’t make sense; an emulator could simulate any latency it wants.
- hatsunearu 5y agoYeah, I think if you did the "dumb" approach of simulating SPI bit-for-bit (or byte by byte, etc) over networking it will quickly break down (like, you'd have to pause the emulation while the packets roll in...?) I think their approach of understanding how the protocol actually works and making a latency tolerant networking layer on top of it might work for pokemon (assuming the pokemon game code allows this)
- esrauch 5y agoI don't think it's that simple. Imagine the game sends a message over the wire and presumes it can get an stateful ack calculated by code running on the other side before it takes any other action, and then does that multiple times per frame. Also, the code might not even block while waiting arbitrarily long, it might just run ahead and desync/bug out if the reply doesn't come back in a couple ms. What do you expect the emulator to do when the network latency is more than 25ms long? The emulator can't trivially simulate 0.1ms latency instead. It can maybe try to hook in and pause the emulation while it's waiting for the reply, but it would grind down the game to a crawl.
- AnIdiotOnTheNet 5y agoActually, while not trivial, it is possible to simulate lower latencies than actually exist in reality. What the emulator does is keep a buffer of previous states for some arbitrary length of time (say, 10 frames) then, upon receiving the data, it can roll back the state to when it was supposed to have received it, add the data to the state, and run it forward to catch back up to where it was. This is a technique used by some fighting games that have internet play, and is also used in emulators to deal with input latency on modern TVs.
- hatsunearu 5y agoIf you wanted to do this, you'd need complete control over the emulation game state transitions which is much more difficult than just making whatever you call the OP's post (a proxy? I don't know)
- lostgame 5y agoThis relies on hardcore deterministic reverse-engineering. Coming from the ROM hacker scene I initially was confused by this; too - but absolutely understand it’s impracticality difficult from a technical end.