IT WORKS!!! I traded a Pokemon from one Game Boy to another over the internet.
Last week I blogged about trading Pokemon with an Arduino, which made some people wonder if you could trade over the internet.
This is not a new idea, but one that was previously considered impossible. The Game Boy uses a synchronous protocol that does not tolerate the latency associated with the internet.
But only when using its internal clock. When using an external clock it will go as slow as you want. Normally one of the Game Boy’s drives the clock line. The solution therefore is to trick both Game Boy’s into thinking the other Game Boy is driving the clock line.
This trick is specific to the first and maybe second generation of Pokemon games, and it is a lot slower than a direct Link Cable, but it works nonetheless!
The gist of it is that a Teensy puts the Game Boy in slave mode and forwards the data over USB HID to a Chrome App that uses WebRTC to transfer the data over the internet.