Status
Not open for further replies.

[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:
  • Nucleo STM32F070RB
  • USB Breakout Board
  • Link Cable breakout board
  • GBA Link Cable
  • Breadboard
  • Some cable to connect the stuff together
The firmware can be found in the attachments, hex and bin are the same, flash with tool of your choice.

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:
IMG_5816.jpg

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,
Sure you can farm berries in Fire Red and Leaf Green without a battery
Not the powerful-for-contests ones though :( (and even sticking to the available ones - up to those that became EV removers in Emerald - it seems like a pain to get them to appear, even once you know it's 512 steps for a chance of them appearing and apparently only on 3rd island)
Then again you can't get pretty much half the possible berries in any GBA Hoenn game?

no the berry fix glitch was specifically for the berry glitch
Yup and it's not even really a fix despite the misleading description you get of it (it's caused by a typo causing years 0 and 1 to be considered the same*, so all it really does is to add 1 year if you're on 0 or advance to 2 if you're on 1), you can't change a real mask ROM so it has to be repeated if you start a new game (some degree of expansion was planned and is possible through the save, but it's used for DLC events like the eon ticket))
 
  • Like
Reactions: raxadian
you can't change a real mask ROM so it has to be repeated if you start a new game

I did start new games a few times so whatever, nowadays I mostly cheat to get items in Gen 3 due to how angry I was due to how freaking impossible catching them all was for me as the GBA to Gamecube cable was freaking expensive here so I never got it.
 
Very cool project, I've been thinking about making something like this for a while but never got to it eventually, glad to see that someone actually did! I wonder if this would work with just a UART to USB adapter and the relay gameboy being implemented entirely in software. Another interesting application would be connecting an emulator with real hardware locally.
 
Nice work!
Would really love to see the sources if you publish them :)
After I implemented (rather unreliably) the wireless protocol on gpsp, I took a look at the serial port, but it seemed that it required zero latency. It's cool to see that some games can actually be "fooled" into higher latencies by faking some of the lower level stuff. I assume the protocol had to be robust so that slower games/devices could be connected (perhaps for future proofing? Maybe they though about GB-GBA connectivity?). Do you know if any other games apart from Pokemon use similar mechanisms?
Thanks for your work!
 
  • Like
Reactions: raxadian
Nice work!
Would really love to see the sources if you publish them :)
After I implemented (rather unreliably) the wireless protocol on gpsp, I took a look at the serial port, but it seemed that it required zero latency. It's cool to see that some games can actually be "fooled" into higher latencies by faking some of the lower level stuff. I assume the protocol had to be robust so that slower games/devices could be connected (perhaps for future proofing? Maybe they though about GB-GBA connectivity?). Do you know if any other games apart from Pokemon use similar mechanisms?
Thanks for your work!
Thank you.
I am sure that this approach could be working for other games, especially turn based games like Advance wars 1/2. It largely depends if those games implement a timeout / how big the timeout is above the "packet layer".

As for source code, I am currently hard at work trying to get this to a state where I can produce a standalone PCB and improve the UI/UX so it becomes easy to set up a link. My goal is to be able to launch a small kickstarter so I can sell a sort of reference design and after a s success or failure (doesn't matter the outcome, but I would like to try) I would release the sources so tinkerer can get their version going.
 
I see a lot of people negatively commenting on the practicality of the project but this is amazing, I made all my cousins modded GBAs this year for Christmas gifts, and we have all been replaying Pokémon. I would love it if this gets opensourced and made more compact or ported to Wifi with an ESP32 or something I would make a few so we could all trade and hopefully battle in the future. Do you have a discord or any other way to keep updated on the progress of the project?
 
Hi, thank you for your kind words :)
I am still actively developing it so it can be used by an enduser. Since my video I have completed a server rewrite, added much needed UX and currently switching from an STM32 to a Rpi2040. I hope that I can use smashstacks gba link adaptor board so I don’t have to worry to much about the hw side.

I currently don’t have a discord server as nothing is in a state I would call beta, but I will make an announcement as soon as this is the case. This will also include open sourcing the complete project.

I hope I can get there in the first quarter of this year, but please rake this estimate with a grain of salt.
 
Last edited by Essometer,
Hi, thank you for your kind words :)
I am still actively developing it so it can be used by an enduser. Since my video I have completed a server rewrite, added much needed UX and currently switching from an STM32 to a Rpi2040. I hope that I can use smashstacks gba link adaptor board so I don’t have to worry to much about the hw side.

I currently don’t have a discord server as nothing is in a state I would call beta, but I will make an announcement as soon as this is the case. This will also include open sourcing the complete project.

I hope I can get there in the first quarter of this year, but please rake this estimate with a grain of salt.
Glad you're still working on it, definitely looking forward to any future updates.
 
Status
Not open for further replies.

Site & Scene News

Popular threads in this forum