diff options
-rw-r--r-- | Allow-tiles-to-have-different-attributes-in-different-blocks-(including-X-and-Y-flip).md | 22 | ||||
-rw-r--r-- | screenshots/extra-tiles.png | bin | 2871 -> 0 bytes | |||
-rw-r--r-- | screenshots/polished-map-plusplus-extra-tiles.png | bin | 8060 -> 0 bytes |
3 files changed, 6 insertions, 16 deletions
diff --git a/Allow-tiles-to-have-different-attributes-in-different-blocks-(including-X-and-Y-flip).md b/Allow-tiles-to-have-different-attributes-in-different-blocks-(including-X-and-Y-flip).md index fdcd158..c60d7f2 100644 --- a/Allow-tiles-to-have-different-attributes-in-different-blocks-(including-X-and-Y-flip).md +++ b/Allow-tiles-to-have-different-attributes-in-different-blocks-(including-X-and-Y-flip).md @@ -8,7 +8,7 @@ For example, here's the `kanto` tileset. The tiles highlighted in fuchsia are ju This tutorial will show you how to switch from per-tile \*_palette_map.asm files to per-block **\*_attributes.bin** files, which assign full attributes (not just colors) to the individual tiles of each block. By the end, you'll be able to make maps like [this](screenshots/redplusplus-goldenrod-city.png). -(The code for this feature was adapted from [Pokémon Red++](https://github.com/TheFakeMateo/RedPlusPlus/).) +(The code for this feature was adapted from [Pokémon Polished Crystal](https://github.com/Rangi42/polishedcrystal/).) ## Contents @@ -22,7 +22,7 @@ This tutorial will show you how to switch from per-tile \*_palette_map.asm files 7. [Continue changing how tile attributes are loaded](#7-continue-changing-how-tile-attributes-are-loaded) 8. [Finish changing how tile attributes are loaded](#8-finish-changing-how-tile-attributes-are-loaded) 9. [Rename \*.blk to \*.ablk](#9-rename-blk-to-ablk) -10. [Use more than 256 tiles in a tileset](#10-use-more-than-256-tiles-in-a-tileset) +10. [Use up to 512 tiles in a tileset](#10-use-up-to-512-tiles-in-a-tileset) ## 1. Review how tilesets and VRAM work @@ -741,20 +741,10 @@ And the tileset itself is a colorless image: Note that Polished Map++ assumes you have also [expanded the tilesets to 255 tiles](Expand-tilesets-from-192-to-255-tiles). If you don't apply that tutorial, your maps will look incorrect. -## 10. Use more than 256 tiles in a tileset +## 10. Use up to 512 tiles in a tileset -If you were paying attention during the review of how VRAM works, you'll have noticed that technically a map can use 512 different tiles. The tile ID goes from 0 to 255, and the bank bit is 0 or 1; 256 × 2 = 512. But even Polished Map++ can only load 256 tile graphics at once. So how can we go beyond this? +If you were paying attention during the review of how VRAM works, you'll have noticed that technically a map can use 512 different tiles. The tile ID goes from 0 to 255, and the bank bit is 0 or 1; 256 × 2 = 512. -That's what the "★" checkbox in the block editor is for. It basically lets you use the tiles in the "middle" two areas of VRAM instead of the "bottom" two areas. Polished Map++ can't show the actual graphics in those middle areas—unless you modify how pokecrystal works, they'll just contain font tiles and NPC sprites anyway—but it draws a cyan border around a tile to indicate that it's special. +That's what the **512 Tiles** option is for. It lets your tileset graphic have up to 512 tiles instead of up to 256. By default, extra tiles are assumed to go in $1:80-FF first, and then $0:80-FF; the **$0:80-FF Before $1:80-FF** option inverts this. The default choice is made because Polished Crystal freed up its $1:80-FF VRAM to allow up to 384 tiles. Depending on which extra VRAM you free for tileset use, either choice might be more convenient. -Keep in mind that pokecrystal and Polished Map++ show tile IDs that aren't quite the same as the internal hardware. They all agree about tile IDs $00 to $7F, which are in VRAM bank 0, but the tiles that Polished Map++ calls $80 to $FF are actually encoded as $00 to $7F in bank 1. - -For example, here's a block that uses tiles $0F, $0A, $0C, and $0D with the "★" attribute: - - - -Those are actually tiles $8F, $8A, $8C, and $8D in bank 0. And those values in [charmap.asm](../blob/master/charmap.asm) correspond to the letters "P", "K", "M", and "N". Which is exactly what we see in the game: - - - -There are plenty of ways to take advantage of some of that VRAM real estate for maps, instead of text and sprites. But that's beyond the scope of this tutorial. ;) +Keep in mind that `LoadTilesetGFX` in [home/map.asm](../blob/master/home/map.asm) only loads 256 tiles. You'll have to devise your own scheme for loading extra tiles into whichever VRAM you want to use. There's no one-size-fits-all solution to recommend, since $0:80-FF is taken up for font tiles and $1:80-FF for NPCs' walking sprites. Polished Map++ won't care about how the code loads the graphics, as long as it sees a single tileset image with all the tiles in order. diff --git a/screenshots/extra-tiles.png b/screenshots/extra-tiles.png Binary files differdeleted file mode 100644 index f06c1ad..0000000 --- a/screenshots/extra-tiles.png +++ /dev/null diff --git a/screenshots/polished-map-plusplus-extra-tiles.png b/screenshots/polished-map-plusplus-extra-tiles.png Binary files differdeleted file mode 100644 index 65de84f..0000000 --- a/screenshots/polished-map-plusplus-extra-tiles.png +++ /dev/null |