What is the Pokémon Red/Blue Disassembly?
This project is a complete disassembly of the original Pokémon Red and Blue Game Boy games into human-readable assembly language. A disassembly converts compiled machine code back into source code that can be read, understood, modified, and reassembled into working ROMs. The disassembly recreates the exact original games - when built, it produces byte-for-byte identical ROMs to the original releases:- Pokémon Red (UE) [S][!].gb - SHA1:
ea9bcae617fdf159b045185467ae58b2e4a48b9a - Pokémon Blue (UE) [S][!].gb - SHA1:
d7037c83e1ae5b39bde3c30787637ba1d4c48ce2 - BLUEMONS.GB (debug build) - SHA1:
5b1456177671b79b263c614ea0e7cc9ac542e9c4
Why Does This Matter?
Understanding how these classic games work at the assembly level opens up incredible possibilities:Learn Game Development
Study the techniques used by Game Freak to create one of the most successful games of all time
Create ROM Hacks
Modify the games to create entirely new Pokémon experiences with custom features
Fix Bugs
Discover and fix original bugs like the Mew glitch or battle mechanics issues
Research & Documentation
Document game mechanics, understand data structures, and preserve gaming history
Project Structure
The disassembly is organized into logical sections that mirror how the original game was structured:The project uses RGBDS (Rednex Game Boy Development System) to assemble the source files into Game Boy ROMs.
Key Features
Complete Documentation
Every function, data table, and constant has been carefully labeled and documented. Instead of cryptic memory addresses, you’ll find readable labels like:Modular Organization
The code is split into logical modules by functionality:- Engine: Battle system, overworld movement, menus, events
- Data: Pokémon stats, move data, trainer parties, item prices
- Maps: Town and route layouts, NPC scripts, wild encounters
- Graphics: Sprites, tilesets, animations
Build System
A robust Makefile handles building both Red and Blue versions, including:- Debug builds with enhanced features
- Virtual Console patches for 3DS releases
- Automatic dependency tracking
- Graphics conversion from PNG to Game Boy format
What You Can Do
With this disassembly, you can:Study the Code
Understand how classic Game Boy games were developed, including memory management, graphics rendering, and game logic
Modify Game Mechanics
Change battle formulas, type effectiveness, experience curves, or add entirely new mechanics
Community and Resources
The Pokémon reverse engineering community (pret) maintains this and many other Pokémon disassembly projects:- GitHub Wiki - Comprehensive documentation and tutorials
- Discord Server - Join #pokered channel for help and discussion
- Symbols Branch - Memory addresses and symbols for debugging
- GB ASM Tools - Useful development tools
- pret.github.io - All pret disassembly projects
Prerequisites
Before you begin, you should have:- Basic understanding of assembly language (or willingness to learn)
- Familiarity with Git and command-line tools
- A text editor for editing
.asmfiles - Knowledge of how Game Boy games work (helpful but not required)
Next Steps
Ready to get started? Follow these guides in order:Installation
Set up RGBDS and required tools on your platform
Quick Start
Build your first ROM and verify it works