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

  1. Open /play in a modern browser on desktop or mobile.
  2. 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.
  3. Pick a name, meet the professor and choose your first partner.
  4. 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 editionGame codeSHA-1Menus & overlay
English (USA/Europe)BPEEf3ae088181bf583e55daf962a92bb46f4f1d07b7English
GermanBPED61c2eb2b380b1a75f0c94b767a2d4c26cd7ce4e3German
FrenchBPEFca666651374d89ca439007bed54d839eb7bd14d0French
SpanishBPESfe1558a3dcb0360ab558969e09b690888b846dd9Spanish
JapaneseBPEJd7cf8f156ba9c455d164e1ea780a6bf1945465c2English

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

ActionKeyboard
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.

  1. Open the trainer window in the game and connect a Solana wallet.
  2. 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.
  3. 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

WhatWho paysAmount
Playing (account with password or wallet)NobodyFree
Trainer account (rent deposit + setup fee)You, onceโ‰ˆ 0.02 SOL for a full playthrough
Progress updatesThe gameCovered 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.