- C++ 80%
- C 17.3%
- Jinja 1.3%
- Python 0.8%
- CMake 0.4%
- Other 0.2%
| .claude/skills | ||
| .codex/skills/fix-includes | ||
| .github | ||
| .idea | ||
| .vscode | ||
| docs | ||
| legacy | ||
| porytiles | ||
| resources | ||
| scripts | ||
| .clang-tidy | ||
| .gitignore | ||
| .porytiles-marker-file | ||
| .rgignore | ||
| AGENTS.md | ||
| AI_POLICY.md | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| CMakeLists.txt | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| README.md | ||
| RELEASE_PROCESS.md | ||
| STYLE.md | ||
| VERSION | ||
Porytiles
Overworld tileset compiler for use with the pokeruby,
pokefirered, and pokeemerald Pokémon
Generation III decompilation projects from pret. Also compatible with
pokeemerald-expansion from
rh-hideout. Builds Porymap-ready assets from
RGBA (or indexed) input assets.
Quick Links
- Release binaries
- Install via Homebrew
- User documentation
- Developer documentation
- Doxygen API documentation
- Using Porytiles - Wiki
- Introductory YouTube Tutorial (made by a community member, not a rick roll this time I promise)
Pokémon Hearth by PurrfectDoodle. Tile art inserted via Porytiles. Used with permission.
Why Should I Use This Tool?
Porytiles makes importing from-scratch tilesets (or editing existing tilesets) easier than ever. Think of it this
way: Poryscript, another popular community tool, takes a .script file and
generates a corresponding .inc file. Comparably, Porytiles takes a source folder containing RGBA (or indexed) tile
assets and generates a corresponding metatiles.bin, metatile_attributes.bin, indexed tiles.png, indexed anim
folder, and a populated palettes folder -- all as part of your build!
For more info, please see this wiki page which explains what Porytiles can do in more detail.
Getting Started
For quick installation instructions, see Release Cadence below.
If you want more detailed installation instructions as well as the full quick start guide, take a look at the user documentation Installation and Quick Start pages, respectively.
Release Cadence
Porytiles publishes both versioned releases and a rolling snapshot.
Versioned releases follow semantic versioning (vX.Y.Z) and are tagged on the master branch.
Each tag triggers a permanent GitHub release with platform-specific zip files
and updates the porytiles Homebrew formula.
The CHANGELOG lists what changed in each release.
Snapshot releases are published automatically on every push to develop.
They generate the rolling snapshot GitHub release and update the porytiles-snapshot Homebrew formula.
Snapshots are for users who want the latest changes;
they are not considered stable and the tag is force-replaced on every push.
Install the latest versioned release via Homebrew:
brew install grunt-lucas/porytiles/porytiles
Install the latest rolling snapshot via Homebrew:
brew install grunt-lucas/porytiles/porytiles-snapshot
Alternatively, download platform-specific zip files directly from the releases page.
Either install path provides two binaries:
porytiles (the modern compiler) and porytiles-legacy (the preserved pre-1.0.0 compiler).
Homebrew works on Linux, macOS, and WSL.
On Linux and WSL, follow the Homebrew on Linux setup instructions.
Building From Source
See the developer documentation for build instructions.
Note For Aseprite Users
GitHub user PKGaspi has created a collection
of useful scripts here. Of particular interest is this
export_layers script, which
allows you to save each sprite layer to a different file. This may be useful, since Porytiles requires each tile layer
in a separate PNG file.