Skip to content

Why Should I Use This Tool?

grunt-lucas edited this page Mar 19, 2024 · 16 revisions

Creating new overworld tilesets from scratch or editing existing tilesets is confusing and tedious. Every user has a slightly different process depending on their experience level and which (often outdated or incomplete) tutorial they followed. Your process might look something like:

  1. Draw or copy-paste the art you want into a tilesheet.
  2. Figure out how many 16-color palettes you'll need and which tiles will assign to which palettes.
  3. Convert your art from RGB to indexed, minding the palette limitations.
  4. Manually de-dupe your tiles, or use a tool like TileMapStudio to de-dupe and deflip.
  5. Copy-paste your de-duped and de-flipped tiles onto a tiles.png while maintaining correct 0-15 indexing for each tile.
  6. Manually create (or export) JASC pal files. Make sure they are correctly named and in the correct order.
  7. Import the tiles.png and pal files into Porymap.
  8. Use Porymap's tileset editor to manually paint metatiles from your tiny and hard-to-see tiles.png.
  9. And I haven't even mentioned setting up animated tiles yet...

This can be super frustrating for newer or less technically inclined decomp hackers. Even for veterans, importing complicated structures like buildings that have tons of similar looking tiles with lots of flips is extremely tedious and error-prone.

In comes Porytiles! Instead of all that nonsense, use your preferred image editor to paint your metatiles, exactly how you want them to look, on three PNGs--one for each metatile layer. You can just use whatever PNG color format you prefer (RGBA, 256-color indexed, etc). No need to worry about manually assigning colors to different palettes or keeping indexes properly aligned. Feed these layer PNGs into Porytiles, and it will generate all the low level files Porymap needs to get you editing your map. If you are using too many unique colors or tiles, Porytiles will give you a useful error message. Then you can diagnose the problem and tweak the tileset so it works within the GBA's constraints. You can even use Porytiles to help you set up animations!

Welcome to incremental tileset creation. Don't like the way your Pokémart roof looks after seeing it in-game? No need to manually create new tiles in tiles.png, add new colors to your pals, and then repaint the metatile. Just edit it on your layer PNGs, re-run them through Porytiles, and it'll re-generate everything for you in-place without breaking your existing map data. Refresh Porymap and voila! Your edited tiles will automatically appear in the metatile picker, and any map cells you painted with that tile will be automatically updated.

Porytiles effectively turns metatiles.bin, metatile_attributes.bin, tiles.png, anims/*, and palettes/*.pal into build artifacts. It can be seamlessly integrated into any of the decomp repo Make systems, so all you have to check in are your layer/animation PNG sheets (and a couple other metadata files).

Do you have tilesets that you already painstakingly created manually? Do you just want to make some small edits to the vanilla tilesets? In comes the Porytiles decompiler command! This command allows you to easily transform a Porymap-format tileset into the three RGB PNG layer sheets Porytiles expects as input. Now you can easily convert all your existing tilesets to Porytiles format for easy editing and re-compilation.

Starting Out

Why Should I Use This Tool?

Installing A Release

Building From Source

My First Demo

Compilation

Compiling A Primary Tileset

Compiling A Secondary Tileset

Adding Animations

Metatile Attributes

Decompilation

Decompiling A Primary Tileset

Decompiling A Secondary Tileset

Editing Vanilla Tilesets

Advanced Topics

How Porytiles Works

Warnings and Errors

Makefile Integration

Target Base Game and Fieldmap Overrides

Other Useful Options

Palette Primers

Layering Structures to Maximize Palette Efficiency

Clone this wiki locally