Updated September 15: CanoFlash now also does online multiplayer, and the Kickstarter launches on September 20.
Hi everyone,
I’m Emilio, also known as CanoCoder, and I’d like to show you CanoFlash, the hardware project I’ve been developing for original Game Boy Advance systems. It started as a Wi-Fi cartridge writer, and it now also lets original GBAs play online together.
WHAT IS CANOFLASH?
CanoFlash is an ESP32-S3 accessory that connects to the GBA Link Port. It does two jobs:
It is not a flash cartridge and it does not replace the cartridge. A compatible rewritable GBA cartridge must remain inserted in the console. CanoFlash handles downloading the selected file, writing it to that cartridge and verifying the result.
No console modification is required. After the initial Wi-Fi setup, a PC is not needed for normal use.
ONLINE PLAY
Game on cartridge ⇄ Link Port ⇄ CanoFlash ⇄ Wi-Fi / TLS ⇄ game server
Each player needs their own GBA, their own CanoFlash and a compatible cartridge with the game.
Here’s a GBA and a GBA SP in the same online room:
What already works online, tested with two players on real hardware:
The protocol supports up to eight seats per room, but I’m not claiming performance with eight consoles yet.
FOR DEVELOPERS
The CanoFlash SDK 1.0.0 is free and MIT-licensed: two C99 files with no engine dependency and no dynamic allocation, with examples for devkitARM and Butano.
Source and documentation: https://github.com/supercanocoder/canoflash-sdk
HOW THE CARTRIDGE WRITER WORKS
CURRENT PROTOTYPE STATUS
This is a working hardware prototype, not only a render or concept. Besides online play, the following parts currently work together:
COMPATIBILITY AND IMPORTANT LIMITATIONS
RUN YOUR OWN SERVER
If the Kickstarter is funded, I’ll release a self-hosted version of the CanoFlash game server, together with a firmware update that lets each CanoFlash connect to the server you choose.
REAL HARDWARE DEMONSTRATION
The online demo is above. This one shows the cartridge writer:
I would particularly appreciate feedback from the GBAtemp community about:
Kickstarter
Project website:
https://canoflash.com
I’ll be happy to answer technical questions about the SDK, the Link Port protocol, the Multiboot workflow, the supported flash family, save handling, hardware design or production plan.
Disclosure: CanoFlash is my own project and I will benefit financially if the Kickstarter is funded. It is an independent accessory and is not affiliated with or endorsed by Nintendo.
Hi everyone,
I’m Emilio, also known as CanoCoder, and I’d like to show you CanoFlash, the hardware project I’ve been developing for original Game Boy Advance systems. It started as a Wi-Fi cartridge writer, and it now also lets original GBAs play online together.
WHAT IS CANOFLASH?
CanoFlash is an ESP32-S3 accessory that connects to the GBA Link Port. It does two jobs:
- Online play: a game made with the CanoFlash SDK runs from your cartridge and talks to CanoFlash through the Link Port, while CanoFlash handles the Wi-Fi, the encrypted connection and the game server.
- Cartridge writer: it uses the console’s Multiboot mode to load a wireless menu into RAM, lets you browse authorized homebrew or your own private library, and writes the selected image to a compatible rewritable cartridge.
It is not a flash cartridge and it does not replace the cartridge. A compatible rewritable GBA cartridge must remain inserted in the console. CanoFlash handles downloading the selected file, writing it to that cartridge and verifying the result.
No console modification is required. After the initial Wi-Fi setup, a PC is not needed for normal use.
ONLINE PLAY
Game on cartridge ⇄ Link Port ⇄ CanoFlash ⇄ Wi-Fi / TLS ⇄ game server
- Write an online game made with the CanoFlash SDK to your cartridge, like any other homebrew.
- Boot the game from the cartridge, with CanoFlash still connected to the Link Port.
- The game signals CanoFlash, which opens an encrypted connection to the CanoFlash game server.
- Find another player through public matchmaking, or create a private room and share its six-digit code.
- Wait in the lobby, where player names are shown and the room host starts the match.
- If your Wi-Fi drops briefly, CanoFlash reconnects and you keep your seat.
Each player needs their own GBA, their own CanoFlash and a compatible cartridge with the game.
Here’s a GBA and a GBA SP in the same online room:
What already works online, tested with two players on real hardware:
- Public matchmaking, or private rooms with a six-digit code.
- Lobbies with player names and a room host.
- Recovery from short Wi-Fi drops.
The protocol supports up to eight seats per room, but I’m not claiming performance with eight consoles yet.
FOR DEVELOPERS
The CanoFlash SDK 1.0.0 is free and MIT-licensed: two C99 files with no engine dependency and no dynamic allocation, with examples for devkitARM and Butano.
- Create a room, join one with a code or use public matchmaking.
- Two channels, up to 480 bytes per message: replaceable state updates with cf_send() for positions, and ordered reliable events with cf_send_reliable() for turns and actions.
- Call cf_poll() once per frame. During a Wi-Fi drop the SDK reports CF_RECONNECTING, so your game can pause.
- The lobby example from the demo is included with its full source code.
Source and documentation: https://github.com/supercanocoder/canoflash-sdk
HOW THE CARTRIDGE WRITER WORKS
- Insert a compatible rewritable cartridge and connect CanoFlash to the Link Port.
- Start the GBA in Multiboot mode by holding Start + Select during power-on.
- CanoFlash transfers its native GBA application into the console’s RAM.
- Browse the online library or your private library.
- Select a title; CanoFlash writes it to the cartridge and verifies the result.
- Restart the GBA normally and play from the cartridge. Wi-Fi is not required while playing, except in online games.
CURRENT PROTOTYPE STATUS
This is a working hardware prototype, not only a render or concept. Besides online play, the following parts currently work together:
- Original GBA, GBA SP and GBA Micro support.
- ESP32-S3 hardware with an OLED status display.
- Cartridge writing followed by data verification.
- Manual backup and restoration of supported save data, including up to five cloud slots per game and device.
- EEPROM, FLASH512, FLASH1M and SRAM save-family handling, depending on the game.
- Server-side save conversion, batteryless patches and game-specific processing where supported.
- OTA updates for both the adapter firmware and the GBA application.
- English, Spanish, French and German interfaces.
COMPATIBILITY AND IMPORTANT LIMITATIONS
- Online play works in games made with the CanoFlash SDK. It does not make existing games playable online.
- Online play is built for turn-based and slower real-time games, not 60 fps fighting games or shoot-’em-ups.
- I’m not quoting latency figures yet; I want to measure the current firmware properly first.
- CanoFlash currently requires a compatible AMD/Spansion S29GL256-based rewritable GBA cartridge.
- The cartridge is essential but is not included or sold by this campaign.
- A battery is not included. CanoFlash can also be powered through USB-C.
- CanoFlash does not host or distribute commercial ROM files. Users may access authorized homebrew and their own personal backups.
- Compatibility is game-dependent and I am not claiming universal support. I intend to document tested cartridges, flash IDs, save types and game-specific limitations transparently.
RUN YOUR OWN SERVER
If the Kickstarter is funded, I’ll release a self-hosted version of the CanoFlash game server, together with a firmware update that lets each CanoFlash connect to the server you choose.
REAL HARDWARE DEMONSTRATION
The online demo is above. This one shows the cartridge writer:
I would particularly appreciate feedback from the GBAtemp community about:
- The SDK API and documentation, if you write GBA homebrew.
- Turn-based or slower real-time game ideas that would suit online play on original hardware.
- Other compatible cartridge revisions worth testing.
- Difficult EEPROM, FLASH512, FLASH1M or SRAM titles that would make useful technical test cases.
- Information you would expect to see in a public compatibility database.
- Homebrew projects whose authors might be interested in authorized distribution through the CanoFlash library.
Kickstarter
Project website:
https://canoflash.com
I’ll be happy to answer technical questions about the SDK, the Link Port protocol, the Multiboot workflow, the supported flash family, save handling, hardware design or production plan.
Disclosure: CanoFlash is my own project and I will benefit financially if the Kickstarter is funded. It is an independent accessory and is not affiliated with or endorsed by Nintendo.
Attachments
Last edited by CanoCoder,







