crystal-pilot

Tap the screen to walk there.

no ROM loaded
waiting for a ROM and a .sym

What brings you here

What this is

An auto-pilot for Pokémon Crystal that runs entirely in this browser tab. Tell it to grind a Pokémon to a level and it plays the battles itself; tap the screen and it walks there.

It works by reading the game rather than watching the picture, which is what the second file is for.

What you need

  • .gbcthe ROM — the game itself
  • .symthe symbol file — the map of where things live in memory

Both come out of a pokecrystal build: run make and you get the pair.

Neither file is ever uploaded. They are read in the page and kept in this browser's own storage, so a reload does not send you looking for them again — Forget, in the settings card, throws them and your save away. This is also why the app can be hosted publicly: no game data is served, only the app.

One exception, and only if you turn it on: Share puts your save — and the 45 addresses the pilot reads — into a room, so your other device can pick the game up. The ROM never goes, the room is reachable by anyone holding its code, and until you press Share nothing leaves at all.

Load your own files

Pick the ROM first; the symbol file can follow.

Watch your other device

On the device that has the game, open Settings and press Share. It shows a five-character code — type it here.

Nothing is needed on this device but the code. The picture arrives straight from your other device rather than through a server, and if that device hands the pad over you can play it from here.
    Plays the intro and walks you into Elm's lab, then stops so you can choose your own starter — about a minute. Your character is given one of the game's own names rather than typed.

    Send the pilot

    pick something below pick something below

    Look for
    Grind
    Hunt
    Catch
    Heal
    Shop
    Take
    Duel
    Errand
    Gym
    Travel
    Wait
    Run the list

    Your party

    no party yet

    Pokédex

    no Pokédex yet

    Your save

    Game save
    Export the battery save
    Import a .sav file
    Last job nothing to undo yet
    Replaced save
    Slots
    About slots

    A slot holds the game’s own battery save, so keeping one saves the game first — and loading one puts you back at that save point rather than at an exact moment. Nothing here leaves this tab until you download it.

    Settings

    Speed
    Buzz a tick when a key goes down
    Devices not sharing
    Code
    Called
    Screen not showing this screen
    Game
    Files
    How this works

    The pilot reads the game's own memory through the symbol file — your party, the map you are on, and the collision data behind it — so it can plan a route and pick a move rather than guess from the picture.

    The speed slider above only changes how fast the game runs while you are watching it. A pilot task always runs as fast as the phone manages, which is the whole point of it.

    Playing. Press and hold the pad to walk — a tap shorter than about an eighth of a second in a new direction only turns you. Tap the screen and the pilot walks you there; if that tile cannot be stood on, it walks to the one beside it you were reaching for and says so. On a keyboard: arrows, Z and X for A and B, Enter for Start, Shift for Select.

    Sending the pilot. Hunt and catch both walk the grass and run from everything else; hunt hands you the battle, catch weakens it and throws. Only what this route has at this hour is offered. While a job runs the pad dims — it would be fighting the pilot for the same emulator — and one Stop sits under the screen.

    Your files. The ROM and symbol file you pick are kept on this phone, so the next visit starts with the game already in and a Files row appears above to forget them again. Nothing is uploaded: the ROM never leaves this device, and a save travels only while you are sharing.