Using Claude Code to create a Pokémon RomHack

The idea: make the version of Pokémon Emerald that I wanted to play as a kid.

The how: use pokémon emerald decompilation project, mods from the romhacking community (Pokémon Emerald Legacy and enhanced version), Claude Code to help me stitch things together and add my own custom modifications, and Cloudflare to host the game for free.

title screen

Solo Leveling

You are the only trainer in Hoenn that can level up. Your objective is to beat every trainer, but if you lose, you start from your hometown again. You only get to keep your team and bag. Pokémons follow you!

Included features:

Talk to Mom in Littleroot Town. She explains the rules and activates/deactivates the mode.

title screen title screen title screen

Colosseum

Every battle is a double battle. You start with Espeon and Umbreon or with two Eevees.

title screen title screen title screen

Pokémon Emerald Legacy

This is one of the best romhacks out there, with a huge amount of content and quality-of-life improvements. I used it as the base. A big thank you to The SmithPlays Team. You guys rock!

title screen title screen title screen

Claude

The romhack itself is built with Claude Code. The pokeemerald decompilation is ~1M lines of C, navigating it, understanding the data structures (trainer parties, scripts, map events, battle engine), and cross-referencing the two upstream forks would have taken months solo. Claude Code did the heavy lifting.

What it actually did on this repo:

Workflow: describe the feature, point Claude at the relevant subsystem (data/trainers.party, src/battle_*.c, src/overworld.c), let it propose a patch, compile, test in mGBA, iterate. Commit history on the repo shows the progression.

title screen title screen title screen

Cloudflare

Cloudflare is what makes a project like this viable for a solo hobbyist. A ROM hack is a weird thing to ship: a .gba blob, a JS emulator, a Pokédex, a landing page, and the occasional experimental feature. No revenue, no enterprise budget, just me on a laptop wanting strangers to be able to click a link and play. Cloudflare Pages hosts it all, free, globally distributed, zero config beyond pointing it at the git repo. Push to main, it deploys. That is the entire ops story.

What I really appreciate is that Cloudflare treats open source and hobbyist work as first-class. The free tier is not a crippled demo, it is the real product. That matters.

The workflow also maps cleanly onto agentic development. I iterate on the ROM and the site together, Claude Code edits C in the decomp, rebuilds the .gba, and simultaneously updates the Astro site and Pokédex data in the edge repo. Pages picks up the push and deploys. The agent never needs to think about infrastructure, which is exactly what you want when the human-in-the-loop is reviewing feature diffs and not YAML. Shorter feedback loop, more features shipped, fewer things to hold in my head.

If someone at Cloudflare is reading: thank you. And if you are building something agentic on top of Workers/Pages/Durable Objects and want to talk to a builder who has spent real time orchestrating Claude Code across a multi-repo, multi-language project (C decomp + TypeScript/Astro frontend + emulator glue), get in touch.

title screen title screen

Play it here!

Pokemon Emerald Legacy Solo Leveling Colosseum website with embedded pokédex.

HackDex

Contribute here on GitHub.

title screen