This project is no longer maintained and most of the code has been migrated to the TM35-Metronome project, which aims to be a set of simple tools for hacking Pokémon roms.
A Pokémon Rom randomizer tool written in Zig
For now, this project exists for me to test out the Zig programming language and its features.
Each Pokémon game exists in multiple different languages. The reason this is important is that different languages have different data layouts. The Japanese version of Pokémon Emerald might not work with the randomizer even though a US version does.
Version: | International (O) | English/USA (E) |
---|---|---|
Red | ||
Blue | ||
Green | ||
Yellow | ||
Gold | ||
Gold | ||
Silver | ||
Crystal | ||
Ruby | :heavy_check_mark: | |
Sapphire | :heavy_check_mark: | |
Emerald | :heavy_check_mark: | |
Fire Red | :heavy_check_mark: | |
Leaf Green | :heavy_check_mark: | |
Diamon | :heavy_check_mark: | |
Pearl | :heavy_check_mark: | |
Platinum | :heavy_check_mark: | |
Heart Gold | :heavy_check_mark: | |
Soul Silver | :heavy_check_mark: | |
Black | :heavy_check_mark: | |
White | :heavy_check_mark: | |
Black 2 | :heavy_check_mark: | |
White 2 | :heavy_check_mark: |
The randomizer relies on libraries which are included as git submodules. You,
therefore, need to clone with --recursive
, in order to get these libraries on
clone.
The repo contains both the Pokémon randomizer, but also a few tools used to make development of the randomizer a little simpler.
Here are the different build commands:
zig build randomizer
builds the randomizer (default).zig build tools
builds the tools.zig build test
runs all tests.zig build all
builds everything and runs all tests.Useful links with information on the structure of roms, or where data exists in different Pokémon games.