Overworld tileset compiler for Pokémon Generation III decompilation projects
  • C++ 80%
  • C 17.3%
  • Jinja 1.3%
  • Python 0.8%
  • CMake 0.4%
  • Other 0.2%
Find a file
2026-07-13 06:03:30 -07:00
.claude/skills Style guide and remove some old agent files [no ci] 2026-06-08 16:34:42 -07:00
.codex/skills/fix-includes Add codex files [no ci] 2026-07-06 14:16:11 -07:00
.github Fix ci homewbrew smoketest 2026-07-05 07:02:15 -07:00
.idea Add configurable packing strategies, FireRed metatile support, and script modernization (#192) 2026-03-17 08:18:41 -07:00
.vscode File and dir name refactor plus versioned builds (#308) 2026-06-01 18:42:20 -07:00
docs README and doxygen homepage updates [no ci] 2026-06-09 10:46:35 -07:00
legacy Setup builds from step D (#309) 2026-06-03 07:40:26 -07:00
porytiles Renamed instances of pal to palette [no ci] 2026-07-13 06:03:30 -07:00
resources Renamed instances of attr to attribute [no ci] 2026-07-12 13:40:43 -07:00
scripts Implement completely customizable metatile attributes, removing the clunky BaseGame system (#341) 2026-07-10 15:27:04 -07:00
.clang-tidy Release prep document and release process phase A complete (#306) 2026-05-31 07:12:52 -07:00
.gitignore Implement completely customizable metatile attributes, removing the clunky BaseGame system (#341) 2026-07-10 15:27:04 -07:00
.porytiles-marker-file Moved rest of warnings onto new diag system 2025-04-27 09:07:40 -07:00
.rgignore Big filename refactor, more to come 2024-10-14 07:16:29 -07:00
AGENTS.md Add codex files [no ci] 2026-07-06 14:16:11 -07:00
AI_POLICY.md Update AI policy and README [no ci] 2026-06-25 07:45:27 -07:00
CHANGELOG.md Renamed instances of attr to attribute [no ci] 2026-07-12 13:40:43 -07:00
CLAUDE.md Implement completely customizable metatile attributes, removing the clunky BaseGame system (#341) 2026-07-10 15:27:04 -07:00
CMakeLists.txt Setup builds from step D (#309) 2026-06-03 07:40:26 -07:00
CONTRIBUTING.md More doc fixes [no ci] 2026-06-06 08:34:48 -07:00
LICENSE Some new classes, refactoring, and code cleanup (#194) 2026-03-31 12:35:48 -07:00
README.md Update AI policy and README [no ci] 2026-06-25 07:45:27 -07:00
RELEASE_PROCESS.md Release process tweak [no ci] 2026-07-05 15:17:07 -07:00
STYLE.md Implement completely customizable metatile attributes, removing the clunky BaseGame system (#341) 2026-07-10 15:27:04 -07:00
VERSION Setup builds from step D (#309) 2026-06-03 07:40:26 -07:00

Porytiles

Porytiles Snapshot Release Porytiles Versioned Release

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.

PokemonHearth 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.