[Alpha Release] Celio-Link — Online Trading between Gen 3 Pokémon Games
Celio-Link lets you trade Pokemon from RSE and FRLG over the internet. It acts like a normal trade cable. The device acts as a relay Gameboy and sends and receives the data to keep the link cable connection connected,
So yeah, Gen 3 trading over the internet is possible. Here is a video of it. If you want to build your own Celio-Link device, continue reading.
I'd like to share with you a project that I have been working on for the past 6 months. I became interested in GBA link cable trades when I watched a video
of Goppiers Gen2 to Gen 3 trade adapter. I thought it was very impressive and wanted to explore it myself. The goal then was unclear, but I had a trade emulator in
mind to trade generated Pokemon.
After working on this for a few months, it became clear to me that the asynchronous link protocol is a bit more latency tolerant then expected. Sure, the individual bytes that are send and received are have an immensely intolerant timing (and this was the hardest part), but the layer above is workable.
This gave me the idea to to just try it out and see what will happen. Since I had the link layer already implemented, what as left was "just" find a way to get the link layer
bytes out in real time and receive them back. After implementing the web usb layer, I started to send bytes out to a local hosted server and receive them back to test the
capabilities, loopback style.
After seeing that this was working too, implemented the several reconnects that take place during a link trade. In the video, you can see this in the "Status" field, as the state changes
from Waiting to Handshake to Connected several times.
Now I only needed to host the server, host the website and work on the firmware stability (which was a bitch).
This is that I want to share with you today. Please keep in mind that is a ALPHA release. The server and client are hold together by ductape and strings, so please don't expect any kind of
stability yet. It is a Proof-of-Concept.
This uses the web usb api, so only chrome browsers are currently supported.
Here is the link to the client website: https://celio-link.github.io/client/
How to build a Celio-Link device
Components:
https://os.mbed.com/platforms/ST-Nucleo-F070RB/
USB Side
5V -> 5V any
GND -> GND any
D+ -> PA12
D- ->PA11
Link Cable Side
SO -> PB8
SI -> PB12
SD -> PB2
SC -> PB4
When connecting the Link cable to the Gameboy, make sure to connect it with this side of the connector:
This way, the firmware can choose wherever the connected Gameboy is main or follower.
I am currenty not sure which direction I'd like to continue on with this project. I honestly depends on the community feedback what my next steps will be. I am considering make the firmware
Open Source, so I could get help porting it to different boards.
So yeah, Gen 3 trading over the internet is possible. Here is a video of it. If you want to build your own Celio-Link device, continue reading.
I'd like to share with you a project that I have been working on for the past 6 months. I became interested in GBA link cable trades when I watched a video
of Goppiers Gen2 to Gen 3 trade adapter. I thought it was very impressive and wanted to explore it myself. The goal then was unclear, but I had a trade emulator in
mind to trade generated Pokemon.
After working on this for a few months, it became clear to me that the asynchronous link protocol is a bit more latency tolerant then expected. Sure, the individual bytes that are send and received are have an immensely intolerant timing (and this was the hardest part), but the layer above is workable.
This gave me the idea to to just try it out and see what will happen. Since I had the link layer already implemented, what as left was "just" find a way to get the link layer
bytes out in real time and receive them back. After implementing the web usb layer, I started to send bytes out to a local hosted server and receive them back to test the
capabilities, loopback style.
After seeing that this was working too, implemented the several reconnects that take place during a link trade. In the video, you can see this in the "Status" field, as the state changes
from Waiting to Handshake to Connected several times.
Now I only needed to host the server, host the website and work on the firmware stability (which was a bitch).
This is that I want to share with you today. Please keep in mind that is a ALPHA release. The server and client are hold together by ductape and strings, so please don't expect any kind of
stability yet. It is a Proof-of-Concept.
This uses the web usb api, so only chrome browsers are currently supported.
Here is the link to the client website: https://celio-link.github.io/client/
How to build a Celio-Link device
Components:
- Nucleo STM32F070RB
- USB Breakout Board
- Link Cable breakout board
- GBA Link Cable
- Breadboard
- Some cable to connect the stuff together
https://os.mbed.com/platforms/ST-Nucleo-F070RB/
USB Side
5V -> 5V any
GND -> GND any
D+ -> PA12
D- ->PA11
Link Cable Side
SO -> PB8
SI -> PB12
SD -> PB2
SC -> PB4
When connecting the Link cable to the Gameboy, make sure to connect it with this side of the connector:
This way, the firmware can choose wherever the connected Gameboy is main or follower.
I am currenty not sure which direction I'd like to continue on with this project. I honestly depends on the community feedback what my next steps will be. I am considering make the firmware
Open Source, so I could get help porting it to different boards.
Attachments
Last edited by Essometer,










