grunt-lucas / porytiles

Overworld tileset compiler for Pokémon Generation 3 decompilation projects
MIT License
36 stars 3 forks source link
c-plus-plus c-plus-plus-20 decomp decomp-hacking decompilation decomps gen-3 gen-iii palette palette-generation palette-generator palettes pokemon rom-hacking romhacking tileset tileset-compiler tileset-editor tilesets

Porytiles

Porytiles Develop Branch Build Porytiles Nightly Release

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

Please see the Releases for the newest stable version. If you want the latest, possibly unstable changes from the develop branch, grab the nightly release instead.

For detailed documentation about Porytiles features and internal workings, please see the wiki or the video tutorial series.

PokemonHearth Pokémon Hearth by PurrfectDoodle. Tile art inserted via Porytiles.

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

First, go ahead and follow the release installation instructions in the wiki. Alternatively, intrepid users may choose to build Porytiles from source. Once you've got Porytiles working, try the demo steps located at this wiki page. Everything else you need to know about Porytiles can be found in the wiki or in this video tutorial series. I highly recommend reading the wiki articles in order, or watching the video series in order. The wiki and video series are meant to be complementary. If you have further questions, I can be found on the pret and RH Hideout discord servers under the name grunt-lucas.

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 GCC, should you prefer it over Clang+LLVM.

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.