summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRangi <remy.oukaour+rangi42@gmail.com>2019-06-09 16:40:40 -0400
committerRangi <remy.oukaour+rangi42@gmail.com>2019-06-09 16:40:40 -0400
commit87fe8c05117edc00aa9dbfdd7488eed8948a3933 (patch)
tree1bc7b1b5dbb8b51c478b939390df6d660cfbbcae
parent54f09264bcb50b8c095026f69ac6b775b15c4050 (diff)
Expand the Town Map tileset
-rw-r--r--Allow-tiles-to-have-different-attributes-in-different-blocks-(including-X-and-Y-flip).md2
-rw-r--r--Edit-the-Town-Map.md2
-rw-r--r--Expand-the-Town-Map-Tile-Set.md245
-rw-r--r--Expand-the-Town-Map-tileset.md186
-rw-r--r--Remove-Pokémon-sprite-animations.md2
-rw-r--r--Tutorials.md2
-rw-r--r--screenshots/combined_gfx-pokegear-town_map.pngbin0 -> 738 bytes
-rw-r--r--screenshots/custom-town-maps.pngbin0 -> 13191 bytes
-rw-r--r--screenshots/expanded_gfx-pokegear-town_map.pngbin0 -> 749 bytes
-rw-r--r--screenshots/town-map-vram-expanded.pngbin0 -> 6333 bytes
10 files changed, 190 insertions, 249 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 f642dd6..682aa20 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
@@ -712,7 +712,7 @@ This has no effect on the ROM itself; it's just so that we can have a clean sepa
*Now* we're done! `make` works, and all the maps look the same as before—but now they're capable of looking very different.
-The pokecrystal map engine didn't support flipped, recolored, or priority tiles, so of course the tileset graphics were not designed to take advantage of those features. But now you can. And all of those engine features *did* exist in Gen 3, so if you're devamping tiles from R/S/E or FR/LG, they'll benefit from this change.
+The pokecrystal map engine didn't support flipped, recolored, or priority tiles, so of course the tileset graphics were not designed to take advantage of those features. But now you can. And all of those engine features *did* exist in Gen 3, so if you're devamping tiles from RSE or FRLG, they'll benefit from this change.
Case in point: here's Goldenrod City from [Red++ 4](https://github.com/TheFakeMateo/RedPlusPlus/):
diff --git a/Edit-the-Town-Map.md b/Edit-the-Town-Map.md
index 71e4544..38eb75c 100644
--- a/Edit-the-Town-Map.md
+++ b/Edit-the-Town-Map.md
@@ -21,7 +21,7 @@ You can freely edit this image to change the tiles, but you can't make it larger
![Screenshot](screenshots/town-map-vram.png)
-(If you want to add more tiles, there *are* those three unused blank ones on the right side of the tileset. You can also replace the two "-TO" tiles of "KANTO", since they're identical to the "JOHTO" ones.)
+(If you want to add more tiles, there *are* those three unused blank ones on the right side of the tileset. You can also replace the two "-TO" tiles of "KANTO", since they're identical to the "JOHTO" ones. Or follow [this tutorial](Expand-the-Town-Map-tileset) to free up even more tiles.)
## 2. The color palettes
diff --git a/Expand-the-Town-Map-Tile-Set.md b/Expand-the-Town-Map-Tile-Set.md
deleted file mode 100644
index 97d9644..0000000
--- a/Expand-the-Town-Map-Tile-Set.md
+++ /dev/null
@@ -1,245 +0,0 @@
-This is a tutorial on how to use 32 more tiles on the Town Map! It's actually pretty simple. I recommend reading the [town map editing tutorial](https://github.com/pret/pokecrystal/wiki/Edit-the-Town-Map) first to get to know how the town map works. Please note that GSCTME doesn't support this improvement, so if you're planning on using that for editing the town map, sorry, you'll have to manually edit the [gfx/pokegear/johto.bin](https://github.com/pret/pokecrystal/blob/master/gfx/pokegear/johto.bin) file in a hex editor.
-
-## Move text out of the way
-
-Follow steps 1 - 5 of [Expand-tilesets-from-192-to-255-tiles](https://github.com/pret/pokecrystal/wiki/Expand-tilesets-from-192-to-255-tiles) to move usable text from the bottom left part of VRAM.
-
-## Replace tile IDs
-
-Edit [engine/pokegear/pokegear.asm](https://github.com/pret/pokecrystal/blob/master/engine/pokegear/pokegear.asm):
-```diff
- Pokegear_LoadGFX:
- call ClearVBank1
- ld hl, TownMapGFX
- ld de, vTiles2
- ld a, BANK(TownMapGFX)
- call FarDecompress
- ld hl, PokegearGFX
-- ld de, vTiles2 tile $30
-+ ld de, vTiles2 tile $50
- ld a, BANK(PokegearGFX)
- call FarDecompress
-```
-```diff
- InitPokegearTilemap:
- xor a
- ldh [hBGMapMode], a
- hlcoord 0, 0
- ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-- ld a, $4f
-+ ld a, $6f
-```
-```diff
- .PlacePhoneBars:
- hlcoord 17, 1
-- ld a, $3c
-+ ld a, $5c
- ld [hli], a
- inc a
- ld [hl], a
- hlcoord 17, 2
- inc a
- ld [hli], a
- call GetMapPhoneService
- and a
- ret nz
- hlcoord 18, 2
-- ld [hl], $3f
-+ ld [hl], $5f
- ret
-```
-```diff
- Pokegear_FinishTilemap:
- hlcoord 0, 0
- ld bc, $8
-- ld a, $4f
-+ ld a, $6f
- call ByteFill
- hlcoord 0, 1
- ld bc, $8
-- ld a, $4f
-+ ld a, $6f
- call ByteFill
- ld de, wPokegearFlags
- ld a, [de]
- ...
- call nz, .PlaceRadioIcon
- hlcoord 0, 0
-- ld a, $46
-+ ld a, $66
- call .PlacePokegearCardIcon
- ret
-
- .PlaceMapIcon:
- hlcoord 2, 0
-- ld a, $40
-+ ld a, $60
- jr .PlacePokegearCardIcon
-
- .PlacePhoneIcon:
- hlcoord 4, 0
-- ld a, $44
-+ ld a, $64
- jr .PlacePokegearCardIcon
-
- .PlaceRadioIcon:
- hlcoord 6, 0
-- ld a, $42
-+ ld a, $62
-```
-```diff
- PokegearMap_UpdateLandmarkName:
- push af
- hlcoord 8, 0
- lb bc, 2, 12
- call ClearBox
- pop af
- ld e, a
- push de
- farcall GetLandmarkName
- pop de
- farcall TownMap_ConvertLineBreakCharacters
- hlcoord 8, 0
-- ld [hl], $34
-+ ld [hl], $54
- ret
-```
-```diff
- _FlyMap:
- ...
- ld de, FlyMapLabelBorderGFX
-- ld hl, vTiles2 tile $30
-+ ld hl, vTiles2 tile $50
- lb bc, BANK(FlyMapLabelBorderGFX), 6
- call Request1bpp
-```
-```diff
- TownMapBubble:
- ; Draw the bubble containing the location text in the town map HUD
-
- ; Top-left corner
- hlcoord 1, 0
-- ld a, $30
-+ ld a, $50
- ld [hli], a
- ...
- ; Top-right corner
-- ld a, $31
-+ ld a, $51
- ld [hl], a
- hlcoord 1, 1
- ...
- ; Bottom-left corner
- hlcoord 1, 2
-- ld a, $32
-+ ld a, $52
- ld [hli], a
- ...
- ; Bottom-right corner
-- ld a, $33
-+ ld a, $53
- ld [hl], a
- ...
- ; Up/down arrows
- hlcoord 18, 1
-- ld [hl], $34
-+ ld [hl], $54
- ret
-```
-```diff
- TownMapPals:
- ; Assign palettes based on tile ids
- hlcoord 0, 0
- decoord 0, 0, wAttrMap
- ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
- .loop
- ; Current tile
- ld a, [hli]
- push hl
--; The palette map covers tiles $00 to $5f; $60 and above use palette 0
-+; The palette map covers tiles $00 to $77, $78 and above aren't available
-- cp $60
-+ cp $78
- jr nc, .pal0
-```
-```diff
- LoadTownMapGFX:
- ld hl, TownMapGFX
- ld de, vTiles2
-- lb bc, BANK(TownMapGFX), $30
-+ lb bc, BANK(TownMapGFX), $50
- call DecompressRequest2bpp
- ret
-```
-
-## Add two rows of palettes
-
-Edit gfx/pokegear/town_map_palette_map.asm
-```diff
- ; gfx/pokegear/town_map.png
- townmappals EARTH, EARTH, EARTH, MOUNTAIN, MOUNTAIN, MOUNTAIN, BORDER, BORDER
- townmappals EARTH, EARTH, CITY, EARTH, POI, POI_MTN, POI, POI_MTN
- townmappals EARTH, EARTH, EARTH, MOUNTAIN, MOUNTAIN, MOUNTAIN, BORDER, BORDER
- townmappals EARTH, EARTH, BORDER, EARTH, EARTH, BORDER, BORDER, BORDER
- townmappals EARTH, EARTH, EARTH, MOUNTAIN, MOUNTAIN, MOUNTAIN, BORDER, BORDER
- townmappals BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER
-+ townmappals BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER
-+ townmappals BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER
-+ townmappals BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER
-+ townmappals BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER
- ; gfx/pokegear/pokegear.png
- townmappals BORDER, BORDER, BORDER, BORDER, POI, POI, POI, BORDER
- townmappals BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER
- townmappals CITY, CITY, CITY, CITY, CITY, CITY, CITY, CITY
- townmappals CITY, CITY, CITY, CITY, CITY, CITY, CITY, BORDER
- townmappals CITY, CITY, CITY, CITY, CITY, CITY, CITY, CITY
- townmappals BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER
-```
-
-## Fix the Makefile
-
-Edit the Makefile to get rid of the empty tiles in the pokegear.png file.
-```diff
--gfx/pokegear/pokegear.2bpp: rgbgfx += -x2
-+gfx/pokegear/pokegear.2bpp: rgbgfx += -x8
-```
-
-## Replace files
-
-Open up gfx/pokegear/clock.tilemap.rle in a hex editor of your choosing and replace it with
-`6F 08 6F 04 50 01 7F 06 51 01 6F 08 6F 04 7F 08 6F 0C 52 01 7F 06 53 01 6F 14 6F 02 06 01 07 0E 17 01 6F 02 6F 02 16 01 7F 0E 16 01 6F 02 6F 02 16 01 7F 0E 16 01 6F 02 6F 02 16 01 7F 0E 16 01 6F 02 6F 02 16 01 7F 0E 16 01 6F 02 6F 02 16 01 7F 0E 16 01 6F 02 6F 02 26 01 07 0E 27 01 6F 02 6F 14 FF`
-
-Open up gfx/pokegear/radio.tilemap.rle in a hex editor and replace it with
-`6F 08 06 01 07 0A 17 01 6F 08 16 01 6F 02 57 01 6F 01 58 01 59 01 6F 01 5A 01 6F 02 16 01 68 08 16 01 5B 0A 16 01 69 08 16 01 6F 0A 16 01 69 08 16 01 56 01 7F 01 6A 01 6B 01 6C 01 6D 01 6E 01 7F 02 55 01 16 01 69 08 26 01 07 0A 27 01 69 14 69 14 69 01 7F 12 69 01 69 01 7F 12 69 01 69 01 7F 12 69 01 69 14 FF`
-
-Open up gfx/pokegear/phone.tilemap.rle in a hex editor and replace it with
-`6F 08 06 01 07 0A 17 01 6F 08 16 01 6F 0A 16 01 06 01 07 07 27 01 6F 0A 16 01 16 01 7F 12 16 01 16 01 7F 12 16 01 16 01 7F 12 16 01 16 01 7F 12 16 01 16 01 7F 12 16 01 16 01 7F 12 16 01 16 01 7F 12 16 01 16 01 7F 12 16 01 16 01 7F 12 16 01 FF`
-
-Replace gfx/pokegear/town_map.png with the file below, or a new image with new tiles. Keep it 128x40 with border tiles in the same place as the ones below.
-
-![](https://cdn.discordapp.com/attachments/400679873539997697/586185380676763648/town_map.png)
-
-Replace gfx/pokegear/pokegear.png with
-
-![](https://cdn.discordapp.com/attachments/400679873539997697/586184974865006592/pokegear.png)
-
-## Fix Pokedex
-
-engine/pokedex/pokedex.asm
-```diff
- DexEntryScreen_MenuActionJumptable:
- ...
- .Area:
- ...
- predef Pokedex_GetArea
- call Pokedex_BlackOutBG
-+ call Pokedex_LoadGFX
-+ call Pokedex_LoadAnyFootprint
-
-```
-That will fix the tiles not being fixed when exiting the map.
-
-## Create your own map
-
-Then, edit [gfx/pokegear/johto.bin](https://github.com/pret/pokecrystal/blob/master/gfx/pokegear/johto.bin) and [gfx/pokegear/kanto.bin](https://github.com/pret/pokecrystal/blob/master/gfx/pokegear/kanto.bin) following the [Edit-the-Town-Map](https://github.com/pret/pokecrystal/wiki/Edit-the-Town-Map) tutorial.
-
diff --git a/Expand-the-Town-Map-tileset.md b/Expand-the-Town-Map-tileset.md
new file mode 100644
index 0000000..6cdfefc
--- /dev/null
+++ b/Expand-the-Town-Map-tileset.md
@@ -0,0 +1,186 @@
+[This tutorial](Edit-the-Town-Map) describes how to edit the Town Map, with a hex editor or with the old GSC Town Map Editor utility. However, you're limited to using 48 different tiles, which is not enough for more detailed maps. Here we'll see how to use at least 33 more tiles for designing Town Maps.
+
+(Note that the GSC Town Map Editor doesn't support this improvement, so you'll have to manually edit the [gfx/pokegear/johto.bin](../blob/master/gfx/pokegear/johto.bin) and [gfx/pokegear/kanto.bin](../blob/master/gfx/pokegear/kanto.bin) files in a hex editor.)
+
+
+## TOC
+
+
+## 1. Combine the Town Map and Pokégear graphics
+
+The Pokégear graphics are right after the Town Map graphics in VRAM, and they have a couple of unused tiles. Plus [gfx/pokegear/town_map_palette_map.asm](../blob/master/gfx/pokegear/town_map_palette_map.asm) already assigns palettes to them both. It's fairly simple to combine them into a single tileset.
+
+First, edit [gfx/pokegear/town_map.png](../blob/master/gfx/pokegear/town_map.png), appendng the [gfx/pokegear/pokegear.png](../blob/master/gfx/pokegear/pokegear.png) tiles to it:
+
+![gfx/pokegear/town_map.png](screenshots/combined_gfx-pokegear-town_map.png)
+
+You can then delete [gfx/pokegear/pokegear.png](../blob/master/gfx/pokegear/pokegear.png).
+
+Then edit [main.asm](../blob/master/main.asm):
+
+```diff
+ SECTION "bank77_2", ROMX
+
+ INCLUDE "engine/rtc/print_hours_mins.asm"
+ INCLUDE "engine/events/diploma.asm"
+ INCLUDE "engine/pokedex/pokedex_3.asm"
+ INCLUDE "engine/events/catch_tutorial_input.asm"
+ INCLUDE "engine/pokegear/townmap_convertlinebreakcharacters.asm"
+-
+-PokegearGFX:
+-INCBIN "gfx/pokegear/pokegear.2bpp.lz"
+
+ INCLUDE "engine/pokemon/european_mail.asm"
+```
+
+Edit the [Makefile](../blob/master/Makefile):
+
+```diff
+-gfx/pokegear/pokegear.2bpp: rgbgfx += -x2
+```
+
+Edit [gfx/pokegear/town_map_palette_map.asm](../blob/master/gfx/pokegear/town_map_palette_map.asm):
+
+```diff
+-; gfx/pokegear/pokegear.png
+```
+
+(Removing the Makefile rule and the comment won't really do anything, but it avoids confusion from mentioning a file that we just deleted.)
+
+And edit [engine/pokegear/pokegear.asm](../blob/master/engine/pokegear/pokegear.asm):
+
+```diff
+ Pokegear_LoadGFX:
+ call ClearVBank1
+ ld hl, TownMapGFX
+ ld de, vTiles2
+ ld a, BANK(TownMapGFX)
+ call FarDecompress
+- ld hl, PokegearGFX
+- ld de, vTiles2 tile $30
+- ld a, BANK(PokegearGFX)
+- call FarDecompress
+ ld hl, PokegearSpritesGFX
+ ld de, vTiles0
+ ld a, BANK(PokegearSpritesGFX)
+ call Decompress
+ ...
+```
+
+```diff
+ LoadTownMapGFX:
+ ld hl, TownMapGFX
+ ld de, vTiles2
+- lb bc, BANK(TownMapGFX), 48
++ lb bc, BANK(TownMapGFX), 96
+ call DecompressRequest2bpp
+ ret
+```
+
+Now the whole set of 96 tiles gets loaded at once, but there's one flaw. The Pokédex area map only ever loaded the Town Map graphics; it skipped the Pokégear graphics because it used that space for the Pokédex's own graphics. Now that we're treating the Pokégear tiles as just extra Town Map tiles, we need to reload the Pokédex tiles when we close the Area map.
+
+Edit [engine/pokedex/pokedex.asm](../blob/master/engine/pokedex/pokedex.asm):
+
+```diff
+ DexEntryScreen_MenuActionJumptable:
+ dw Pokedex_Page
+ dw .Area
+ dw .Cry
+ dw .Print
+
+ .Area:
+ ...
+ ld a, [wDexCurLocation]
+ ld e, a
+ predef Pokedex_GetArea
+ call Pokedex_BlackOutBG
++ call Pokedex_LoadGFX
++ call Pokedex_LoadAnyFootprint
+ call DelayFrame
+ ...
+```
+
+Now we can use tile IDs $30–$5F for the Town Map, not just $00–$2F. Most of them are needed for the Pokégear, but the last two bottom-right blank tiles, $5E and $5F, are unused. Tile $5D is also blank, but it's used once in the Radio Card, so if you overwrite it with graphics for the Town Map, you'll have to replace the byte `5D` with `7F` in [gfx/pokegear/radio.tilemap.rle](../blob/master/gfx/pokegear/radio.tilemap.rle) (with a hex editor, not a text editor).
+
+Two or three extra tiles isn't much of an advantage; we'd have to simplify the Pokégear graphics to make room for Town Map ones. That *is* possible: any tile that's just black and white can be moved into [gfx/font/font.png](../blob/master/gfx/font/font.png) and [gfx/font/font_inversed.png](../blob/master/gfx/font/font_inversed.png). However, we'd then have to track down all the places that use those tile IDs and update them, which can be tedious. Luckily there's a more efficient solution.
+
+
+## 2. Move the "extra" font graphics and use their space
+
+Tiles $00–$2F are the original Town Map graphics, $30–5F are the Pokégear graphics, $60–7E are some "extra" font graphics, $7F is the space character, and $80–$FF are the standard font graphics. We can see how they're laid out in [BGB](http://bgb.bircd.org/)'s VRAM viewer:
+
+![Screenshot](screenshots/town-map-vram.png)
+
+Those extra font graphics also take up space that could be used for overworld map tilesets. [**This tutorial**](Expand-tilesets-from-192-to-255-tiles) explains how to expand map tilesets from 192 to 255 tiles, and part of that involves moving the extra font graphcs from tiles $60–7E to within the standard font tile space, $80–FF. (Tile $7F stays as the space character.)
+
+If you haven't followed the 192-to-255-tile tutorial yet, you don't actually have to do the whole thing. Steps 1–5 and 9–10 explain how to move the extra font tiles out of the $60–$7E space, and steps 6–8 explain how to repurpose that space for map tilesets. So if all you care about is the Town Map, you can skip steps 6–8. However, I recommend following the whole tutorial anyway, because if you care about graphics enough to be redesigning the Town Map, you'll probably end up pushing the limits of what 192 map tiles can do.
+
+Anyway, after we combine the Town Map and Pokégear graphics, *and* move the extra font tiles by following [**this tutorial**](Expand-tilesets-from-192-to-255-tiles), then the VRAM looks like this:
+
+![Screenshot](screenshots/town-map-vram-expanded.png)
+
+Let's enable those 31 tiles for use in the Town Map.
+
+First, edit [gfx/pokegear/town_map.png](../blob/master/gfx/pokegear/town_map.png), adding another two rows of empty tiles:
+
+![gfx/pokegear/town_map.png](screenshots/expanded_gfx-pokegear-town_map.png)
+
+Note that the bottom-right tile $7F is the space character, so it should stay blank.
+
+Then edit [gfx/pokegear/town_map_palette_map.asm](../blob/master/gfx/pokegear/town_map_palette_map.asm):
+
+```diff
+ ; gfx/pokegear/town_map.png
+ townmappals EARTH, EARTH, EARTH, MOUNTAIN, MOUNTAIN, MOUNTAIN, BORDER, BORDER
+ townmappals EARTH, EARTH, CITY, EARTH, POI, POI_MTN, POI, POI_MTN
+ townmappals EARTH, EARTH, EARTH, MOUNTAIN, MOUNTAIN, MOUNTAIN, BORDER, BORDER
+ townmappals EARTH, EARTH, BORDER, EARTH, EARTH, BORDER, BORDER, BORDER
+ townmappals EARTH, EARTH, EARTH, MOUNTAIN, MOUNTAIN, MOUNTAIN, BORDER, BORDER
+ townmappals BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER
+ townmappals BORDER, BORDER, BORDER, BORDER, POI, POI, POI, BORDER
+ townmappals BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER
+ townmappals CITY, CITY, CITY, CITY, CITY, CITY, CITY, CITY
+ townmappals CITY, CITY, CITY, CITY, CITY, CITY, CITY, BORDER
+ townmappals CITY, CITY, CITY, CITY, CITY, CITY, CITY, CITY
+ townmappals BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER
++ townmappals BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER
++ townmappals BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER
++ townmappals BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER
++ townmappals BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER, BORDER
+```
+
+And edit [engine/pokegear/pokegear.asm](../blob/master/engine/pokegear/pokegear.asm):
+
+```diff
+ TownMapPals:
+ ; Assign palettes based on tile ids
+ hlcoord 0, 0
+ decoord 0, 0, wAttrMap
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ .loop
+ ; Current tile
+ ld a, [hli]
+ push hl
+-; The palette map covers tiles $00 to $5f; $60 and above use palette 0
+- cp $60
+-; The palette map covers tiles $00 to $7e; $7f and above use palette 0
+- cp $7f
+ jr nc, .pal0
+ ...
+```
+
+```diff
+ LoadTownMapGFX:
+ ld hl, TownMapGFX
+ ld de, vTiles2
+- lb bc, BANK(TownMapGFX), 96
++ lb bc, BANK(TownMapGFX), 127
+ call DecompressRequest2bpp
+ ret
+```
+
+Now we're done! With extra tiles and custom colors, your project can have a really unique Town Map:
+
+![Screenshot](screenshots/custom-town-maps.png)
+
+(Town Maps from [Red++](https://github.com/TheFakeMateo/RedPlusPlus/), [Polished Crystal](https://github.com/Rangi42/polishedcrystal), RSE-style Hoenn by SaveState, DPPt-style Sinnoh by SaveState, Aurum by Bruhium, and [Brass](https://github.com/WasabiRaptor/Pokemon-Brass/).)
diff --git a/Remove-Pokémon-sprite-animations.md b/Remove-Pokémon-sprite-animations.md
index eb08f53..01491e1 100644
--- a/Remove-Pokémon-sprite-animations.md
+++ b/Remove-Pokémon-sprite-animations.md
@@ -1,7 +1,7 @@
One of Pokémon Crystal's improvements to Gold and Silver was animating the Pokémon sprites. There are various reasons why you might want to remove this feature:
- You're changing a lot of Pokémon and don't want to design animations for them all
-- You want the game to more closely resemble R/B/Y or G/S
+- You want the game to more closely resemble RBY or GS
- You need the space for something else
If you just want some of the Pokémon to not be animated, then as mentioned in the [new Pokémon tutorial](Add-a-new-Pokémon), you can just put `endanim` as the full contents of anim.asm and anim_idle.asm for those particular Pokémon. But if none if them will be animated, then you can save considerable ROM space by removing the entire animation system.
diff --git a/Tutorials.md b/Tutorials.md
index 4bdca63..5c6d975 100644
--- a/Tutorials.md
+++ b/Tutorials.md
@@ -65,6 +65,7 @@ Tutorials may use diff syntax to show edits:
- [Allow tiles to have different attributes in different blocks (including X and Y flip)](Allow-tiles-to-have-different-attributes-in-different-blocks-\(including-X-and-Y-flip\))
- [Allow more than 15 `object_event`s per map](Allow-more-than-15-object_events-per-map)
- [Improve the outdoor sprite system](Improve-the-outdoor-sprite-system)
+- [Expand the Town Map tileset](Expand-the-Town-Map-tileset)
- [Increase Pokémon sprite animation size](Increase-Pokémon-sprite-animation-size)
- [Allow more trainer parties, with individual DVs, stat experience, and nicknames](Allow-more-trainer-parties,-with-individual-DVs,-stat-experience,-and-nicknames)
- [Colored trainer card badges](Colored-trainer-card-badges)
@@ -74,7 +75,6 @@ Tutorials may use diff syntax to show edits:
- [Custom order for the Old Pokédex mode](Custom-order-for-the-Old-Pokédex-mode)
- [Short beeping noise for low HP](Short-beeping-noise-for-low-HP)
- [Remove the artificial save delay](Remove-the-artificial-save-delay)
-- [Expand the Town Map Tile Set](https://github.com/pret/pokecrystal/wiki/Expand-the-Town-Map-Tile-Set)
## Removing features
diff --git a/screenshots/combined_gfx-pokegear-town_map.png b/screenshots/combined_gfx-pokegear-town_map.png
new file mode 100644
index 0000000..b6e396e
--- /dev/null
+++ b/screenshots/combined_gfx-pokegear-town_map.png
Binary files differ
diff --git a/screenshots/custom-town-maps.png b/screenshots/custom-town-maps.png
new file mode 100644
index 0000000..a7c2b9c
--- /dev/null
+++ b/screenshots/custom-town-maps.png
Binary files differ
diff --git a/screenshots/expanded_gfx-pokegear-town_map.png b/screenshots/expanded_gfx-pokegear-town_map.png
new file mode 100644
index 0000000..fba4a56
--- /dev/null
+++ b/screenshots/expanded_gfx-pokegear-town_map.png
Binary files differ
diff --git a/screenshots/town-map-vram-expanded.png b/screenshots/town-map-vram-expanded.png
new file mode 100644
index 0000000..25bebc9
--- /dev/null
+++ b/screenshots/town-map-vram-expanded.png
Binary files differ