pokemon-claude-red
Health Uyari
- No license — Repository has no license file
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Gecti
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
Pokémon Red, rebuilt from raw pixels by Claude Opus 5.5. Every sprite, tile, battle effect and song is code: zero image files. Plays in the browser.
Pokémon Claude Red
Pokémon Red, rebuilt from raw pixels by Claude Opus 5.5.
Every sprite, tile, building, battle effect and song is drawn or played by code.
There is not a single image file in the game.
▶ Play it now at claudered.dev
The prompt
The whole project started from one message typed into Claude Code:
using only pixels directly remake a beautiful pokemon red remake but with better graphics, environments and vfx. visualise everything perfectly as pixel art using raw pixels. absolute pixel art perfection. keep the story exactly as pokemon red (research on web for all dialogue etc)
Everything in this repository grew from that sentence, followed by a few days of playing it and asking for fixes.
Screenshots
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
All 151 Pokémon. Each one is a list of ellipses, polygons and curves that the game rasterises, shades and outlines at runtime.
On phones: Game Boy layout when held upright, GBA layout when turned sideways.
Screenshots are rendered by the game itself and live on the media branch, so main stays 100% code.
Play
Play it in your browser at claudered.dev, on a computer or a phone.
To run it yourself, there's no install and no build step. Clone the repo and open index.html in a browser.
git clone https://github.com/levy-street/pokemon-claude-red.git
cd pokemon-claude-red
open index.html # or double-click it
To run the full site (email sign-up, accounts with cloud saves, the hit counter), serve it with the bundled
server. It needs only Python 3:
node tools/build_dist.js # bundles index.html + src/ into dist/
python3 tools/serve.py # http://localhost:8784
Controls
| Keyboard | Touch | Gamepad | |
|---|---|---|---|
| Move / navigate | Arrow keys or WASD | D-pad, or tap a tile to walk there | D-pad / left stick |
| A: talk, confirm | Z, J or Space | A, or tap a person, sign or menu item | A |
| B: cancel, hold to run | X, K, Backspace or Esc | B | B |
| START: menu | Enter | START | Start |
| SELECT | Shift or C | SELECT | Select |
On a computer, the mouse also works: click to walk or pick menu entries, right-click for B or the START menu, and scroll lists with the wheel.
Progress saves to the browser. An optional free account keeps a copy on the server, so the game survives in-app browsers that wipe storage and can move between devices.
What's in it
- The complete Kanto story: all 224 maps, every trainer, the eight gyms, Team Rocket, Silph Co., the Elite Four, the
Champion and Cerulean Cave, with Red's event order and gating. All ~2,500 lines of dialogue follow the original
beat for beat, rewritten in new words. - Every pixel is code.
- The game draws into a 320×180 framebuffer (
Uint32Array), then scales it up with crisp nearest-neighbour pixels. - Each map cell has a semantic label ("tall grass", "roof", "bookshelf"), and a procedural painter draws it with shading and texture.
- Buildings are painted as whole objects with roofs, windows, doors and shadows.
- There's a day/night cycle with lit windows, fireflies and flickering torches.
- Every one of the 165 moves has its own animation.
- The game draws into a 320×180 framebuffer (
- 151 Pokémon from shapes. A small drawing language (ellipses, polygons, spots, stripes, eyes) is rasterised into
outlined, shaded pixel art, and back sprites and party icons are derived from the same description. - The original music, re-voiced. The note data of all 52 songs is converted from the disassembly. A sequencer that
keeps the Game Boy's exact frame timing plays it through new Web Audio instruments: chorused pulse leads, a wave
bass with a sub layer, and noise drums with body. - A character customiser: hair, hats, skin, clothes and bag colours, carried through every sprite and portrait.
- Social Zone, entered through any Pokémon Center's Cable Club:
- a level-50 Battle Tower;
- link battles and trades through shareable links;
- a two-player versus mode.
- Who's That Pokémon? A daily and endless silhouette quiz.
- Share cards: every badge, capture, evolution and Hall of Fame entry can become a pixel-art card or a link.
- Classic glitches, recreated from how the original code works:
- MissingNo. with its +128 item quantity and Hall of Fame corruption;
- the Mew trick.
- Easter eggs: the world has opinions about AI. Talk to everyone.
MissingNo.
The old man's catching demo in Viridian City backs your name up into the memory that holds the area's wild Pokémon
list. Only maps that have grass encounters overwrite that list. The shore squares just east of Cinnabar Island take
their encounter rate from the water, but their Pokémon list from that leftover memory.
- Watch the old man's demo.
- Fly to Cinnabar without walking through any grass or caves.
- Surf up and down the east coast.
The letters of your name, read as level/species bytes, decide what appears: MISSINGNO., 'M, and sometimes a
Lv 132 Mewtwo. Meeting MissingNo. adds 128 to the sixth item in your bag.
The Mew trick
- Press START mid-step as a far-off trainer spots you, then Fly away. That route's script is left waiting to start
the battle, and START won't open until you finish a trainer battle. - The next battle overwrites the trainer bytes that script will read. Let the Route 25 Youngster's Slowpoke be that
battle: its Special stat is 21, which is Mew's internal ID. - Walk back onto the route. The START menu opens by itself; close it and a wild Lv 7 Mew appears.
How it's built
index.html the page: canvas, phone controller, account box, script list
src/core/ framebuffer + drawing primitives, pixel font, input, main loop, audio synth + GB sequencer
src/art/ procedural renderers: terrain, buildings, interiors, characters, Pokémon, battle scenes, VFX
src/data/ maps, species, moves, trainers, music (converted from pokered), dialogue, Pokémon shape files
src/game/ overworld, battles, menus, PC, bag, Pokédex, Social Zone, sharing, cloud saves, glitches
src/scripts/ the story, map by map, following Red's event scripts
tools/ data converters, headless runner, fuzzers, map/sprite/VFX sheet renderers, the site server
docs/ how maps, sprites, dialogue and story scripts are authored
It's plain JavaScript loaded with classic <script> tags. There are no frameworks and no bundler, and it runs from file://.
Rebuilding the data
Map layouts, collision, warps, trainers, wild encounters, species, moves and the music's note data are converted from
the pret/pokered disassembly. No graphics or original text are taken from it.
git clone https://github.com/pret/pokered ../pokered
node tools/convert_maps.js ../pokered
node tools/convert_data.js ../pokered
node tools/convert_music.js ../pokered
Testing
tools/headless.js runs the entire game inside Node's vm with no browser, and can save any frame as a PNG. Test
drivers are built on top of it:
| Tool | What it does |
|---|---|
node tools/talkfuzz.js |
Visits all 224 maps, talks to every NPC and reads every sign (1,000+ conversations), playing out any battles. |
node tools/fuzzbattle.js |
Random battles with random species, levels and movesets; reports exceptions and stuck battles. |
node -r ./tools/pathaudit.js tools/stepfuzz.js |
Fires every step/enter script on every walkable cell under random story states; flags anyone walking through a wall. |
node tools/warpcheck.js |
Walks the warp graph and checks every exit leads back where it came from. |
node tools/rendermap.js <Map> out.png |
Renders a whole map. monsheet.js, vfxsheet.js and charsheet.js do the same for Pokémon, move animations and characters. |
Hosting
node tools/build_dist.js https://your.site/ writes a static dist/ (plus a preview.png for link previews) that any
web host can serve. Set CF_BEACON_TOKEN=<site token> to include Cloudflare Web Analytics, which is cookieless.
tools/serve.py adds the small site API: email sign-ups, accounts, cloud saves and the hit counter. It stores
everything in one SQLite file under data/. Passwords are stored only as salted scrypt hashes, and session tokens only
as SHA-256 hashes.
Newsletter sign-ups are kept locally, then forwarded to the Levy Street list. If the page is hosted without the
server, it signs up with the list directly. python3 tools/serve.py export prints the email list as CSV, andpython3 tools/serve.py sync-newsletter retries any sign-up the list hasn't accepted yet.
Credits
- Built by Claude Opus 5.5 in Claude Code, directed by
Levy Street, from September 24 to 27, 2026. - Maps, trainers, encounters, game data and the music's note data are converted from
pret/pokered. Huge thanks to everyone who worked on it.
Legal
Pokémon © 1996 Nintendo / Creatures Inc. / GAME FREAK inc. This is a free, non-commercial fan project. It is not
affiliated with or endorsed by Nintendo, The Pokémon Company, GAME FREAK, Creatures Inc., Anthropic or OpenAI.
Levy Street
Levy Street works at the frontier of AI × gaming × consumer. Sign up for updates from the bar at the top of the
game, or say hello at [email protected].
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi





