Docs
Welcome, trainer.
CatchOnChain brings the Emerald edition to the browser and fills Hoenn with real people. You start in Littleroot just like back then, but this time someone walks through the tall grass next to you, challenges you in front of the gym and trades you the monster you're still missing.
The adventure is the one you know: the professor, your first partner, eight gyms, two villain teams and the Elite Four. What's new is that Hoenn is alive.
Looking for help with the game itself? The wiki explains battles, your team, trading and the GTS, and guides you to the first badge.
Quickstart
- Open /play in a modern browser on desktop or mobile.
- Select your Emerald ROM file. It's verified by its checksum and stored in your browser's IndexedDB, so you only need to do this once per device.
- Pick a name, meet the professor and choose your first partner.
- Optional: open the trainer window and link a Solana wallet to mirror your progress onchain.
You sign in with a username and password or with your Solana wallet. Your username (3โ7 letters or digits) is also your trainer name in the game. Your save lives on the game server, so you can continue on your PC and your phone. A wallet account can add a password later (for devices without a wallet) and vice versa. There is no email address and therefore no password reset.
Supported ROMs
Graphics, maps, fonts and music are rendered directly from your own ROM. That's why every ROM version needs its own offset table, and unknown versions are rejected.
| Emerald edition | Game code | SHA-1 | Menus & overlay |
|---|---|---|---|
| English (USA/Europe) | BPEE | f3ae088181bf583e55daf962a92bb46f4f1d07b7 | English |
| German | BPED | 61c2eb2b380b1a75f0c94b767a2d4c26cd7ce4e3 | German |
| French | BPEF | ca666651374d89ca439007bed54d839eb7bd14d0 | French |
| Spanish | BPES | fe1558a3dcb0360ab558969e09b690888b846dd9 | Spanish |
| Japanese | BPEJ | d7cf8f156ba9c455d164e1ea780a6bf1945465c2 | English |
Story, battle and item texts always come from your ROM, so they are in its language. The menus and overlay follow the ROM language as well; with the Japanese edition they are in English.
Your ROM never leaves your browser. We don't host, upload or distribute ROMs or anything extracted from them. Please only use a copy of a game you own.
Controls
| Action | Keyboard |
|---|---|
| Move | โ โ โ โ or W A S D |
| A button (talk, confirm) | Z Space Enter |
| B button (back, cancel) | X Esc Backspace |
On touch devices a D-pad plus A and B buttons appear automatically. Team, bag, dex and trainer card open from the overlay on top of the game screen.
Multiplayer
Every map is a shared room. Whoever is on the same map is visible, and their partner monster follows them around.
Chat
One chat per map for everyone nearby, plus a separate tab for player requests. Word filters and moderators keep the tone friendly.
Trading
Trading unlocks once you have two monsters. Both players see the offer including all stats, both confirm, then the trade happens atomically. Trade evolutions work like they did over the link cable. Your starter stays with you and can't be traded.
Battles
Challenge any trainer on your map as soon as you have your starter. Battles use copies of both teams: nobody loses HP, items or monsters. Only the win counts.
Story moments
During cutscenes other players are hidden, so the big moments belong to you.
Wallet & onchain
If you link a Solana wallet, your progress is mirrored to the blockchain: team, collection, badges, play time, achievements and every single catch with its date.
- Open the trainer window in the game and connect a Solana wallet.
- Create your trainer account once by signing a transaction. You pay its rent deposit plus a small setup fee that covers all later transaction fees.
- From then on the game server writes your progress in the background. You never need to sign again.
What goes onchain
Only numbers and IDs, for example species: 252. No names, no images and no personal data apart from your wallet address. Profiles at /t/<wallet> still look great because names and sprites are read from the viewer's own ROM.
PC boxes and items currently live only on the game server. The chain holds a fingerprint of them, so an exported save can later be proven genuine.
How the mirror works
The game database is the source of truth. When you save, the server records an outbox entry in the same database transaction. A separate worker bundles those entries per player and sends at most one transaction every five minutes. The game never waits for the chain.
Costs
| What | Who pays | Amount |
|---|---|---|
| Playing (account with password or wallet) | Nobody | Free |
| Trainer account (rent deposit + setup fee) | You, once | โ 0.02 SOL for a full playthrough |
| Progress updates | The game | Covered by the setup fee |
Monsters and items are not NFTs and can't be sold for money, and achievements are non-transferable.
Fair play
The server is authoritative. Your browser only sends which button you press, never results.
- Every step is validated against collision and elevation.
- Encounters, damage and catch rolls use a seeded server RNG.
- Every battle and encounter logs its seed and can be replayed exactly.
- Battle, catch, XP and evolution rules follow the original game's formulas to the decimal.
For developers
Everything onchain is public and readable without keys or permission. Build your own games where monsters caught in CatchOnChain live on: a tournament arena with the team you raised in Hoenn, a card game whose deck is your real catches, a hall of fame for the rarest shinies.
The data is trustworthy because only the game server may write it, and it decided every catch itself by the original rules. Like in the original, a monster is uniquely identified by its PID and its original trainer ID, even after any number of trades.
Reading data
Trainer accounts are PDAs of the trainer program. The binary formats, PDA derivation and event parsers ship as a browser-ready library (@smaragd/chain), which CatchOnChain itself uses for profiles and leaderboards. Species are always stored as National Dex numbers.
House rules for third-party games
- Read only. Never write into trainer accounts.
- Don't turn monsters, items or achievements into NFTs or other tradeable tokens.
Legal
CatchOnChain is a fan project and is not affiliated with, endorsed or sponsored by Nintendo, Game Freak or Creatures. Players need their own copy of the game. ROMs are neither distributed nor stored on our servers.
Onchain data is immutable. That's why we never write real names, email addresses or any personal data other than your wallet address to the chain.