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.

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.

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

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!

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:
overworld.c, field_player_avatar.c, and bike.c to keep the follower sprite coherent through biking, surfing, and map transitions..gba build, all generated and iterated on with Claude.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.

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.

Pokemon Emerald Legacy Solo Leveling Colosseum website with embedded pokédex.
Contribute here on GitHub.
