/porytiles

Overworld tileset compiler for Pokémon Generation 3 decompilation projects

Primary LanguageC++MIT LicenseMIT

Porytiles

Actions Status

Overworld tileset compiler for use with the pokeemerald, pokefirered, and pokeruby Pokémon Generation 3 decompilation projects from pret. Builds Porymap-ready tilesets from RGBA (or indexed) tile assets.

Please see the Releases for the latest stable version, or check out the trunk branch to get the upcoming changes listed in the changelog.

For detailed documentation about Porytiles features and internal workings, please see the wiki.

Table of Contents

Why Should I Use This Tool?

Porytiles makes importing from-scratch tilesets (or editing existing tilesets) easier than ever. Think of it this way: just like Poryscript takes a .script file and generates a corresponding .inc file as part of your build, Porytiles takes an 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.

Compiler Information

Clang+LLVM 16 is the "official" Porytiles build toolchain -- the Porytiles formatting/coverage/tidy scripts rely on LLVM tools to function. However, most reasonable C++ compilers should be able to build the executable, assuming they have support for the C++20 standard. In addition to Clang+LLVM, the Porytiles CI pipeline runs a build job with GCC 13. I try to maintain compatibility with that compiler, should you prefer it over Clang+LLVM.

Getting Started

First, clone and build Porytiles. (Alternatively, you can skip the build step by downloading a release binary from the Releases tab.)

git clone https://github.com/grunt-lucas/porytiles.git
cd porytiles
CXX=clang++ make check
./release/bin/porytiles --help

Once you've cloned and built Porytiles, try the demo steps located at this wiki page.