Tetris for Game Boy Gets Online Multiplayer
hackaday.com
hackaday.com
There is a Game Boy game published in 1991 called Faceball 2000. It's a first person shooter that supports up to 16 players with a homebrew hardware connector. This was even before Nintendo's own 4-player adapter was available for any games. The connector was not Nintendo-endorsed so it could not be shipped with the game but the code is still there in the ROM. Disclosure: I was a programmer at the small company responsible but not the genius himself. You can read a short interview with him here.[1]
[1] https://web.archive.org/web/20100509163809/http://fb2k.retro...
I’d love to think John Carmack is here among us; cleverly disguised under some cute u/n we’d never get unless it was explained to us.
I took a moment and read some of his contributions - very fascinating to read his comments on the whole Oculus thing, especially!
Thank you so kindly for sharing that.
Hopefully someone forks the Tetris multiplayer to work with this.
As a step to writing a patch for this myself, I hacked in some analysis to try to at least reverse-engineer the GameBoy Tetris protocol (also seemingly unpublished anywhere on the Internet) but never got very far.
I don't know specifically about Gameboy but this approach has been tried by PS1 emulators and it doesn't work. There are two main problems, computer and internet speed variations will eventually make both games go out of sync, and if using the clock or some external data for the seed of the game's rng then both players will be getting different things while in game (depending on the game, could be different Tetris blocks, different bonuses, different weapons). I discovered this while trying to play a multiplayer PS1 game over the LAN and the emulator did just that, send keystrokes to the other computer.
[0] https://en.wikipedia.org/wiki/TetriNET
[1] http://gtetrinet.sourceforge.net/ (no HTTPS unfortunately)
Did your league organize on IRC to bootstrap games with the host's IP address? Is there a webpage with league standings still around?
edit: okay looks like their scheme doesn't work for arbitrary games and arbitrary protocols.
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)
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.
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.
Coming from the ROM hacker scene I initially was confused by this; too - but absolutely understand it’s impracticality difficult from a technical end.