A work-in-progress decompilation of Pokémon Black 2 and White 2, with a long-term goal of a native PC port. Both USA/Europe ROMs rebuild byte for byte from the same source tree.
Progress updates automatically from CI. Green areas match; grey and blue areas are still in progress.
Requires Linux, WSL or macOS, Python 3.11+, ninja, and LLVM (clang and llvm-objcopy on your PATH).
-
Place your own ROM dumps in
orig/, using the filenames below. -
Configure and build:
python3 configure.py ninja
The first run downloads the remaining tools. Every available version is built and checked against its SHA1. ROMs are not included or provided.
| ROM (USA/Europe, NDSi Enhanced) | Input file | SHA1 |
|---|---|---|
| Black 2 | orig/baserom_b2_us.nds |
e51e6dfb8678a3d19dcd2a10691b96a569ca0abb |
| White 2 | orig/baserom_w2_us.nds |
b5d7490be7b415b8f1e672a53e978a9cc667e56a |
Output: build/pokeblack2_us.nds and/or build/pokewhite2_us.nds.
See Build details for macOS setup, toolchain options and modified builds.
Read CONTRIBUTING.md for the workflow and rules. Claim an overlay's issue before starting work. CI compiles every C file for both versions; fork PRs must verify ROM matching locally.
| Guide | Covers |
|---|---|
| Build details | Setup and build options |
| Decompiling | Workflow and tools |
| Matching | MWCC behavior and matching techniques |
| Code organization | Source layout, libraries and names |
| Native port notes | Recovered platform assumptions and open porting questions |
| Source files | Overlay files and boundary evidence |
| Nonmatching functions | Remaining mismatches |
| Game data | Data formats and archives |
| Scripts | Trainer AI and field scripts |
| Configs and ROMs | dsd configuration and ROM structure |
| Tools | Tool reference |
GNU GPL v3.0, including the symbol names imported from swan.