shithub: pokecrystal

Download patch

ref: a2077704708eaf925e7b6bdead70a70d8e756536
parent: 1ecfe6bd23bb9b4e1886342c082bd5c3a108abbb
parent: 0c7ef5e2d8a6904da7dbf601dffdf07a5a42b4b0
author: Bryan Bishop <kanzure@gmail.com>
date: Fri Jul 18 11:25:26 EDT 2014

Merge pull request #257 from yenatch/map-headers

Map header macros and misc comments

--- a/constants/type_constants.asm
+++ b/constants/type_constants.asm
@@ -1,4 +1,3 @@
-
 	const_def
 
 PHYSICAL EQU const_value
@@ -12,7 +11,6 @@
 	const BUG
 	const GHOST
 	const STEEL
-
 
 UNUSED_TYPES EQU const_value
 	const TYPE_10
--- a/data/odd_eggs.asm
+++ b/data/odd_eggs.asm
@@ -1,43 +1,52 @@
 GiveOddEgg: ; 1fb4b6
 
-; Figure out which egg to give.
+	; Figure out which egg to give.
+
+	; Compare a random word to
+	; probabilities out of 0xffff.
 	call Random
 	ld hl, .Probabilities
 	ld c, 0
 	ld b, c
-.next
+.loop
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
 	ld d, a
+
+	; Break on $ffff.
 	ld a, d
-	cp $ff
-	jr nz, .first
+	cp $ffff / $100
+	jr nz, .not_done
 	ld a, e
-	cp $ff
+	cp $ffff % $100
 	jr z, .done
-.first
-	ld a, [hRandomSub]
+.not_done
+
+	; Break when [hRandom] <= de.
+	ld a, [hRandom + 1]
 	cp d
 	jr c, .done
-	jr z, .second
-	jr .good
-.second
-	ld a, [hRandomAdd]
+	jr z, .ok
+	jr .next
+.ok
+	ld a, [hRandom + 0]
 	cp e
 	jr c, .done
 	jr z, .done
-.good
+.next
 	inc bc
-	jr .next
+	jr .loop
 .done
 
 	ld hl, OddEggs
 	ld a, OddEgg2 - OddEgg1
 	call AddNTimes
+
 	ld de, $c608
 	ld bc, $0046
 	call CopyBytes
+
 	ld a, EGG_TICKET
 	ld [CurItem], a
 	ld a, $1
@@ -46,29 +55,31 @@
 	ld [$d107], a
 	ld hl, NumItems
 	call TossItem
+
 	ld a, EGG
 	ld [$cd2a], a
-	ld a, $29
+
+	ld a, $cd29 % $100
 	ld [$cd20], a
-	ld a, $cd
+	ld a, $cd29 / $100
 	ld [$cd21], a
-	ld a, $8
+	ld a, $c608 % $100
 	ld [$cd22], a
-	ld a, $c6
+	ld a, $c608 / $100
 	ld [$cd23], a
 
 	ld hl, .Odd
 	ld de, $cd2b
-	ld bc, $000b
+	ld bc, PKMN_NAME_LENGTH
 	call CopyBytes
 
-	ld a, $2b
+	ld a, $cd2b % $100
 	ld [$cd24], a
-	ld a, $cd
+	ld a, $cd2b / $100
 	ld [$cd25], a
-	ld a, $38
+	ld a, $c638 % $100
 	ld [$cd26], a
-	ld a, $c6
+	ld a, $c638 / $100
 	ld [$cd27], a
 	callba Function11b98f
 	ret
@@ -78,20 +89,28 @@
 	db "ODD@@@@@@@@@"
 
 .Probabilities
-	dw $147a ; 92% ->  8%
-	dw $170a ; 91% ->  1%
-	dw $3fff ; 75% -> 16%
-	dw $47ad ; 72% ->  3%
-	dw $70a3 ; 56% -> 16%
-	dw $7851 ; 53% ->  3%
-	dw $9c28 ; 39% -> 14%
-	dw $a147 ; 37% ->  2%
-	dw $bae0 ; 27% -> 10%
-	dw $bfff ; 25% ->  2%
-	dw $deb7 ; 13% -> 12%
-	dw $e3d6 ; 11% ->  2%
-	dw $fd6f ;  1% -> 10%
-	dw $ffff ;  0% ->  1%
+
+prob: MACRO
+prob_total = prob_total + (\1)
+	dw prob_total * $ffff / 100
+ENDM
+
+prob_total = 0
+
+	prob 8
+	prob 1
+	prob 16
+	prob 3
+	prob 16
+	prob 3
+	prob 14
+	prob 2
+	prob 10
+	prob 2
+	prob 12
+	prob 2
+	prob 10
+	prob 1
 ; 1fb56e
 
 
--- a/home/decompress.asm
+++ b/home/decompress.asm
@@ -1,10 +1,10 @@
 FarDecompress:: ; b40
 ; Decompress graphics data from a:hl to de.
 
-	ld [$c2c4], a
+	ld [wLZBank], a
 	ld a, [hROMBank]
 	push af
-	ld a, [$c2c4]
+	ld a, [wLZBank]
 	rst Bankswitch
 
 	call Decompress
@@ -75,9 +75,9 @@
 	; Save the output address
 	; for rewrite commands.
 	ld a, e
-	ld [$c2c2], a
+	ld [wLZAddress], a
 	ld a, d
-	ld [$c2c2 + 1], a
+	ld [wLZAddress + 1], a
 
 .Main
 	ld a, [hl]
@@ -164,16 +164,16 @@
 ; Write the same byte for bc bytes.
 	ld a, [hli]
 
-.iterloop
+.iloop
 	dec c
-	jr nz, .iternext
+	jr nz, .inext
 	dec b
 	jp z, .Main
 
-.iternext
+.inext
 	ld [de], a
 	inc de
-	jr .iterloop
+	jr .iloop
 
 
 .Alt
@@ -249,10 +249,10 @@
 	ld l, [hl]
 	ld h, a
 	; add to starting output address
-	ld a, [$c2c2]
+	ld a, [wLZAddress]
 	add l
 	ld l, a
-	ld a, [$c2c3]
+	ld a, [wLZAddress + 1]
 	adc h
 	ld h, a
 
@@ -272,6 +272,7 @@
 ; However, lengths longer than 768
 ; would be interpreted as LZ_END.
 
+; More practically, LZ_LONG is not recursive.
 ; For now, it defaults to LZ_REPEAT.
 
 
@@ -306,8 +307,10 @@
 	rl b
 	dec c
 	jr nz, .floop
+
 	ld a, b
 	pop bc
+
 	ld [de], a
 	inc de
 	jr .Flip
--- a/home/map.asm
+++ b/home/map.asm
@@ -2053,7 +2053,7 @@
 	; get pointer to map group
 	dec b
 	ld c, b
-	ld b, $0
+	ld b, 0
 	ld hl, MapGroupPointers
 	add hl, bc
 	add hl, bc
@@ -2065,8 +2065,8 @@
 
 	; find the cth map header
 	dec c
-	ld b, $0
-	ld a, OlivineGym_MapHeader - OlivinePokeCenter1F_MapHeader
+	ld b, 0
+	ld a, 9
 	call AddNTimes
 	ret
 ; 0x2c04
--- a/hram.asm
+++ b/hram.asm
@@ -60,6 +60,7 @@
 
 hTileAnimFrame     EQU $ffdf
 
+hRandom            EQU $ffe1
 hRandomAdd         EQU $ffe1
 hRandomSub         EQU $ffe2
 
--- a/maps/blockdata_1.asm
+++ b/maps/blockdata_1.asm
@@ -71,6 +71,16 @@
 ; 0xa8df6
 
 CinnabarPokeCenter2FBeta_BlockData: ; 0xa8df6
+CeruleanPokeCenter2FBeta_BlockData:
+Route10PokeCenter2FBeta_BlockData:
+VermilionPokeCenter2FBeta_BlockData:
+PewterPokeCEnter2FBeta_BlockData:
+FuchsiaPokeCenter2FBeta_BlockData:
+LavenderPokeCenter2FBeta_BlockData:
+PokeCenter2F_BlockData:
+CeladonPokeCenter2FBeta_BlockData:
+ViridianPokeCenter2FBeta_BlockData:
+SaffronPokeCenter2FBeta_BlockData:
 	INCBIN "maps/CinnabarPokeCenter2FBeta.blk"
 ; 0xa8e16
 
@@ -183,10 +193,70 @@
 ; 0xaa867
 
 OlivineVoltorbHouse_BlockData: ; 0xaa867
+OlivineHouseBeta_BlockData:
+OlivinePunishmentSpeechHouse_BlockData:
+OlivineGoodRodHouse_BlockData:
+Route39Farmhouse_BlockData:
+MahoganyRedGyaradosSpeechHouse_BlockData:
+BlackthornDragonSpeechHouse_BlockData:
+BlackthornDodrioTradeHouse_BlockData:
+MoveDeletersHouse_BlockData:
+CeruleanGymBadgeSpeechHouse_BlockData:
+CeruleanPoliceStation_BlockData:
+CeruleanTradeSpeechHouse_BlockData:
+BillsHouse_BlockData:
+CharcoalKiln_BlockData:
+LakeofRageHiddenPowerHouse_BlockData:
+LakeofRageMagikarpHouse_BlockData:
+GoldenrodHappinessRater_BlockData:
+GoldenrodBillsHouse_BlockData:
+GoldenrodPPSpeechHouse_BlockData:
+GoldenrodNameRatersHouse_BlockData:
+VermilionHouseFishingSpeechHouse_BlockData:
+VermilionMagnetTrainSpeechHouse_BlockData:
+VermilionHouseDiglettsCaveSpeechHouse_BlockData:
+BluesHouse_BlockData:
+PewterNidoranSpeechHouse_BlockData:
+PewterSnoozeSpeechHouse_BlockData:
+FuchsiaBillSpeechHouse_BlockData:
+LavenderTownSpeechHouse_BlockData:
+LavenderNameRater_BlockData:
+Route12SuperRodHouse_BlockData:
+Route28FamousSpeechHouse_BlockData:
+CeladonMansionRoofHouse_BlockData:
+Route16FuchsiaSpeechHouse_BlockData:
+ManiasHouse_BlockData:
+CianwoodPharmacy_BlockData:
+CianwoodCityPhotoStudio_BlockData:
+CianwoodLugiaSpeechHouse_BlockData:
+PokeSeersHouse_BlockData:
+ViridianNicknameSpeechHouse_BlockData:
+Route2NuggetSpeechHouse_BlockData:
+KrissNeighborsHouse_BlockData:
+Route26HealSpeechHouse_BlockData:
+Route26DayofWeekSiblingsHouse_BlockData:
+Route27SandstormHouse_BlockData:
+MrPsychicsHouse_BlockData:
+Route5CleanseTagSpeechHouse_BlockData:
+CherrygroveGymSpeechHouse_BlockData:
+GuideGentsHouse_BlockData:
+CherrygroveEvolutionSpeechHouse_BlockData:
+Route30BerrySpeechHouse_BlockData:
 	INCBIN "maps/OlivineVoltorbHouse.blk"
 ; 0xaa877
 
 SafariZoneFuchsiaGateBeta_BlockData: ; 0xaa877
+Route19FuchsiaGate_BlockData:
+Route43MahoganyGate_BlockData:
+Route43Gate_BlockData:
+Route35Goldenrodgate_BlockData:
+Route36RuinsofAlphgate_BlockData:
+Route34IlexForestGate_BlockData:
+Route6SaffronGate_BlockData:
+Route40BattleTowerGate_BlockData:
+Route2Gate_BlockData:
+Route2946Gate_BlockData:
+Route5SaffronCityGate_BlockData:
 	INCBIN "maps/SafariZoneFuchsiaGateBeta.blk"
 ; 0xaa88b
 
@@ -263,6 +333,15 @@
 ; 0xab6af
 
 Route38EcruteakGate_BlockData: ; 0xab6af
+Route42EcruteakGate_BlockData:
+Route32RuinsofAlphGate_BlockData:
+IlexForestAzaleaGate_BlockData:
+Route15FuchsiaGate_BlockData:
+Route8SaffronGate_BlockData:
+Route16Gate_BlockData:
+Route7SaffronGate_BlockData:
+Route1718Gate_BlockData:
+Route31VioletGate_BlockData:
 	INCBIN "maps/Route38EcruteakGate.blk"
 ; 0xab6c3
 
--- a/maps/blockdata_2.asm
+++ b/maps/blockdata_2.asm
@@ -7,6 +7,18 @@
 ; 0xac10e
 
 OlivineMart_BlockData: ; 0xac10e
+EcruteakMart_BlockData:
+BlackthornMart_BlockData:
+CeruleanMart_BlockData:
+AzaleaMart_BlockData:
+VioletMart_BlockData:
+VermilionMart_BlockData:
+PewterMart_BlockData:
+FuchsiaMart_BlockData:
+LavenderMart_BlockData:
+ViridianMart_BlockData:
+SaffronMart_BlockData:
+CherrygroveMart_BlockData:
 	INCBIN "maps/OlivineMart.blk"
 ; 0xac126
 
@@ -19,6 +31,26 @@
 ; 0xac2e8
 
 OlivinePokeCenter1F_BlockData: ; 0xac2e8
+MahoganyPokeCenter1F_BlockData:
+EcruteakPokeCenter1F_BlockData:
+BlackthornPokeCenter1F_BlockData:
+CinnabarPokeCenter1F_BlockData:
+CeruleanPokeCenter1F_BlockData:
+Route10PokeCenter1F_BlockData:
+AzaleaPokeCenter1F_BlockData:
+VioletPokeCenter1F_BlockData:
+Route32PokeCenter1F_BlockData:
+GoldenrodPokeCenter1F_BlockData:
+VermilionPokeCenter1F_BlockData:
+PewterPokeCenter1F_BlockData:
+FuchsiaPokeCenter1F_BlockData:
+LavenderPokeCenter1F_BlockData:
+SilverCavePokeCenter1F_BlockData:
+CeladonPokeCenter1F_BlockData:
+CianwoodPokeCenter1F_BlockData:
+ViridianPokeCenter1F_BlockData:
+SaffronPokeCenter1F_BlockData:
+CherrygrovePokeCenter1F_BlockData:
 	INCBIN "maps/OlivinePokeCenter1F.blk"
 ; 0xac2fc
 
@@ -51,30 +83,37 @@
 ; 0xac3b4
 
 GoldenrodDeptStore1F_BlockData: ; 0xac3b4
+CeladonDeptStore1F_BlockData:
 	INCBIN "maps/GoldenrodDeptStore1F.blk"
 ; 0xac3d4
 
 GoldenrodDeptStore2F_BlockData: ; 0xac3d4
+CeladonDeptStore2F_BlockData:
 	INCBIN "maps/GoldenrodDeptStore2F.blk"
 ; 0xac3f4
 
 GoldenrodDeptStore3F_BlockData: ; 0xac3f4
+CeladonDeptStore3F_BlockData:
 	INCBIN "maps/GoldenrodDeptStore3F.blk"
 ; 0xac414
 
 GoldenrodDeptStore4F_BlockData: ; 0xac414
+CeladonDeptStore4F_BlockData:
 	INCBIN "maps/GoldenrodDeptStore4F.blk"
 ; 0xac434
 
 GoldenrodDeptStore5F_BlockData: ; 0xac434
+CeladonDeptStore5F_BlockData:
 	INCBIN "maps/GoldenrodDeptStore5F.blk"
 ; 0xac454
 
 GoldenrodDeptStore6F_BlockData: ; 0xac454
+CeladonDeptStore6F_BlockData:
 	INCBIN "maps/GoldenrodDeptStore6F.blk"
 ; 0xac474
 
 GoldenrodDeptStoreElevator_BlockData: ; 0xac474
+CeladonDeptStoreElevator_BlockData:
 	INCBIN "maps/GoldenrodDeptStoreElevator.blk"
 ; 0xac478
 
@@ -111,10 +150,14 @@
 ; 0xac53b
 
 TradeCenter_BlockData: ; 0xac53b
+TimeCapsule_BlockData:
 	INCBIN "maps/TradeCenter.blk"
 ; 0xac54f
 
 EcruteakLugiaSpeechHouse_BlockData: ; 0xac54f
+EcruteakItemfinderHouse_BlockData:
+VioletNicknameSpeechHouse_BlockData:
+VioletOnixTradeHouse_BlockData:
 	INCBIN "maps/EcruteakLugiaSpeechHouse.blk"
 ; 0xac55f
 
@@ -135,10 +178,12 @@
 ; 0xac7d5
 
 NationalPark_BlockData: ; 0xac7d5
+NationalParkBugContest_BlockData:
 	INCBIN "maps/NationalPark.blk"
 ; 0xac9f1
 
 Route6UndergroundEntrance_BlockData: ; 0xac9f1
+Route5UndergroundEntrance_BlockData:
 	INCBIN "maps/Route6UndergroundEntrance.blk"
 ; 0xaca01
 
@@ -167,6 +212,9 @@
 ; 0xacbdf
 
 RuinsofAlphHoOhChamber_BlockData: ; 0xacbdf
+RuinsofAlphKabutoChamber_BlockData:
+RuinsofAlphOmanyteChamber_BlockData:
+RuinsofAlphAerodactylChamber_BlockData:
 	INCBIN "maps/RuinsofAlphHoOhChamber.blk"
 ; 0xacbf3
 
@@ -447,6 +495,7 @@
 ; 0xaf885
 
 MahoganyMart1F_BlockData: ; 0xaf885
+MountMoonGiftShop_BlockData:
 	INCBIN "maps/MahoganyMart1F.blk"
 ; 0xaf895
 
--- a/maps/blockdata_3.asm
+++ b/maps/blockdata_3.asm
@@ -83,6 +83,7 @@
 ; 0xb094d
 
 OlivineCafe_BlockData: ; 0xb094d
+SafariZoneMainOffice_BlockData:
 	INCBIN "maps/OlivineCafe.blk"
 ; 0xb095d
 
@@ -111,6 +112,7 @@
 ; 0xb0acc
 
 PokemonFanClub_BlockData: ; 0xb0acc
+SafariZoneWardensHome_BlockData:
 	INCBIN "maps/PokemonFanClub.blk"
 ; 0xb0ae0
 
@@ -215,6 +217,7 @@
 ; 0xb10fb
 
 OlivinePortPassage_BlockData: ; 0xb10fb
+VermilionPortPassage_BlockData:
 	INCBIN "maps/OlivinePortPassage.blk"
 ; 0xb1155
 
@@ -283,6 +286,9 @@
 ; 0xb1773
 
 RuinsofAlphHoOhItemRoom_BlockData: ; 0xb1773
+RuinsofAlphKabutoItemRoom_BlockData:
+RuinsofAlphOmanyteItemRoom_BlockData:
+RuinsofAlphAerodactylItemRoom_BlockData:
 	INCBIN "maps/RuinsofAlphHoOhItemRoom.blk"
 ; 0xb1787
 
--- a/maps/map_headers.asm
+++ b/maps/map_headers.asm
@@ -1,3 +1,12 @@
+map_header: MACRO
+	; label, tileset, permission, location, music, time of day, fishing group
+\1_MapHeader:
+	db BANK(\1_SecondMapHeader), \2, \3
+	dw \1_SecondMapHeader
+	db \4, \5, \6, \7
+ENDM
+
+
 MapGroupPointers:: ; 0x94000
 ; pointers to the first map header of each map group
 	dw MapGroup1
@@ -29,4350 +38,467 @@
 
 
 MapGroup1:
+	map_header OlivinePokeCenter1F, $7, 3, OLIVINE_CITY, MUSIC_POKEMON_CENTER, 1, 1
+	map_header OlivineGym, $12, 3, OLIVINE_CITY, MUSIC_GYM, 17, 1
+	map_header OlivineVoltorbHouse, $5, 3, OLIVINE_CITY, MUSIC_VIOLET_CITY, 1, 1
+	map_header OlivineHouseBeta, $5, 3, OLIVINE_CITY, MUSIC_VIOLET_CITY, 1, 1
+	map_header OlivinePunishmentSpeechHouse, $5, 3, OLIVINE_CITY, MUSIC_VIOLET_CITY, 1, 1
+	map_header OlivineGoodRodHouse, $5, 3, OLIVINE_CITY, MUSIC_VIOLET_CITY, 1, 1
+	map_header OlivineCafe, $e, 3, OLIVINE_CITY, MUSIC_VIOLET_CITY, 1, 1
+	map_header OlivineMart, $c, 3, OLIVINE_CITY, MUSIC_VIOLET_CITY, 1, 1
+	map_header Route38EcruteakGate, $8, 6, ROUTE_38, MUSIC_ROUTE_37, 1, 1
+	map_header Route39Barn, $10, 3, ROUTE_39, MUSIC_ECRUTEAK_CITY, 1, 1
+	map_header Route39Farmhouse, $5, 3, ROUTE_39, MUSIC_ECRUTEAK_CITY, 1, 1
+	map_header Route38, $1, 2, ROUTE_38, MUSIC_ROUTE_37, 0, 1
+	map_header Route39, $1, 2, ROUTE_39, MUSIC_ROUTE_37, 0, 1
+	map_header OlivineCity, $1, 1, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, 1
 
-OlivinePokeCenter1F_MapHeader:: ; 0x94034
-	; bank, tileset, permission
-	db BANK(OlivinePokeCenter1F_SecondMapHeader), $7, 3
 
-	; second map header
-	dw OlivinePokeCenter1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db OLIVINE_CITY, MUSIC_POKEMON_CENTER, 1, 1
-; had to increase the final size by 1
-; had to convert 0x->$ (duh..)
-; 0x9403d
-
-OlivineGym_MapHeader:: ; 0x9403d
-	; bank, tileset, permission
-	db BANK(OlivineGym_SecondMapHeader), $12, 3
-
-	; second map header
-	dw OlivineGym_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db OLIVINE_CITY, MUSIC_GYM, 17, 1
-; 0x94046
-
-OlivineVoltorbHouse_MapHeader: ; 0x94046
-	; bank, tileset, permission
-	db BANK(OlivineVoltorbHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw OlivineVoltorbHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db OLIVINE_CITY, MUSIC_VIOLET_CITY, 1, 1
-; 0x9404f
-
-OlivineHouseBeta_MapHeader: ; 0x9404f
-	; bank, tileset, permission
-	db BANK(OlivineHouseBeta_SecondMapHeader), $5, 3
-
-	; second map header
-	dw OlivineHouseBeta_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db OLIVINE_CITY, MUSIC_VIOLET_CITY, 1, 1
-; 0x94058
-
-OlivinePunishmentSpeechHouse_MapHeader: ; 0x94058
-	; bank, tileset, permission
-	db BANK(OlivinePunishmentSpeechHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw OlivinePunishmentSpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db OLIVINE_CITY, MUSIC_VIOLET_CITY, 1, 1
-; 0x94061
-
-OlivineGoodRodHouse_MapHeader: ; 0x94061
-	; bank, tileset, permission
-	db BANK(OlivineGoodRodHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw OlivineGoodRodHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db OLIVINE_CITY, MUSIC_VIOLET_CITY, 1, 1
-; 0x9406a
-
-OlivineCafe_MapHeader: ; 0x9406a
-	; bank, tileset, permission
-	db BANK(OlivineCafe_SecondMapHeader), $e, 3
-
-	; second map header
-	dw OlivineCafe_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db OLIVINE_CITY, MUSIC_VIOLET_CITY, 1, 1
-; 0x94073
-
-OlivineMart_MapHeader: ; 0x94073
-	; bank, tileset, permission
-	db BANK(OlivineMart_SecondMapHeader), $c, 3
-
-	; second map header
-	dw OlivineMart_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db OLIVINE_CITY, MUSIC_VIOLET_CITY, 1, 1
-; 0x9407c
-
-Route38EcruteakGate_MapHeader: ; 0x9407c
-	; bank, tileset, permission
-	db BANK(Route38EcruteakGate_SecondMapHeader), $8, 6
-
-	; second map header
-	dw Route38EcruteakGate_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_38, MUSIC_ROUTE_37, 1, 1
-; 0x94085
-
-Route39Barn_MapHeader: ; 0x94085
-	; bank, tileset, permission
-	db BANK(Route39Barn_SecondMapHeader), $10, 3
-
-	; second map header
-	dw Route39Barn_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_39, MUSIC_ECRUTEAK_CITY, 1, 1
-; 0x9408e
-
-Route39Farmhouse_MapHeader: ; 0x9408e
-	; bank, tileset, permission
-	db BANK(Route39Farmhouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw Route39Farmhouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_39, MUSIC_ECRUTEAK_CITY, 1, 1
-; 0x94097
-
-Route38_MapHeader: ; 0x94097
-	; bank, tileset, permission
-	db BANK(Route38_SecondMapHeader), $1, 2
-
-	; second map header
-	dw Route38_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_38, MUSIC_ROUTE_37, 0, 1
-; 0x940a0
-
-Route39_MapHeader: ; 0x940a0
-	; bank, tileset, permission
-	db BANK(Route39_SecondMapHeader), $1, 2
-
-	; second map header
-	dw Route39_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_39, MUSIC_ROUTE_37, 0, 1
-; 0x940a9
-
-OlivineCity_MapHeader: ; 0x940a9
-	; bank, tileset, permission
-	db BANK(OlivineCity_SecondMapHeader), $1, 1
-
-	; second map header
-	dw OlivineCity_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, 1
-; 0x940b2
-
-
 MapGroup2:
+	map_header MahoganyRedGyaradosSpeechHouse, $5, 3, MAHOGANY_TOWN, MUSIC_CHERRYGROVE_CITY, 1, 1
+	map_header MahoganyGym, $f, 3, MAHOGANY_TOWN, MUSIC_GYM, 17, 1
+	map_header MahoganyPokeCenter1F, $7, 3, MAHOGANY_TOWN, MUSIC_POKEMON_CENTER, 1, 1
+	map_header Route42EcruteakGate, $8, 6, ROUTE_42, MUSIC_LAKE_OF_RAGE, 1, 1
+	map_header Route42, $1, 2, ROUTE_42, MUSIC_LAKE_OF_RAGE, 0, 3
+	map_header Route44, $1, 2, ROUTE_44, MUSIC_LAKE_OF_RAGE, 0, 4
+	map_header MahoganyTown, $1, 1, MAHOGANY_TOWN, MUSIC_CHERRYGROVE_CITY, 0, 1
 
-MahoganyRedGyaradosSpeechHouse_MapHeader: ; 0x940b2
-	; bank, tileset, permission
-	db BANK(MahoganyRedGyaradosSpeechHouse_SecondMapHeader), $5, 3
 
-	; second map header
-	dw MahoganyRedGyaradosSpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db MAHOGANY_TOWN, MUSIC_CHERRYGROVE_CITY, 1, 1
-; 0x940bb
-
-MahoganyGym_MapHeader: ; 0x940bb
-	; bank, tileset, permission
-	db BANK(MahoganyGym_SecondMapHeader), $f, 3
-
-	; second map header
-	dw MahoganyGym_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db MAHOGANY_TOWN, MUSIC_GYM, 17, 1
-; 0x940c4
-
-MahoganyPokeCenter1F_MapHeader: ; 0x940c4
-	; bank, tileset, permission
-	db BANK(MahoganyPokeCenter1F_SecondMapHeader), $7, 3
-
-	; second map header
-	dw MahoganyPokeCenter1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db MAHOGANY_TOWN, MUSIC_POKEMON_CENTER, 1, 1
-; 0x940cd
-
-Route42EcruteakGate_MapHeader: ; 0x940cd
-	; bank, tileset, permission
-	db BANK(Route42EcruteakGate_SecondMapHeader), $8, 6
-
-	; second map header
-	dw Route42EcruteakGate_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_42, MUSIC_LAKE_OF_RAGE, 1, 1
-; 0x940d6
-
-Route42_MapHeader: ; 0x940d6
-	; bank, tileset, permission
-	db BANK(Route42_SecondMapHeader), $1, 2
-
-	; second map header
-	dw Route42_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_42, MUSIC_LAKE_OF_RAGE, 0, 3
-; 0x940df
-
-Route44_MapHeader: ; 0x940df
-	; bank, tileset, permission
-	db BANK(Route44_SecondMapHeader), $1, 2
-
-	; second map header
-	dw Route44_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_44, MUSIC_LAKE_OF_RAGE, 0, 4
-; 0x940e8
-
-MahoganyTown_MapHeader: ; 0x940e8
-	; bank, tileset, permission
-	db BANK(MahoganyTown_SecondMapHeader), $1, 1
-
-	; second map header
-	dw MahoganyTown_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db MAHOGANY_TOWN, MUSIC_CHERRYGROVE_CITY, 0, 1
-; 0x940f1
-
-
 MapGroup3:
+	map_header SproutTower1F, $17, 7, SPROUT_TOWER, MUSIC_SPROUT_TOWER, 1, 1
+	map_header SproutTower2F, $17, 7, SPROUT_TOWER, MUSIC_SPROUT_TOWER, 1, 1
+	map_header SproutTower3F, $17, 7, SPROUT_TOWER, MUSIC_SPROUT_TOWER, 1, 1
+	map_header TinTower1F, $17, 7, TIN_TOWER, MUSIC_TIN_TOWER, 1, 1
+	map_header TinTower2F, $17, 7, TIN_TOWER, MUSIC_TIN_TOWER, 1, 1
+	map_header TinTower3F, $17, 7, TIN_TOWER, MUSIC_TIN_TOWER, 1, 1
+	map_header TinTower4F, $17, 7, TIN_TOWER, MUSIC_TIN_TOWER, 1, 1
+	map_header TinTower5F, $17, 7, TIN_TOWER, MUSIC_TIN_TOWER, 1, 1
+	map_header TinTower6F, $17, 7, TIN_TOWER, MUSIC_TIN_TOWER, 1, 1
+	map_header TinTower7F, $17, 7, TIN_TOWER, MUSIC_TIN_TOWER, 1, 1
+	map_header TinTower8F, $17, 7, TIN_TOWER, MUSIC_TIN_TOWER, 1, 1
+	map_header TinTower9F, $17, 7, TIN_TOWER, MUSIC_TIN_TOWER, 1, 1
+	map_header BurnedTower1F, $17, 7, BURNED_TOWER, MUSIC_BURNED_TOWER, 18, 1
+	map_header BurnedTowerB1F, $18, 4, BURNED_TOWER, MUSIC_BURNED_TOWER, 18, 1
+	map_header NationalPark, $19, 2, NATIONAL_PARK, MUSIC_NATIONAL_PARK, 0, 1
+	map_header NationalParkBugContest, $19, 2, NATIONAL_PARK, MUSIC_BUG_CATCHING_CONTEST, 0, 1
+	map_header RadioTower1F, $1b, 3, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 17, 1
+	map_header RadioTower2F, $1b, 3, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 17, 1
+	map_header RadioTower3F, $1b, 3, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 17, 1
+	map_header RadioTower4F, $1b, 3, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 17, 1
+	map_header RadioTower5F, $1b, 3, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 17, 1
+	map_header RuinsofAlphOutside, $1, 2, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 0, 4
+	map_header RuinsofAlphHoOhChamber, $1a, 7, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 17, 1
+	map_header RuinsofAlphKabutoChamber, $1a, 7, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 17, 1
+	map_header RuinsofAlphOmanyteChamber, $1a, 7, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 17, 1
+	map_header RuinsofAlphAerodactylChamber, $1a, 7, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 17, 1
+	map_header RuinsofAlphInnerChamber, $1a, 7, RUINS_OF_ALPH, MUSIC_RUINS_OF_ALPH_INTERIOR, 17, 1
+	map_header RuinsofAlphResearchCenter, $b, 3, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, 1
+	map_header RuinsofAlphHoOhItemRoom, $1a, 7, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 17, 1
+	map_header RuinsofAlphKabutoItemRoom, $1a, 7, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 17, 1
+	map_header RuinsofAlphOmanyteItemRoom, $1a, 7, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 17, 1
+	map_header RuinsofAlphAerodactylItemRoom, $1a, 7, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 17, 1
+	map_header RuinsofAlphHoOhWordRoom, $21, 7, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 17, 1
+	map_header RuinsofAlphKabutoWordRoom, $22, 7, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 17, 1
+	map_header RuinsofAlphOmanyteWordRoom, $23, 7, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 17, 1
+	map_header RuinsofAlphAerodactylWordRoom, $24, 7, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 17, 1
+	map_header UnionCave1F, $18, 4, UNION_CAVE, MUSIC_UNION_CAVE, 18, 3
+	map_header UnionCaveB1F, $18, 4, UNION_CAVE, MUSIC_UNION_CAVE, 18, 3
+	map_header UnionCaveB2F, $18, 4, UNION_CAVE, MUSIC_UNION_CAVE, 18, 1
+	map_header SlowpokeWellB1F, $18, 4, SLOWPOKE_WELL, MUSIC_DARK_CAVE, 18, 3
+	map_header SlowpokeWellB2F, $18, 4, SLOWPOKE_WELL, MUSIC_DARK_CAVE, 18, 3
+	map_header OlivineLighthouse1F, $13, 7, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 1, 1
+	map_header OlivineLighthouse2F, $13, 7, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 1, 1
+	map_header OlivineLighthouse3F, $13, 7, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 1, 1
+	map_header OlivineLighthouse4F, $13, 7, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 1, 1
+	map_header OlivineLighthouse5F, $13, 7, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 1, 1
+	map_header OlivineLighthouse6F, $13, 7, LIGHTHOUSE, MUSIC_VIOLET_CITY, 1, 1
+	map_header MahoganyMart1F, $10, 3, MAHOGANY_TOWN, MUSIC_MAHOGANY_MART, 17, 1
+	map_header TeamRocketBaseB1F, $1c, 7, MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, 17, 1
+	map_header TeamRocketBaseB2F, $b, 7, MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, 17, 1
+	map_header TeamRocketBaseB3F, $b, 7, MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, 17, 1
+	map_header IlexForest, $1f, 4, ILEX_FOREST, MUSIC_UNION_CAVE, 2, 4
+	map_header WarehouseEntrance, $8, 7, GOLDENROD_CITY, MUSIC_UNION_CAVE, 17, 1
+	map_header UndergroundPathSwitchRoomEntrances, $f, 7, GOLDENROD_CITY, MUSIC_UNION_CAVE, 17, 1
+	map_header GoldenrodDeptStoreB1F, $1c, 7, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 17, 1
+	map_header UndergroundWarehouse, $1c, 7, GOLDENROD_CITY, MUSIC_UNION_CAVE, 17, 1
+	map_header MountMortar1FOutside, $1e, 4, MT_MORTAR, MUSIC_UNION_CAVE, 18, 3
+	map_header MountMortar1FInside, $1e, 4, MT_MORTAR, MUSIC_UNION_CAVE, 18, 3
+	map_header MountMortar2FInside, $1e, 4, MT_MORTAR, MUSIC_UNION_CAVE, 18, 3
+	map_header MountMortarB1F, $1e, 4, MT_MORTAR, MUSIC_UNION_CAVE, 18, 3
+	map_header IcePath1F, $1d, 4, ICE_PATH, MUSIC_DARK_CAVE, 18, 5
+	map_header IcePathB1F, $1d, 4, ICE_PATH, MUSIC_DARK_CAVE, 18, 5
+	map_header IcePathB2FMahoganySide, $1d, 4, ICE_PATH, MUSIC_DARK_CAVE, 18, 5
+	map_header IcePathB2FBlackthornSide, $1d, 4, ICE_PATH, MUSIC_DARK_CAVE, 18, 5
+	map_header IcePathB3F, $1d, 4, ICE_PATH, MUSIC_DARK_CAVE, 18, 5
+	map_header WhirlIslandNW, $1e, 4, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 20, 10
+	map_header WhirlIslandNE, $1e, 4, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 20, 10
+	map_header WhirlIslandSW, $1e, 4, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 20, 10
+	map_header WhirlIslandCave, $1e, 4, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 20, 10
+	map_header WhirlIslandSE, $1e, 4, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 20, 10
+	map_header WhirlIslandB1F, $1e, 4, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 20, 10
+	map_header WhirlIslandB2F, $1e, 4, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 20, 10
+	map_header WhirlIslandLugiaChamber, $1e, 4, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 20, 10
+	map_header SilverCaveRoom1, $1e, 4, SILVER_CAVE, MUSIC_LIGHTHOUSE, 20, 3
+	map_header SilverCaveRoom2, $18, 4, SILVER_CAVE, MUSIC_LIGHTHOUSE, 18, 3
+	map_header SilverCaveRoom3, $18, 4, SILVER_CAVE, MUSIC_LIGHTHOUSE, 17, 3
+	map_header SilverCaveItemRooms, $18, 4, SILVER_CAVE, MUSIC_LIGHTHOUSE, 18, 3
+	map_header DarkCaveVioletEntrance, $1e, 4, DARK_CAVE, MUSIC_DARK_CAVE, 20, 3
+	map_header DarkCaveBlackthornEntrance, $1e, 4, DARK_CAVE, MUSIC_DARK_CAVE, 20, 3
+	map_header DragonsDen1F, $18, 4, DRAGONS_DEN, MUSIC_DRAGONS_DEN, 18, 5
+	map_header DragonsDenB1F, $1, 4, DRAGONS_DEN, MUSIC_DRAGONS_DEN, 18, 5
+	map_header DragonShrine, $a, 3, DRAGONS_DEN, MUSIC_DRAGONS_DEN, 18, 1
+	map_header TohjoFalls, $18, 4, TOHJO_FALLS, MUSIC_UNION_CAVE, 18, 3
+	map_header DiglettsCave, $18, 4, DIGLETTS_CAVE, MUSIC_MT_MOON, 18, 1
+	map_header MountMoon, $18, 4, MT_MOON, MUSIC_MT_MOON, 18, 1
+	map_header Underground, $1c, 6, UNDERGROUND, MUSIC_MT_MOON, 2, 1
+	map_header RockTunnel1F, $1e, 4, ROCK_TUNNEL, MUSIC_MT_MOON, 20, 1
+	map_header RockTunnelB1F, $1e, 4, ROCK_TUNNEL, MUSIC_MT_MOON, 20, 1
+	map_header SafariZoneFuchsiaGateBeta, $8, 3, FUCHSIA_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header SafariZoneBeta, $19, 4, FUCHSIA_CITY, MUSIC_EVOLUTION, 0, 1
+	map_header VictoryRoad, $18, 4, VICTORY_ROAD, MUSIC_VICTORY_ROAD, 18, 1
 
-SproutTower1F_MapHeader: ; 0x940f1
-	; bank, tileset, permission
-	db BANK(SproutTower1F_SecondMapHeader), $17, 7
 
-	; second map header
-	dw SproutTower1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SPROUT_TOWER, MUSIC_SPROUT_TOWER, 1, 1
-; 0x940fa
-
-SproutTower2F_MapHeader: ; 0x940fa
-	; bank, tileset, permission
-	db BANK(SproutTower2F_SecondMapHeader), $17, 7
-
-	; second map header
-	dw SproutTower2F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SPROUT_TOWER, MUSIC_SPROUT_TOWER, 1, 1
-; 0x94103
-
-SproutTower3F_MapHeader: ; 0x94103
-	; bank, tileset, permission
-	db BANK(SproutTower3F_SecondMapHeader), $17, 7
-
-	; second map header
-	dw SproutTower3F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SPROUT_TOWER, MUSIC_SPROUT_TOWER, 1, 1
-; 0x9410c
-
-TinTower1F_MapHeader: ; 0x9410c
-	; bank, tileset, permission
-	db BANK(TinTower1F_SecondMapHeader), $17, 7
-
-	; second map header
-	dw TinTower1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db TIN_TOWER, MUSIC_TIN_TOWER, 1, 1
-; 0x94115
-
-TinTower2F_MapHeader: ; 0x94115
-	; bank, tileset, permission
-	db BANK(TinTower2F_SecondMapHeader), $17, 7
-
-	; second map header
-	dw TinTower2F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db TIN_TOWER, MUSIC_TIN_TOWER, 1, 1
-; 0x9411e
-
-TinTower3F_MapHeader: ; 0x9411e
-	; bank, tileset, permission
-	db BANK(TinTower3F_SecondMapHeader), $17, 7
-
-	; second map header
-	dw TinTower3F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db TIN_TOWER, MUSIC_TIN_TOWER, 1, 1
-; 0x94127
-
-TinTower4F_MapHeader: ; 0x94127
-	; bank, tileset, permission
-	db BANK(TinTower4F_SecondMapHeader), $17, 7
-
-	; second map header
-	dw TinTower4F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db TIN_TOWER, MUSIC_TIN_TOWER, 1, 1
-; 0x94130
-
-TinTower5F_MapHeader: ; 0x94130
-	; bank, tileset, permission
-	db BANK(TinTower5F_SecondMapHeader), $17, 7
-
-	; second map header
-	dw TinTower5F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db TIN_TOWER, MUSIC_TIN_TOWER, 1, 1
-; 0x94139
-
-TinTower6F_MapHeader: ; 0x94139
-	; bank, tileset, permission
-	db BANK(TinTower6F_SecondMapHeader), $17, 7
-
-	; second map header
-	dw TinTower6F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db TIN_TOWER, MUSIC_TIN_TOWER, 1, 1
-; 0x94142
-
-TinTower7F_MapHeader: ; 0x94142
-	; bank, tileset, permission
-	db BANK(TinTower7F_SecondMapHeader), $17, 7
-
-	; second map header
-	dw TinTower7F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db TIN_TOWER, MUSIC_TIN_TOWER, 1, 1
-; 0x9414b
-
-TinTower8F_MapHeader: ; 0x9414b
-	; bank, tileset, permission
-	db BANK(TinTower8F_SecondMapHeader), $17, 7
-
-	; second map header
-	dw TinTower8F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db TIN_TOWER, MUSIC_TIN_TOWER, 1, 1
-; 0x94154
-
-TinTower9F_MapHeader: ; 0x94154
-	; bank, tileset, permission
-	db BANK(TinTower9F_SecondMapHeader), $17, 7
-
-	; second map header
-	dw TinTower9F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db TIN_TOWER, MUSIC_TIN_TOWER, 1, 1
-; 0x9415d
-
-BurnedTower1F_MapHeader: ; 0x9415d
-	; bank, tileset, permission
-	db BANK(BurnedTower1F_SecondMapHeader), $17, 7
-
-	; second map header
-	dw BurnedTower1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db BURNED_TOWER, MUSIC_BURNED_TOWER, 18, 1
-; 0x94166
-
-BurnedTowerB1F_MapHeader: ; 0x94166
-	; bank, tileset, permission
-	db BANK(BurnedTowerB1F_SecondMapHeader), $18, 4
-
-	; second map header
-	dw BurnedTowerB1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db BURNED_TOWER, MUSIC_BURNED_TOWER, 18, 1
-; 0x9416f
-
-NationalPark_MapHeader: ; 0x9416f
-	; bank, tileset, permission
-	db BANK(NationalPark_SecondMapHeader), $19, 2
-
-	; second map header
-	dw NationalPark_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db NATIONAL_PARK, MUSIC_NATIONAL_PARK, 0, 1
-; 0x94178
-
-NationalParkBugContest_MapHeader: ; 0x94178
-	; bank, tileset, permission
-	db BANK(NationalParkBugContest_SecondMapHeader), $19, 2
-
-	; second map header
-	dw NationalParkBugContest_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db NATIONAL_PARK, MUSIC_BUG_CATCHING_CONTEST, 0, 1
-; 0x94181
-
-RadioTower1F_MapHeader: ; 0x94181
-	; bank, tileset, permission
-	db BANK(RadioTower1F_SecondMapHeader), $1b, 3
-
-	; second map header
-	dw RadioTower1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 17, 1
-; 0x9418a
-
-RadioTower2F_MapHeader: ; 0x9418a
-	; bank, tileset, permission
-	db BANK(RadioTower2F_SecondMapHeader), $1b, 3
-
-	; second map header
-	dw RadioTower2F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 17, 1
-; 0x94193
-
-RadioTower3F_MapHeader: ; 0x94193
-	; bank, tileset, permission
-	db BANK(RadioTower3F_SecondMapHeader), $1b, 3
-
-	; second map header
-	dw RadioTower3F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 17, 1
-; 0x9419c
-
-RadioTower4F_MapHeader: ; 0x9419c
-	; bank, tileset, permission
-	db BANK(RadioTower4F_SecondMapHeader), $1b, 3
-
-	; second map header
-	dw RadioTower4F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 17, 1
-; 0x941a5
-
-RadioTower5F_MapHeader: ; 0x941a5
-	; bank, tileset, permission
-	db BANK(RadioTower5F_SecondMapHeader), $1b, 3
-
-	; second map header
-	dw RadioTower5F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 17, 1
-; 0x941ae
-
-RuinsofAlphOutside_MapHeader: ; 0x941ae
-	; bank, tileset, permission
-	db BANK(RuinsofAlphOutside_SecondMapHeader), $1, 2
-
-	; second map header
-	dw RuinsofAlphOutside_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db RUINS_OF_ALPH, MUSIC_UNION_CAVE, 0, 4
-; 0x941b7
-
-RuinsofAlphHoOhChamber_MapHeader: ; 0x941b7
-	; bank, tileset, permission
-	db BANK(RuinsofAlphHoOhChamber_SecondMapHeader), $1a, 7
-
-	; second map header
-	dw RuinsofAlphHoOhChamber_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db RUINS_OF_ALPH, MUSIC_UNION_CAVE, 17, 1
-; 0x941c0
-
-RuinsofAlphKabutoChamber_MapHeader: ; 0x941c0
-	; bank, tileset, permission
-	db BANK(RuinsofAlphKabutoChamber_SecondMapHeader), $1a, 7
-
-	; second map header
-	dw RuinsofAlphKabutoChamber_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db RUINS_OF_ALPH, MUSIC_UNION_CAVE, 17, 1
-; 0x941c9
-
-RuinsofAlphOmanyteChamber_MapHeader: ; 0x941c9
-	; bank, tileset, permission
-	db BANK(RuinsofAlphOmanyteChamber_SecondMapHeader), $1a, 7
-
-	; second map header
-	dw RuinsofAlphOmanyteChamber_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db RUINS_OF_ALPH, MUSIC_UNION_CAVE, 17, 1
-; 0x941d2
-
-RuinsofAlphAerodactylChamber_MapHeader: ; 0x941d2
-	; bank, tileset, permission
-	db BANK(RuinsofAlphAerodactylChamber_SecondMapHeader), $1a, 7
-
-	; second map header
-	dw RuinsofAlphAerodactylChamber_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db RUINS_OF_ALPH, MUSIC_UNION_CAVE, 17, 1
-; 0x941db
-
-RuinsofAlphInnerChamber_MapHeader: ; 0x941db
-	; bank, tileset, permission
-	db BANK(RuinsofAlphInnerChamber_SecondMapHeader), $1a, 7
-
-	; second map header
-	dw RuinsofAlphInnerChamber_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db RUINS_OF_ALPH, MUSIC_RUINS_OF_ALPH_INTERIOR, 17, 1
-; 0x941e4
-
-RuinsofAlphResearchCenter_MapHeader: ; 0x941e4
-	; bank, tileset, permission
-	db BANK(RuinsofAlphResearchCenter_SecondMapHeader), $b, 3
-
-	; second map header
-	dw RuinsofAlphResearchCenter_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, 1
-; 0x941ed
-
-RuinsofAlphHoOhItemRoom_MapHeader: ; 0x941ed
-	; bank, tileset, permission
-	db BANK(RuinsofAlphHoOhItemRoom_SecondMapHeader), $1a, 7
-
-	; second map header
-	dw RuinsofAlphHoOhItemRoom_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db RUINS_OF_ALPH, MUSIC_UNION_CAVE, 17, 1
-; 0x941f6
-
-RuinsofAlphKabutoItemRoom_MapHeader: ; 0x941f6
-	; bank, tileset, permission
-	db BANK(RuinsofAlphKabutoItemRoom_SecondMapHeader), $1a, 7
-
-	; second map header
-	dw RuinsofAlphKabutoItemRoom_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db RUINS_OF_ALPH, MUSIC_UNION_CAVE, 17, 1
-; 0x941ff
-
-RuinsofAlphOmanyteItemRoom_MapHeader: ; 0x941ff
-	; bank, tileset, permission
-	db BANK(RuinsofAlphOmanyteItemRoom_SecondMapHeader), $1a, 7
-
-	; second map header
-	dw RuinsofAlphOmanyteItemRoom_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db RUINS_OF_ALPH, MUSIC_UNION_CAVE, 17, 1
-; 0x94208
-
-RuinsofAlphAerodactylItemRoom_MapHeader: ; 0x94208
-	; bank, tileset, permission
-	db BANK(RuinsofAlphAerodactylItemRoom_SecondMapHeader), $1a, 7
-
-	; second map header
-	dw RuinsofAlphAerodactylItemRoom_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db RUINS_OF_ALPH, MUSIC_UNION_CAVE, 17, 1
-; 0x94211
-
-RuinsofAlphHoOhWordRoom_MapHeader: ; 0x94211
-	; bank, tileset, permission
-	db BANK(RuinsofAlphHoOhWordRoom_SecondMapHeader), $21, 7
-
-	; second map header
-	dw RuinsofAlphHoOhWordRoom_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db RUINS_OF_ALPH, MUSIC_UNION_CAVE, 17, 1
-; 0x9421a
-
-RuinsofAlphKabutoWordRoom_MapHeader: ; 0x9421a
-	; bank, tileset, permission
-	db BANK(RuinsofAlphKabutoWordRoom_SecondMapHeader), $22, 7
-
-	; second map header
-	dw RuinsofAlphKabutoWordRoom_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db RUINS_OF_ALPH, MUSIC_UNION_CAVE, 17, 1
-; 0x94223
-
-RuinsofAlphOmanyteWordRoom_MapHeader: ; 0x94223
-	; bank, tileset, permission
-	db BANK(RuinsofAlphOmanyteWordRoom_SecondMapHeader), $23, 7
-
-	; second map header
-	dw RuinsofAlphOmanyteWordRoom_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db RUINS_OF_ALPH, MUSIC_UNION_CAVE, 17, 1
-; 0x9422c
-
-RuinsofAlphAerodactylWordRoom_MapHeader: ; 0x9422c
-	; bank, tileset, permission
-	db BANK(RuinsofAlphAerodactylWordRoom_SecondMapHeader), $24, 7
-
-	; second map header
-	dw RuinsofAlphAerodactylWordRoom_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db RUINS_OF_ALPH, MUSIC_UNION_CAVE, 17, 1
-; 0x94235
-
-UnionCave1F_MapHeader: ; 0x94235
-	; bank, tileset, permission
-	db BANK(UnionCave1F_SecondMapHeader), $18, 4
-
-	; second map header
-	dw UnionCave1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db UNION_CAVE, MUSIC_UNION_CAVE, 18, 3
-; 0x9423e
-
-UnionCaveB1F_MapHeader: ; 0x9423e
-	; bank, tileset, permission
-	db BANK(UnionCaveB1F_SecondMapHeader), $18, 4
-
-	; second map header
-	dw UnionCaveB1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db UNION_CAVE, MUSIC_UNION_CAVE, 18, 3
-; 0x94247
-
-UnionCaveB2F_MapHeader: ; 0x94247
-	; bank, tileset, permission
-	db BANK(UnionCaveB2F_SecondMapHeader), $18, 4
-
-	; second map header
-	dw UnionCaveB2F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db UNION_CAVE, MUSIC_UNION_CAVE, 18, 1
-; 0x94250
-
-SlowpokeWellB1F_MapHeader: ; 0x94250
-	; bank, tileset, permission
-	db BANK(SlowpokeWellB1F_SecondMapHeader), $18, 4
-
-	; second map header
-	dw SlowpokeWellB1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SLOWPOKE_WELL, MUSIC_DARK_CAVE, 18, 3
-; 0x94259
-
-SlowpokeWellB2F_MapHeader: ; 0x94259
-	; bank, tileset, permission
-	db BANK(SlowpokeWellB2F_SecondMapHeader), $18, 4
-
-	; second map header
-	dw SlowpokeWellB2F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SLOWPOKE_WELL, MUSIC_DARK_CAVE, 18, 3
-; 0x94262
-
-OlivineLighthouse1F_MapHeader: ; 0x94262
-	; bank, tileset, permission
-	db BANK(OlivineLighthouse1F_SecondMapHeader), $13, 7
-
-	; second map header
-	dw OlivineLighthouse1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db LIGHTHOUSE, MUSIC_LIGHTHOUSE, 1, 1
-; 0x9426b
-
-OlivineLighthouse2F_MapHeader: ; 0x9426b
-	; bank, tileset, permission
-	db BANK(OlivineLighthouse2F_SecondMapHeader), $13, 7
-
-	; second map header
-	dw OlivineLighthouse2F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db LIGHTHOUSE, MUSIC_LIGHTHOUSE, 1, 1
-; 0x94274
-
-OlivineLighthouse3F_MapHeader: ; 0x94274
-	; bank, tileset, permission
-	db BANK(OlivineLighthouse3F_SecondMapHeader), $13, 7
-
-	; second map header
-	dw OlivineLighthouse3F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db LIGHTHOUSE, MUSIC_LIGHTHOUSE, 1, 1
-; 0x9427d
-
-OlivineLighthouse4F_MapHeader: ; 0x9427d
-	; bank, tileset, permission
-	db BANK(OlivineLighthouse4F_SecondMapHeader), $13, 7
-
-	; second map header
-	dw OlivineLighthouse4F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db LIGHTHOUSE, MUSIC_LIGHTHOUSE, 1, 1
-; 0x94286
-
-OlivineLighthouse5F_MapHeader: ; 0x94286
-	; bank, tileset, permission
-	db BANK(OlivineLighthouse5F_SecondMapHeader), $13, 7
-
-	; second map header
-	dw OlivineLighthouse5F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db LIGHTHOUSE, MUSIC_LIGHTHOUSE, 1, 1
-; 0x9428f
-
-OlivineLighthouse6F_MapHeader: ; 0x9428f
-	; bank, tileset, permission
-	db BANK(OlivineLighthouse6F_SecondMapHeader), $13, 7
-
-	; second map header
-	dw OlivineLighthouse6F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db LIGHTHOUSE, MUSIC_VIOLET_CITY, 1, 1
-; 0x94298
-
-MahoganyMart1F_MapHeader: ; 0x94298
-	; bank, tileset, permission
-	db BANK(MahoganyMart1F_SecondMapHeader), $10, 3
-
-	; second map header
-	dw MahoganyMart1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db MAHOGANY_TOWN, MUSIC_MAHOGANY_MART, 17, 1
-; 0x942a1
-
-TeamRocketBaseB1F_MapHeader: ; 0x942a1
-	; bank, tileset, permission
-	db BANK(TeamRocketBaseB1F_SecondMapHeader), $1c, 7
-
-	; second map header
-	dw TeamRocketBaseB1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, 17, 1
-; 0x942aa
-
-TeamRocketBaseB2F_MapHeader: ; 0x942aa
-	; bank, tileset, permission
-	db BANK(TeamRocketBaseB2F_SecondMapHeader), $b, 7
-
-	; second map header
-	dw TeamRocketBaseB2F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, 17, 1
-; 0x942b3
-
-TeamRocketBaseB3F_MapHeader: ; 0x942b3
-	; bank, tileset, permission
-	db BANK(TeamRocketBaseB3F_SecondMapHeader), $b, 7
-
-	; second map header
-	dw TeamRocketBaseB3F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, 17, 1
-; 0x942bc
-
-IlexForest_MapHeader: ; 0x942bc
-	; bank, tileset, permission
-	db BANK(IlexForest_SecondMapHeader), $1f, 4
-
-	; second map header
-	dw IlexForest_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ILEX_FOREST, MUSIC_UNION_CAVE, 2, 4
-; 0x942c5
-
-WarehouseEntrance_MapHeader: ; 0x942c5
-	; bank, tileset, permission
-	db BANK(WarehouseEntrance_SecondMapHeader), $8, 7
-
-	; second map header
-	dw WarehouseEntrance_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db GOLDENROD_CITY, MUSIC_UNION_CAVE, 17, 1
-; 0x942ce
-
-UndergroundPathSwitchRoomEntrances_MapHeader: ; 0x942ce
-	; bank, tileset, permission
-	db BANK(UndergroundPathSwitchRoomEntrances_SecondMapHeader), $f, 7
-
-	; second map header
-	dw UndergroundPathSwitchRoomEntrances_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db GOLDENROD_CITY, MUSIC_UNION_CAVE, 17, 1
-; 0x942d7
-
-GoldenrodDeptStoreB1F_MapHeader: ; 0x942d7
-	; bank, tileset, permission
-	db BANK(GoldenrodDeptStoreB1F_SecondMapHeader), $1c, 7
-
-	; second map header
-	dw GoldenrodDeptStoreB1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 17, 1
-; 0x942e0
-
-UndergroundWarehouse_MapHeader: ; 0x942e0
-	; bank, tileset, permission
-	db BANK(UndergroundWarehouse_SecondMapHeader), $1c, 7
-
-	; second map header
-	dw UndergroundWarehouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db GOLDENROD_CITY, MUSIC_UNION_CAVE, 17, 1
-; 0x942e9
-
-MountMortar1FOutside_MapHeader: ; 0x942e9
-	; bank, tileset, permission
-	db BANK(MountMortar1FOutside_SecondMapHeader), $1e, 4
-
-	; second map header
-	dw MountMortar1FOutside_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db MT_MORTAR, MUSIC_UNION_CAVE, 18, 3
-; 0x942f2
-
-MountMortar1FInside_MapHeader: ; 0x942f2
-	; bank, tileset, permission
-	db BANK(MountMortar1FInside_SecondMapHeader), $1e, 4
-
-	; second map header
-	dw MountMortar1FInside_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db MT_MORTAR, MUSIC_UNION_CAVE, 18, 3
-; 0x942fb
-
-MountMortar2FInside_MapHeader: ; 0x942fb
-	; bank, tileset, permission
-	db BANK(MountMortar2FInside_SecondMapHeader), $1e, 4
-
-	; second map header
-	dw MountMortar2FInside_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db MT_MORTAR, MUSIC_UNION_CAVE, 18, 3
-; 0x94304
-
-MountMortarB1F_MapHeader: ; 0x94304
-	; bank, tileset, permission
-	db BANK(MountMortarB1F_SecondMapHeader), $1e, 4
-
-	; second map header
-	dw MountMortarB1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db MT_MORTAR, MUSIC_UNION_CAVE, 18, 3
-; 0x9430d
-
-IcePath1F_MapHeader: ; 0x9430d
-	; bank, tileset, permission
-	db BANK(IcePath1F_SecondMapHeader), $1d, 4
-
-	; second map header
-	dw IcePath1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ICE_PATH, MUSIC_DARK_CAVE, 18, 5
-; 0x94316
-
-IcePathB1F_MapHeader: ; 0x94316
-	; bank, tileset, permission
-	db BANK(IcePathB1F_SecondMapHeader), $1d, 4
-
-	; second map header
-	dw IcePathB1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ICE_PATH, MUSIC_DARK_CAVE, 18, 5
-; 0x9431f
-
-IcePathB2FMahoganySide_MapHeader: ; 0x9431f
-	; bank, tileset, permission
-	db BANK(IcePathB2FMahoganySide_SecondMapHeader), $1d, 4
-
-	; second map header
-	dw IcePathB2FMahoganySide_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ICE_PATH, MUSIC_DARK_CAVE, 18, 5
-; 0x94328
-
-IcePathB2FBlackthornSide_MapHeader: ; 0x94328
-	; bank, tileset, permission
-	db BANK(IcePathB2FBlackthornSide_SecondMapHeader), $1d, 4
-
-	; second map header
-	dw IcePathB2FBlackthornSide_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ICE_PATH, MUSIC_DARK_CAVE, 18, 5
-; 0x94331
-
-IcePathB3F_MapHeader: ; 0x94331
-	; bank, tileset, permission
-	db BANK(IcePathB3F_SecondMapHeader), $1d, 4
-
-	; second map header
-	dw IcePathB3F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ICE_PATH, MUSIC_DARK_CAVE, 18, 5
-; 0x9433a
-
-WhirlIslandNW_MapHeader: ; 0x9433a
-	; bank, tileset, permission
-	db BANK(WhirlIslandNW_SecondMapHeader), $1e, 4
-
-	; second map header
-	dw WhirlIslandNW_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db WHIRL_ISLANDS, MUSIC_UNION_CAVE, 20, 10
-; 0x94343
-
-WhirlIslandNE_MapHeader: ; 0x94343
-	; bank, tileset, permission
-	db BANK(WhirlIslandNE_SecondMapHeader), $1e, 4
-
-	; second map header
-	dw WhirlIslandNE_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db WHIRL_ISLANDS, MUSIC_UNION_CAVE, 20, 10
-; 0x9434c
-
-WhirlIslandSW_MapHeader: ; 0x9434c
-	; bank, tileset, permission
-	db BANK(WhirlIslandSW_SecondMapHeader), $1e, 4
-
-	; second map header
-	dw WhirlIslandSW_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db WHIRL_ISLANDS, MUSIC_UNION_CAVE, 20, 10
-; 0x94355
-
-WhirlIslandCave_MapHeader: ; 0x94355
-	; bank, tileset, permission
-	db BANK(WhirlIslandCave_SecondMapHeader), $1e, 4
-
-	; second map header
-	dw WhirlIslandCave_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db WHIRL_ISLANDS, MUSIC_UNION_CAVE, 20, 10
-; 0x9435e
-
-WhirlIslandSE_MapHeader: ; 0x9435e
-	; bank, tileset, permission
-	db BANK(WhirlIslandSE_SecondMapHeader), $1e, 4
-
-	; second map header
-	dw WhirlIslandSE_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db WHIRL_ISLANDS, MUSIC_UNION_CAVE, 20, 10
-; 0x94367
-
-WhirlIslandB1F_MapHeader: ; 0x94367
-	; bank, tileset, permission
-	db BANK(WhirlIslandB1F_SecondMapHeader), $1e, 4
-
-	; second map header
-	dw WhirlIslandB1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db WHIRL_ISLANDS, MUSIC_UNION_CAVE, 20, 10
-; 0x94370
-
-WhirlIslandB2F_MapHeader: ; 0x94370
-	; bank, tileset, permission
-	db BANK(WhirlIslandB2F_SecondMapHeader), $1e, 4
-
-	; second map header
-	dw WhirlIslandB2F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db WHIRL_ISLANDS, MUSIC_UNION_CAVE, 20, 10
-; 0x94379
-
-WhirlIslandLugiaChamber_MapHeader: ; 0x94379
-	; bank, tileset, permission
-	db BANK(WhirlIslandLugiaChamber_SecondMapHeader), $1e, 4
-
-	; second map header
-	dw WhirlIslandLugiaChamber_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db WHIRL_ISLANDS, MUSIC_UNION_CAVE, 20, 10
-; 0x94382
-
-SilverCaveRoom1_MapHeader: ; 0x94382
-	; bank, tileset, permission
-	db BANK(SilverCaveRoom1_SecondMapHeader), $1e, 4
-
-	; second map header
-	dw SilverCaveRoom1_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SILVER_CAVE, MUSIC_LIGHTHOUSE, 20, 3
-; 0x9438b
-
-SilverCaveRoom2_MapHeader: ; 0x9438b
-	; bank, tileset, permission
-	db BANK(SilverCaveRoom2_SecondMapHeader), $18, 4
-
-	; second map header
-	dw SilverCaveRoom2_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SILVER_CAVE, MUSIC_LIGHTHOUSE, 18, 3
-; 0x94394
-
-SilverCaveRoom3_MapHeader: ; 0x94394
-	; bank, tileset, permission
-	db BANK(SilverCaveRoom3_SecondMapHeader), $18, 4
-
-	; second map header
-	dw SilverCaveRoom3_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SILVER_CAVE, MUSIC_LIGHTHOUSE, 17, 3
-; 0x9439d
-
-SilverCaveItemRooms_MapHeader: ; 0x9439d
-	; bank, tileset, permission
-	db BANK(SilverCaveItemRooms_SecondMapHeader), $18, 4
-
-	; second map header
-	dw SilverCaveItemRooms_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SILVER_CAVE, MUSIC_LIGHTHOUSE, 18, 3
-; 0x943a6
-
-DarkCaveVioletEntrance_MapHeader: ; 0x943a6
-	; bank, tileset, permission
-	db BANK(DarkCaveVioletEntrance_SecondMapHeader), $1e, 4
-
-	; second map header
-	dw DarkCaveVioletEntrance_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db DARK_CAVE, MUSIC_DARK_CAVE, 20, 3
-; 0x943af
-
-DarkCaveBlackthornEntrance_MapHeader: ; 0x943af
-	; bank, tileset, permission
-	db BANK(DarkCaveBlackthornEntrance_SecondMapHeader), $1e, 4
-
-	; second map header
-	dw DarkCaveBlackthornEntrance_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db DARK_CAVE, MUSIC_DARK_CAVE, 20, 3
-; 0x943b8
-
-DragonsDen1F_MapHeader: ; 0x943b8
-	; bank, tileset, permission
-	db BANK(DragonsDen1F_SecondMapHeader), $18, 4
-
-	; second map header
-	dw DragonsDen1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db DRAGONS_DEN, MUSIC_DRAGONS_DEN, 18, 5
-; 0x943c1
-
-DragonsDenB1F_MapHeader: ; 0x943c1
-	; bank, tileset, permission
-	db BANK(DragonsDenB1F_SecondMapHeader), $1, 4
-
-	; second map header
-	dw DragonsDenB1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db DRAGONS_DEN, MUSIC_DRAGONS_DEN, 18, 5
-; 0x943ca
-
-DragonShrine_MapHeader: ; 0x943ca
-	; bank, tileset, permission
-	db BANK(DragonShrine_SecondMapHeader), $a, 3
-
-	; second map header
-	dw DragonShrine_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db DRAGONS_DEN, MUSIC_DRAGONS_DEN, 18, 1
-; 0x943d3
-
-TohjoFalls_MapHeader: ; 0x943d3
-	; bank, tileset, permission
-	db BANK(TohjoFalls_SecondMapHeader), $18, 4
-
-	; second map header
-	dw TohjoFalls_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db TOHJO_FALLS, MUSIC_UNION_CAVE, 18, 3
-; 0x943dc
-
-DiglettsCave_MapHeader: ; 0x943dc
-	; bank, tileset, permission
-	db BANK(DiglettsCave_SecondMapHeader), $18, 4
-
-	; second map header
-	dw DiglettsCave_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db DIGLETTS_CAVE, MUSIC_MT_MOON, 18, 1
-; 0x943e5
-
-MountMoon_MapHeader: ; 0x943e5
-	; bank, tileset, permission
-	db BANK(MountMoon_SecondMapHeader), $18, 4
-
-	; second map header
-	dw MountMoon_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db MT_MOON, MUSIC_MT_MOON, 18, 1
-; 0x943ee
-
-Underground_MapHeader: ; 0x943ee
-	; bank, tileset, permission
-	db BANK(Underground_SecondMapHeader), $1c, 6
-
-	; second map header
-	dw Underground_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db UNDERGROUND, MUSIC_MT_MOON, 2, 1
-; 0x943f7
-
-RockTunnel1F_MapHeader: ; 0x943f7
-	; bank, tileset, permission
-	db BANK(RockTunnel1F_SecondMapHeader), $1e, 4
-
-	; second map header
-	dw RockTunnel1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROCK_TUNNEL, MUSIC_MT_MOON, 20, 1
-; 0x94400
-
-RockTunnelB1F_MapHeader: ; 0x94400
-	; bank, tileset, permission
-	db BANK(RockTunnelB1F_SecondMapHeader), $1e, 4
-
-	; second map header
-	dw RockTunnelB1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROCK_TUNNEL, MUSIC_MT_MOON, 20, 1
-; 0x94409
-
-SafariZoneFuchsiaGateBeta_MapHeader: ; 0x94409
-	; bank, tileset, permission
-	db BANK(SafariZoneFuchsiaGateBeta_SecondMapHeader), $8, 3
-
-	; second map header
-	dw SafariZoneFuchsiaGateBeta_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db FUCHSIA_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94412
-
-SafariZoneBeta_MapHeader: ; 0x94412
-	; bank, tileset, permission
-	db BANK(SafariZoneBeta_SecondMapHeader), $19, 4
-
-	; second map header
-	dw SafariZoneBeta_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db FUCHSIA_CITY, MUSIC_EVOLUTION, 0, 1
-; 0x9441b
-
-VictoryRoad_MapHeader: ; 0x9441b
-	; bank, tileset, permission
-	db BANK(VictoryRoad_SecondMapHeader), $18, 4
-
-	; second map header
-	dw VictoryRoad_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VICTORY_ROAD, MUSIC_VICTORY_ROAD, 18, 1
-; 0x94424
-
-
 MapGroup4:
+	map_header EcruteakHouse, $17, 3, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 1, 1
+	map_header WiseTriosRoom, $10, 3, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 17, 1
+	map_header EcruteakPokeCenter1F, $7, 3, ECRUTEAK_CITY, MUSIC_POKEMON_CENTER, 1, 1
+	map_header EcruteakLugiaSpeechHouse, $10, 3, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 1, 1
+	map_header DanceTheatre, $10, 3, ECRUTEAK_CITY, MUSIC_DANCING_HALL, 1, 1
+	map_header EcruteakMart, $c, 3, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 1, 1
+	map_header EcruteakGym, $17, 3, ECRUTEAK_CITY, MUSIC_GYM, 17, 1
+	map_header EcruteakItemfinderHouse, $10, 3, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 1, 1
+	map_header EcruteakCity, $1, 1, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, 4
 
-EcruteakHouse_MapHeader: ; 0x94424
-	; bank, tileset, permission
-	db BANK(EcruteakHouse_SecondMapHeader), $17, 3
 
-	; second map header
-	dw EcruteakHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 1, 1
-; 0x9442d
-
-WiseTriosRoom_MapHeader: ; 0x9442d
-	; bank, tileset, permission
-	db BANK(WiseTriosRoom_SecondMapHeader), $10, 3
-
-	; second map header
-	dw WiseTriosRoom_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 17, 1
-; 0x94436
-
-EcruteakPokeCenter1F_MapHeader: ; 0x94436
-	; bank, tileset, permission
-	db BANK(EcruteakPokeCenter1F_SecondMapHeader), $7, 3
-
-	; second map header
-	dw EcruteakPokeCenter1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ECRUTEAK_CITY, MUSIC_POKEMON_CENTER, 1, 1
-; 0x9443f
-
-EcruteakLugiaSpeechHouse_MapHeader: ; 0x9443f
-	; bank, tileset, permission
-	db BANK(EcruteakLugiaSpeechHouse_SecondMapHeader), $10, 3
-
-	; second map header
-	dw EcruteakLugiaSpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 1, 1
-; 0x94448
-
-DanceTheatre_MapHeader: ; 0x94448
-	; bank, tileset, permission
-	db BANK(DanceTheatre_SecondMapHeader), $10, 3
-
-	; second map header
-	dw DanceTheatre_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ECRUTEAK_CITY, MUSIC_DANCING_HALL, 1, 1
-; 0x94451
-
-EcruteakMart_MapHeader: ; 0x94451
-	; bank, tileset, permission
-	db BANK(EcruteakMart_SecondMapHeader), $c, 3
-
-	; second map header
-	dw EcruteakMart_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 1, 1
-; 0x9445a
-
-EcruteakGym_MapHeader: ; 0x9445a
-	; bank, tileset, permission
-	db BANK(EcruteakGym_SecondMapHeader), $17, 3
-
-	; second map header
-	dw EcruteakGym_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ECRUTEAK_CITY, MUSIC_GYM, 17, 1
-; 0x94463
-
-EcruteakItemfinderHouse_MapHeader: ; 0x94463
-	; bank, tileset, permission
-	db BANK(EcruteakItemfinderHouse_SecondMapHeader), $10, 3
-
-	; second map header
-	dw EcruteakItemfinderHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 1, 1
-; 0x9446c
-
-EcruteakCity_MapHeader: ; 0x9446c
-	; bank, tileset, permission
-	db BANK(EcruteakCity_SecondMapHeader), $1, 1
-
-	; second map header
-	dw EcruteakCity_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, 4
-; 0x94475
-
-
 MapGroup5:
+	map_header BlackthornGym1F, $f, 3, BLACKTHORN_CITY, MUSIC_GYM, 17, 1
+	map_header BlackthornGym2F, $f, 3, BLACKTHORN_CITY, MUSIC_GYM, 17, 1
+	map_header BlackthornDragonSpeechHouse, $5, 3, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 1, 1
+	map_header BlackthornDodrioTradeHouse, $5, 3, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 1, 1
+	map_header BlackthornMart, $c, 3, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 1, 1
+	map_header BlackthornPokeCenter1F, $7, 3, BLACKTHORN_CITY, MUSIC_POKEMON_CENTER, 1, 1
+	map_header MoveDeletersHouse, $5, 3, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 1, 1
+	map_header Route45, $1, 2, ROUTE_45, MUSIC_ROUTE_36, 0, 9
+	map_header Route46, $1, 2, ROUTE_46, MUSIC_ROUTE_36, 0, 1
+	map_header BlackthornCity, $1, 1, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, 4
 
-BlackthornGym1F_MapHeader: ; 0x94475
-	; bank, tileset, permission
-	db BANK(BlackthornGym1F_SecondMapHeader), $f, 3
 
-	; second map header
-	dw BlackthornGym1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db BLACKTHORN_CITY, MUSIC_GYM, 17, 1
-; 0x9447e
-
-BlackthornGym2F_MapHeader: ; 0x9447e
-	; bank, tileset, permission
-	db BANK(BlackthornGym2F_SecondMapHeader), $f, 3
-
-	; second map header
-	dw BlackthornGym2F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db BLACKTHORN_CITY, MUSIC_GYM, 17, 1
-; 0x94487
-
-BlackthornDragonSpeechHouse_MapHeader: ; 0x94487
-	; bank, tileset, permission
-	db BANK(BlackthornDragonSpeechHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw BlackthornDragonSpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 1, 1
-; 0x94490
-
-BlackthornDodrioTradeHouse_MapHeader: ; 0x94490
-	; bank, tileset, permission
-	db BANK(BlackthornDodrioTradeHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw BlackthornDodrioTradeHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 1, 1
-; 0x94499
-
-BlackthornMart_MapHeader: ; 0x94499
-	; bank, tileset, permission
-	db BANK(BlackthornMart_SecondMapHeader), $c, 3
-
-	; second map header
-	dw BlackthornMart_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 1, 1
-; 0x944a2
-
-BlackthornPokeCenter1F_MapHeader: ; 0x944a2
-	; bank, tileset, permission
-	db BANK(BlackthornPokeCenter1F_SecondMapHeader), $7, 3
-
-	; second map header
-	dw BlackthornPokeCenter1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db BLACKTHORN_CITY, MUSIC_POKEMON_CENTER, 1, 1
-; 0x944ab
-
-MoveDeletersHouse_MapHeader: ; 0x944ab
-	; bank, tileset, permission
-	db BANK(MoveDeletersHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw MoveDeletersHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 1, 1
-; 0x944b4
-
-Route45_MapHeader: ; 0x944b4
-	; bank, tileset, permission
-	db BANK(Route45_SecondMapHeader), $1, 2
-
-	; second map header
-	dw Route45_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_45, MUSIC_ROUTE_36, 0, 9
-; 0x944bd
-
-Route46_MapHeader: ; 0x944bd
-	; bank, tileset, permission
-	db BANK(Route46_SecondMapHeader), $1, 2
-
-	; second map header
-	dw Route46_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_46, MUSIC_ROUTE_36, 0, 1
-; 0x944c6
-
-BlackthornCity_MapHeader: ; 0x944c6
-	; bank, tileset, permission
-	db BANK(BlackthornCity_SecondMapHeader), $1, 1
-
-	; second map header
-	dw BlackthornCity_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, 4
-; 0x944cf
-
-
 MapGroup6:
+	map_header CinnabarPokeCenter1F, $7, 3, CINNABAR_ISLAND, MUSIC_POKEMON_CENTER, 1, 1
+	map_header CinnabarPokeCenter2FBeta, $7, 3, CINNABAR_ISLAND, MUSIC_POKEMON_CENTER, 1, 1
+	map_header Route19FuchsiaGate, $8, 6, ROUTE_19, MUSIC_ROUTE_3, 1, 1
+	map_header SeafoamGym, $18, 3, SEAFOAM_ISLANDS, MUSIC_GYM, 17, 1
+	map_header Route19, $3, 2, ROUTE_19, MUSIC_ROUTE_3, 0, 1
+	map_header Route20, $3, 2, ROUTE_20, MUSIC_ROUTE_3, 0, 2
+	map_header Route21, $3, 2, ROUTE_21, MUSIC_ROUTE_3, 0, 2
+	map_header CinnabarIsland, $3, 1, CINNABAR_ISLAND, MUSIC_VIRIDIAN_CITY, 0, 2
 
-CinnabarPokeCenter1F_MapHeader: ; 0x944cf
-	; bank, tileset, permission
-	db BANK(CinnabarPokeCenter1F_SecondMapHeader), $7, 3
 
-	; second map header
-	dw CinnabarPokeCenter1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CINNABAR_ISLAND, MUSIC_POKEMON_CENTER, 1, 1
-; 0x944d8
-
-CinnabarPokeCenter2FBeta_MapHeader: ; 0x944d8
-	; bank, tileset, permission
-	db BANK(CinnabarPokeCenter2FBeta_SecondMapHeader), $7, 3
-
-	; second map header
-	dw CinnabarPokeCenter2FBeta_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CINNABAR_ISLAND, MUSIC_POKEMON_CENTER, 1, 1
-; 0x944e1
-
-Route19FuchsiaGate_MapHeader: ; 0x944e1
-	; bank, tileset, permission
-	db BANK(Route19FuchsiaGate_SecondMapHeader), $8, 6
-
-	; second map header
-	dw Route19FuchsiaGate_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_19, MUSIC_ROUTE_3, 1, 1
-; 0x944ea
-
-SeafoamGym_MapHeader: ; 0x944ea
-	; bank, tileset, permission
-	db BANK(SeafoamGym_SecondMapHeader), $18, 3
-
-	; second map header
-	dw SeafoamGym_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SEAFOAM_ISLANDS, MUSIC_GYM, 17, 1
-; 0x944f3
-
-Route19_MapHeader: ; 0x944f3
-	; bank, tileset, permission
-	db BANK(Route19_SecondMapHeader), $3, 2
-
-	; second map header
-	dw Route19_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_19, MUSIC_ROUTE_3, 0, 1
-; 0x944fc
-
-Route20_MapHeader: ; 0x944fc
-	; bank, tileset, permission
-	db BANK(Route20_SecondMapHeader), $3, 2
-
-	; second map header
-	dw Route20_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_20, MUSIC_ROUTE_3, 0, 2
-; 0x94505
-
-Route21_MapHeader: ; 0x94505
-	; bank, tileset, permission
-	db BANK(Route21_SecondMapHeader), $3, 2
-
-	; second map header
-	dw Route21_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_21, MUSIC_ROUTE_3, 0, 2
-; 0x9450e
-
-CinnabarIsland_MapHeader: ; 0x9450e
-	; bank, tileset, permission
-	db BANK(CinnabarIsland_SecondMapHeader), $3, 1
-
-	; second map header
-	dw CinnabarIsland_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CINNABAR_ISLAND, MUSIC_VIRIDIAN_CITY, 0, 2
-; 0x94517
-
-
 MapGroup7:
+	map_header CeruleanGymBadgeSpeechHouse, $5, 3, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header CeruleanPoliceStation, $5, 3, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header CeruleanTradeSpeechHouse, $5, 3, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header CeruleanPokeCenter1F, $7, 3, CERULEAN_CITY, MUSIC_POKEMON_CENTER, 1, 1
+	map_header CeruleanPokeCenter2FBeta, $7, 3, CERULEAN_CITY, MUSIC_POKEMON_CENTER, 1, 1
+	map_header CeruleanGym, $9, 3, CERULEAN_CITY, MUSIC_GYM, 17, 0
+	map_header CeruleanMart, $c, 3, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header Route10PokeCenter1F, $7, 3, ROUTE_10, MUSIC_POKEMON_CENTER, 1, 1
+	map_header Route10PokeCenter2FBeta, $7, 3, ROUTE_10, MUSIC_POKEMON_CENTER, 1, 1
+	map_header PowerPlant, $b, 3, POWER_PLANT, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header BillsHouse, $5, 3, ROUTE_25, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header Route4, $3, 2, ROUTE_4, MUSIC_ROUTE_3, 0, 0
+	map_header Route9, $3, 2, ROUTE_9, MUSIC_ROUTE_3, 0, 3
+	map_header Route10North, $3, 2, ROUTE_10, MUSIC_ROUTE_3, 0, 3
+	map_header Route24, $3, 2, ROUTE_24, MUSIC_ROUTE_3, 0, 3
+	map_header Route25, $3, 2, ROUTE_25, MUSIC_ROUTE_3, 0, 3
+	map_header CeruleanCity, $3, 1, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, 0
 
-CeruleanGymBadgeSpeechHouse_MapHeader: ; 0x94517
-	; bank, tileset, permission
-	db BANK(CeruleanGymBadgeSpeechHouse_SecondMapHeader), $5, 3
 
-	; second map header
-	dw CeruleanGymBadgeSpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94520
-
-CeruleanPoliceStation_MapHeader: ; 0x94520
-	; bank, tileset, permission
-	db BANK(CeruleanPoliceStation_SecondMapHeader), $5, 3
-
-	; second map header
-	dw CeruleanPoliceStation_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94529
-
-CeruleanTradeSpeechHouse_MapHeader: ; 0x94529
-	; bank, tileset, permission
-	db BANK(CeruleanTradeSpeechHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw CeruleanTradeSpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94532
-
-CeruleanPokeCenter1F_MapHeader: ; 0x94532
-	; bank, tileset, permission
-	db BANK(CeruleanPokeCenter1F_SecondMapHeader), $7, 3
-
-	; second map header
-	dw CeruleanPokeCenter1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CERULEAN_CITY, MUSIC_POKEMON_CENTER, 1, 1
-; 0x9453b
-
-CeruleanPokeCenter2FBeta_MapHeader: ; 0x9453b
-	; bank, tileset, permission
-	db BANK(CeruleanPokeCenter2FBeta_SecondMapHeader), $7, 3
-
-	; second map header
-	dw CeruleanPokeCenter2FBeta_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CERULEAN_CITY, MUSIC_POKEMON_CENTER, 1, 1
-; 0x94544
-
-CeruleanGym_MapHeader: ; 0x94544
-	; bank, tileset, permission
-	db BANK(CeruleanGym_SecondMapHeader), $9, 3
-
-	; second map header
-	dw CeruleanGym_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CERULEAN_CITY, MUSIC_GYM, 17, 0
-; 0x9454d
-
-CeruleanMart_MapHeader: ; 0x9454d
-	; bank, tileset, permission
-	db BANK(CeruleanMart_SecondMapHeader), $c, 3
-
-	; second map header
-	dw CeruleanMart_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94556
-
-Route10PokeCenter1F_MapHeader: ; 0x94556
-	; bank, tileset, permission
-	db BANK(Route10PokeCenter1F_SecondMapHeader), $7, 3
-
-	; second map header
-	dw Route10PokeCenter1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_10, MUSIC_POKEMON_CENTER, 1, 1
-; 0x9455f
-
-Route10PokeCenter2FBeta_MapHeader: ; 0x9455f
-	; bank, tileset, permission
-	db BANK(Route10PokeCenter2FBeta_SecondMapHeader), $7, 3
-
-	; second map header
-	dw Route10PokeCenter2FBeta_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_10, MUSIC_POKEMON_CENTER, 1, 1
-; 0x94568
-
-PowerPlant_MapHeader: ; 0x94568
-	; bank, tileset, permission
-	db BANK(PowerPlant_SecondMapHeader), $b, 3
-
-	; second map header
-	dw PowerPlant_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db POWER_PLANT, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94571
-
-BillsHouse_MapHeader: ; 0x94571
-	; bank, tileset, permission
-	db BANK(BillsHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw BillsHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_25, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x9457a
-
-Route4_MapHeader: ; 0x9457a
-	; bank, tileset, permission
-	db BANK(Route4_SecondMapHeader), $3, 2
-
-	; second map header
-	dw Route4_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_4, MUSIC_ROUTE_3, 0, 0
-; 0x94583
-
-Route9_MapHeader: ; 0x94583
-	; bank, tileset, permission
-	db BANK(Route9_SecondMapHeader), $3, 2
-
-	; second map header
-	dw Route9_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_9, MUSIC_ROUTE_3, 0, 3
-; 0x9458c
-
-Route10North_MapHeader: ; 0x9458c
-	; bank, tileset, permission
-	db BANK(Route10North_SecondMapHeader), $3, 2
-
-	; second map header
-	dw Route10North_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_10, MUSIC_ROUTE_3, 0, 3
-; 0x94595
-
-Route24_MapHeader: ; 0x94595
-	; bank, tileset, permission
-	db BANK(Route24_SecondMapHeader), $3, 2
-
-	; second map header
-	dw Route24_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_24, MUSIC_ROUTE_3, 0, 3
-; 0x9459e
-
-Route25_MapHeader: ; 0x9459e
-	; bank, tileset, permission
-	db BANK(Route25_SecondMapHeader), $3, 2
-
-	; second map header
-	dw Route25_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_25, MUSIC_ROUTE_3, 0, 3
-; 0x945a7
-
-CeruleanCity_MapHeader: ; 0x945a7
-	; bank, tileset, permission
-	db BANK(CeruleanCity_SecondMapHeader), $3, 1
-
-	; second map header
-	dw CeruleanCity_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, 0
-; 0x945b0
-
-
 MapGroup8:
+	map_header AzaleaPokeCenter1F, $7, 3, AZALEA_TOWN, MUSIC_POKEMON_CENTER, 1, 1
+	map_header CharcoalKiln, $5, 3, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 1, 1
+	map_header AzaleaMart, $c, 3, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 1, 1
+	map_header KurtsHouse, $10, 3, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 1, 1
+	map_header AzaleaGym, $f, 3, AZALEA_TOWN, MUSIC_GYM, 17, 1
+	map_header Route33, $2, 2, ROUTE_33, MUSIC_ROUTE_30, 0, 1
+	map_header AzaleaTown, $2, 1, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 0, 1
 
-AzaleaPokeCenter1F_MapHeader: ; 0x945b0
-	; bank, tileset, permission
-	db BANK(AzaleaPokeCenter1F_SecondMapHeader), $7, 3
 
-	; second map header
-	dw AzaleaPokeCenter1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db AZALEA_TOWN, MUSIC_POKEMON_CENTER, 1, 1
-; 0x945b9
-
-CharcoalKiln_MapHeader: ; 0x945b9
-	; bank, tileset, permission
-	db BANK(CharcoalKiln_SecondMapHeader), $5, 3
-
-	; second map header
-	dw CharcoalKiln_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db AZALEA_TOWN, MUSIC_AZALEA_TOWN, 1, 1
-; 0x945c2
-
-AzaleaMart_MapHeader: ; 0x945c2
-	; bank, tileset, permission
-	db BANK(AzaleaMart_SecondMapHeader), $c, 3
-
-	; second map header
-	dw AzaleaMart_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db AZALEA_TOWN, MUSIC_AZALEA_TOWN, 1, 1
-; 0x945cb
-
-KurtsHouse_MapHeader: ; 0x945cb
-	; bank, tileset, permission
-	db BANK(KurtsHouse_SecondMapHeader), $10, 3
-
-	; second map header
-	dw KurtsHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db AZALEA_TOWN, MUSIC_AZALEA_TOWN, 1, 1
-; 0x945d4
-
-AzaleaGym_MapHeader: ; 0x945d4
-	; bank, tileset, permission
-	db BANK(AzaleaGym_SecondMapHeader), $f, 3
-
-	; second map header
-	dw AzaleaGym_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db AZALEA_TOWN, MUSIC_GYM, 17, 1
-; 0x945dd
-
-Route33_MapHeader: ; 0x945dd
-	; bank, tileset, permission
-	db BANK(Route33_SecondMapHeader), $2, 2
-
-	; second map header
-	dw Route33_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_33, MUSIC_ROUTE_30, 0, 1
-; 0x945e6
-
-AzaleaTown_MapHeader: ; 0x945e6
-	; bank, tileset, permission
-	db BANK(AzaleaTown_SecondMapHeader), $2, 1
-
-	; second map header
-	dw AzaleaTown_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db AZALEA_TOWN, MUSIC_AZALEA_TOWN, 0, 1
-; 0x945ef
-
-
 MapGroup9:
+	map_header LakeofRageHiddenPowerHouse, $5, 3, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, 1, 1
+	map_header LakeofRageMagikarpHouse, $5, 3, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, 1, 1
+	map_header Route43MahoganyGate, $8, 6, ROUTE_43, MUSIC_LAKE_OF_RAGE, 1, 1
+	map_header Route43Gate, $8, 6, ROUTE_43, MUSIC_LAKE_OF_RAGE, 1, 1
+	map_header Route43, $1, 2, ROUTE_43, MUSIC_LAKE_OF_RAGE, 0, 4
+	map_header LakeofRage, $1, 1, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, 0, 8
 
-LakeofRageHiddenPowerHouse_MapHeader: ; 0x945ef
-	; bank, tileset, permission
-	db BANK(LakeofRageHiddenPowerHouse_SecondMapHeader), $5, 3
 
-	; second map header
-	dw LakeofRageHiddenPowerHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, 1, 1
-; 0x945f8
-
-LakeofRageMagikarpHouse_MapHeader: ; 0x945f8
-	; bank, tileset, permission
-	db BANK(LakeofRageMagikarpHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw LakeofRageMagikarpHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, 1, 1
-; 0x94601
-
-Route43MahoganyGate_MapHeader: ; 0x94601
-	; bank, tileset, permission
-	db BANK(Route43MahoganyGate_SecondMapHeader), $8, 6
-
-	; second map header
-	dw Route43MahoganyGate_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_43, MUSIC_LAKE_OF_RAGE, 1, 1
-; 0x9460a
-
-Route43Gate_MapHeader: ; 0x9460a
-	; bank, tileset, permission
-	db BANK(Route43Gate_SecondMapHeader), $8, 6
-
-	; second map header
-	dw Route43Gate_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_43, MUSIC_LAKE_OF_RAGE, 1, 1
-; 0x94613
-
-Route43_MapHeader: ; 0x94613
-	; bank, tileset, permission
-	db BANK(Route43_SecondMapHeader), $1, 2
-
-	; second map header
-	dw Route43_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_43, MUSIC_LAKE_OF_RAGE, 0, 4
-; 0x9461c
-
-LakeofRage_MapHeader: ; 0x9461c
-	; bank, tileset, permission
-	db BANK(LakeofRage_SecondMapHeader), $1, 1
-
-	; second map header
-	dw LakeofRage_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, 0, 8
-; 0x94625
-
-
 MapGroup10:
+	map_header Route32, $1, 2, ROUTE_32, MUSIC_ROUTE_30, 0, 11
+	map_header Route35, $1, 2, ROUTE_35, MUSIC_ROUTE_36, 0, 4
+	map_header Route36, $1, 2, ROUTE_36, MUSIC_ROUTE_36, 0, 1
+	map_header Route37, $1, 2, ROUTE_37, MUSIC_ROUTE_36, 0, 1
+	map_header VioletCity, $1, 1, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, 4
+	map_header VioletMart, $c, 3, VIOLET_CITY, MUSIC_VIOLET_CITY, 1, 1
+	map_header VioletGym, $f, 3, VIOLET_CITY, MUSIC_GYM, 17, 1
+	map_header EarlsPokemonAcademy, $a, 3, VIOLET_CITY, MUSIC_VIOLET_CITY, 1, 1
+	map_header VioletNicknameSpeechHouse, $10, 3, VIOLET_CITY, MUSIC_VIOLET_CITY, 1, 1
+	map_header VioletPokeCenter1F, $7, 3, VIOLET_CITY, MUSIC_POKEMON_CENTER, 1, 1
+	map_header VioletOnixTradeHouse, $10, 3, VIOLET_CITY, MUSIC_VIOLET_CITY, 1, 1
+	map_header Route32RuinsofAlphGate, $8, 6, ROUTE_32, MUSIC_ROUTE_30, 1, 1
+	map_header Route32PokeCenter1F, $7, 3, ROUTE_32, MUSIC_POKEMON_CENTER, 1, 1
+	map_header Route35Goldenrodgate, $8, 6, ROUTE_35, MUSIC_ROUTE_36, 1, 1
+	map_header Route35NationalParkgate, $8, 3, ROUTE_35, MUSIC_GOLDENROD_CITY, 1, 1
+	map_header Route36RuinsofAlphgate, $8, 6, ROUTE_36, MUSIC_ROUTE_36, 1, 1
+	map_header Route36NationalParkgate, $8, 3, ROUTE_36, MUSIC_GOLDENROD_CITY, 1, 1
 
-Route32_MapHeader: ; 0x94625
-	; bank, tileset, permission
-	db BANK(Route32_SecondMapHeader), $1, 2
 
-	; second map header
-	dw Route32_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_32, MUSIC_ROUTE_30, 0, 11
-; 0x9462e
-
-Route35_MapHeader: ; 0x9462e
-	; bank, tileset, permission
-	db BANK(Route35_SecondMapHeader), $1, 2
-
-	; second map header
-	dw Route35_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_35, MUSIC_ROUTE_36, 0, 4
-; 0x94637
-
-Route36_MapHeader: ; 0x94637
-	; bank, tileset, permission
-	db BANK(Route36_SecondMapHeader), $1, 2
-
-	; second map header
-	dw Route36_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_36, MUSIC_ROUTE_36, 0, 1
-; 0x94640
-
-Route37_MapHeader: ; 0x94640
-	; bank, tileset, permission
-	db BANK(Route37_SecondMapHeader), $1, 2
-
-	; second map header
-	dw Route37_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_37, MUSIC_ROUTE_36, 0, 1
-; 0x94649
-
-VioletCity_MapHeader: ; 0x94649
-	; bank, tileset, permission
-	db BANK(VioletCity_SecondMapHeader), $1, 1
-
-	; second map header
-	dw VioletCity_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VIOLET_CITY, MUSIC_VIOLET_CITY, 0, 4
-; 0x94652
-
-VioletMart_MapHeader: ; 0x94652
-	; bank, tileset, permission
-	db BANK(VioletMart_SecondMapHeader), $c, 3
-
-	; second map header
-	dw VioletMart_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VIOLET_CITY, MUSIC_VIOLET_CITY, 1, 1
-; 0x9465b
-
-VioletGym_MapHeader: ; 0x9465b
-	; bank, tileset, permission
-	db BANK(VioletGym_SecondMapHeader), $f, 3
-
-	; second map header
-	dw VioletGym_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VIOLET_CITY, MUSIC_GYM, 17, 1
-; 0x94664
-
-EarlsPokemonAcademy_MapHeader: ; 0x94664
-	; bank, tileset, permission
-	db BANK(EarlsPokemonAcademy_SecondMapHeader), $a, 3
-
-	; second map header
-	dw EarlsPokemonAcademy_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VIOLET_CITY, MUSIC_VIOLET_CITY, 1, 1
-; 0x9466d
-
-VioletNicknameSpeechHouse_MapHeader: ; 0x9466d
-	; bank, tileset, permission
-	db BANK(VioletNicknameSpeechHouse_SecondMapHeader), $10, 3
-
-	; second map header
-	dw VioletNicknameSpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VIOLET_CITY, MUSIC_VIOLET_CITY, 1, 1
-; 0x94676
-
-VioletPokeCenter1F_MapHeader: ; 0x94676
-	; bank, tileset, permission
-	db BANK(VioletPokeCenter1F_SecondMapHeader), $7, 3
-
-	; second map header
-	dw VioletPokeCenter1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VIOLET_CITY, MUSIC_POKEMON_CENTER, 1, 1
-; 0x9467f
-
-VioletOnixTradeHouse_MapHeader: ; 0x9467f
-	; bank, tileset, permission
-	db BANK(VioletOnixTradeHouse_SecondMapHeader), $10, 3
-
-	; second map header
-	dw VioletOnixTradeHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VIOLET_CITY, MUSIC_VIOLET_CITY, 1, 1
-; 0x94688
-
-Route32RuinsofAlphGate_MapHeader: ; 0x94688
-	; bank, tileset, permission
-	db BANK(Route32RuinsofAlphGate_SecondMapHeader), $8, 6
-
-	; second map header
-	dw Route32RuinsofAlphGate_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_32, MUSIC_ROUTE_30, 1, 1
-; 0x94691
-
-Route32PokeCenter1F_MapHeader: ; 0x94691
-	; bank, tileset, permission
-	db BANK(Route32PokeCenter1F_SecondMapHeader), $7, 3
-
-	; second map header
-	dw Route32PokeCenter1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_32, MUSIC_POKEMON_CENTER, 1, 1
-; 0x9469a
-
-Route35Goldenrodgate_MapHeader: ; 0x9469a
-	; bank, tileset, permission
-	db BANK(Route35Goldenrodgate_SecondMapHeader), $8, 6
-
-	; second map header
-	dw Route35Goldenrodgate_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_35, MUSIC_ROUTE_36, 1, 1
-; 0x946a3
-
-Route35NationalParkgate_MapHeader: ; 0x946a3
-	; bank, tileset, permission
-	db BANK(Route35NationalParkgate_SecondMapHeader), $8, 3
-
-	; second map header
-	dw Route35NationalParkgate_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_35, MUSIC_GOLDENROD_CITY, 1, 1
-; 0x946ac
-
-Route36RuinsofAlphgate_MapHeader: ; 0x946ac
-	; bank, tileset, permission
-	db BANK(Route36RuinsofAlphgate_SecondMapHeader), $8, 6
-
-	; second map header
-	dw Route36RuinsofAlphgate_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_36, MUSIC_ROUTE_36, 1, 1
-; 0x946b5
-
-Route36NationalParkgate_MapHeader: ; 0x946b5
-	; bank, tileset, permission
-	db BANK(Route36NationalParkgate_SecondMapHeader), $8, 3
-
-	; second map header
-	dw Route36NationalParkgate_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_36, MUSIC_GOLDENROD_CITY, 1, 1
-; 0x946be
-
-
 MapGroup11:
+	map_header Route34, $2, 2, ROUTE_34, MUSIC_ROUTE_36, 0, 1
+	map_header GoldenrodCity, $2, 1, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, 1
+	map_header GoldenrodGym, $f, 3, GOLDENROD_CITY, MUSIC_GYM, 17, 1
+	map_header GoldenrodBikeShop, $12, 3, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
+	map_header GoldenrodHappinessRater, $5, 3, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
+	map_header GoldenrodBillsHouse, $5, 3, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
+	map_header GoldenrodMagnetTrainStation, $11, 3, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
+	map_header GoldenrodFlowerShop, $5, 3, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
+	map_header GoldenrodPPSpeechHouse, $5, 3, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
+	map_header GoldenrodNameRatersHouse, $5, 3, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
+	map_header GoldenrodDeptStore1F, $c, 3, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
+	map_header GoldenrodDeptStore2F, $c, 3, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
+	map_header GoldenrodDeptStore3F, $c, 3, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
+	map_header GoldenrodDeptStore4F, $c, 3, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
+	map_header GoldenrodDeptStore5F, $c, 3, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
+	map_header GoldenrodDeptStore6F, $c, 3, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
+	map_header GoldenrodDeptStoreElevator, $c, 3, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
+	map_header GoldenrodDeptStoreRoof, $c, 3, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
+	map_header GoldenrodGameCorner, $e, 3, GOLDENROD_CITY, MUSIC_GAME_CORNER, 1, 1
+	map_header GoldenrodPokeCenter1F, $7, 3, GOLDENROD_CITY, MUSIC_POKEMON_CENTER, 1, 1
+	map_header GoldenrodPokeComCenter2FMobile, $15, 3, GOLDENROD_CITY, MUSIC_POKEMON_CENTER, 1, 1
+	map_header IlexForestAzaleaGate, $8, 6, ROUTE_34, MUSIC_ROUTE_36, 1, 1
+	map_header Route34IlexForestGate, $8, 6, ROUTE_34, MUSIC_ROUTE_36, 1, 1
+	map_header DayCare, $5, 3, ROUTE_34, MUSIC_AZALEA_TOWN, 1, 1
 
-Route34_MapHeader: ; 0x946be
-	; bank, tileset, permission
-	db BANK(Route34_SecondMapHeader), $2, 2
 
-	; second map header
-	dw Route34_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_34, MUSIC_ROUTE_36, 0, 1
-; 0x946c7
-
-GoldenrodCity_MapHeader: ; 0x946c7
-	; bank, tileset, permission
-	db BANK(GoldenrodCity_SecondMapHeader), $2, 1
-
-	; second map header
-	dw GoldenrodCity_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, 1
-; 0x946d0
-
-GoldenrodGym_MapHeader: ; 0x946d0
-	; bank, tileset, permission
-	db BANK(GoldenrodGym_SecondMapHeader), $f, 3
-
-	; second map header
-	dw GoldenrodGym_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db GOLDENROD_CITY, MUSIC_GYM, 17, 1
-; 0x946d9
-
-GoldenrodBikeShop_MapHeader: ; 0x946d9
-	; bank, tileset, permission
-	db BANK(GoldenrodBikeShop_SecondMapHeader), $12, 3
-
-	; second map header
-	dw GoldenrodBikeShop_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
-; 0x946e2
-
-GoldenrodHappinessRater_MapHeader: ; 0x946e2
-	; bank, tileset, permission
-	db BANK(GoldenrodHappinessRater_SecondMapHeader), $5, 3
-
-	; second map header
-	dw GoldenrodHappinessRater_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
-; 0x946eb
-
-GoldenrodBillsHouse_MapHeader: ; 0x946eb
-	; bank, tileset, permission
-	db BANK(GoldenrodBillsHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw GoldenrodBillsHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
-; 0x946f4
-
-GoldenrodMagnetTrainStation_MapHeader: ; 0x946f4
-	; bank, tileset, permission
-	db BANK(GoldenrodMagnetTrainStation_SecondMapHeader), $11, 3
-
-	; second map header
-	dw GoldenrodMagnetTrainStation_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
-; 0x946fd
-
-GoldenrodFlowerShop_MapHeader: ; 0x946fd
-	; bank, tileset, permission
-	db BANK(GoldenrodFlowerShop_SecondMapHeader), $5, 3
-
-	; second map header
-	dw GoldenrodFlowerShop_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
-; 0x94706
-
-GoldenrodPPSpeechHouse_MapHeader: ; 0x94706
-	; bank, tileset, permission
-	db BANK(GoldenrodPPSpeechHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw GoldenrodPPSpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
-; 0x9470f
-
-GoldenrodNameRatersHouse_MapHeader: ; 0x9470f
-	; bank, tileset, permission
-	db BANK(GoldenrodNameRatersHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw GoldenrodNameRatersHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
-; 0x94718
-
-GoldenrodDeptStore1F_MapHeader: ; 0x94718
-	; bank, tileset, permission
-	db BANK(GoldenrodDeptStore1F_SecondMapHeader), $c, 3
-
-	; second map header
-	dw GoldenrodDeptStore1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
-; 0x94721
-
-GoldenrodDeptStore2F_MapHeader: ; 0x94721
-	; bank, tileset, permission
-	db BANK(GoldenrodDeptStore2F_SecondMapHeader), $c, 3
-
-	; second map header
-	dw GoldenrodDeptStore2F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
-; 0x9472a
-
-GoldenrodDeptStore3F_MapHeader: ; 0x9472a
-	; bank, tileset, permission
-	db BANK(GoldenrodDeptStore3F_SecondMapHeader), $c, 3
-
-	; second map header
-	dw GoldenrodDeptStore3F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
-; 0x94733
-
-GoldenrodDeptStore4F_MapHeader: ; 0x94733
-	; bank, tileset, permission
-	db BANK(GoldenrodDeptStore4F_SecondMapHeader), $c, 3
-
-	; second map header
-	dw GoldenrodDeptStore4F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
-; 0x9473c
-
-GoldenrodDeptStore5F_MapHeader: ; 0x9473c
-	; bank, tileset, permission
-	db BANK(GoldenrodDeptStore5F_SecondMapHeader), $c, 3
-
-	; second map header
-	dw GoldenrodDeptStore5F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
-; 0x94745
-
-GoldenrodDeptStore6F_MapHeader: ; 0x94745
-	; bank, tileset, permission
-	db BANK(GoldenrodDeptStore6F_SecondMapHeader), $c, 3
-
-	; second map header
-	dw GoldenrodDeptStore6F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
-; 0x9474e
-
-GoldenrodDeptStoreElevator_MapHeader: ; 0x9474e
-	; bank, tileset, permission
-	db BANK(GoldenrodDeptStoreElevator_SecondMapHeader), $c, 3
-
-	; second map header
-	dw GoldenrodDeptStoreElevator_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
-; 0x94757
-
-GoldenrodDeptStoreRoof_MapHeader: ; 0x94757
-	; bank, tileset, permission
-	db BANK(GoldenrodDeptStoreRoof_SecondMapHeader), $c, 3
-
-	; second map header
-	dw GoldenrodDeptStoreRoof_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1
-; 0x94760
-
-GoldenrodGameCorner_MapHeader: ; 0x94760
-	; bank, tileset, permission
-	db BANK(GoldenrodGameCorner_SecondMapHeader), $e, 3
-
-	; second map header
-	dw GoldenrodGameCorner_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db GOLDENROD_CITY, MUSIC_GAME_CORNER, 1, 1
-; 0x94769
-
-GoldenrodPokeCenter1F_MapHeader: ; 0x94769
-	; bank, tileset, permission
-	db BANK(GoldenrodPokeCenter1F_SecondMapHeader), $7, 3
-
-	; second map header
-	dw GoldenrodPokeCenter1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db GOLDENROD_CITY, MUSIC_POKEMON_CENTER, 1, 1
-; 0x94772
-
-GoldenrodPokeComCenter2FMobile_MapHeader: ; 0x94772
-	; bank, tileset, permission
-	db BANK(GoldenrodPokeComCenter2FMobile_SecondMapHeader), $15, 3
-
-	; second map header
-	dw GoldenrodPokeComCenter2FMobile_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db GOLDENROD_CITY, MUSIC_POKEMON_CENTER, 1, 1
-; 0x9477b
-
-IlexForestAzaleaGate_MapHeader: ; 0x9477b
-	; bank, tileset, permission
-	db BANK(IlexForestAzaleaGate_SecondMapHeader), $8, 6
-
-	; second map header
-	dw IlexForestAzaleaGate_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_34, MUSIC_ROUTE_36, 1, 1
-; 0x94784
-
-Route34IlexForestGate_MapHeader: ; 0x94784
-	; bank, tileset, permission
-	db BANK(Route34IlexForestGate_SecondMapHeader), $8, 6
-
-	; second map header
-	dw Route34IlexForestGate_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_34, MUSIC_ROUTE_36, 1, 1
-; 0x9478d
-
-DayCare_MapHeader: ; 0x9478d
-	; bank, tileset, permission
-	db BANK(DayCare_SecondMapHeader), $5, 3
-
-	; second map header
-	dw DayCare_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_34, MUSIC_AZALEA_TOWN, 1, 1
-; 0x94796
-
-
 MapGroup12:
+	map_header Route6, $3, 2, ROUTE_6, MUSIC_ROUTE_3, 0, 4
+	map_header Route11, $3, 2, ROUTE_11, MUSIC_ROUTE_12, 0, 1
+	map_header VermilionCity, $3, 1, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, 2
+	map_header VermilionHouseFishingSpeechHouse, $5, 3, VERMILION_CITY, MUSIC_VERMILION_CITY, 1, 1
+	map_header VermilionPokeCenter1F, $7, 3, VERMILION_CITY, MUSIC_POKEMON_CENTER, 1, 1
+	map_header VermilionPokeCenter2FBeta, $7, 3, VERMILION_CITY, MUSIC_VERMILION_CITY, 1, 1
+	map_header PokemonFanClub, $5, 3, VERMILION_CITY, MUSIC_VERMILION_CITY, 1, 1
+	map_header VermilionMagnetTrainSpeechHouse, $5, 3, VERMILION_CITY, MUSIC_VERMILION_CITY, 1, 1
+	map_header VermilionMart, $c, 3, VERMILION_CITY, MUSIC_VERMILION_CITY, 1, 1
+	map_header VermilionHouseDiglettsCaveSpeechHouse, $5, 3, VERMILION_CITY, MUSIC_VERMILION_CITY, 1, 1
+	map_header VermilionGym, $e, 3, VERMILION_CITY, MUSIC_GYM, 17, 1
+	map_header Route6SaffronGate, $8, 6, ROUTE_6, MUSIC_ROUTE_3, 1, 1
+	map_header Route6UndergroundEntrance, $8, 6, ROUTE_6, MUSIC_ROUTE_3, 1, 1
 
-Route6_MapHeader: ; 0x94796
-	; bank, tileset, permission
-	db BANK(Route6_SecondMapHeader), $3, 2
 
-	; second map header
-	dw Route6_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_6, MUSIC_ROUTE_3, 0, 4
-; 0x9479f
-
-Route11_MapHeader: ; 0x9479f
-	; bank, tileset, permission
-	db BANK(Route11_SecondMapHeader), $3, 2
-
-	; second map header
-	dw Route11_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_11, MUSIC_ROUTE_12, 0, 1
-; 0x947a8
-
-VermilionCity_MapHeader: ; 0x947a8
-	; bank, tileset, permission
-	db BANK(VermilionCity_SecondMapHeader), $3, 1
-
-	; second map header
-	dw VermilionCity_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VERMILION_CITY, MUSIC_VERMILION_CITY, 0, 2
-; 0x947b1
-
-VermilionHouseFishingSpeechHouse_MapHeader: ; 0x947b1
-	; bank, tileset, permission
-	db BANK(VermilionHouseFishingSpeechHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw VermilionHouseFishingSpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VERMILION_CITY, MUSIC_VERMILION_CITY, 1, 1
-; 0x947ba
-
-VermilionPokeCenter1F_MapHeader: ; 0x947ba
-	; bank, tileset, permission
-	db BANK(VermilionPokeCenter1F_SecondMapHeader), $7, 3
-
-	; second map header
-	dw VermilionPokeCenter1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VERMILION_CITY, MUSIC_POKEMON_CENTER, 1, 1
-; 0x947c3
-
-VermilionPokeCenter2FBeta_MapHeader: ; 0x947c3
-	; bank, tileset, permission
-	db BANK(VermilionPokeCenter2FBeta_SecondMapHeader), $7, 3
-
-	; second map header
-	dw VermilionPokeCenter2FBeta_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VERMILION_CITY, MUSIC_VERMILION_CITY, 1, 1
-; 0x947cc
-
-PokemonFanClub_MapHeader: ; 0x947cc
-	; bank, tileset, permission
-	db BANK(PokemonFanClub_SecondMapHeader), $5, 3
-
-	; second map header
-	dw PokemonFanClub_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VERMILION_CITY, MUSIC_VERMILION_CITY, 1, 1
-; 0x947d5
-
-VermilionMagnetTrainSpeechHouse_MapHeader: ; 0x947d5
-	; bank, tileset, permission
-	db BANK(VermilionMagnetTrainSpeechHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw VermilionMagnetTrainSpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VERMILION_CITY, MUSIC_VERMILION_CITY, 1, 1
-; 0x947de
-
-VermilionMart_MapHeader: ; 0x947de
-	; bank, tileset, permission
-	db BANK(VermilionMart_SecondMapHeader), $c, 3
-
-	; second map header
-	dw VermilionMart_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VERMILION_CITY, MUSIC_VERMILION_CITY, 1, 1
-; 0x947e7
-
-VermilionHouseDiglettsCaveSpeechHouse_MapHeader: ; 0x947e7
-	; bank, tileset, permission
-	db BANK(VermilionHouseDiglettsCaveSpeechHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw VermilionHouseDiglettsCaveSpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VERMILION_CITY, MUSIC_VERMILION_CITY, 1, 1
-; 0x947f0
-
-VermilionGym_MapHeader: ; 0x947f0
-	; bank, tileset, permission
-	db BANK(VermilionGym_SecondMapHeader), $e, 3
-
-	; second map header
-	dw VermilionGym_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VERMILION_CITY, MUSIC_GYM, 17, 1
-; 0x947f9
-
-Route6SaffronGate_MapHeader: ; 0x947f9
-	; bank, tileset, permission
-	db BANK(Route6SaffronGate_SecondMapHeader), $8, 6
-
-	; second map header
-	dw Route6SaffronGate_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_6, MUSIC_ROUTE_3, 1, 1
-; 0x94802
-
-Route6UndergroundEntrance_MapHeader: ; 0x94802
-	; bank, tileset, permission
-	db BANK(Route6UndergroundEntrance_SecondMapHeader), $8, 6
-
-	; second map header
-	dw Route6UndergroundEntrance_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_6, MUSIC_ROUTE_3, 1, 1
-; 0x9480b
-
-
 MapGroup13:
+	map_header Route1, $3, 2, ROUTE_1, MUSIC_ROUTE_1, 0, 1
+	map_header PalletTown, $3, 1, PALLET_TOWN, MUSIC_PALLET_TOWN, 0, 2
+	map_header RedsHouse1F, $6, 3, PALLET_TOWN, MUSIC_PALLET_TOWN, 1, 1
+	map_header RedsHouse2F, $6, 3, PALLET_TOWN, MUSIC_PALLET_TOWN, 1, 1
+	map_header BluesHouse, $5, 3, PALLET_TOWN, MUSIC_PALLET_TOWN, 1, 1
+	map_header OaksLab, $a, 3, PALLET_TOWN, MUSIC_POKEMON_TALK, 1, 1
 
-Route1_MapHeader: ; 0x9480b
-	; bank, tileset, permission
-	db BANK(Route1_SecondMapHeader), $3, 2
 
-	; second map header
-	dw Route1_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_1, MUSIC_ROUTE_1, 0, 1
-; 0x94814
-
-PalletTown_MapHeader: ; 0x94814
-	; bank, tileset, permission
-	db BANK(PalletTown_SecondMapHeader), $3, 1
-
-	; second map header
-	dw PalletTown_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db PALLET_TOWN, MUSIC_PALLET_TOWN, 0, 2
-; 0x9481d
-
-RedsHouse1F_MapHeader: ; 0x9481d
-	; bank, tileset, permission
-	db BANK(RedsHouse1F_SecondMapHeader), $6, 3
-
-	; second map header
-	dw RedsHouse1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db PALLET_TOWN, MUSIC_PALLET_TOWN, 1, 1
-; 0x94826
-
-RedsHouse2F_MapHeader: ; 0x94826
-	; bank, tileset, permission
-	db BANK(RedsHouse2F_SecondMapHeader), $6, 3
-
-	; second map header
-	dw RedsHouse2F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db PALLET_TOWN, MUSIC_PALLET_TOWN, 1, 1
-; 0x9482f
-
-BluesHouse_MapHeader: ; 0x9482f
-	; bank, tileset, permission
-	db BANK(BluesHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw BluesHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db PALLET_TOWN, MUSIC_PALLET_TOWN, 1, 1
-; 0x94838
-
-OaksLab_MapHeader: ; 0x94838
-	; bank, tileset, permission
-	db BANK(OaksLab_SecondMapHeader), $a, 3
-
-	; second map header
-	dw OaksLab_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db PALLET_TOWN, MUSIC_POKEMON_TALK, 1, 1
-; 0x94841
-
-
 MapGroup14:
+	map_header Route3, $3, 2, ROUTE_3, MUSIC_ROUTE_3, 0, 1
+	map_header PewterCity, $3, 1, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, 1
+	map_header PewterNidoranSpeechHouse, $5, 3, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header PewterGym, $17, 3, PEWTER_CITY, MUSIC_GYM, 17, 1
+	map_header PewterMart, $c, 3, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header PewterPokeCenter1F, $7, 3, PEWTER_CITY, MUSIC_POKEMON_CENTER, 1, 1
+	map_header PewterPokeCEnter2FBeta, $7, 3, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header PewterSnoozeSpeechHouse, $5, 3, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
 
-Route3_MapHeader: ; 0x94841
-	; bank, tileset, permission
-	db BANK(Route3_SecondMapHeader), $3, 2
 
-	; second map header
-	dw Route3_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_3, MUSIC_ROUTE_3, 0, 1
-; 0x9484a
-
-PewterCity_MapHeader: ; 0x9484a
-	; bank, tileset, permission
-	db BANK(PewterCity_SecondMapHeader), $3, 1
-
-	; second map header
-	dw PewterCity_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, 1
-; 0x94853
-
-PewterNidoranSpeechHouse_MapHeader: ; 0x94853
-	; bank, tileset, permission
-	db BANK(PewterNidoranSpeechHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw PewterNidoranSpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x9485c
-
-PewterGym_MapHeader: ; 0x9485c
-	; bank, tileset, permission
-	db BANK(PewterGym_SecondMapHeader), $17, 3
-
-	; second map header
-	dw PewterGym_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db PEWTER_CITY, MUSIC_GYM, 17, 1
-; 0x94865
-
-PewterMart_MapHeader: ; 0x94865
-	; bank, tileset, permission
-	db BANK(PewterMart_SecondMapHeader), $c, 3
-
-	; second map header
-	dw PewterMart_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x9486e
-
-PewterPokeCenter1F_MapHeader: ; 0x9486e
-	; bank, tileset, permission
-	db BANK(PewterPokeCenter1F_SecondMapHeader), $7, 3
-
-	; second map header
-	dw PewterPokeCenter1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db PEWTER_CITY, MUSIC_POKEMON_CENTER, 1, 1
-; 0x94877
-
-PewterPokeCEnter2FBeta_MapHeader: ; 0x94877
-	; bank, tileset, permission
-	db BANK(PewterPokeCEnter2FBeta_SecondMapHeader), $7, 3
-
-	; second map header
-	dw PewterPokeCEnter2FBeta_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94880
-
-PewterSnoozeSpeechHouse_MapHeader: ; 0x94880
-	; bank, tileset, permission
-	db BANK(PewterSnoozeSpeechHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw PewterSnoozeSpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94889
-
-
 MapGroup15:
+	map_header OlivinePort, $9, 2, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, 2
+	map_header VermilionPort, $9, 2, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, 2
+	map_header FastShip1F, $13, 3, FAST_SHIP, MUSIC_SS_AQUA, 1, 1
+	map_header FastShipCabins_NNW_NNE_NE, $13, 3, FAST_SHIP, MUSIC_SS_AQUA, 1, 1
+	map_header FastShipCabins_SW_SSW_NW, $13, 3, FAST_SHIP, MUSIC_SS_AQUA, 1, 1
+	map_header FastShipCabins_SE_SSE_CaptainsCabin, $13, 3, FAST_SHIP, MUSIC_SS_AQUA, 1, 1
+	map_header FastShipB1F, $13, 3, FAST_SHIP, MUSIC_SS_AQUA, 1, 1
+	map_header OlivinePortPassage, $1c, 3, OLIVINE_CITY, MUSIC_VIOLET_CITY, 1, 1
+	map_header VermilionPortPassage, $1c, 3, VERMILION_CITY, MUSIC_VERMILION_CITY, 1, 1
+	map_header MountMoonSquare, $3, 2, MT_MOON, MUSIC_MT_MOON_SQUARE, 0, 1
+	map_header MountMoonGiftShop, $10, 3, MT_MOON, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header TinTowerRoof, $17, 2, TIN_TOWER, MUSIC_TIN_TOWER, 0, 1
 
-OlivinePort_MapHeader: ; 0x94889
-	; bank, tileset, permission
-	db BANK(OlivinePort_SecondMapHeader), $9, 2
 
-	; second map header
-	dw OlivinePort_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, 2
-; 0x94892
-
-VermilionPort_MapHeader: ; 0x94892
-	; bank, tileset, permission
-	db BANK(VermilionPort_SecondMapHeader), $9, 2
-
-	; second map header
-	dw VermilionPort_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VERMILION_CITY, MUSIC_VERMILION_CITY, 0, 2
-; 0x9489b
-
-FastShip1F_MapHeader: ; 0x9489b
-	; bank, tileset, permission
-	db BANK(FastShip1F_SecondMapHeader), $13, 3
-
-	; second map header
-	dw FastShip1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db FAST_SHIP, MUSIC_SS_AQUA, 1, 1
-; 0x948a4
-
-FastShipCabins_NNW_NNE_NE_MapHeader: ; 0x948a4
-	; bank, tileset, permission
-	db BANK(FastShipCabins_NNW_NNE_NE_SecondMapHeader), $13, 3
-
-	; second map header
-	dw FastShipCabins_NNW_NNE_NE_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db FAST_SHIP, MUSIC_SS_AQUA, 1, 1
-; 0x948ad
-
-FastShipCabins_SW_SSW_NW_MapHeader: ; 0x948ad
-	; bank, tileset, permission
-	db BANK(FastShipCabins_SW_SSW_NW_SecondMapHeader), $13, 3
-
-	; second map header
-	dw FastShipCabins_SW_SSW_NW_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db FAST_SHIP, MUSIC_SS_AQUA, 1, 1
-; 0x948b6
-
-FastShipCabins_SE_SSE_CaptainsCabin_MapHeader: ; 0x948b6
-	; bank, tileset, permission
-	db BANK(FastShipCabins_SE_SSE_CaptainsCabin_SecondMapHeader), $13, 3
-
-	; second map header
-	dw FastShipCabins_SE_SSE_CaptainsCabin_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db FAST_SHIP, MUSIC_SS_AQUA, 1, 1
-; 0x948bf
-
-FastShipB1F_MapHeader: ; 0x948bf
-	; bank, tileset, permission
-	db BANK(FastShipB1F_SecondMapHeader), $13, 3
-
-	; second map header
-	dw FastShipB1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db FAST_SHIP, MUSIC_SS_AQUA, 1, 1
-; 0x948c8
-
-OlivinePortPassage_MapHeader: ; 0x948c8
-	; bank, tileset, permission
-	db BANK(OlivinePortPassage_SecondMapHeader), $1c, 3
-
-	; second map header
-	dw OlivinePortPassage_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db OLIVINE_CITY, MUSIC_VIOLET_CITY, 1, 1
-; 0x948d1
-
-VermilionPortPassage_MapHeader: ; 0x948d1
-	; bank, tileset, permission
-	db BANK(VermilionPortPassage_SecondMapHeader), $1c, 3
-
-	; second map header
-	dw VermilionPortPassage_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VERMILION_CITY, MUSIC_VERMILION_CITY, 1, 1
-; 0x948da
-
-MountMoonSquare_MapHeader: ; 0x948da
-	; bank, tileset, permission
-	db BANK(MountMoonSquare_SecondMapHeader), $3, 2
-
-	; second map header
-	dw MountMoonSquare_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db MT_MOON, MUSIC_MT_MOON_SQUARE, 0, 1
-; 0x948e3
-
-MountMoonGiftShop_MapHeader: ; 0x948e3
-	; bank, tileset, permission
-	db BANK(MountMoonGiftShop_SecondMapHeader), $10, 3
-
-	; second map header
-	dw MountMoonGiftShop_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db MT_MOON, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x948ec
-
-TinTowerRoof_MapHeader: ; 0x948ec
-	; bank, tileset, permission
-	db BANK(TinTowerRoof_SecondMapHeader), $17, 2
-
-	; second map header
-	dw TinTowerRoof_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db TIN_TOWER, MUSIC_TIN_TOWER, 0, 1
-; 0x948f5
-
-
 MapGroup16:
+	map_header Route23, $3, 1, ROUTE_23, MUSIC_INDIGO_PLATEAU, 0, 1
+	map_header IndigoPlateauPokeCenter1F, $7, 3, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, 1
+	map_header WillsRoom, $f, 3, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 17, 1
+	map_header KogasRoom, $f, 3, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 17, 1
+	map_header BrunosRoom, $f, 3, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 17, 1
+	map_header KarensRoom, $f, 3, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 17, 1
+	map_header LancesRoom, $12, 3, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 17, 1
+	map_header HallOfFame, $1d, 3, INDIGO_PLATEAU, MUSIC_NEW_BARK_TOWN, 17, 1
 
-Route23_MapHeader: ; 0x948f5
-	; bank, tileset, permission
-	db BANK(Route23_SecondMapHeader), $3, 1
 
-	; second map header
-	dw Route23_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_23, MUSIC_INDIGO_PLATEAU, 0, 1
-; 0x948fe
-
-IndigoPlateauPokeCenter1F_MapHeader: ; 0x948fe
-	; bank, tileset, permission
-	db BANK(IndigoPlateauPokeCenter1F_SecondMapHeader), $7, 3
-
-	; second map header
-	dw IndigoPlateauPokeCenter1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, 1
-; 0x94907
-
-WillsRoom_MapHeader: ; 0x94907
-	; bank, tileset, permission
-	db BANK(WillsRoom_SecondMapHeader), $f, 3
-
-	; second map header
-	dw WillsRoom_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 17, 1
-; 0x94910
-
-KogasRoom_MapHeader: ; 0x94910
-	; bank, tileset, permission
-	db BANK(KogasRoom_SecondMapHeader), $f, 3
-
-	; second map header
-	dw KogasRoom_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 17, 1
-; 0x94919
-
-BrunosRoom_MapHeader: ; 0x94919
-	; bank, tileset, permission
-	db BANK(BrunosRoom_SecondMapHeader), $f, 3
-
-	; second map header
-	dw BrunosRoom_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 17, 1
-; 0x94922
-
-KarensRoom_MapHeader: ; 0x94922
-	; bank, tileset, permission
-	db BANK(KarensRoom_SecondMapHeader), $f, 3
-
-	; second map header
-	dw KarensRoom_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 17, 1
-; 0x9492b
-
-LancesRoom_MapHeader: ; 0x9492b
-	; bank, tileset, permission
-	db BANK(LancesRoom_SecondMapHeader), $12, 3
-
-	; second map header
-	dw LancesRoom_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 17, 1
-; 0x94934
-
-HallOfFame_MapHeader: ; 0x94934
-	; bank, tileset, permission
-	db BANK(HallOfFame_SecondMapHeader), $1d, 3
-
-	; second map header
-	dw HallOfFame_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db INDIGO_PLATEAU, MUSIC_NEW_BARK_TOWN, 17, 1
-; 0x9493d
-
-
 MapGroup17:
+	map_header Route13, $3, 2, ROUTE_13, MUSIC_ROUTE_12, 0, 13
+	map_header Route14, $3, 2, ROUTE_14, MUSIC_ROUTE_12, 0, 1
+	map_header Route15, $3, 2, ROUTE_15, MUSIC_ROUTE_12, 0, 1
+	map_header Route18, $3, 2, ROUTE_18, MUSIC_ROUTE_3, 0, 1
+	map_header FuchsiaCity, $3, 1, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, 8
+	map_header FuchsiaMart, $c, 3, FUCHSIA_CITY, MUSIC_CELADON_CITY, 1, 1
+	map_header SafariZoneMainOffice, $e, 3, FUCHSIA_CITY, MUSIC_CELADON_CITY, 1, 1
+	map_header FuchsiaGym, $a, 3, FUCHSIA_CITY, MUSIC_GYM, 17, 1
+	map_header FuchsiaBillSpeechHouse, $5, 3, FUCHSIA_CITY, MUSIC_CELADON_CITY, 1, 1
+	map_header FuchsiaPokeCenter1F, $7, 3, FUCHSIA_CITY, MUSIC_POKEMON_CENTER, 1, 1
+	map_header FuchsiaPokeCenter2FBeta, $7, 3, FUCHSIA_CITY, MUSIC_CELADON_CITY, 1, 1
+	map_header SafariZoneWardensHome, $5, 3, FUCHSIA_CITY, MUSIC_CELADON_CITY, 1, 1
+	map_header Route15FuchsiaGate, $8, 6, ROUTE_15, MUSIC_ROUTE_12, 1, 1
 
-Route13_MapHeader: ; 0x9493d
-	; bank, tileset, permission
-	db BANK(Route13_SecondMapHeader), $3, 2
 
-	; second map header
-	dw Route13_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_13, MUSIC_ROUTE_12, 0, 13
-; 0x94946
-
-Route14_MapHeader: ; 0x94946
-	; bank, tileset, permission
-	db BANK(Route14_SecondMapHeader), $3, 2
-
-	; second map header
-	dw Route14_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_14, MUSIC_ROUTE_12, 0, 1
-; 0x9494f
-
-Route15_MapHeader: ; 0x9494f
-	; bank, tileset, permission
-	db BANK(Route15_SecondMapHeader), $3, 2
-
-	; second map header
-	dw Route15_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_15, MUSIC_ROUTE_12, 0, 1
-; 0x94958
-
-Route18_MapHeader: ; 0x94958
-	; bank, tileset, permission
-	db BANK(Route18_SecondMapHeader), $3, 2
-
-	; second map header
-	dw Route18_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_18, MUSIC_ROUTE_3, 0, 1
-; 0x94961
-
-FuchsiaCity_MapHeader: ; 0x94961
-	; bank, tileset, permission
-	db BANK(FuchsiaCity_SecondMapHeader), $3, 1
-
-	; second map header
-	dw FuchsiaCity_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, 8
-; 0x9496a
-
-FuchsiaMart_MapHeader: ; 0x9496a
-	; bank, tileset, permission
-	db BANK(FuchsiaMart_SecondMapHeader), $c, 3
-
-	; second map header
-	dw FuchsiaMart_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db FUCHSIA_CITY, MUSIC_CELADON_CITY, 1, 1
-; 0x94973
-
-SafariZoneMainOffice_MapHeader: ; 0x94973
-	; bank, tileset, permission
-	db BANK(SafariZoneMainOffice_SecondMapHeader), $e, 3
-
-	; second map header
-	dw SafariZoneMainOffice_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db FUCHSIA_CITY, MUSIC_CELADON_CITY, 1, 1
-; 0x9497c
-
-FuchsiaGym_MapHeader: ; 0x9497c
-	; bank, tileset, permission
-	db BANK(FuchsiaGym_SecondMapHeader), $a, 3
-
-	; second map header
-	dw FuchsiaGym_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db FUCHSIA_CITY, MUSIC_GYM, 17, 1
-; 0x94985
-
-FuchsiaBillSpeechHouse_MapHeader: ; 0x94985
-	; bank, tileset, permission
-	db BANK(FuchsiaBillSpeechHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw FuchsiaBillSpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db FUCHSIA_CITY, MUSIC_CELADON_CITY, 1, 1
-; 0x9498e
-
-FuchsiaPokeCenter1F_MapHeader: ; 0x9498e
-	; bank, tileset, permission
-	db BANK(FuchsiaPokeCenter1F_SecondMapHeader), $7, 3
-
-	; second map header
-	dw FuchsiaPokeCenter1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db FUCHSIA_CITY, MUSIC_POKEMON_CENTER, 1, 1
-; 0x94997
-
-FuchsiaPokeCenter2FBeta_MapHeader: ; 0x94997
-	; bank, tileset, permission
-	db BANK(FuchsiaPokeCenter2FBeta_SecondMapHeader), $7, 3
-
-	; second map header
-	dw FuchsiaPokeCenter2FBeta_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db FUCHSIA_CITY, MUSIC_CELADON_CITY, 1, 1
-; 0x949a0
-
-SafariZoneWardensHome_MapHeader: ; 0x949a0
-	; bank, tileset, permission
-	db BANK(SafariZoneWardensHome_SecondMapHeader), $5, 3
-
-	; second map header
-	dw SafariZoneWardensHome_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db FUCHSIA_CITY, MUSIC_CELADON_CITY, 1, 1
-; 0x949a9
-
-Route15FuchsiaGate_MapHeader: ; 0x949a9
-	; bank, tileset, permission
-	db BANK(Route15FuchsiaGate_SecondMapHeader), $8, 6
-
-	; second map header
-	dw Route15FuchsiaGate_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_15, MUSIC_ROUTE_12, 1, 1
-; 0x949b2
-
-
 MapGroup18:
+	map_header Route8, $3, 2, ROUTE_8, MUSIC_ROUTE_3, 0, 1
+	map_header Route12, $3, 2, ROUTE_12, MUSIC_ROUTE_12, 0, 13
+	map_header Route10South, $3, 2, ROUTE_10, MUSIC_ROUTE_3, 0, 3
+	map_header LavenderTown, $3, 1, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, 1
+	map_header LavenderPokeCenter1F, $7, 3, LAVENDER_TOWN, MUSIC_POKEMON_CENTER, 1, 1
+	map_header LavenderPokeCenter2FBeta, $7, 3, LAVENDER_TOWN, MUSIC_POKEMON_CENTER, 1, 1
+	map_header MrFujisHouse, $5, 3, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 1, 1
+	map_header LavenderTownSpeechHouse, $5, 3, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 1, 1
+	map_header LavenderNameRater, $5, 3, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 1, 1
+	map_header LavenderMart, $c, 3, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 1, 1
+	map_header SoulHouse, $5, 3, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 1, 1
+	map_header LavRadioTower1F, $1b, 3, LAV_RADIO_TOWER, MUSIC_LAVENDER_TOWN, 1, 1
+	map_header Route8SaffronGate, $8, 6, ROUTE_8, MUSIC_ROUTE_3, 1, 1
+	map_header Route12SuperRodHouse, $5, 3, ROUTE_12, MUSIC_VIRIDIAN_CITY, 1, 1
 
-Route8_MapHeader: ; 0x949b2
-	; bank, tileset, permission
-	db BANK(Route8_SecondMapHeader), $3, 2
 
-	; second map header
-	dw Route8_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_8, MUSIC_ROUTE_3, 0, 1
-; 0x949bb
-
-Route12_MapHeader: ; 0x949bb
-	; bank, tileset, permission
-	db BANK(Route12_SecondMapHeader), $3, 2
-
-	; second map header
-	dw Route12_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_12, MUSIC_ROUTE_12, 0, 13
-; 0x949c4
-
-Route10South_MapHeader: ; 0x949c4
-	; bank, tileset, permission
-	db BANK(Route10South_SecondMapHeader), $3, 2
-
-	; second map header
-	dw Route10South_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_10, MUSIC_ROUTE_3, 0, 3
-; 0x949cd
-
-LavenderTown_MapHeader: ; 0x949cd
-	; bank, tileset, permission
-	db BANK(LavenderTown_SecondMapHeader), $3, 1
-
-	; second map header
-	dw LavenderTown_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, 1
-; 0x949d6
-
-LavenderPokeCenter1F_MapHeader: ; 0x949d6
-	; bank, tileset, permission
-	db BANK(LavenderPokeCenter1F_SecondMapHeader), $7, 3
-
-	; second map header
-	dw LavenderPokeCenter1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db LAVENDER_TOWN, MUSIC_POKEMON_CENTER, 1, 1
-; 0x949df
-
-LavenderPokeCenter2FBeta_MapHeader: ; 0x949df
-	; bank, tileset, permission
-	db BANK(LavenderPokeCenter2FBeta_SecondMapHeader), $7, 3
-
-	; second map header
-	dw LavenderPokeCenter2FBeta_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db LAVENDER_TOWN, MUSIC_POKEMON_CENTER, 1, 1
-; 0x949e8
-
-MrFujisHouse_MapHeader: ; 0x949e8
-	; bank, tileset, permission
-	db BANK(MrFujisHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw MrFujisHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 1, 1
-; 0x949f1
-
-LavenderTownSpeechHouse_MapHeader: ; 0x949f1
-	; bank, tileset, permission
-	db BANK(LavenderTownSpeechHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw LavenderTownSpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 1, 1
-; 0x949fa
-
-LavenderNameRater_MapHeader: ; 0x949fa
-	; bank, tileset, permission
-	db BANK(LavenderNameRater_SecondMapHeader), $5, 3
-
-	; second map header
-	dw LavenderNameRater_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 1, 1
-; 0x94a03
-
-LavenderMart_MapHeader: ; 0x94a03
-	; bank, tileset, permission
-	db BANK(LavenderMart_SecondMapHeader), $c, 3
-
-	; second map header
-	dw LavenderMart_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 1, 1
-; 0x94a0c
-
-SoulHouse_MapHeader: ; 0x94a0c
-	; bank, tileset, permission
-	db BANK(SoulHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw SoulHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 1, 1
-; 0x94a15
-
-LavRadioTower1F_MapHeader: ; 0x94a15
-	; bank, tileset, permission
-	db BANK(LavRadioTower1F_SecondMapHeader), $1b, 3
-
-	; second map header
-	dw LavRadioTower1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db LAV_RADIO_TOWER, MUSIC_LAVENDER_TOWN, 1, 1
-; 0x94a1e
-
-Route8SaffronGate_MapHeader: ; 0x94a1e
-	; bank, tileset, permission
-	db BANK(Route8SaffronGate_SecondMapHeader), $8, 6
-
-	; second map header
-	dw Route8SaffronGate_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_8, MUSIC_ROUTE_3, 1, 1
-; 0x94a27
-
-Route12SuperRodHouse_MapHeader: ; 0x94a27
-	; bank, tileset, permission
-	db BANK(Route12SuperRodHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw Route12SuperRodHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_12, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94a30
-
-
 MapGroup19:
+	map_header Route28, $3, 2, ROUTE_28, MUSIC_INDIGO_PLATEAU, 0, 4
+	map_header SilverCaveOutside, $3, 1, SILVER_CAVE, MUSIC_INDIGO_PLATEAU, 0, 4
+	map_header SilverCavePokeCenter1F, $7, 3, SILVER_CAVE, MUSIC_POKEMON_CENTER, 1, 1
+	map_header Route28FamousSpeechHouse, $5, 3, ROUTE_28, MUSIC_AZALEA_TOWN, 1, 1
 
-Route28_MapHeader: ; 0x94a30
-	; bank, tileset, permission
-	db BANK(Route28_SecondMapHeader), $3, 2
 
-	; second map header
-	dw Route28_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_28, MUSIC_INDIGO_PLATEAU, 0, 4
-; 0x94a39
-
-SilverCaveOutside_MapHeader: ; 0x94a39
-	; bank, tileset, permission
-	db BANK(SilverCaveOutside_SecondMapHeader), $3, 1
-
-	; second map header
-	dw SilverCaveOutside_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SILVER_CAVE, MUSIC_INDIGO_PLATEAU, 0, 4
-; 0x94a42
-
-SilverCavePokeCenter1F_MapHeader: ; 0x94a42
-	; bank, tileset, permission
-	db BANK(SilverCavePokeCenter1F_SecondMapHeader), $7, 3
-
-	; second map header
-	dw SilverCavePokeCenter1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SILVER_CAVE, MUSIC_POKEMON_CENTER, 1, 1
-; 0x94a4b
-
-Route28FamousSpeechHouse_MapHeader: ; 0x94a4b
-	; bank, tileset, permission
-	db BANK(Route28FamousSpeechHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw Route28FamousSpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_28, MUSIC_AZALEA_TOWN, 1, 1
-; 0x94a54
-
-
 MapGroup20:
+	map_header PokeCenter2F, $7, 3, SPECIAL_MAP, MUSIC_POKEMON_CENTER, 17, 1
+	map_header TradeCenter, $8, 3, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 17, 1
+	map_header Colosseum, $8, 3, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 17, 1
+	map_header TimeCapsule, $8, 3, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 17, 1
+	map_header MobileTradeRoomMobile, $d, 3, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 17, 1
+	map_header MobileBattleRoom, $d, 3, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 17, 1
 
-PokeCenter2F_MapHeader: ; 0x94a54
-	; bank, tileset, permission
-	db BANK(PokeCenter2F_SecondMapHeader), $7, 3
 
-	; second map header
-	dw PokeCenter2F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SPECIAL_MAP, MUSIC_POKEMON_CENTER, 17, 1
-; 0x94a5d
-
-TradeCenter_MapHeader: ; 0x94a5d
-	; bank, tileset, permission
-	db BANK(TradeCenter_SecondMapHeader), $8, 3
-
-	; second map header
-	dw TradeCenter_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 17, 1
-; 0x94a66
-
-Colosseum_MapHeader: ; 0x94a66
-	; bank, tileset, permission
-	db BANK(Colosseum_SecondMapHeader), $8, 3
-
-	; second map header
-	dw Colosseum_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 17, 1
-; 0x94a6f
-
-TimeCapsule_MapHeader: ; 0x94a6f
-	; bank, tileset, permission
-	db BANK(TimeCapsule_SecondMapHeader), $8, 3
-
-	; second map header
-	dw TimeCapsule_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 17, 1
-; 0x94a78
-
-MobileTradeRoomMobile_MapHeader: ; 0x94a78
-	; bank, tileset, permission
-	db BANK(MobileTradeRoomMobile_SecondMapHeader), $d, 3
-
-	; second map header
-	dw MobileTradeRoomMobile_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 17, 1
-; 0x94a81
-
-MobileBattleRoom_MapHeader: ; 0x94a81
-	; bank, tileset, permission
-	db BANK(MobileBattleRoom_SecondMapHeader), $d, 3
-
-	; second map header
-	dw MobileBattleRoom_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 17, 1
-; 0x94a8a
-
-
 MapGroup21:
+	map_header Route7, $3, 2, ROUTE_7, MUSIC_ROUTE_3, 0, 1
+	map_header Route16, $3, 2, ROUTE_16, MUSIC_ROUTE_3, 0, 1
+	map_header Route17, $3, 2, ROUTE_17, MUSIC_ROUTE_3, 0, 0
+	map_header CeladonCity, $3, 1, CELADON_CITY, MUSIC_CELADON_CITY, 0, 0
+	map_header CeladonDeptStore1F, $c, 3, CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
+	map_header CeladonDeptStore2F, $c, 3, CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
+	map_header CeladonDeptStore3F, $c, 3, CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
+	map_header CeladonDeptStore4F, $c, 3, CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
+	map_header CeladonDeptStore5F, $c, 3, CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
+	map_header CeladonDeptStore6F, $c, 3, CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
+	map_header CeladonDeptStoreElevator, $c, 3, CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
+	map_header CeladonMansion1F, $d, 3, CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
+	map_header CeladonMansion2F, $d, 3, CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
+	map_header CeladonMansion3F, $d, 3, CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
+	map_header CeladonMansionRoof, $d, 3, CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
+	map_header CeladonMansionRoofHouse, $5, 3, CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
+	map_header CeladonPokeCenter1F, $7, 3, CELADON_CITY, MUSIC_POKEMON_CENTER, 1, 1
+	map_header CeladonPokeCenter2FBeta, $7, 3, CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
+	map_header CeladonGameCorner, $e, 3, CELADON_CITY, MUSIC_GAME_CORNER, 1, 1
+	map_header CeladonGameCornerPrizeRoom, $e, 3, CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
+	map_header CeladonGym, $11, 3, CELADON_CITY, MUSIC_GYM, 17, 1
+	map_header CeladonCafe, $e, 3, CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
+	map_header Route16FuchsiaSpeechHouse, $5, 3, ROUTE_16, MUSIC_CELADON_CITY, 1, 1
+	map_header Route16Gate, $8, 6, ROUTE_16, MUSIC_ROUTE_3, 1, 1
+	map_header Route7SaffronGate, $8, 6, ROUTE_7, MUSIC_ROUTE_3, 1, 1
+	map_header Route1718Gate, $8, 6, ROUTE_17, MUSIC_ROUTE_3, 1, 1
 
-Route7_MapHeader: ; 0x94a8a
-	; bank, tileset, permission
-	db BANK(Route7_SecondMapHeader), $3, 2
 
-	; second map header
-	dw Route7_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_7, MUSIC_ROUTE_3, 0, 1
-; 0x94a93
-
-Route16_MapHeader: ; 0x94a93
-	; bank, tileset, permission
-	db BANK(Route16_SecondMapHeader), $3, 2
-
-	; second map header
-	dw Route16_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_16, MUSIC_ROUTE_3, 0, 1
-; 0x94a9c
-
-Route17_MapHeader: ; 0x94a9c
-	; bank, tileset, permission
-	db BANK(Route17_SecondMapHeader), $3, 2
-
-	; second map header
-	dw Route17_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_17, MUSIC_ROUTE_3, 0, 0
-; 0x94aa5
-
-CeladonCity_MapHeader: ; 0x94aa5
-	; bank, tileset, permission
-	db BANK(CeladonCity_SecondMapHeader), $3, 1
-
-	; second map header
-	dw CeladonCity_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CELADON_CITY, MUSIC_CELADON_CITY, 0, 0
-; 0x94aae
-
-CeladonDeptStore1F_MapHeader: ; 0x94aae
-	; bank, tileset, permission
-	db BANK(CeladonDeptStore1F_SecondMapHeader), $c, 3
-
-	; second map header
-	dw CeladonDeptStore1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
-; 0x94ab7
-
-CeladonDeptStore2F_MapHeader: ; 0x94ab7
-	; bank, tileset, permission
-	db BANK(CeladonDeptStore2F_SecondMapHeader), $c, 3
-
-	; second map header
-	dw CeladonDeptStore2F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
-; 0x94ac0
-
-CeladonDeptStore3F_MapHeader: ; 0x94ac0
-	; bank, tileset, permission
-	db BANK(CeladonDeptStore3F_SecondMapHeader), $c, 3
-
-	; second map header
-	dw CeladonDeptStore3F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
-; 0x94ac9
-
-CeladonDeptStore4F_MapHeader: ; 0x94ac9
-	; bank, tileset, permission
-	db BANK(CeladonDeptStore4F_SecondMapHeader), $c, 3
-
-	; second map header
-	dw CeladonDeptStore4F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
-; 0x94ad2
-
-CeladonDeptStore5F_MapHeader: ; 0x94ad2
-	; bank, tileset, permission
-	db BANK(CeladonDeptStore5F_SecondMapHeader), $c, 3
-
-	; second map header
-	dw CeladonDeptStore5F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
-; 0x94adb
-
-CeladonDeptStore6F_MapHeader: ; 0x94adb
-	; bank, tileset, permission
-	db BANK(CeladonDeptStore6F_SecondMapHeader), $c, 3
-
-	; second map header
-	dw CeladonDeptStore6F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
-; 0x94ae4
-
-CeladonDeptStoreElevator_MapHeader: ; 0x94ae4
-	; bank, tileset, permission
-	db BANK(CeladonDeptStoreElevator_SecondMapHeader), $c, 3
-
-	; second map header
-	dw CeladonDeptStoreElevator_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
-; 0x94aed
-
-CeladonMansion1F_MapHeader: ; 0x94aed
-	; bank, tileset, permission
-	db BANK(CeladonMansion1F_SecondMapHeader), $d, 3
-
-	; second map header
-	dw CeladonMansion1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
-; 0x94af6
-
-CeladonMansion2F_MapHeader: ; 0x94af6
-	; bank, tileset, permission
-	db BANK(CeladonMansion2F_SecondMapHeader), $d, 3
-
-	; second map header
-	dw CeladonMansion2F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
-; 0x94aff
-
-CeladonMansion3F_MapHeader: ; 0x94aff
-	; bank, tileset, permission
-	db BANK(CeladonMansion3F_SecondMapHeader), $d, 3
-
-	; second map header
-	dw CeladonMansion3F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
-; 0x94b08
-
-CeladonMansionRoof_MapHeader: ; 0x94b08
-	; bank, tileset, permission
-	db BANK(CeladonMansionRoof_SecondMapHeader), $d, 3
-
-	; second map header
-	dw CeladonMansionRoof_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
-; 0x94b11
-
-CeladonMansionRoofHouse_MapHeader: ; 0x94b11
-	; bank, tileset, permission
-	db BANK(CeladonMansionRoofHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw CeladonMansionRoofHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
-; 0x94b1a
-
-CeladonPokeCenter1F_MapHeader: ; 0x94b1a
-	; bank, tileset, permission
-	db BANK(CeladonPokeCenter1F_SecondMapHeader), $7, 3
-
-	; second map header
-	dw CeladonPokeCenter1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CELADON_CITY, MUSIC_POKEMON_CENTER, 1, 1
-; 0x94b23
-
-CeladonPokeCenter2FBeta_MapHeader: ; 0x94b23
-	; bank, tileset, permission
-	db BANK(CeladonPokeCenter2FBeta_SecondMapHeader), $7, 3
-
-	; second map header
-	dw CeladonPokeCenter2FBeta_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
-; 0x94b2c
-
-CeladonGameCorner_MapHeader: ; 0x94b2c
-	; bank, tileset, permission
-	db BANK(CeladonGameCorner_SecondMapHeader), $e, 3
-
-	; second map header
-	dw CeladonGameCorner_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CELADON_CITY, MUSIC_GAME_CORNER, 1, 1
-; 0x94b35
-
-CeladonGameCornerPrizeRoom_MapHeader: ; 0x94b35
-	; bank, tileset, permission
-	db BANK(CeladonGameCornerPrizeRoom_SecondMapHeader), $e, 3
-
-	; second map header
-	dw CeladonGameCornerPrizeRoom_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
-; 0x94b3e
-
-CeladonGym_MapHeader: ; 0x94b3e
-	; bank, tileset, permission
-	db BANK(CeladonGym_SecondMapHeader), $11, 3
-
-	; second map header
-	dw CeladonGym_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CELADON_CITY, MUSIC_GYM, 17, 1
-; 0x94b47
-
-CeladonCafe_MapHeader: ; 0x94b47
-	; bank, tileset, permission
-	db BANK(CeladonCafe_SecondMapHeader), $e, 3
-
-	; second map header
-	dw CeladonCafe_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CELADON_CITY, MUSIC_CELADON_CITY, 1, 1
-; 0x94b50
-
-Route16FuchsiaSpeechHouse_MapHeader: ; 0x94b50
-	; bank, tileset, permission
-	db BANK(Route16FuchsiaSpeechHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw Route16FuchsiaSpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_16, MUSIC_CELADON_CITY, 1, 1
-; 0x94b59
-
-Route16Gate_MapHeader: ; 0x94b59
-	; bank, tileset, permission
-	db BANK(Route16Gate_SecondMapHeader), $8, 6
-
-	; second map header
-	dw Route16Gate_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_16, MUSIC_ROUTE_3, 1, 1
-; 0x94b62
-
-Route7SaffronGate_MapHeader: ; 0x94b62
-	; bank, tileset, permission
-	db BANK(Route7SaffronGate_SecondMapHeader), $8, 6
-
-	; second map header
-	dw Route7SaffronGate_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_7, MUSIC_ROUTE_3, 1, 1
-; 0x94b6b
-
-Route1718Gate_MapHeader: ; 0x94b6b
-	; bank, tileset, permission
-	db BANK(Route1718Gate_SecondMapHeader), $8, 6
-
-	; second map header
-	dw Route1718Gate_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_17, MUSIC_ROUTE_3, 1, 1
-; 0x94b74
-
-
 MapGroup22:
+	map_header Route40, $1, 2, ROUTE_40, MUSIC_ROUTE_36, 0, 1
+	map_header Route41, $1, 2, ROUTE_41, MUSIC_ROUTE_36, 0, 2
+	map_header CianwoodCity, $1, 1, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, 1
+	map_header ManiasHouse, $5, 3, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 1, 1
+	map_header CianwoodGym, $17, 3, CIANWOOD_CITY, MUSIC_GYM, 17, 1
+	map_header CianwoodPokeCenter1F, $7, 3, CIANWOOD_CITY, MUSIC_POKEMON_CENTER, 1, 1
+	map_header CianwoodPharmacy, $5, 3, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 1, 1
+	map_header CianwoodCityPhotoStudio, $5, 3, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 1, 1
+	map_header CianwoodLugiaSpeechHouse, $5, 3, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 1, 1
+	map_header PokeSeersHouse, $5, 3, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 1, 1
+	map_header BattleTower1F, $16, 3, BATTLE_TOWER, MUSIC_BATTLE_TOWER_LOBBY, 17, 1
+	map_header BattleTowerBattleRoom, $16, 3, BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, 17, 1
+	map_header BattleTowerElevator, $16, 3, BATTLE_TOWER, MUSIC_NONE, 17, 1
+	map_header BattleTowerHallway, $16, 3, BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, 17, 1
+	map_header Route40BattleTowerGate, $8, 6, BATTLE_TOWER, MUSIC_ROUTE_36, 1, 1
+	map_header BattleTowerOutside, $4, 2, BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, 0, 1
 
-Route40_MapHeader: ; 0x94b74
-	; bank, tileset, permission
-	db BANK(Route40_SecondMapHeader), $1, 2
 
-	; second map header
-	dw Route40_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_40, MUSIC_ROUTE_36, 0, 1
-; 0x94b7d
-
-Route41_MapHeader: ; 0x94b7d
-	; bank, tileset, permission
-	db BANK(Route41_SecondMapHeader), $1, 2
-
-	; second map header
-	dw Route41_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_41, MUSIC_ROUTE_36, 0, 2
-; 0x94b86
-
-CianwoodCity_MapHeader: ; 0x94b86
-	; bank, tileset, permission
-	db BANK(CianwoodCity_SecondMapHeader), $1, 1
-
-	; second map header
-	dw CianwoodCity_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, 1
-; 0x94b8f
-
-ManiasHouse_MapHeader: ; 0x94b8f
-	; bank, tileset, permission
-	db BANK(ManiasHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw ManiasHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 1, 1
-; 0x94b98
-
-CianwoodGym_MapHeader: ; 0x94b98
-	; bank, tileset, permission
-	db BANK(CianwoodGym_SecondMapHeader), $17, 3
-
-	; second map header
-	dw CianwoodGym_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CIANWOOD_CITY, MUSIC_GYM, 17, 1
-; 0x94ba1
-
-CianwoodPokeCenter1F_MapHeader: ; 0x94ba1
-	; bank, tileset, permission
-	db BANK(CianwoodPokeCenter1F_SecondMapHeader), $7, 3
-
-	; second map header
-	dw CianwoodPokeCenter1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CIANWOOD_CITY, MUSIC_POKEMON_CENTER, 1, 1
-; 0x94baa
-
-CianwoodPharmacy_MapHeader: ; 0x94baa
-	; bank, tileset, permission
-	db BANK(CianwoodPharmacy_SecondMapHeader), $5, 3
-
-	; second map header
-	dw CianwoodPharmacy_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 1, 1
-; 0x94bb3
-
-CianwoodCityPhotoStudio_MapHeader: ; 0x94bb3
-	; bank, tileset, permission
-	db BANK(CianwoodCityPhotoStudio_SecondMapHeader), $5, 3
-
-	; second map header
-	dw CianwoodCityPhotoStudio_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 1, 1
-; 0x94bbc
-
-CianwoodLugiaSpeechHouse_MapHeader: ; 0x94bbc
-	; bank, tileset, permission
-	db BANK(CianwoodLugiaSpeechHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw CianwoodLugiaSpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 1, 1
-; 0x94bc5
-
-PokeSeersHouse_MapHeader: ; 0x94bc5
-	; bank, tileset, permission
-	db BANK(PokeSeersHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw PokeSeersHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 1, 1
-; 0x94bce
-
-BattleTower1F_MapHeader: ; 0x94bce
-	; bank, tileset, permission
-	db BANK(BattleTower1F_SecondMapHeader), $16, 3
-
-	; second map header
-	dw BattleTower1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db BATTLE_TOWER, MUSIC_BATTLE_TOWER_LOBBY, 17, 1
-; 0x94bd7
-
-BattleTowerBattleRoom_MapHeader: ; 0x94bd7
-	; bank, tileset, permission
-	db BANK(BattleTowerBattleRoom_SecondMapHeader), $16, 3
-
-	; second map header
-	dw BattleTowerBattleRoom_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, 17, 1
-; 0x94be0
-
-BattleTowerElevator_MapHeader: ; 0x94be0
-	; bank, tileset, permission
-	db BANK(BattleTowerElevator_SecondMapHeader), $16, 3
-
-	; second map header
-	dw BattleTowerElevator_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db BATTLE_TOWER, MUSIC_NONE, 17, 1
-; 0x94be9
-
-BattleTowerHallway_MapHeader: ; 0x94be9
-	; bank, tileset, permission
-	db BANK(BattleTowerHallway_SecondMapHeader), $16, 3
-
-	; second map header
-	dw BattleTowerHallway_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, 17, 1
-; 0x94bf2
-
-Route40BattleTowerGate_MapHeader: ; 0x94bf2
-	; bank, tileset, permission
-	db BANK(Route40BattleTowerGate_SecondMapHeader), $8, 6
-
-	; second map header
-	dw Route40BattleTowerGate_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db BATTLE_TOWER, MUSIC_ROUTE_36, 1, 1
-; 0x94bfb
-
-BattleTowerOutside_MapHeader: ; 0x94bfb
-	; bank, tileset, permission
-	db BANK(BattleTowerOutside_SecondMapHeader), $4, 2
-
-	; second map header
-	dw BattleTowerOutside_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, 0, 1
-; 0x94c04
-
-
 MapGroup23:
+	map_header Route2, $3, 2, ROUTE_2, MUSIC_ROUTE_2, 0, 1
+	map_header Route22, $3, 2, ROUTE_22, MUSIC_ROUTE_3, 0, 4
+	map_header ViridianCity, $3, 1, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, 4
+	map_header ViridianGym, $11, 3, VIRIDIAN_CITY, MUSIC_GYM, 17, 1
+	map_header ViridianNicknameSpeechHouse, $5, 3, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header TrainerHouse1F, $5, 3, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header TrainerHouseB1F, $b, 3, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header ViridianMart, $c, 3, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header ViridianPokeCenter1F, $7, 3, VIRIDIAN_CITY, MUSIC_POKEMON_CENTER, 1, 1
+	map_header ViridianPokeCenter2FBeta, $7, 3, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header Route2NuggetSpeechHouse, $5, 3, ROUTE_2, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header Route2Gate, $8, 6, ROUTE_2, MUSIC_ROUTE_2, 1, 1
+	map_header VictoryRoadGate, $8, 6, ROUTE_26, MUSIC_INDIGO_PLATEAU, 1, 1
 
-Route2_MapHeader: ; 0x94c04
-	; bank, tileset, permission
-	db BANK(Route2_SecondMapHeader), $3, 2
 
-	; second map header
-	dw Route2_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_2, MUSIC_ROUTE_2, 0, 1
-; 0x94c0d
-
-Route22_MapHeader: ; 0x94c0d
-	; bank, tileset, permission
-	db BANK(Route22_SecondMapHeader), $3, 2
-
-	; second map header
-	dw Route22_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_22, MUSIC_ROUTE_3, 0, 4
-; 0x94c16
-
-ViridianCity_MapHeader: ; 0x94c16
-	; bank, tileset, permission
-	db BANK(ViridianCity_SecondMapHeader), $3, 1
-
-	; second map header
-	dw ViridianCity_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, 4
-; 0x94c1f
-
-ViridianGym_MapHeader: ; 0x94c1f
-	; bank, tileset, permission
-	db BANK(ViridianGym_SecondMapHeader), $11, 3
-
-	; second map header
-	dw ViridianGym_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VIRIDIAN_CITY, MUSIC_GYM, 17, 1
-; 0x94c28
-
-ViridianNicknameSpeechHouse_MapHeader: ; 0x94c28
-	; bank, tileset, permission
-	db BANK(ViridianNicknameSpeechHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw ViridianNicknameSpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94c31
-
-TrainerHouse1F_MapHeader: ; 0x94c31
-	; bank, tileset, permission
-	db BANK(TrainerHouse1F_SecondMapHeader), $5, 3
-
-	; second map header
-	dw TrainerHouse1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94c3a
-
-TrainerHouseB1F_MapHeader: ; 0x94c3a
-	; bank, tileset, permission
-	db BANK(TrainerHouseB1F_SecondMapHeader), $b, 3
-
-	; second map header
-	dw TrainerHouseB1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94c43
-
-ViridianMart_MapHeader: ; 0x94c43
-	; bank, tileset, permission
-	db BANK(ViridianMart_SecondMapHeader), $c, 3
-
-	; second map header
-	dw ViridianMart_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94c4c
-
-ViridianPokeCenter1F_MapHeader: ; 0x94c4c
-	; bank, tileset, permission
-	db BANK(ViridianPokeCenter1F_SecondMapHeader), $7, 3
-
-	; second map header
-	dw ViridianPokeCenter1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VIRIDIAN_CITY, MUSIC_POKEMON_CENTER, 1, 1
-; 0x94c55
-
-ViridianPokeCenter2FBeta_MapHeader: ; 0x94c55
-	; bank, tileset, permission
-	db BANK(ViridianPokeCenter2FBeta_SecondMapHeader), $7, 3
-
-	; second map header
-	dw ViridianPokeCenter2FBeta_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94c5e
-
-Route2NuggetSpeechHouse_MapHeader: ; 0x94c5e
-	; bank, tileset, permission
-	db BANK(Route2NuggetSpeechHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw Route2NuggetSpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_2, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94c67
-
-Route2Gate_MapHeader: ; 0x94c67
-	; bank, tileset, permission
-	db BANK(Route2Gate_SecondMapHeader), $8, 6
-
-	; second map header
-	dw Route2Gate_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_2, MUSIC_ROUTE_2, 1, 1
-; 0x94c70
-
-VictoryRoadGate_MapHeader: ; 0x94c70
-	; bank, tileset, permission
-	db BANK(VictoryRoadGate_SecondMapHeader), $8, 6
-
-	; second map header
-	dw VictoryRoadGate_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_26, MUSIC_INDIGO_PLATEAU, 1, 1
-; 0x94c79
-
-
 MapGroup24:
+	map_header Route26, $1, 2, ROUTE_26, MUSIC_ROUTE_26, 0, 2
+	map_header Route27, $1, 2, ROUTE_27, MUSIC_ROUTE_26, 0, 2
+	map_header Route29, $1, 2, ROUTE_29, MUSIC_ROUTE_29, 0, 1
+	map_header NewBarkTown, $1, 1, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, 2
+	map_header ElmsLab, $a, 3, NEW_BARK_TOWN, MUSIC_PROF_ELM, 1, 1
+	map_header KrissHouse1F, $6, 3, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 1, 1
+	map_header KrissHouse2F, $14, 3, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 1, 1
+	map_header KrissNeighborsHouse, $5, 3, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 1, 1
+	map_header ElmsHouse, $6, 3, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 1, 1
+	map_header Route26HealSpeechHouse, $5, 3, ROUTE_26, MUSIC_AZALEA_TOWN, 1, 1
+	map_header Route26DayofWeekSiblingsHouse, $5, 3, ROUTE_26, MUSIC_AZALEA_TOWN, 1, 1
+	map_header Route27SandstormHouse, $5, 3, ROUTE_27, MUSIC_AZALEA_TOWN, 1, 1
+	map_header Route2946Gate, $8, 6, ROUTE_29, MUSIC_ROUTE_29, 1, 1
 
-Route26_MapHeader: ; 0x94c79
-	; bank, tileset, permission
-	db BANK(Route26_SecondMapHeader), $1, 2
 
-	; second map header
-	dw Route26_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_26, MUSIC_ROUTE_26, 0, 2
-; 0x94c82
-
-Route27_MapHeader: ; 0x94c82
-	; bank, tileset, permission
-	db BANK(Route27_SecondMapHeader), $1, 2
-
-	; second map header
-	dw Route27_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_27, MUSIC_ROUTE_26, 0, 2
-; 0x94c8b
-
-Route29_MapHeader: ; 0x94c8b
-	; bank, tileset, permission
-	db BANK(Route29_SecondMapHeader), $1, 2
-
-	; second map header
-	dw Route29_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_29, MUSIC_ROUTE_29, 0, 1
-; 0x94c94
-
-NewBarkTown_MapHeader: ; 0x94c94
-	; bank, tileset, permission
-	db BANK(NewBarkTown_SecondMapHeader), $1, 1
-
-	; second map header
-	dw NewBarkTown_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, 2
-; 0x94c9d
-
-ElmsLab_MapHeader: ; 0x94c9d
-	; bank, tileset, permission
-	db BANK(ElmsLab_SecondMapHeader), $a, 3
-
-	; second map header
-	dw ElmsLab_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db NEW_BARK_TOWN, MUSIC_PROF_ELM, 1, 1
-; 0x94ca6
-
-KrissHouse1F_MapHeader: ; 0x94ca6
-	; bank, tileset, permission
-	db BANK(KrissHouse1F_SecondMapHeader), $6, 3
-
-	; second map header
-	dw KrissHouse1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 1, 1
-; 0x94caf
-
-KrissHouse2F_MapHeader: ; 0x94caf
-	; bank, tileset, permission
-	db BANK(KrissHouse2F_SecondMapHeader), $14, 3
-
-	; second map header
-	dw KrissHouse2F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 1, 1
-; 0x94cb8
-
-KrissNeighborsHouse_MapHeader: ; 0x94cb8
-	; bank, tileset, permission
-	db BANK(KrissNeighborsHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw KrissNeighborsHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 1, 1
-; 0x94cc1
-
-ElmsHouse_MapHeader: ; 0x94cc1
-	; bank, tileset, permission
-	db BANK(ElmsHouse_SecondMapHeader), $6, 3
-
-	; second map header
-	dw ElmsHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 1, 1
-; 0x94cca
-
-Route26HealSpeechHouse_MapHeader: ; 0x94cca
-	; bank, tileset, permission
-	db BANK(Route26HealSpeechHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw Route26HealSpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_26, MUSIC_AZALEA_TOWN, 1, 1
-; 0x94cd3
-
-Route26DayofWeekSiblingsHouse_MapHeader: ; 0x94cd3
-	; bank, tileset, permission
-	db BANK(Route26DayofWeekSiblingsHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw Route26DayofWeekSiblingsHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_26, MUSIC_AZALEA_TOWN, 1, 1
-; 0x94cdc
-
-Route27SandstormHouse_MapHeader: ; 0x94cdc
-	; bank, tileset, permission
-	db BANK(Route27SandstormHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw Route27SandstormHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_27, MUSIC_AZALEA_TOWN, 1, 1
-; 0x94ce5
-
-Route2946Gate_MapHeader: ; 0x94ce5
-	; bank, tileset, permission
-	db BANK(Route2946Gate_SecondMapHeader), $8, 6
-
-	; second map header
-	dw Route2946Gate_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_29, MUSIC_ROUTE_29, 1, 1
-; 0x94cee
-
-
 MapGroup25:
+	map_header Route5, $3, 2, ROUTE_5, MUSIC_ROUTE_3, 0, 1
+	map_header SaffronCity, $3, 1, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, 1
+	map_header FightingDojo, $11, 3, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header SaffronGym, $1c, 3, SAFFRON_CITY, MUSIC_GYM, 17, 1
+	map_header SaffronMart, $c, 3, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header SaffronPokeCenter1F, $7, 3, SAFFRON_CITY, MUSIC_POKEMON_CENTER, 1, 1
+	map_header SaffronPokeCenter2FBeta, $7, 3, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header MrPsychicsHouse, $5, 3, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header SaffronTrainStation, $11, 3, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header SilphCo1F, $b, 3, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header CopycatsHouse1F, $6, 3, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header CopycatsHouse2F, $6, 3, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header Route5UndergroundEntrance, $8, 6, ROUTE_5, MUSIC_ROUTE_3, 1, 1
+	map_header Route5SaffronCityGate, $8, 6, ROUTE_5, MUSIC_VIRIDIAN_CITY, 1, 1
+	map_header Route5CleanseTagSpeechHouse, $5, 3, ROUTE_5, MUSIC_VIRIDIAN_CITY, 1, 1
 
-Route5_MapHeader: ; 0x94cee
-	; bank, tileset, permission
-	db BANK(Route5_SecondMapHeader), $3, 2
 
-	; second map header
-	dw Route5_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_5, MUSIC_ROUTE_3, 0, 1
-; 0x94cf7
-
-SaffronCity_MapHeader: ; 0x94cf7
-	; bank, tileset, permission
-	db BANK(SaffronCity_SecondMapHeader), $3, 1
-
-	; second map header
-	dw SaffronCity_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, 1
-; 0x94d00
-
-FightingDojo_MapHeader: ; 0x94d00
-	; bank, tileset, permission
-	db BANK(FightingDojo_SecondMapHeader), $11, 3
-
-	; second map header
-	dw FightingDojo_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94d09
-
-SaffronGym_MapHeader: ; 0x94d09
-	; bank, tileset, permission
-	db BANK(SaffronGym_SecondMapHeader), $1c, 3
-
-	; second map header
-	dw SaffronGym_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SAFFRON_CITY, MUSIC_GYM, 17, 1
-; 0x94d12
-
-SaffronMart_MapHeader: ; 0x94d12
-	; bank, tileset, permission
-	db BANK(SaffronMart_SecondMapHeader), $c, 3
-
-	; second map header
-	dw SaffronMart_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94d1b
-
-SaffronPokeCenter1F_MapHeader: ; 0x94d1b
-	; bank, tileset, permission
-	db BANK(SaffronPokeCenter1F_SecondMapHeader), $7, 3
-
-	; second map header
-	dw SaffronPokeCenter1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SAFFRON_CITY, MUSIC_POKEMON_CENTER, 1, 1
-; 0x94d24
-
-SaffronPokeCenter2FBeta_MapHeader: ; 0x94d24
-	; bank, tileset, permission
-	db BANK(SaffronPokeCenter2FBeta_SecondMapHeader), $7, 3
-
-	; second map header
-	dw SaffronPokeCenter2FBeta_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94d2d
-
-MrPsychicsHouse_MapHeader: ; 0x94d2d
-	; bank, tileset, permission
-	db BANK(MrPsychicsHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw MrPsychicsHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94d36
-
-SaffronTrainStation_MapHeader: ; 0x94d36
-	; bank, tileset, permission
-	db BANK(SaffronTrainStation_SecondMapHeader), $11, 3
-
-	; second map header
-	dw SaffronTrainStation_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94d3f
-
-SilphCo1F_MapHeader: ; 0x94d3f
-	; bank, tileset, permission
-	db BANK(SilphCo1F_SecondMapHeader), $b, 3
-
-	; second map header
-	dw SilphCo1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94d48
-
-CopycatsHouse1F_MapHeader: ; 0x94d48
-	; bank, tileset, permission
-	db BANK(CopycatsHouse1F_SecondMapHeader), $6, 3
-
-	; second map header
-	dw CopycatsHouse1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94d51
-
-CopycatsHouse2F_MapHeader: ; 0x94d51
-	; bank, tileset, permission
-	db BANK(CopycatsHouse2F_SecondMapHeader), $6, 3
-
-	; second map header
-	dw CopycatsHouse2F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94d5a
-
-Route5UndergroundEntrance_MapHeader: ; 0x94d5a
-	; bank, tileset, permission
-	db BANK(Route5UndergroundEntrance_SecondMapHeader), $8, 6
-
-	; second map header
-	dw Route5UndergroundEntrance_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_5, MUSIC_ROUTE_3, 1, 1
-; 0x94d63
-
-Route5SaffronCityGate_MapHeader: ; 0x94d63
-	; bank, tileset, permission
-	db BANK(Route5SaffronCityGate_SecondMapHeader), $8, 6
-
-	; second map header
-	dw Route5SaffronCityGate_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_5, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94d6c
-
-Route5CleanseTagSpeechHouse_MapHeader: ; 0x94d6c
-	; bank, tileset, permission
-	db BANK(Route5CleanseTagSpeechHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw Route5CleanseTagSpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_5, MUSIC_VIRIDIAN_CITY, 1, 1
-; 0x94d75
-
-
 MapGroup26:
-
-Route30_MapHeader: ; 0x94d75
-	; bank, tileset, permission
-	db BANK(Route30_SecondMapHeader), $1, 2
-
-	; second map header
-	dw Route30_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_30, MUSIC_ROUTE_30, 0, 4
-; 0x94d7e
-
-Route31_MapHeader: ; 0x94d7e
-	; bank, tileset, permission
-	db BANK(Route31_SecondMapHeader), $1, 2
-
-	; second map header
-	dw Route31_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_31, MUSIC_ROUTE_30, 0, 4
-; 0x94d87
-
-CherrygroveCity_MapHeader: ; 0x94d87
-	; bank, tileset, permission
-	db BANK(CherrygroveCity_SecondMapHeader), $1, 1
-
-	; second map header
-	dw CherrygroveCity_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, 1
-; 0x94d90
-
-CherrygroveMart_MapHeader: ; 0x94d90
-	; bank, tileset, permission
-	db BANK(CherrygroveMart_SecondMapHeader), $c, 3
-
-	; second map header
-	dw CherrygroveMart_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 1, 1
-; 0x94d99
-
-CherrygrovePokeCenter1F_MapHeader: ; 0x94d99
-	; bank, tileset, permission
-	db BANK(CherrygrovePokeCenter1F_SecondMapHeader), $7, 3
-
-	; second map header
-	dw CherrygrovePokeCenter1F_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CHERRYGROVE_CITY, MUSIC_POKEMON_CENTER, 1, 1
-; 0x94da2
-
-CherrygroveGymSpeechHouse_MapHeader: ; 0x94da2
-	; bank, tileset, permission
-	db BANK(CherrygroveGymSpeechHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw CherrygroveGymSpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 1, 1
-; 0x94dab
-
-GuideGentsHouse_MapHeader: ; 0x94dab
-	; bank, tileset, permission
-	db BANK(GuideGentsHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw GuideGentsHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 1, 1
-; 0x94db4
-
-CherrygroveEvolutionSpeechHouse_MapHeader: ; 0x94db4
-	; bank, tileset, permission
-	db BANK(CherrygroveEvolutionSpeechHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw CherrygroveEvolutionSpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 1, 1
-; 0x94dbd
-
-Route30BerrySpeechHouse_MapHeader: ; 0x94dbd
-	; bank, tileset, permission
-	db BANK(Route30BerrySpeechHouse_SecondMapHeader), $5, 3
-
-	; second map header
-	dw Route30BerrySpeechHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_30, MUSIC_CHERRYGROVE_CITY, 1, 1
-; 0x94dc6
-
-MrPokemonsHouse_MapHeader: ; 0x94dc6
-	; bank, tileset, permission
-	db BANK(MrPokemonsHouse_SecondMapHeader), $b, 3
-
-	; second map header
-	dw MrPokemonsHouse_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_30, MUSIC_CHERRYGROVE_CITY, 1, 1
-; 0x94dcf
-
-Route31VioletGate_MapHeader: ; 0x94dcf
-	; bank, tileset, permission
-	db BANK(Route31VioletGate_SecondMapHeader), $8, 6
-
-	; second map header
-	dw Route31VioletGate_SecondMapHeader
-
-	; location on world map, music, time of day, fishing group
-	db ROUTE_31, MUSIC_ROUTE_30, 1, 1
-; 0x94dd8
-
+	map_header Route30, $1, 2, ROUTE_30, MUSIC_ROUTE_30, 0, 4
+	map_header Route31, $1, 2, ROUTE_31, MUSIC_ROUTE_30, 0, 4
+	map_header CherrygroveCity, $1, 1, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, 1
+	map_header CherrygroveMart, $c, 3, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 1, 1
+	map_header CherrygrovePokeCenter1F, $7, 3, CHERRYGROVE_CITY, MUSIC_POKEMON_CENTER, 1, 1
+	map_header CherrygroveGymSpeechHouse, $5, 3, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 1, 1
+	map_header GuideGentsHouse, $5, 3, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 1, 1
+	map_header CherrygroveEvolutionSpeechHouse, $5, 3, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 1, 1
+	map_header Route30BerrySpeechHouse, $5, 3, ROUTE_30, MUSIC_CHERRYGROVE_CITY, 1, 1
+	map_header MrPokemonsHouse, $b, 3, ROUTE_30, MUSIC_CHERRYGROVE_CITY, 1, 1
+	map_header Route31VioletGate, $8, 6, ROUTE_31, MUSIC_ROUTE_30, 1, 1
 
--- a/maps/second_map_headers.asm
+++ b/maps/second_map_headers.asm
@@ -1,24 +1,22 @@
-NewBarkTown_SecondMapHeader: ; 0x94dd8
-	; border block
-	db $5
+map_header_2: MACRO
+; label, map, border block, connections
+\1_SecondMapHeader::
+	db \3
+\2\@HEIGHT EQUS "\2_HEIGHT"
+\2\@WIDTH  EQUS "\2_WIDTH"
+	db \2\@HEIGHT, \2\@WIDTH
+	db BANK(\1_BlockData)
+	dw \1_BlockData
+	db BANK(\1_MapScriptHeader)
+	dw \1_MapScriptHeader
+	dw \1_MapEventHeader
+	db \4
+ENDM
 
-	; height, width
-	db NEW_BARK_TOWN_HEIGHT, NEW_BARK_TOWN_WIDTH
+	map_header_2 NewBarkTown, NEW_BARK_TOWN, $5, WEST | EAST ; 0x94dd8
 
-	; blockdata (bank-then-pointer)
-	dbw BANK(NewBarkTown_BlockData), NewBarkTown_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(NewBarkTown_MapScriptHeader), NewBarkTown_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw NewBarkTown_MapEventHeader
-
-	; connections
-	db WEST | EAST
-
 	; WEST to Route 29
-	db GROUP_ROUTE_29, MAP_ROUTE_29 ; connected map (group, id)
+	map ROUTE_29
 	dw (Route29_BlockData + ROUTE_29_WIDTH - 3) ; strip pointer
 	dw $c830 ; strip destination
 	db 9, ROUTE_29_WIDTH ; (connection strip length, connected map width)
@@ -26,7 +24,7 @@
 	dw ($C807 + 59) ; window
 
 	; EAST to Route 27
-	db GROUP_ROUTE_27, MAP_ROUTE_27 ; connected map (group, id)
+	map ROUTE_27
 	dw (Route27_BlockData) ; strip pointer
 	dw $c83d ; strip destination
 	db 9, ROUTE_27_WIDTH ; (connection strip length, connected map width)
@@ -34,27 +32,10 @@
 	dw ($C807 + ROUTE_27_WIDTH) ; window
 ; 0x94dfc
 
-CherrygroveCity_SecondMapHeader: ; 0x94dfc
-	; border block
-	db $35
+	map_header_2 CherrygroveCity, CHERRYGROVE_CITY, $35, NORTH | EAST ; 0x94dfc
 
-	; height, width
-	db CHERRYGROVE_CITY_HEIGHT, CHERRYGROVE_CITY_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CherrygroveCity_BlockData), CherrygroveCity_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CherrygroveCity_MapScriptHeader), CherrygroveCity_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CherrygroveCity_MapEventHeader
-
-	; connections
-	db NORTH | EAST
-
 	; NORTH to Route 30
-	db GROUP_ROUTE_30, MAP_ROUTE_30 ; connected map (group, id)
+	map ROUTE_30
 	dw (Route30_BlockData + (ROUTE_30_HEIGHT * ROUTE_30_WIDTH) - (ROUTE_30_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 261) ; strip destination
 	db 10, ROUTE_30_WIDTH ; (connection strip length, connected map width)
@@ -62,7 +43,7 @@
 	dw ($C801 + ((ROUTE_30_HEIGHT * 6) + (ROUTE_30_HEIGHT * ROUTE_30_WIDTH))) ; window
 
 	; EAST to Route 29
-	db GROUP_ROUTE_29, MAP_ROUTE_29 ; connected map (group, id)
+	map ROUTE_29
 	dw (Route29_BlockData) ; strip pointer
 	dw $c865 ; strip destination
 	db 9, ROUTE_29_WIDTH ; (connection strip length, connected map width)
@@ -70,27 +51,10 @@
 	dw ($C807 + ROUTE_29_WIDTH) ; window
 ; 0x94e20
 
-VioletCity_SecondMapHeader: ; 0x94e20
-	; border block
-	db $5
+	map_header_2 VioletCity, VIOLET_CITY, $5, SOUTH | WEST | EAST ; 0x94e20
 
-	; height, width
-	db VIOLET_CITY_HEIGHT, VIOLET_CITY_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(VioletCity_BlockData), VioletCity_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(VioletCity_MapScriptHeader), VioletCity_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw VioletCity_MapEventHeader
-
-	; connections
-	db SOUTH | WEST | EAST
-
 	; SOUTH to Route 32
-	db GROUP_ROUTE_32, MAP_ROUTE_32 ; connected map (group, id)
+	map ROUTE_32
 	dw (Route32_BlockData) ; strip pointer
 	dw ($C703 + 256 + ((VIOLET_CITY_HEIGHT + 3) * (VIOLET_CITY_WIDTH + 6))) ; strip destination
 	db 10, ROUTE_32_WIDTH ; (connection strip length, connected map width)
@@ -98,7 +62,7 @@
 	dw ($C807 + ROUTE_32_WIDTH) ; window
 
 	; WEST to Route 36
-	db GROUP_ROUTE_36, MAP_ROUTE_36 ; connected map (group, id)
+	map ROUTE_36
 	dw (Route36_BlockData + ROUTE_36_WIDTH - 3) ; strip pointer
 	dw $c84e ; strip destination
 	db 9, ROUTE_36_WIDTH ; (connection strip length, connected map width)
@@ -106,7 +70,7 @@
 	dw ($C807 + 59) ; window
 
 	; EAST to Route 31
-	db GROUP_ROUTE_31, MAP_ROUTE_31 ; connected map (group, id)
+	map ROUTE_31
 	dw (Route31_BlockData) ; strip pointer
 	dw $c94f ; strip destination
 	db 9, ROUTE_31_WIDTH ; (connection strip length, connected map width)
@@ -114,27 +78,10 @@
 	dw ($C807 + ROUTE_31_WIDTH) ; window
 ; 0x94e50
 
-AzaleaTown_SecondMapHeader: ; 0x94e50
-	; border block
-	db $5
+	map_header_2 AzaleaTown, AZALEA_TOWN, $5, WEST | EAST ; 0x94e50
 
-	; height, width
-	db AZALEA_TOWN_HEIGHT, AZALEA_TOWN_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(AzaleaTown_BlockData), AzaleaTown_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(AzaleaTown_MapScriptHeader), AzaleaTown_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw AzaleaTown_MapEventHeader
-
-	; connections
-	db WEST | EAST
-
 	; WEST to Route 34
-	db GROUP_ROUTE_34, MAP_ROUTE_34 ; connected map (group, id)
+	map ROUTE_34
 	dw (Route34_BlockData + (((ROUTE_34_HEIGHT - AZALEA_TOWN_HEIGHT) * ROUTE_34_WIDTH) - (ROUTE_34_WIDTH * 3) + (ROUTE_34_WIDTH - 1) - 2)) ; strip pointer
 	dw $c800 ; strip destination
 	db 12, ROUTE_34_WIDTH ; (connection strip length, connected map width)
@@ -142,7 +89,7 @@
 	dw ($C807 + 19) ; window
 
 	; EAST to Route 33
-	db GROUP_ROUTE_33, MAP_ROUTE_33 ; connected map (group, id)
+	map ROUTE_33
 	dw (Route33_BlockData) ; strip pointer
 	dw $c865 ; strip destination
 	db 9, ROUTE_33_WIDTH ; (connection strip length, connected map width)
@@ -150,27 +97,10 @@
 	dw ($C807 + ROUTE_33_WIDTH) ; window
 ; 0x94e74
 
-CianwoodCity_SecondMapHeader: ; 0x94e74
-	; border block
-	db $35
+	map_header_2 CianwoodCity, CIANWOOD_CITY, $35, EAST ; 0x94e74
 
-	; height, width
-	db CIANWOOD_CITY_HEIGHT, CIANWOOD_CITY_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CianwoodCity_BlockData), CianwoodCity_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CianwoodCity_MapScriptHeader), CianwoodCity_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CianwoodCity_MapEventHeader
-
-	; connections
-	db EAST
-
 	; EAST to Route 41
-	db GROUP_ROUTE_41, MAP_ROUTE_41 ; connected map (group, id)
+	map ROUTE_41
 	dw (Route41_BlockData) ; strip pointer
 	dw $c851 ; strip destination
 	db 27, ROUTE_41_WIDTH ; (connection strip length, connected map width)
@@ -178,27 +108,10 @@
 	dw ($C807 + ROUTE_41_WIDTH) ; window
 ; 0x94e8c
 
-GoldenrodCity_SecondMapHeader: ; 0x94e8c
-	; border block
-	db $35
+	map_header_2 GoldenrodCity, GOLDENROD_CITY, $35, NORTH | SOUTH ; 0x94e8c
 
-	; height, width
-	db GOLDENROD_CITY_HEIGHT, GOLDENROD_CITY_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(GoldenrodCity_BlockData), GoldenrodCity_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(GoldenrodCity_MapScriptHeader), GoldenrodCity_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw GoldenrodCity_MapEventHeader
-
-	; connections
-	db NORTH | SOUTH
-
 	; NORTH to Route 35
-	db GROUP_ROUTE_35, MAP_ROUTE_35 ; connected map (group, id)
+	map ROUTE_35
 	dw (Route35_BlockData + (ROUTE_35_HEIGHT * ROUTE_35_WIDTH) - (ROUTE_35_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 261) ; strip destination
 	db 10, ROUTE_35_WIDTH ; (connection strip length, connected map width)
@@ -206,7 +119,7 @@
 	dw ($C801 + ((ROUTE_35_HEIGHT * 6) + (ROUTE_35_HEIGHT * ROUTE_35_WIDTH))) ; window
 
 	; SOUTH to Route 34
-	db GROUP_ROUTE_34, MAP_ROUTE_34 ; connected map (group, id)
+	map ROUTE_34
 	dw (Route34_BlockData) ; strip pointer
 	dw ($C703 + 261 + ((GOLDENROD_CITY_HEIGHT + 3) * (GOLDENROD_CITY_WIDTH + 6))) ; strip destination
 	db 10, ROUTE_34_WIDTH ; (connection strip length, connected map width)
@@ -214,27 +127,10 @@
 	dw ($C807 + ROUTE_34_WIDTH) ; window
 ; 0x94eb0
 
-OlivineCity_SecondMapHeader: ; 0x94eb0
-	; border block
-	db $35
+	map_header_2 OlivineCity, OLIVINE_CITY, $35, NORTH | WEST ; 0x94eb0
 
-	; height, width
-	db OLIVINE_CITY_HEIGHT, OLIVINE_CITY_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineCity_BlockData), OlivineCity_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(OlivineCity_MapScriptHeader), OlivineCity_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw OlivineCity_MapEventHeader
-
-	; connections
-	db NORTH | WEST
-
 	; NORTH to Route 39
-	db GROUP_ROUTE_39, MAP_ROUTE_39 ; connected map (group, id)
+	map ROUTE_39
 	dw (Route39_BlockData + (ROUTE_39_HEIGHT * ROUTE_39_WIDTH) - (ROUTE_39_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 261) ; strip destination
 	db 10, ROUTE_39_WIDTH ; (connection strip length, connected map width)
@@ -242,7 +138,7 @@
 	dw ($C801 + ((ROUTE_39_HEIGHT * 6) + (ROUTE_39_HEIGHT * ROUTE_39_WIDTH))) ; window
 
 	; WEST to Route 40
-	db GROUP_ROUTE_40, MAP_ROUTE_40 ; connected map (group, id)
+	map ROUTE_40
 	dw (Route40_BlockData + ROUTE_40_WIDTH - 3) ; strip pointer
 	dw $c938 ; strip destination
 	db 12, ROUTE_40_WIDTH ; (connection strip length, connected map width)
@@ -250,27 +146,10 @@
 	dw ($C807 + 19) ; window
 ; 0x94ed4
 
-EcruteakCity_SecondMapHeader: ; 0x94ed4
-	; border block
-	db $5
+	map_header_2 EcruteakCity, ECRUTEAK_CITY, $5, SOUTH | WEST | EAST ; 0x94ed4
 
-	; height, width
-	db ECRUTEAK_CITY_HEIGHT, ECRUTEAK_CITY_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(EcruteakCity_BlockData), EcruteakCity_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(EcruteakCity_MapScriptHeader), EcruteakCity_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw EcruteakCity_MapEventHeader
-
-	; connections
-	db SOUTH | WEST | EAST
-
 	; SOUTH to Route 37
-	db GROUP_ROUTE_37, MAP_ROUTE_37 ; connected map (group, id)
+	map ROUTE_37
 	dw (Route37_BlockData) ; strip pointer
 	dw ($C703 + 261 + ((ECRUTEAK_CITY_HEIGHT + 3) * (ECRUTEAK_CITY_WIDTH + 6))) ; strip destination
 	db 10, ROUTE_37_WIDTH ; (connection strip length, connected map width)
@@ -278,7 +157,7 @@
 	dw ($C807 + ROUTE_37_WIDTH) ; window
 
 	; WEST to Route 38
-	db GROUP_ROUTE_38, MAP_ROUTE_38 ; connected map (group, id)
+	map ROUTE_38
 	dw (Route38_BlockData + ROUTE_38_WIDTH - 3) ; strip pointer
 	dw $c8d0 ; strip destination
 	db 9, ROUTE_38_WIDTH ; (connection strip length, connected map width)
@@ -286,7 +165,7 @@
 	dw ($C807 + 39) ; window
 
 	; EAST to Route 42
-	db GROUP_ROUTE_42, MAP_ROUTE_42 ; connected map (group, id)
+	map ROUTE_42
 	dw (Route42_BlockData) ; strip pointer
 	dw $c94f ; strip destination
 	db 9, ROUTE_42_WIDTH ; (connection strip length, connected map width)
@@ -294,27 +173,10 @@
 	dw ($C807 + ROUTE_42_WIDTH) ; window
 ; 0x94f04
 
-MahoganyTown_SecondMapHeader: ; 0x94f04
-	; border block
-	db $71
+	map_header_2 MahoganyTown, MAHOGANY_TOWN, $71, NORTH | WEST | EAST ; 0x94f04
 
-	; height, width
-	db MAHOGANY_TOWN_HEIGHT, MAHOGANY_TOWN_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(MahoganyTown_BlockData), MahoganyTown_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(MahoganyTown_MapScriptHeader), MahoganyTown_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw MahoganyTown_MapEventHeader
-
-	; connections
-	db NORTH | WEST | EAST
-
 	; NORTH to Route 43
-	db GROUP_ROUTE_43, MAP_ROUTE_43 ; connected map (group, id)
+	map ROUTE_43
 	dw (Route43_BlockData + (ROUTE_43_HEIGHT * ROUTE_43_WIDTH) - (ROUTE_43_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 256) ; strip destination
 	db 10, ROUTE_43_WIDTH ; (connection strip length, connected map width)
@@ -322,7 +184,7 @@
 	dw ($C801 + ((ROUTE_43_HEIGHT * 6) + (ROUTE_43_HEIGHT * ROUTE_43_WIDTH))) ; window
 
 	; WEST to Route 42
-	db GROUP_ROUTE_42, MAP_ROUTE_42 ; connected map (group, id)
+	map ROUTE_42
 	dw (Route42_BlockData + ROUTE_42_WIDTH - 3) ; strip pointer
 	dw $c830 ; strip destination
 	db 9, ROUTE_42_WIDTH ; (connection strip length, connected map width)
@@ -330,7 +192,7 @@
 	dw ($C807 + 59) ; window
 
 	; EAST to Route 44
-	db GROUP_ROUTE_44, MAP_ROUTE_44 ; connected map (group, id)
+	map ROUTE_44
 	dw (Route44_BlockData) ; strip pointer
 	dw $c83d ; strip destination
 	db 9, ROUTE_44_WIDTH ; (connection strip length, connected map width)
@@ -338,27 +200,10 @@
 	dw ($C807 + ROUTE_44_WIDTH) ; window
 ; 0x94f34
 
-LakeofRage_SecondMapHeader: ; 0x94f34
-	; border block
-	db $5
+	map_header_2 LakeofRage, LAKE_OF_RAGE, $5, SOUTH ; 0x94f34
 
-	; height, width
-	db LAKE_OF_RAGE_HEIGHT, LAKE_OF_RAGE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(LakeofRage_BlockData), LakeofRage_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(LakeofRage_MapScriptHeader), LakeofRage_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw LakeofRage_MapEventHeader
-
-	; connections
-	db SOUTH
-
 	; SOUTH to Route 43
-	db GROUP_ROUTE_43, MAP_ROUTE_43 ; connected map (group, id)
+	map ROUTE_43
 	dw (Route43_BlockData) ; strip pointer
 	dw ($C703 + 261 + ((LAKE_OF_RAGE_HEIGHT + 3) * (LAKE_OF_RAGE_WIDTH + 6))) ; strip destination
 	db 10, ROUTE_43_WIDTH ; (connection strip length, connected map width)
@@ -366,27 +211,10 @@
 	dw ($C807 + ROUTE_43_WIDTH) ; window
 ; 0x94f4c
 
-BlackthornCity_SecondMapHeader: ; 0x94f4c
-	; border block
-	db $71
+	map_header_2 BlackthornCity, BLACKTHORN_CITY, $71, SOUTH | WEST ; 0x94f4c
 
-	; height, width
-	db BLACKTHORN_CITY_HEIGHT, BLACKTHORN_CITY_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(BlackthornCity_BlockData), BlackthornCity_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(BlackthornCity_MapScriptHeader), BlackthornCity_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw BlackthornCity_MapEventHeader
-
-	; connections
-	db SOUTH | WEST
-
 	; SOUTH to Route 45
-	db GROUP_ROUTE_45, MAP_ROUTE_45 ; connected map (group, id)
+	map ROUTE_45
 	dw (Route45_BlockData) ; strip pointer
 	dw ($C703 + 256 + ((BLACKTHORN_CITY_HEIGHT + 3) * (BLACKTHORN_CITY_WIDTH + 6))) ; strip destination
 	db 10, ROUTE_45_WIDTH ; (connection strip length, connected map width)
@@ -394,7 +222,7 @@
 	dw ($C807 + ROUTE_45_WIDTH) ; window
 
 	; WEST to Route 44
-	db GROUP_ROUTE_44, MAP_ROUTE_44 ; connected map (group, id)
+	map ROUTE_44
 	dw (Route44_BlockData + ROUTE_44_WIDTH - 3) ; strip pointer
 	dw $c938 ; strip destination
 	db 9, ROUTE_44_WIDTH ; (connection strip length, connected map width)
@@ -402,27 +230,10 @@
 	dw ($C807 + 59) ; window
 ; 0x94f70
 
-SilverCaveOutside_SecondMapHeader: ; 0x94f70
-	; border block
-	db $2c
+	map_header_2 SilverCaveOutside, SILVER_CAVE_OUTSIDE, $2c, EAST ; 0x94f70
 
-	; height, width
-	db SILVER_CAVE_OUTSIDE_HEIGHT, SILVER_CAVE_OUTSIDE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SilverCaveOutside_BlockData), SilverCaveOutside_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(SilverCaveOutside_MapScriptHeader), SilverCaveOutside_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw SilverCaveOutside_MapEventHeader
-
-	; connections
-	db EAST
-
 	; EAST to Route 28
-	db GROUP_ROUTE_28, MAP_ROUTE_28 ; connected map (group, id)
+	map ROUTE_28
 	dw (Route28_BlockData) ; strip pointer
 	dw $c94f ; strip destination
 	db 9, ROUTE_28_WIDTH ; (connection strip length, connected map width)
@@ -430,27 +241,10 @@
 	dw ($C807 + ROUTE_28_WIDTH) ; window
 ; 0x94f88
 
-Route26_SecondMapHeader: ; 0x94f88
-	; border block
-	db $5
+	map_header_2 Route26, ROUTE_26, $5, WEST ; 0x94f88
 
-	; height, width
-	db ROUTE_26_HEIGHT, ROUTE_26_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route26_BlockData), Route26_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route26_MapScriptHeader), Route26_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route26_MapEventHeader
-
-	; connections
-	db WEST
-
 	; WEST to Route 27
-	db GROUP_ROUTE_27, MAP_ROUTE_27 ; connected map (group, id)
+	map ROUTE_27
 	dw (Route27_BlockData + ROUTE_27_WIDTH - 3) ; strip pointer
 	dw $cb00 ; strip destination
 	db 9, ROUTE_27_WIDTH ; (connection strip length, connected map width)
@@ -458,27 +252,10 @@
 	dw ($C807 + 79) ; window
 ; 0x94fa0
 
-Route27_SecondMapHeader: ; 0x94fa0
-	; border block
-	db $35
+	map_header_2 Route27, ROUTE_27, $35, WEST | EAST ; 0x94fa0
 
-	; height, width
-	db ROUTE_27_HEIGHT, ROUTE_27_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route27_BlockData), Route27_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route27_MapScriptHeader), Route27_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route27_MapEventHeader
-
-	; connections
-	db WEST | EAST
-
 	; WEST to New Bark Town
-	db GROUP_NEW_BARK_TOWN, MAP_NEW_BARK_TOWN ; connected map (group, id)
+	map NEW_BARK_TOWN
 	dw (NewBarkTown_BlockData + NEW_BARK_TOWN_WIDTH - 3) ; strip pointer
 	dw $c88a ; strip destination
 	db 9, NEW_BARK_TOWN_WIDTH ; (connection strip length, connected map width)
@@ -486,7 +263,7 @@
 	dw ($C807 + 19) ; window
 
 	; EAST to Route 26
-	db GROUP_ROUTE_26, MAP_ROUTE_26 ; connected map (group, id)
+	map ROUTE_26
 	dw (Route26_BlockData + ((ROUTE_26_HEIGHT - 12) * ROUTE_26_WIDTH)) ; strip pointer
 	dw $c82b ; strip destination
 	db 12, ROUTE_26_WIDTH ; (connection strip length, connected map width)
@@ -494,27 +271,10 @@
 	dw ($C807 + ROUTE_26_WIDTH) ; window
 ; 0x94fc4
 
-Route28_SecondMapHeader: ; 0x94fc4
-	; border block
-	db $2c
+	map_header_2 Route28, ROUTE_28, $2c, WEST ; 0x94fc4
 
-	; height, width
-	db ROUTE_28_HEIGHT, ROUTE_28_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route28_BlockData), Route28_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route28_MapScriptHeader), Route28_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route28_MapEventHeader
-
-	; connections
-	db WEST
-
 	; WEST to Silver Cave Outside
-	db GROUP_SILVER_CAVE_OUTSIDE, MAP_SILVER_CAVE_OUTSIDE ; connected map (group, id)
+	map SILVER_CAVE_OUTSIDE
 	dw (SilverCaveOutside_BlockData + (((SILVER_CAVE_OUTSIDE_HEIGHT - ROUTE_28_HEIGHT) * SILVER_CAVE_OUTSIDE_WIDTH) - (SILVER_CAVE_OUTSIDE_WIDTH * 3) + (SILVER_CAVE_OUTSIDE_WIDTH - 1) - 2)) ; strip pointer
 	dw $c800 ; strip destination
 	db 12, SILVER_CAVE_OUTSIDE_WIDTH ; (connection strip length, connected map width)
@@ -522,27 +282,10 @@
 	dw ($C807 + 39) ; window
 ; 0x94fdc
 
-Route29_SecondMapHeader: ; 0x94fdc
-	; border block
-	db $5
+	map_header_2 Route29, ROUTE_29, $5, NORTH | WEST | EAST ; 0x94fdc
 
-	; height, width
-	db ROUTE_29_HEIGHT, ROUTE_29_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route29_BlockData), Route29_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route29_MapScriptHeader), Route29_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route29_MapEventHeader
-
-	; connections
-	db NORTH | WEST | EAST
-
 	; NORTH to Route 46
-	db GROUP_ROUTE_46, MAP_ROUTE_46 ; connected map (group, id)
+	map ROUTE_46
 	dw (Route46_BlockData + (ROUTE_46_HEIGHT * ROUTE_46_WIDTH) - (ROUTE_46_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 266) ; strip destination
 	db 10, ROUTE_46_WIDTH ; (connection strip length, connected map width)
@@ -550,7 +293,7 @@
 	dw ($C801 + ((ROUTE_46_HEIGHT * 6) + (ROUTE_46_HEIGHT * ROUTE_46_WIDTH))) ; window
 
 	; WEST to Cherrygrove City
-	db GROUP_CHERRYGROVE_CITY, MAP_CHERRYGROVE_CITY ; connected map (group, id)
+	map CHERRYGROVE_CITY
 	dw (CherrygroveCity_BlockData + CHERRYGROVE_CITY_WIDTH - 3) ; strip pointer
 	dw $c86c ; strip destination
 	db 9, CHERRYGROVE_CITY_WIDTH ; (connection strip length, connected map width)
@@ -558,7 +301,7 @@
 	dw ($C807 + 39) ; window
 
 	; EAST to New Bark Town
-	db GROUP_NEW_BARK_TOWN, MAP_NEW_BARK_TOWN ; connected map (group, id)
+	map NEW_BARK_TOWN
 	dw (NewBarkTown_BlockData) ; strip pointer
 	dw $c88d ; strip destination
 	db 9, NEW_BARK_TOWN_WIDTH ; (connection strip length, connected map width)
@@ -566,27 +309,10 @@
 	dw ($C807 + NEW_BARK_TOWN_WIDTH) ; window
 ; 0x9500c
 
-Route30_SecondMapHeader: ; 0x9500c
-	; border block
-	db $5
+	map_header_2 Route30, ROUTE_30, $5, NORTH | SOUTH ; 0x9500c
 
-	; height, width
-	db ROUTE_30_HEIGHT, ROUTE_30_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route30_BlockData), Route30_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route30_MapScriptHeader), Route30_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route30_MapEventHeader
-
-	; connections
-	db NORTH | SOUTH
-
 	; NORTH to Route 31
-	db GROUP_ROUTE_31, MAP_ROUTE_31 ; connected map (group, id)
+	map ROUTE_31
 	dw (Route31_BlockData + ((ROUTE_31_HEIGHT - 3) * ROUTE_31_WIDTH) + 7) ; strip pointer
 	dw ($C703 + 253) ; strip destination
 	db 13, ROUTE_31_WIDTH ; (connection strip length, connected map width)
@@ -594,7 +320,7 @@
 	dw ($C801 + ((ROUTE_31_HEIGHT * 6) + (ROUTE_31_HEIGHT * ROUTE_31_WIDTH))) ; window
 
 	; SOUTH to Cherrygrove City
-	db GROUP_CHERRYGROVE_CITY, MAP_CHERRYGROVE_CITY ; connected map (group, id)
+	map CHERRYGROVE_CITY
 	dw (CherrygroveCity_BlockData + ((10 - 16 + ROUTE_30_WIDTH) / 2)) ; strip pointer
 	dw ($C703 + 253 + ((ROUTE_30_HEIGHT + 3) * (ROUTE_30_WIDTH + 6))) ; strip destination
 	db 16, CHERRYGROVE_CITY_WIDTH ; (connection strip length, connected map width)
@@ -602,27 +328,10 @@
 	dw ($C807 + CHERRYGROVE_CITY_WIDTH) ; window
 ; 0x95030
 
-Route31_SecondMapHeader: ; 0x95030
-	; border block
-	db $5
+	map_header_2 Route31, ROUTE_31, $5, SOUTH | WEST ; 0x95030
 
-	; height, width
-	db ROUTE_31_HEIGHT, ROUTE_31_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route31_BlockData), Route31_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route31_MapScriptHeader), Route31_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route31_MapEventHeader
-
-	; connections
-	db SOUTH | WEST
-
 	; SOUTH to Route 30
-	db GROUP_ROUTE_30, MAP_ROUTE_30 ; connected map (group, id)
+	map ROUTE_30
 	dw (Route30_BlockData) ; strip pointer
 	dw ($C703 + 266 + ((ROUTE_31_HEIGHT + 3) * (ROUTE_31_WIDTH + 6))) ; strip destination
 	db 10, ROUTE_30_WIDTH ; (connection strip length, connected map width)
@@ -630,7 +339,7 @@
 	dw ($C807 + ROUTE_30_WIDTH) ; window
 
 	; WEST to Violet City
-	db GROUP_VIOLET_CITY, MAP_VIOLET_CITY ; connected map (group, id)
+	map VIOLET_CITY
 	dw (VioletCity_BlockData + (((VIOLET_CITY_HEIGHT - ROUTE_31_HEIGHT) * VIOLET_CITY_WIDTH) - (VIOLET_CITY_WIDTH * 3) + (VIOLET_CITY_WIDTH - 1) - 2)) ; strip pointer
 	dw $c800 ; strip destination
 	db 12, VIOLET_CITY_WIDTH ; (connection strip length, connected map width)
@@ -638,27 +347,10 @@
 	dw ($C807 + 39) ; window
 ; 0x95054
 
-Route32_SecondMapHeader: ; 0x95054
-	; border block
-	db $5
+	map_header_2 Route32, ROUTE_32, $5, NORTH | SOUTH ; 0x95054
 
-	; height, width
-	db ROUTE_32_HEIGHT, ROUTE_32_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route32_BlockData), Route32_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route32_MapScriptHeader), Route32_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route32_MapEventHeader
-
-	; connections
-	db NORTH | SOUTH
-
 	; NORTH to Violet City
-	db GROUP_VIOLET_CITY, MAP_VIOLET_CITY ; connected map (group, id)
+	map VIOLET_CITY
 	dw (VioletCity_BlockData + (VIOLET_CITY_HEIGHT * VIOLET_CITY_WIDTH) - (VIOLET_CITY_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 256) ; strip destination
 	db 13, VIOLET_CITY_WIDTH ; (connection strip length, connected map width)
@@ -666,7 +358,7 @@
 	dw ($C801 + ((VIOLET_CITY_HEIGHT * 6) + (VIOLET_CITY_HEIGHT * VIOLET_CITY_WIDTH))) ; window
 
 	; SOUTH to Route 33
-	db GROUP_ROUTE_33, MAP_ROUTE_33 ; connected map (group, id)
+	map ROUTE_33
 	dw (Route33_BlockData) ; strip pointer
 	dw ($C703 + 256 + ((ROUTE_32_HEIGHT + 3) * (ROUTE_32_WIDTH + 6))) ; strip destination
 	db 10, ROUTE_33_WIDTH ; (connection strip length, connected map width)
@@ -674,27 +366,10 @@
 	dw ($C807 + ROUTE_33_WIDTH) ; window
 ; 0x95078
 
-Route33_SecondMapHeader: ; 0x95078
-	; border block
-	db $5
+	map_header_2 Route33, ROUTE_33, $5, NORTH | WEST ; 0x95078
 
-	; height, width
-	db ROUTE_33_HEIGHT, ROUTE_33_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route33_BlockData), Route33_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route33_MapScriptHeader), Route33_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route33_MapEventHeader
-
-	; connections
-	db NORTH | WEST
-
 	; NORTH to Route 32
-	db GROUP_ROUTE_32, MAP_ROUTE_32 ; connected map (group, id)
+	map ROUTE_32
 	dw (Route32_BlockData + (ROUTE_32_HEIGHT * ROUTE_32_WIDTH) - (ROUTE_32_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 256) ; strip destination
 	db 10, ROUTE_32_WIDTH ; (connection strip length, connected map width)
@@ -702,7 +377,7 @@
 	dw ($C801 + ((ROUTE_32_HEIGHT * 6) + (ROUTE_32_HEIGHT * ROUTE_32_WIDTH))) ; window
 
 	; WEST to Azalea Town
-	db GROUP_AZALEA_TOWN, MAP_AZALEA_TOWN ; connected map (group, id)
+	map AZALEA_TOWN
 	dw (AzaleaTown_BlockData + AZALEA_TOWN_WIDTH - 3) ; strip pointer
 	dw $c830 ; strip destination
 	db 9, AZALEA_TOWN_WIDTH ; (connection strip length, connected map width)
@@ -710,27 +385,10 @@
 	dw ($C807 + 39) ; window
 ; 0x9509c
 
-Route34_SecondMapHeader: ; 0x9509c
-	; border block
-	db $5
+	map_header_2 Route34, ROUTE_34, $5, NORTH | EAST ; 0x9509c
 
-	; height, width
-	db ROUTE_34_HEIGHT, ROUTE_34_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route34_BlockData), Route34_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route34_MapScriptHeader), Route34_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route34_MapEventHeader
-
-	; connections
-	db NORTH | EAST
-
 	; NORTH to Goldenrod City
-	db GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY ; connected map (group, id)
+	map GOLDENROD_CITY
 	dw (GoldenrodCity_BlockData + GOLDENROD_CITY_WIDTH + 10 + (16 * GOLDENROD_CITY_HEIGHT) - 16) ; strip pointer
 	dw ($C703 + 253) ; strip destination
 	db 16, GOLDENROD_CITY_WIDTH ; (connection strip length, connected map width)
@@ -738,7 +396,7 @@
 	dw ($C801 + ((GOLDENROD_CITY_HEIGHT * 6) + (GOLDENROD_CITY_HEIGHT * GOLDENROD_CITY_WIDTH))) ; window
 
 	; EAST to Azalea Town
-	db GROUP_AZALEA_TOWN, MAP_AZALEA_TOWN ; connected map (group, id)
+	map AZALEA_TOWN
 	dw (AzaleaTown_BlockData) ; strip pointer
 	dw $c95d ; strip destination
 	db 9, AZALEA_TOWN_WIDTH ; (connection strip length, connected map width)
@@ -746,27 +404,10 @@
 	dw ($C807 + AZALEA_TOWN_WIDTH) ; window
 ; 0x950c0
 
-Route35_SecondMapHeader: ; 0x950c0
-	; border block
-	db $5
+	map_header_2 Route35, ROUTE_35, $5, NORTH | SOUTH ; 0x950c0
 
-	; height, width
-	db ROUTE_35_HEIGHT, ROUTE_35_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route35_BlockData), Route35_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route35_MapScriptHeader), Route35_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route35_MapEventHeader
-
-	; connections
-	db NORTH | SOUTH
-
 	; NORTH to Route 36
-	db GROUP_ROUTE_36, MAP_ROUTE_36 ; connected map (group, id)
+	map ROUTE_36
 	dw (Route36_BlockData + (ROUTE_36_HEIGHT * ROUTE_36_WIDTH) - (ROUTE_36_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 256) ; strip destination
 	db 13, ROUTE_36_WIDTH ; (connection strip length, connected map width)
@@ -774,7 +415,7 @@
 	dw ($C801 + ((ROUTE_36_HEIGHT * 6) + (ROUTE_36_HEIGHT * ROUTE_36_WIDTH))) ; window
 
 	; SOUTH to Goldenrod City
-	db GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY ; connected map (group, id)
+	map GOLDENROD_CITY
 	dw (GoldenrodCity_BlockData + ((10 - 16 + ROUTE_35_WIDTH) / 2)) ; strip pointer
 	dw ($C703 + 253 + ((ROUTE_35_HEIGHT + 3) * (ROUTE_35_WIDTH + 6))) ; strip destination
 	db 16, GOLDENROD_CITY_WIDTH ; (connection strip length, connected map width)
@@ -782,27 +423,10 @@
 	dw ($C807 + GOLDENROD_CITY_WIDTH) ; window
 ; 0x950e4
 
-Route36_SecondMapHeader: ; 0x950e4
-	; border block
-	db $5
+	map_header_2 Route36, ROUTE_36, $5, NORTH | SOUTH | EAST ; 0x950e4
 
-	; height, width
-	db ROUTE_36_HEIGHT, ROUTE_36_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route36_BlockData), Route36_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route36_MapScriptHeader), Route36_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route36_MapEventHeader
-
-	; connections
-	db NORTH | SOUTH | EAST
-
 	; NORTH to Route 37
-	db GROUP_ROUTE_37, MAP_ROUTE_37 ; connected map (group, id)
+	map ROUTE_37
 	dw (Route37_BlockData + (ROUTE_37_HEIGHT * ROUTE_37_WIDTH) - (ROUTE_37_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 266) ; strip destination
 	db 10, ROUTE_37_WIDTH ; (connection strip length, connected map width)
@@ -810,7 +434,7 @@
 	dw ($C801 + ((ROUTE_37_HEIGHT * 6) + (ROUTE_37_HEIGHT * ROUTE_37_WIDTH))) ; window
 
 	; SOUTH to Route 35
-	db GROUP_ROUTE_35, MAP_ROUTE_35 ; connected map (group, id)
+	map ROUTE_35
 	dw (Route35_BlockData) ; strip pointer
 	dw ($C703 + 256 + ((ROUTE_36_HEIGHT + 3) * (ROUTE_36_WIDTH + 6))) ; strip destination
 	db 10, ROUTE_35_WIDTH ; (connection strip length, connected map width)
@@ -818,7 +442,7 @@
 	dw ($C807 + ROUTE_35_WIDTH) ; window
 
 	; EAST to Violet City
-	db GROUP_VIOLET_CITY, MAP_VIOLET_CITY ; connected map (group, id)
+	map VIOLET_CITY
 	dw (VioletCity_BlockData) ; strip pointer
 	dw $c88d ; strip destination
 	db 12, VIOLET_CITY_WIDTH ; (connection strip length, connected map width)
@@ -826,27 +450,10 @@
 	dw ($C807 + VIOLET_CITY_WIDTH) ; window
 ; 0x95114
 
-Route37_SecondMapHeader: ; 0x95114
-	; border block
-	db $5
+	map_header_2 Route37, ROUTE_37, $5, NORTH | SOUTH ; 0x95114
 
-	; height, width
-	db ROUTE_37_HEIGHT, ROUTE_37_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route37_BlockData), Route37_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route37_MapScriptHeader), Route37_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route37_MapEventHeader
-
-	; connections
-	db NORTH | SOUTH
-
 	; NORTH to Ecruteak City
-	db GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY ; connected map (group, id)
+	map ECRUTEAK_CITY
 	dw (EcruteakCity_BlockData + ECRUTEAK_CITY_WIDTH + 10 + (16 * ECRUTEAK_CITY_HEIGHT) - 16) ; strip pointer
 	dw ($C703 + 253) ; strip destination
 	db 16, ECRUTEAK_CITY_WIDTH ; (connection strip length, connected map width)
@@ -854,7 +461,7 @@
 	dw ($C801 + ((ECRUTEAK_CITY_HEIGHT * 6) + (ECRUTEAK_CITY_HEIGHT * ECRUTEAK_CITY_WIDTH))) ; window
 
 	; SOUTH to Route 36
-	db GROUP_ROUTE_36, MAP_ROUTE_36 ; connected map (group, id)
+	map ROUTE_36
 	dw (Route36_BlockData + ((20 - 16 + ROUTE_37_WIDTH) / 2)) ; strip pointer
 	dw ($C703 + 253 + ((ROUTE_37_HEIGHT + 3) * (ROUTE_37_WIDTH + 6))) ; strip destination
 	db 16, ROUTE_36_WIDTH ; (connection strip length, connected map width)
@@ -862,27 +469,10 @@
 	dw ($C807 + ROUTE_36_WIDTH) ; window
 ; 0x95138
 
-Route38_SecondMapHeader: ; 0x95138
-	; border block
-	db $5
+	map_header_2 Route38, ROUTE_38, $5, WEST | EAST ; 0x95138
 
-	; height, width
-	db ROUTE_38_HEIGHT, ROUTE_38_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route38_BlockData), Route38_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route38_MapScriptHeader), Route38_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route38_MapEventHeader
-
-	; connections
-	db WEST | EAST
-
 	; WEST to Route 39
-	db GROUP_ROUTE_39, MAP_ROUTE_39 ; connected map (group, id)
+	map ROUTE_39
 	dw (Route39_BlockData + ROUTE_39_WIDTH - 3) ; strip pointer
 	dw $c84e ; strip destination
 	db 12, ROUTE_39_WIDTH ; (connection strip length, connected map width)
@@ -890,7 +480,7 @@
 	dw ($C807 + 19) ; window
 
 	; EAST to Ecruteak City
-	db GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY ; connected map (group, id)
+	map ECRUTEAK_CITY
 	dw (EcruteakCity_BlockData + ((100 - (ECRUTEAK_CITY_WIDTH * 4)) * 2)) ; strip pointer
 	dw $c817 ; strip destination
 	db 15, ECRUTEAK_CITY_WIDTH ; (connection strip length, connected map width)
@@ -898,27 +488,10 @@
 	dw ($C807 + ECRUTEAK_CITY_WIDTH) ; window
 ; 0x9515c
 
-Route39_SecondMapHeader: ; 0x9515c
-	; border block
-	db $5
+	map_header_2 Route39, ROUTE_39, $5, SOUTH | EAST ; 0x9515c
 
-	; height, width
-	db ROUTE_39_HEIGHT, ROUTE_39_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route39_BlockData), Route39_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route39_MapScriptHeader), Route39_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route39_MapEventHeader
-
-	; connections
-	db SOUTH | EAST
-
 	; SOUTH to Olivine City
-	db GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY ; connected map (group, id)
+	map OLIVINE_CITY
 	dw (OlivineCity_BlockData + ((10 - 16 + ROUTE_39_WIDTH) / 2)) ; strip pointer
 	dw ($C703 + 253 + ((ROUTE_39_HEIGHT + 3) * (ROUTE_39_WIDTH + 6))) ; strip destination
 	db 16, OLIVINE_CITY_WIDTH ; (connection strip length, connected map width)
@@ -926,7 +499,7 @@
 	dw ($C807 + OLIVINE_CITY_WIDTH) ; window
 
 	; EAST to Route 38
-	db GROUP_ROUTE_38, MAP_ROUTE_38 ; connected map (group, id)
+	map ROUTE_38
 	dw (Route38_BlockData) ; strip pointer
 	dw $c83d ; strip destination
 	db 9, ROUTE_38_WIDTH ; (connection strip length, connected map width)
@@ -934,27 +507,10 @@
 	dw ($C807 + ROUTE_38_WIDTH) ; window
 ; 0x95180
 
-Route40_SecondMapHeader: ; 0x95180
-	; border block
-	db $35
+	map_header_2 Route40, ROUTE_40, $35, SOUTH | EAST ; 0x95180
 
-	; height, width
-	db ROUTE_40_HEIGHT, ROUTE_40_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route40_BlockData), Route40_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route40_MapScriptHeader), Route40_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route40_MapEventHeader
-
-	; connections
-	db SOUTH | EAST
-
 	; SOUTH to Route 41
-	db GROUP_ROUTE_41, MAP_ROUTE_41 ; connected map (group, id)
+	map ROUTE_41
 	dw (Route41_BlockData + (((30 - 13 + ROUTE_40_WIDTH) / 2) - 1)) ; strip pointer
 	dw ($C703 + 253 + ((ROUTE_40_HEIGHT + 3) * (ROUTE_40_WIDTH + 6))) ; strip destination
 	db 13, ROUTE_41_WIDTH ; (connection strip length, connected map width)
@@ -962,7 +518,7 @@
 	dw ($C807 + ROUTE_41_WIDTH) ; window
 
 	; EAST to Olivine City
-	db GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY ; connected map (group, id)
+	map OLIVINE_CITY
 	dw (OlivineCity_BlockData + ((OLIVINE_CITY_HEIGHT - 12) * OLIVINE_CITY_WIDTH)) ; strip pointer
 	dw $c80d ; strip destination
 	db 12, OLIVINE_CITY_WIDTH ; (connection strip length, connected map width)
@@ -970,27 +526,10 @@
 	dw ($C807 + OLIVINE_CITY_WIDTH) ; window
 ; 0x951a4
 
-Route41_SecondMapHeader: ; 0x951a4
-	; border block
-	db $35
+	map_header_2 Route41, ROUTE_41, $35, NORTH | WEST ; 0x951a4
 
-	; height, width
-	db ROUTE_41_HEIGHT, ROUTE_41_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route41_BlockData), Route41_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route41_MapScriptHeader), Route41_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route41_MapEventHeader
-
-	; connections
-	db NORTH | WEST
-
 	; NORTH to Route 40
-	db GROUP_ROUTE_40, MAP_ROUTE_40 ; connected map (group, id)
+	map ROUTE_40
 	dw (Route40_BlockData + (ROUTE_40_HEIGHT * ROUTE_40_WIDTH) - (ROUTE_40_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 271) ; strip destination
 	db 10, ROUTE_40_WIDTH ; (connection strip length, connected map width)
@@ -998,7 +537,7 @@
 	dw ($C801 + ((ROUTE_40_HEIGHT * 6) + (ROUTE_40_HEIGHT * ROUTE_40_WIDTH))) ; window
 
 	; WEST to Cianwood City
-	db GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY ; connected map (group, id)
+	map CIANWOOD_CITY
 	dw (CianwoodCity_BlockData + CIANWOOD_CITY_WIDTH - 3) ; strip pointer
 	dw $c85d ; strip destination
 	db 27, CIANWOOD_CITY_WIDTH ; (connection strip length, connected map width)
@@ -1006,27 +545,10 @@
 	dw ($C807 + 29) ; window
 ; 0x951c8
 
-Route42_SecondMapHeader: ; 0x951c8
-	; border block
-	db $5
+	map_header_2 Route42, ROUTE_42, $5, WEST | EAST ; 0x951c8
 
-	; height, width
-	db ROUTE_42_HEIGHT, ROUTE_42_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route42_BlockData), Route42_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route42_MapScriptHeader), Route42_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route42_MapEventHeader
-
-	; connections
-	db WEST | EAST
-
 	; WEST to Ecruteak City
-	db GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY ; connected map (group, id)
+	map ECRUTEAK_CITY
 	dw (EcruteakCity_BlockData + (((ECRUTEAK_CITY_HEIGHT - ROUTE_42_HEIGHT) * ECRUTEAK_CITY_WIDTH) - (ECRUTEAK_CITY_WIDTH * 3) + (ECRUTEAK_CITY_WIDTH - 1) - 2)) ; strip pointer
 	dw $c800 ; strip destination
 	db 12, ECRUTEAK_CITY_WIDTH ; (connection strip length, connected map width)
@@ -1034,7 +556,7 @@
 	dw ($C807 + 39) ; window
 
 	; EAST to Mahogany Town
-	db GROUP_MAHOGANY_TOWN, MAP_MAHOGANY_TOWN ; connected map (group, id)
+	map MAHOGANY_TOWN
 	dw (MahoganyTown_BlockData) ; strip pointer
 	dw $c88d ; strip destination
 	db 9, MAHOGANY_TOWN_WIDTH ; (connection strip length, connected map width)
@@ -1042,27 +564,10 @@
 	dw ($C807 + MAHOGANY_TOWN_WIDTH) ; window
 ; 0x951ec
 
-Route43_SecondMapHeader: ; 0x951ec
-	; border block
-	db $5
+	map_header_2 Route43, ROUTE_43, $5, NORTH | SOUTH ; 0x951ec
 
-	; height, width
-	db ROUTE_43_HEIGHT, ROUTE_43_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route43_BlockData), Route43_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route43_MapScriptHeader), Route43_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route43_MapEventHeader
-
-	; connections
-	db NORTH | SOUTH
-
 	; NORTH to Lake of Rage
-	db GROUP_LAKE_OF_RAGE, MAP_LAKE_OF_RAGE ; connected map (group, id)
+	map LAKE_OF_RAGE
 	dw (LakeofRage_BlockData + LAKE_OF_RAGE_WIDTH + 10 + (16 * LAKE_OF_RAGE_HEIGHT) - 16) ; strip pointer
 	dw ($C703 + 253) ; strip destination
 	db 16, LAKE_OF_RAGE_WIDTH ; (connection strip length, connected map width)
@@ -1070,7 +575,7 @@
 	dw ($C801 + ((LAKE_OF_RAGE_HEIGHT * 6) + (LAKE_OF_RAGE_HEIGHT * LAKE_OF_RAGE_WIDTH))) ; window
 
 	; SOUTH to Mahogany Town
-	db GROUP_MAHOGANY_TOWN, MAP_MAHOGANY_TOWN ; connected map (group, id)
+	map MAHOGANY_TOWN
 	dw (MahoganyTown_BlockData) ; strip pointer
 	dw ($C703 + 256 + ((ROUTE_43_HEIGHT + 3) * (ROUTE_43_WIDTH + 6))) ; strip destination
 	db 10, MAHOGANY_TOWN_WIDTH ; (connection strip length, connected map width)
@@ -1078,27 +583,10 @@
 	dw ($C807 + MAHOGANY_TOWN_WIDTH) ; window
 ; 0x95210
 
-Route44_SecondMapHeader: ; 0x95210
-	; border block
-	db $71
+	map_header_2 Route44, ROUTE_44, $71, WEST | EAST ; 0x95210
 
-	; height, width
-	db ROUTE_44_HEIGHT, ROUTE_44_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route44_BlockData), Route44_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route44_MapScriptHeader), Route44_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route44_MapEventHeader
-
-	; connections
-	db WEST | EAST
-
 	; WEST to Mahogany Town
-	db GROUP_MAHOGANY_TOWN, MAP_MAHOGANY_TOWN ; connected map (group, id)
+	map MAHOGANY_TOWN
 	dw (MahoganyTown_BlockData + MAHOGANY_TOWN_WIDTH - 3) ; strip pointer
 	dw $c86c ; strip destination
 	db 9, MAHOGANY_TOWN_WIDTH ; (connection strip length, connected map width)
@@ -1106,7 +594,7 @@
 	dw ($C807 + 19) ; window
 
 	; EAST to Blackthorn City
-	db GROUP_BLACKTHORN_CITY, MAP_BLACKTHORN_CITY ; connected map (group, id)
+	map BLACKTHORN_CITY
 	dw (BlackthornCity_BlockData + ((BLACKTHORN_CITY_HEIGHT - 12) * BLACKTHORN_CITY_WIDTH)) ; strip pointer
 	dw $c821 ; strip destination
 	db 12, BLACKTHORN_CITY_WIDTH ; (connection strip length, connected map width)
@@ -1114,27 +602,10 @@
 	dw ($C807 + BLACKTHORN_CITY_WIDTH) ; window
 ; 0x95234
 
-Route45_SecondMapHeader: ; 0x95234
-	; border block
-	db $71
+	map_header_2 Route45, ROUTE_45, $71, NORTH | WEST ; 0x95234
 
-	; height, width
-	db ROUTE_45_HEIGHT, ROUTE_45_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route45_BlockData), Route45_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route45_MapScriptHeader), Route45_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route45_MapEventHeader
-
-	; connections
-	db NORTH | WEST
-
 	; NORTH to Blackthorn City
-	db GROUP_BLACKTHORN_CITY, MAP_BLACKTHORN_CITY ; connected map (group, id)
+	map BLACKTHORN_CITY
 	dw (BlackthornCity_BlockData + (BLACKTHORN_CITY_HEIGHT * BLACKTHORN_CITY_WIDTH) - (BLACKTHORN_CITY_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 256) ; strip destination
 	db 13, BLACKTHORN_CITY_WIDTH ; (connection strip length, connected map width)
@@ -1142,7 +613,7 @@
 	dw ($C801 + ((BLACKTHORN_CITY_HEIGHT * 6) + (BLACKTHORN_CITY_HEIGHT * BLACKTHORN_CITY_WIDTH))) ; window
 
 	; WEST to Route 46
-	db GROUP_ROUTE_46, MAP_ROUTE_46 ; connected map (group, id)
+	map ROUTE_46
 	dw (Route46_BlockData + ROUTE_46_WIDTH - 3) ; strip pointer
 	dw $ca70 ; strip destination
 	db 12, ROUTE_46_WIDTH ; (connection strip length, connected map width)
@@ -1150,27 +621,10 @@
 	dw ($C807 + 19) ; window
 ; 0x95258
 
-Route46_SecondMapHeader: ; 0x95258
-	; border block
-	db $5
+	map_header_2 Route46, ROUTE_46, $5, SOUTH | EAST ; 0x95258
 
-	; height, width
-	db ROUTE_46_HEIGHT, ROUTE_46_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route46_BlockData), Route46_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route46_MapScriptHeader), Route46_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route46_MapEventHeader
-
-	; connections
-	db SOUTH | EAST
-
 	; SOUTH to Route 29
-	db GROUP_ROUTE_29, MAP_ROUTE_29 ; connected map (group, id)
+	map ROUTE_29
 	dw (Route29_BlockData + ((20 - 16 + ROUTE_46_WIDTH) / 2)) ; strip pointer
 	dw ($C703 + 253 + ((ROUTE_46_HEIGHT + 3) * (ROUTE_46_WIDTH + 6))) ; strip destination
 	db 16, ROUTE_29_WIDTH ; (connection strip length, connected map width)
@@ -1178,7 +632,7 @@
 	dw ($C807 + ROUTE_29_WIDTH) ; window
 
 	; EAST to Route 45
-	db GROUP_ROUTE_45, MAP_ROUTE_45 ; connected map (group, id)
+	map ROUTE_45
 	dw (Route45_BlockData + ((ROUTE_45_HEIGHT - 12) * ROUTE_45_WIDTH)) ; strip pointer
 	dw $c80d ; strip destination
 	db 12, ROUTE_45_WIDTH ; (connection strip length, connected map width)
@@ -1186,27 +640,10 @@
 	dw ($C807 + ROUTE_45_WIDTH) ; window
 ; 0x9527c
 
-PewterCity_SecondMapHeader: ; 0x9527c
-	; border block
-	db $f
+	map_header_2 PewterCity, PEWTER_CITY, $f, SOUTH | EAST ; 0x9527c
 
-	; height, width
-	db PEWTER_CITY_HEIGHT, PEWTER_CITY_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(PewterCity_BlockData), PewterCity_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(PewterCity_MapScriptHeader), PewterCity_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw PewterCity_MapEventHeader
-
-	; connections
-	db SOUTH | EAST
-
 	; SOUTH to Route 2
-	db GROUP_ROUTE_2, MAP_ROUTE_2 ; connected map (group, id)
+	map ROUTE_2
 	dw (Route2_BlockData) ; strip pointer
 	dw ($C703 + 261 + ((PEWTER_CITY_HEIGHT + 3) * (PEWTER_CITY_WIDTH + 6))) ; strip destination
 	db 10, ROUTE_2_WIDTH ; (connection strip length, connected map width)
@@ -1214,7 +651,7 @@
 	dw ($C807 + ROUTE_2_WIDTH) ; window
 
 	; EAST to Route 3
-	db GROUP_ROUTE_3, MAP_ROUTE_3 ; connected map (group, id)
+	map ROUTE_3
 	dw (Route3_BlockData) ; strip pointer
 	dw $c8e7 ; strip destination
 	db 9, ROUTE_3_WIDTH ; (connection strip length, connected map width)
@@ -1222,27 +659,10 @@
 	dw ($C807 + ROUTE_3_WIDTH) ; window
 ; 0x952a0
 
-Route2_SecondMapHeader: ; 0x952a0
-	; border block
-	db $f
+	map_header_2 Route2, ROUTE_2, $f, NORTH | SOUTH ; 0x952a0
 
-	; height, width
-	db ROUTE_2_HEIGHT, ROUTE_2_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route2_BlockData), Route2_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route2_MapScriptHeader), Route2_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route2_MapEventHeader
-
-	; connections
-	db NORTH | SOUTH
-
 	; NORTH to Pewter City
-	db GROUP_PEWTER_CITY, MAP_PEWTER_CITY ; connected map (group, id)
+	map PEWTER_CITY
 	dw (PewterCity_BlockData + PEWTER_CITY_WIDTH + 10 + (16 * PEWTER_CITY_HEIGHT) - 16) ; strip pointer
 	dw ($C703 + 253) ; strip destination
 	db 16, PEWTER_CITY_WIDTH ; (connection strip length, connected map width)
@@ -1250,7 +670,7 @@
 	dw ($C801 + ((PEWTER_CITY_HEIGHT * 6) + (PEWTER_CITY_HEIGHT * PEWTER_CITY_WIDTH))) ; window
 
 	; SOUTH to Viridian City
-	db GROUP_VIRIDIAN_CITY, MAP_VIRIDIAN_CITY ; connected map (group, id)
+	map VIRIDIAN_CITY
 	dw (ViridianCity_BlockData + ((10 - 16 + ROUTE_2_WIDTH) / 2)) ; strip pointer
 	dw ($C703 + 253 + ((ROUTE_2_HEIGHT + 3) * (ROUTE_2_WIDTH + 6))) ; strip destination
 	db 16, VIRIDIAN_CITY_WIDTH ; (connection strip length, connected map width)
@@ -1258,27 +678,10 @@
 	dw ($C807 + VIRIDIAN_CITY_WIDTH) ; window
 ; 0x952c4
 
-ViridianCity_SecondMapHeader: ; 0x952c4
-	; border block
-	db $f
+	map_header_2 ViridianCity, VIRIDIAN_CITY, $f, NORTH | SOUTH | WEST ; 0x952c4
 
-	; height, width
-	db VIRIDIAN_CITY_HEIGHT, VIRIDIAN_CITY_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(ViridianCity_BlockData), ViridianCity_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(ViridianCity_MapScriptHeader), ViridianCity_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw ViridianCity_MapEventHeader
-
-	; connections
-	db NORTH | SOUTH | WEST
-
 	; NORTH to Route 2
-	db GROUP_ROUTE_2, MAP_ROUTE_2 ; connected map (group, id)
+	map ROUTE_2
 	dw (Route2_BlockData + (ROUTE_2_HEIGHT * ROUTE_2_WIDTH) - (ROUTE_2_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 261) ; strip destination
 	db 10, ROUTE_2_WIDTH ; (connection strip length, connected map width)
@@ -1286,7 +689,7 @@
 	dw ($C801 + ((ROUTE_2_HEIGHT * 6) + (ROUTE_2_HEIGHT * ROUTE_2_WIDTH))) ; window
 
 	; SOUTH to Route 1
-	db GROUP_ROUTE_1, MAP_ROUTE_1 ; connected map (group, id)
+	map ROUTE_1
 	dw (Route1_BlockData) ; strip pointer
 	dw ($C703 + 266 + ((VIRIDIAN_CITY_HEIGHT + 3) * (VIRIDIAN_CITY_WIDTH + 6))) ; strip destination
 	db 10, ROUTE_1_WIDTH ; (connection strip length, connected map width)
@@ -1294,7 +697,7 @@
 	dw ($C807 + ROUTE_1_WIDTH) ; window
 
 	; WEST to Route 22
-	db GROUP_ROUTE_22, MAP_ROUTE_22 ; connected map (group, id)
+	map ROUTE_22
 	dw (Route22_BlockData + ROUTE_22_WIDTH - 3) ; strip pointer
 	dw $c8b6 ; strip destination
 	db 9, ROUTE_22_WIDTH ; (connection strip length, connected map width)
@@ -1302,27 +705,10 @@
 	dw ($C807 + 39) ; window
 ; 0x952f4
 
-Route22_SecondMapHeader: ; 0x952f4
-	; border block
-	db $2c
+	map_header_2 Route22, ROUTE_22, $2c, EAST ; 0x952f4
 
-	; height, width
-	db ROUTE_22_HEIGHT, ROUTE_22_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route22_BlockData), Route22_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route22_MapScriptHeader), Route22_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route22_MapEventHeader
-
-	; connections
-	db EAST
-
 	; EAST to Viridian City
-	db GROUP_VIRIDIAN_CITY, MAP_VIRIDIAN_CITY ; connected map (group, id)
+	map VIRIDIAN_CITY
 	dw (ViridianCity_BlockData + 100 - (VIRIDIAN_CITY_WIDTH * 4)) ; strip pointer
 	dw $c817 ; strip destination
 	db 15, VIRIDIAN_CITY_WIDTH ; (connection strip length, connected map width)
@@ -1330,27 +716,10 @@
 	dw ($C807 + VIRIDIAN_CITY_WIDTH) ; window
 ; 0x9530c
 
-Route1_SecondMapHeader: ; 0x9530c
-	; border block
-	db $f
+	map_header_2 Route1, ROUTE_1, $f, NORTH | SOUTH ; 0x9530c
 
-	; height, width
-	db ROUTE_1_HEIGHT, ROUTE_1_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route1_BlockData), Route1_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route1_MapScriptHeader), Route1_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route1_MapEventHeader
-
-	; connections
-	db NORTH | SOUTH
-
 	; NORTH to Viridian City
-	db GROUP_VIRIDIAN_CITY, MAP_VIRIDIAN_CITY ; connected map (group, id)
+	map VIRIDIAN_CITY
 	dw (ViridianCity_BlockData + ((VIRIDIAN_CITY_HEIGHT - 3) * VIRIDIAN_CITY_WIDTH) + 7) ; strip pointer
 	dw ($C703 + 253) ; strip destination
 	db 13, VIRIDIAN_CITY_WIDTH ; (connection strip length, connected map width)
@@ -1358,7 +727,7 @@
 	dw ($C801 + ((VIRIDIAN_CITY_HEIGHT * 6) + (VIRIDIAN_CITY_HEIGHT * VIRIDIAN_CITY_WIDTH))) ; window
 
 	; SOUTH to Pallet Town
-	db GROUP_PALLET_TOWN, MAP_PALLET_TOWN ; connected map (group, id)
+	map PALLET_TOWN
 	dw (PalletTown_BlockData) ; strip pointer
 	dw ($C703 + 256 + ((ROUTE_1_HEIGHT + 3) * (ROUTE_1_WIDTH + 6))) ; strip destination
 	db 10, PALLET_TOWN_WIDTH ; (connection strip length, connected map width)
@@ -1366,27 +735,10 @@
 	dw ($C807 + PALLET_TOWN_WIDTH) ; window
 ; 0x95330
 
-PalletTown_SecondMapHeader: ; 0x95330
-	; border block
-	db $f
+	map_header_2 PalletTown, PALLET_TOWN, $f, NORTH | SOUTH ; 0x95330
 
-	; height, width
-	db PALLET_TOWN_HEIGHT, PALLET_TOWN_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(PalletTown_BlockData), PalletTown_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(PalletTown_MapScriptHeader), PalletTown_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw PalletTown_MapEventHeader
-
-	; connections
-	db NORTH | SOUTH
-
 	; NORTH to Route 1
-	db GROUP_ROUTE_1, MAP_ROUTE_1 ; connected map (group, id)
+	map ROUTE_1
 	dw (Route1_BlockData + (ROUTE_1_HEIGHT * ROUTE_1_WIDTH) - (ROUTE_1_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 256) ; strip destination
 	db 10, ROUTE_1_WIDTH ; (connection strip length, connected map width)
@@ -1394,7 +746,7 @@
 	dw ($C801 + ((ROUTE_1_HEIGHT * 6) + (ROUTE_1_HEIGHT * ROUTE_1_WIDTH))) ; window
 
 	; SOUTH to Route 21
-	db GROUP_ROUTE_21, MAP_ROUTE_21 ; connected map (group, id)
+	map ROUTE_21
 	dw (Route21_BlockData) ; strip pointer
 	dw ($C703 + 256 + ((PALLET_TOWN_HEIGHT + 3) * (PALLET_TOWN_WIDTH + 6))) ; strip destination
 	db 10, ROUTE_21_WIDTH ; (connection strip length, connected map width)
@@ -1402,27 +754,10 @@
 	dw ($C807 + ROUTE_21_WIDTH) ; window
 ; 0x95354
 
-Route21_SecondMapHeader: ; 0x95354
-	; border block
-	db $43
+	map_header_2 Route21, ROUTE_21, $43, NORTH | SOUTH ; 0x95354
 
-	; height, width
-	db ROUTE_21_HEIGHT, ROUTE_21_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route21_BlockData), Route21_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route21_MapScriptHeader), Route21_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route21_MapEventHeader
-
-	; connections
-	db NORTH | SOUTH
-
 	; NORTH to Pallet Town
-	db GROUP_PALLET_TOWN, MAP_PALLET_TOWN ; connected map (group, id)
+	map PALLET_TOWN
 	dw (PalletTown_BlockData + (PALLET_TOWN_HEIGHT * PALLET_TOWN_WIDTH) - (PALLET_TOWN_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 256) ; strip destination
 	db 10, PALLET_TOWN_WIDTH ; (connection strip length, connected map width)
@@ -1430,7 +765,7 @@
 	dw ($C801 + ((PALLET_TOWN_HEIGHT * 6) + (PALLET_TOWN_HEIGHT * PALLET_TOWN_WIDTH))) ; window
 
 	; SOUTH to Cinnabar Island
-	db GROUP_CINNABAR_ISLAND, MAP_CINNABAR_ISLAND ; connected map (group, id)
+	map CINNABAR_ISLAND
 	dw (CinnabarIsland_BlockData) ; strip pointer
 	dw ($C703 + 256 + ((ROUTE_21_HEIGHT + 3) * (ROUTE_21_WIDTH + 6))) ; strip destination
 	db 10, CINNABAR_ISLAND_WIDTH ; (connection strip length, connected map width)
@@ -1438,27 +773,10 @@
 	dw ($C807 + CINNABAR_ISLAND_WIDTH) ; window
 ; 0x95378
 
-CinnabarIsland_SecondMapHeader: ; 0x95378
-	; border block
-	db $43
+	map_header_2 CinnabarIsland, CINNABAR_ISLAND, $43, NORTH | EAST ; 0x95378
 
-	; height, width
-	db CINNABAR_ISLAND_HEIGHT, CINNABAR_ISLAND_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CinnabarIsland_BlockData), CinnabarIsland_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CinnabarIsland_MapScriptHeader), CinnabarIsland_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CinnabarIsland_MapEventHeader
-
-	; connections
-	db NORTH | EAST
-
 	; NORTH to Route 21
-	db GROUP_ROUTE_21, MAP_ROUTE_21 ; connected map (group, id)
+	map ROUTE_21
 	dw (Route21_BlockData + (ROUTE_21_HEIGHT * ROUTE_21_WIDTH) - (ROUTE_21_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 256) ; strip destination
 	db 10, ROUTE_21_WIDTH ; (connection strip length, connected map width)
@@ -1466,7 +784,7 @@
 	dw ($C801 + ((ROUTE_21_HEIGHT * 6) + (ROUTE_21_HEIGHT * ROUTE_21_WIDTH))) ; window
 
 	; EAST to Route 20
-	db GROUP_ROUTE_20, MAP_ROUTE_20 ; connected map (group, id)
+	map ROUTE_20
 	dw (Route20_BlockData) ; strip pointer
 	dw $c83d ; strip destination
 	db 9, ROUTE_20_WIDTH ; (connection strip length, connected map width)
@@ -1474,27 +792,10 @@
 	dw ($C807 + ROUTE_20_WIDTH) ; window
 ; 0x9539c
 
-Route20_SecondMapHeader: ; 0x9539c
-	; border block
-	db $43
+	map_header_2 Route20, ROUTE_20, $43, WEST | EAST ; 0x9539c
 
-	; height, width
-	db ROUTE_20_HEIGHT, ROUTE_20_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route20_BlockData), Route20_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route20_MapScriptHeader), Route20_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route20_MapEventHeader
-
-	; connections
-	db WEST | EAST
-
 	; WEST to Cinnabar Island
-	db GROUP_CINNABAR_ISLAND, MAP_CINNABAR_ISLAND ; connected map (group, id)
+	map CINNABAR_ISLAND
 	dw (CinnabarIsland_BlockData + CINNABAR_ISLAND_WIDTH - 3) ; strip pointer
 	dw $c86c ; strip destination
 	db 9, CINNABAR_ISLAND_WIDTH ; (connection strip length, connected map width)
@@ -1502,7 +803,7 @@
 	dw ($C807 + 19) ; window
 
 	; EAST to Route 19
-	db GROUP_ROUTE_19, MAP_ROUTE_19 ; connected map (group, id)
+	map ROUTE_19
 	dw (Route19_BlockData + ((ROUTE_19_HEIGHT - 12) * ROUTE_19_WIDTH)) ; strip pointer
 	dw $c821 ; strip destination
 	db 12, ROUTE_19_WIDTH ; (connection strip length, connected map width)
@@ -1510,27 +811,10 @@
 	dw ($C807 + ROUTE_19_WIDTH) ; window
 ; 0x953c0
 
-Route19_SecondMapHeader: ; 0x953c0
-	; border block
-	db $43
+	map_header_2 Route19, ROUTE_19, $43, NORTH | WEST ; 0x953c0
 
-	; height, width
-	db ROUTE_19_HEIGHT, ROUTE_19_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route19_BlockData), Route19_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route19_MapScriptHeader), Route19_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route19_MapEventHeader
-
-	; connections
-	db NORTH | WEST
-
 	; NORTH to Fuchsia City
-	db GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY ; connected map (group, id)
+	map FUCHSIA_CITY
 	dw (FuchsiaCity_BlockData + (FUCHSIA_CITY_HEIGHT * FUCHSIA_CITY_WIDTH) - (FUCHSIA_CITY_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 256) ; strip destination
 	db 13, FUCHSIA_CITY_WIDTH ; (connection strip length, connected map width)
@@ -1538,7 +822,7 @@
 	dw ($C801 + ((FUCHSIA_CITY_HEIGHT * 6) + (FUCHSIA_CITY_HEIGHT * FUCHSIA_CITY_WIDTH))) ; window
 
 	; WEST to Route 20
-	db GROUP_ROUTE_20, MAP_ROUTE_20 ; connected map (group, id)
+	map ROUTE_20
 	dw (Route20_BlockData + ROUTE_20_WIDTH - 3) ; strip pointer
 	dw $c8c0 ; strip destination
 	db 9, ROUTE_20_WIDTH ; (connection strip length, connected map width)
@@ -1546,27 +830,10 @@
 	dw ($C807 + 59) ; window
 ; 0x953e4
 
-FuchsiaCity_SecondMapHeader: ; 0x953e4
-	; border block
-	db $f
+	map_header_2 FuchsiaCity, FUCHSIA_CITY, $f, SOUTH | WEST | EAST ; 0x953e4
 
-	; height, width
-	db FUCHSIA_CITY_HEIGHT, FUCHSIA_CITY_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(FuchsiaCity_BlockData), FuchsiaCity_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(FuchsiaCity_MapScriptHeader), FuchsiaCity_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw FuchsiaCity_MapEventHeader
-
-	; connections
-	db SOUTH | WEST | EAST
-
 	; SOUTH to Route 19
-	db GROUP_ROUTE_19, MAP_ROUTE_19 ; connected map (group, id)
+	map ROUTE_19
 	dw (Route19_BlockData) ; strip pointer
 	dw ($C703 + 256 + ((FUCHSIA_CITY_HEIGHT + 3) * (FUCHSIA_CITY_WIDTH + 6))) ; strip destination
 	db 10, ROUTE_19_WIDTH ; (connection strip length, connected map width)
@@ -1574,7 +841,7 @@
 	dw ($C807 + ROUTE_19_WIDTH) ; window
 
 	; WEST to Route 18
-	db GROUP_ROUTE_18, MAP_ROUTE_18 ; connected map (group, id)
+	map ROUTE_18
 	dw (Route18_BlockData + ROUTE_18_WIDTH - 3) ; strip pointer
 	dw $c904 ; strip destination
 	db 9, ROUTE_18_WIDTH ; (connection strip length, connected map width)
@@ -1582,7 +849,7 @@
 	dw ($C807 + 19) ; window
 
 	; EAST to Route 15
-	db GROUP_ROUTE_15, MAP_ROUTE_15 ; connected map (group, id)
+	map ROUTE_15
 	dw (Route15_BlockData) ; strip pointer
 	dw $c94f ; strip destination
 	db 9, ROUTE_15_WIDTH ; (connection strip length, connected map width)
@@ -1590,27 +857,10 @@
 	dw ($C807 + ROUTE_15_WIDTH) ; window
 ; 0x95414
 
-Route18_SecondMapHeader: ; 0x95414
-	; border block
-	db $43
+	map_header_2 Route18, ROUTE_18, $43, WEST | EAST ; 0x95414
 
-	; height, width
-	db ROUTE_18_HEIGHT, ROUTE_18_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route18_BlockData), Route18_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route18_MapScriptHeader), Route18_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route18_MapEventHeader
-
-	; connections
-	db WEST | EAST
-
 	; WEST to Route 17
-	db GROUP_ROUTE_17, MAP_ROUTE_17 ; connected map (group, id)
+	map ROUTE_17
 	dw (Route17_BlockData + ((ROUTE_17_HEIGHT - 10) * ROUTE_17_WIDTH) + 7) ; strip pointer
 	dw $c800 ; strip destination
 	db 10, ROUTE_17_WIDTH ; (connection strip length, connected map width)
@@ -1618,7 +868,7 @@
 	dw ($C807 + 19) ; window
 
 	; EAST to Fuchsia City
-	db GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY ; connected map (group, id)
+	map FUCHSIA_CITY
 	dw (FuchsiaCity_BlockData + ((FUCHSIA_CITY_HEIGHT - 14) * FUCHSIA_CITY_WIDTH)) ; strip pointer
 	dw $c80d ; strip destination
 	db 14, FUCHSIA_CITY_WIDTH ; (connection strip length, connected map width)
@@ -1626,27 +876,10 @@
 	dw ($C807 + FUCHSIA_CITY_WIDTH) ; window
 ; 0x95438
 
-Route17_SecondMapHeader: ; 0x95438
-	; border block
-	db $43
+	map_header_2 Route17, ROUTE_17, $43, NORTH | EAST ; 0x95438
 
-	; height, width
-	db ROUTE_17_HEIGHT, ROUTE_17_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route17_BlockData), Route17_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route17_MapScriptHeader), Route17_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route17_MapEventHeader
-
-	; connections
-	db NORTH | EAST
-
 	; NORTH to Route 16
-	db GROUP_ROUTE_16, MAP_ROUTE_16 ; connected map (group, id)
+	map ROUTE_16
 	dw (Route16_BlockData + (ROUTE_16_HEIGHT * ROUTE_16_WIDTH) - (ROUTE_16_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 256) ; strip destination
 	db 10, ROUTE_16_WIDTH ; (connection strip length, connected map width)
@@ -1654,7 +887,7 @@
 	dw ($C801 + ((ROUTE_16_HEIGHT * 6) + (ROUTE_16_HEIGHT * ROUTE_16_WIDTH))) ; window
 
 	; EAST to Route 18
-	db GROUP_ROUTE_18, MAP_ROUTE_18 ; connected map (group, id)
+	map ROUTE_18
 	dw (Route18_BlockData) ; strip pointer
 	dw $ca9d ; strip destination
 	db 9, ROUTE_18_WIDTH ; (connection strip length, connected map width)
@@ -1662,27 +895,10 @@
 	dw ($C807 + ROUTE_18_WIDTH) ; window
 ; 0x9545c
 
-Route16_SecondMapHeader: ; 0x9545c
-	; border block
-	db $f
+	map_header_2 Route16, ROUTE_16, $f, SOUTH | EAST ; 0x9545c
 
-	; height, width
-	db ROUTE_16_HEIGHT, ROUTE_16_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route16_BlockData), Route16_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route16_MapScriptHeader), Route16_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route16_MapEventHeader
-
-	; connections
-	db SOUTH | EAST
-
 	; SOUTH to Route 17
-	db GROUP_ROUTE_17, MAP_ROUTE_17 ; connected map (group, id)
+	map ROUTE_17
 	dw (Route17_BlockData) ; strip pointer
 	dw ($C703 + 256 + ((ROUTE_16_HEIGHT + 3) * (ROUTE_16_WIDTH + 6))) ; strip destination
 	db 10, ROUTE_17_WIDTH ; (connection strip length, connected map width)
@@ -1690,7 +906,7 @@
 	dw ($C807 + ROUTE_17_WIDTH) ; window
 
 	; EAST to Celadon City
-	db GROUP_CELADON_CITY, MAP_CELADON_CITY ; connected map (group, id)
+	map CELADON_CITY
 	dw (CeladonCity_BlockData + ((CELADON_CITY_HEIGHT - 12) * CELADON_CITY_WIDTH)) ; strip pointer
 	dw $c80d ; strip destination
 	db 12, CELADON_CITY_WIDTH ; (connection strip length, connected map width)
@@ -1698,27 +914,10 @@
 	dw ($C807 + CELADON_CITY_WIDTH) ; window
 ; 0x95480
 
-CeladonCity_SecondMapHeader: ; 0x95480
-	; border block
-	db $f
+	map_header_2 CeladonCity, CELADON_CITY, $f, WEST | EAST ; 0x95480
 
-	; height, width
-	db CELADON_CITY_HEIGHT, CELADON_CITY_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CeladonCity_BlockData), CeladonCity_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeladonCity_MapScriptHeader), CeladonCity_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeladonCity_MapEventHeader
-
-	; connections
-	db WEST | EAST
-
 	; WEST to Route 16
-	db GROUP_ROUTE_16, MAP_ROUTE_16 ; connected map (group, id)
+	map ROUTE_16
 	dw (Route16_BlockData + ROUTE_16_WIDTH - 3) ; strip pointer
 	dw $c938 ; strip destination
 	db 9, ROUTE_16_WIDTH ; (connection strip length, connected map width)
@@ -1726,7 +925,7 @@
 	dw ($C807 + 19) ; window
 
 	; EAST to Route 7
-	db GROUP_ROUTE_7, MAP_ROUTE_7 ; connected map (group, id)
+	map ROUTE_7
 	dw (Route7_BlockData) ; strip pointer
 	dw $c8e7 ; strip destination
 	db 9, ROUTE_7_WIDTH ; (connection strip length, connected map width)
@@ -1734,27 +933,10 @@
 	dw ($C807 + ROUTE_7_WIDTH) ; window
 ; 0x954a4
 
-Route7_SecondMapHeader: ; 0x954a4
-	; border block
-	db $f
+	map_header_2 Route7, ROUTE_7, $f, WEST | EAST ; 0x954a4
 
-	; height, width
-	db ROUTE_7_HEIGHT, ROUTE_7_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route7_BlockData), Route7_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route7_MapScriptHeader), Route7_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route7_MapEventHeader
-
-	; connections
-	db WEST | EAST
-
 	; WEST to Celadon City
-	db GROUP_CELADON_CITY, MAP_CELADON_CITY ; connected map (group, id)
+	map CELADON_CITY
 	dw (CeladonCity_BlockData + 21 + (CELADON_CITY_HEIGHT * 2)) ; strip pointer
 	dw $c800 ; strip destination
 	db 15, CELADON_CITY_WIDTH ; (connection strip length, connected map width)
@@ -1762,7 +944,7 @@
 	dw ($C807 + 39) ; window
 
 	; EAST to Saffron City
-	db GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY ; connected map (group, id)
+	map SAFFRON_CITY
 	dw (SaffronCity_BlockData + ((SAFFRON_CITY_HEIGHT - 12) * SAFFRON_CITY_WIDTH)) ; strip pointer
 	dw $c80d ; strip destination
 	db 12, SAFFRON_CITY_WIDTH ; (connection strip length, connected map width)
@@ -1770,27 +952,10 @@
 	dw ($C807 + SAFFRON_CITY_WIDTH) ; window
 ; 0x954c8
 
-Route15_SecondMapHeader: ; 0x954c8
-	; border block
-	db $f
+	map_header_2 Route15, ROUTE_15, $f, WEST | EAST ; 0x954c8
 
-	; height, width
-	db ROUTE_15_HEIGHT, ROUTE_15_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route15_BlockData), Route15_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route15_MapScriptHeader), Route15_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route15_MapEventHeader
-
-	; connections
-	db WEST | EAST
-
 	; WEST to Fuchsia City
-	db GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY ; connected map (group, id)
+	map FUCHSIA_CITY
 	dw (FuchsiaCity_BlockData + (((FUCHSIA_CITY_HEIGHT - ROUTE_15_HEIGHT) * FUCHSIA_CITY_WIDTH) - (FUCHSIA_CITY_WIDTH * 3) + (FUCHSIA_CITY_WIDTH - 1) - 2)) ; strip pointer
 	dw $c800 ; strip destination
 	db 12, FUCHSIA_CITY_WIDTH ; (connection strip length, connected map width)
@@ -1798,7 +963,7 @@
 	dw ($C807 + 39) ; window
 
 	; EAST to Route 14
-	db GROUP_ROUTE_14, MAP_ROUTE_14 ; connected map (group, id)
+	map ROUTE_14
 	dw (Route14_BlockData + ((ROUTE_14_HEIGHT - 12) * ROUTE_14_WIDTH)) ; strip pointer
 	dw $c817 ; strip destination
 	db 12, ROUTE_14_WIDTH ; (connection strip length, connected map width)
@@ -1806,27 +971,10 @@
 	dw ($C807 + ROUTE_14_WIDTH) ; window
 ; 0x954ec
 
-Route14_SecondMapHeader: ; 0x954ec
-	; border block
-	db $43
+	map_header_2 Route14, ROUTE_14, $43, NORTH | WEST ; 0x954ec
 
-	; height, width
-	db ROUTE_14_HEIGHT, ROUTE_14_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route14_BlockData), Route14_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route14_MapScriptHeader), Route14_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route14_MapEventHeader
-
-	; connections
-	db NORTH | WEST
-
 	; NORTH to Route 13
-	db GROUP_ROUTE_13, MAP_ROUTE_13 ; connected map (group, id)
+	map ROUTE_13
 	dw (Route13_BlockData + (ROUTE_13_HEIGHT * ROUTE_13_WIDTH) - (ROUTE_13_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 256) ; strip destination
 	db 13, ROUTE_13_WIDTH ; (connection strip length, connected map width)
@@ -1834,7 +982,7 @@
 	dw ($C801 + ((ROUTE_13_HEIGHT * 6) + (ROUTE_13_HEIGHT * ROUTE_13_WIDTH))) ; window
 
 	; WEST to Route 15
-	db GROUP_ROUTE_15, MAP_ROUTE_15 ; connected map (group, id)
+	map ROUTE_15
 	dw (Route15_BlockData + ROUTE_15_WIDTH - 3) ; strip pointer
 	dw $c8c0 ; strip destination
 	db 9, ROUTE_15_WIDTH ; (connection strip length, connected map width)
@@ -1842,27 +990,10 @@
 	dw ($C807 + 39) ; window
 ; 0x95510
 
-Route13_SecondMapHeader: ; 0x95510
-	; border block
-	db $43
+	map_header_2 Route13, ROUTE_13, $43, NORTH | SOUTH ; 0x95510
 
-	; height, width
-	db ROUTE_13_HEIGHT, ROUTE_13_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route13_BlockData), Route13_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route13_MapScriptHeader), Route13_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route13_MapEventHeader
-
-	; connections
-	db NORTH | SOUTH
-
 	; NORTH to Route 12
-	db GROUP_ROUTE_12, MAP_ROUTE_12 ; connected map (group, id)
+	map ROUTE_12
 	dw (Route12_BlockData + (ROUTE_12_HEIGHT * ROUTE_12_WIDTH) - (ROUTE_12_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 276) ; strip destination
 	db 10, ROUTE_12_WIDTH ; (connection strip length, connected map width)
@@ -1870,7 +1001,7 @@
 	dw ($C801 + ((ROUTE_12_HEIGHT * 6) + (ROUTE_12_HEIGHT * ROUTE_12_WIDTH))) ; window
 
 	; SOUTH to Route 14
-	db GROUP_ROUTE_14, MAP_ROUTE_14 ; connected map (group, id)
+	map ROUTE_14
 	dw (Route14_BlockData) ; strip pointer
 	dw ($C703 + 256 + ((ROUTE_13_HEIGHT + 3) * (ROUTE_13_WIDTH + 6))) ; strip destination
 	db 10, ROUTE_14_WIDTH ; (connection strip length, connected map width)
@@ -1878,27 +1009,10 @@
 	dw ($C807 + ROUTE_14_WIDTH) ; window
 ; 0x95534
 
-Route12_SecondMapHeader: ; 0x95534
-	; border block
-	db $43
+	map_header_2 Route12, ROUTE_12, $43, NORTH | SOUTH | WEST ; 0x95534
 
-	; height, width
-	db ROUTE_12_HEIGHT, ROUTE_12_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route12_BlockData), Route12_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route12_MapScriptHeader), Route12_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route12_MapEventHeader
-
-	; connections
-	db NORTH | SOUTH | WEST
-
 	; NORTH to Lavender Town
-	db GROUP_LAVENDER_TOWN, MAP_LAVENDER_TOWN ; connected map (group, id)
+	map LAVENDER_TOWN
 	dw (LavenderTown_BlockData + (LAVENDER_TOWN_HEIGHT * LAVENDER_TOWN_WIDTH) - (LAVENDER_TOWN_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 256) ; strip destination
 	db 10, LAVENDER_TOWN_WIDTH ; (connection strip length, connected map width)
@@ -1906,7 +1020,7 @@
 	dw ($C801 + ((LAVENDER_TOWN_HEIGHT * 6) + (LAVENDER_TOWN_HEIGHT * LAVENDER_TOWN_WIDTH))) ; window
 
 	; SOUTH to Route 13
-	db GROUP_ROUTE_13, MAP_ROUTE_13 ; connected map (group, id)
+	map ROUTE_13
 	dw (Route13_BlockData + (((40 - 13 + ROUTE_12_WIDTH) / 2) - 1)) ; strip pointer
 	dw ($C703 + 253 + ((ROUTE_12_HEIGHT + 3) * (ROUTE_12_WIDTH + 6))) ; strip destination
 	db 13, ROUTE_13_WIDTH ; (connection strip length, connected map width)
@@ -1914,7 +1028,7 @@
 	dw ($C807 + ROUTE_13_WIDTH) ; window
 
 	; WEST to Route 11
-	db GROUP_ROUTE_11, MAP_ROUTE_11 ; connected map (group, id)
+	map ROUTE_11
 	dw (Route11_BlockData + ROUTE_11_WIDTH - 3) ; strip pointer
 	dw $c8c0 ; strip destination
 	db 9, ROUTE_11_WIDTH ; (connection strip length, connected map width)
@@ -1922,27 +1036,10 @@
 	dw ($C807 + 39) ; window
 ; 0x95564
 
-Route11_SecondMapHeader: ; 0x95564
-	; border block
-	db $f
+	map_header_2 Route11, ROUTE_11, $f, WEST | EAST ; 0x95564
 
-	; height, width
-	db ROUTE_11_HEIGHT, ROUTE_11_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route11_BlockData), Route11_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route11_MapScriptHeader), Route11_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route11_MapEventHeader
-
-	; connections
-	db WEST | EAST
-
 	; WEST to Vermilion City
-	db GROUP_VERMILION_CITY, MAP_VERMILION_CITY ; connected map (group, id)
+	map VERMILION_CITY
 	dw (VermilionCity_BlockData + VERMILION_CITY_WIDTH - 3) ; strip pointer
 	dw $c84e ; strip destination
 	db 12, VERMILION_CITY_WIDTH ; (connection strip length, connected map width)
@@ -1950,7 +1047,7 @@
 	dw ($C807 + 39) ; window
 
 	; EAST to Route 12
-	db GROUP_ROUTE_12, MAP_ROUTE_12 ; connected map (group, id)
+	map ROUTE_12
 	dw (Route12_BlockData + 100 - (ROUTE_12_WIDTH * 4)) ; strip pointer
 	dw $c817 ; strip destination
 	db 15, ROUTE_12_WIDTH ; (connection strip length, connected map width)
@@ -1958,27 +1055,10 @@
 	dw ($C807 + ROUTE_12_WIDTH) ; window
 ; 0x95588
 
-LavenderTown_SecondMapHeader: ; 0x95588
-	; border block
-	db $2c
+	map_header_2 LavenderTown, LAVENDER_TOWN, $2c, NORTH | SOUTH | WEST ; 0x95588
 
-	; height, width
-	db LAVENDER_TOWN_HEIGHT, LAVENDER_TOWN_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(LavenderTown_BlockData), LavenderTown_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(LavenderTown_MapScriptHeader), LavenderTown_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw LavenderTown_MapEventHeader
-
-	; connections
-	db NORTH | SOUTH | WEST
-
 	; NORTH to Route 10 South
-	db GROUP_ROUTE_10_SOUTH, MAP_ROUTE_10_SOUTH ; connected map (group, id)
+	map ROUTE_10_SOUTH
 	dw (Route10South_BlockData + (ROUTE_10_SOUTH_HEIGHT * ROUTE_10_SOUTH_WIDTH) - (ROUTE_10_SOUTH_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 256) ; strip destination
 	db 10, ROUTE_10_SOUTH_WIDTH ; (connection strip length, connected map width)
@@ -1986,7 +1066,7 @@
 	dw ($C801 + ((ROUTE_10_SOUTH_HEIGHT * 6) + (ROUTE_10_SOUTH_HEIGHT * ROUTE_10_SOUTH_WIDTH))) ; window
 
 	; SOUTH to Route 12
-	db GROUP_ROUTE_12, MAP_ROUTE_12 ; connected map (group, id)
+	map ROUTE_12
 	dw (Route12_BlockData) ; strip pointer
 	dw ($C703 + 256 + ((LAVENDER_TOWN_HEIGHT + 3) * (LAVENDER_TOWN_WIDTH + 6))) ; strip destination
 	db 10, ROUTE_12_WIDTH ; (connection strip length, connected map width)
@@ -1994,7 +1074,7 @@
 	dw ($C807 + ROUTE_12_WIDTH) ; window
 
 	; WEST to Route 8
-	db GROUP_ROUTE_8, MAP_ROUTE_8 ; connected map (group, id)
+	map ROUTE_8
 	dw (Route8_BlockData + ROUTE_8_WIDTH - 3) ; strip pointer
 	dw $c830 ; strip destination
 	db 9, ROUTE_8_WIDTH ; (connection strip length, connected map width)
@@ -2002,27 +1082,10 @@
 	dw ($C807 + 39) ; window
 ; 0x955b8
 
-VermilionCity_SecondMapHeader: ; 0x955b8
-	; border block
-	db $43
+	map_header_2 VermilionCity, VERMILION_CITY, $43, NORTH | EAST ; 0x955b8
 
-	; height, width
-	db VERMILION_CITY_HEIGHT, VERMILION_CITY_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(VermilionCity_BlockData), VermilionCity_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(VermilionCity_MapScriptHeader), VermilionCity_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw VermilionCity_MapEventHeader
-
-	; connections
-	db NORTH | EAST
-
 	; NORTH to Route 6
-	db GROUP_ROUTE_6, MAP_ROUTE_6 ; connected map (group, id)
+	map ROUTE_6
 	dw (Route6_BlockData + (ROUTE_6_HEIGHT * ROUTE_6_WIDTH) - (ROUTE_6_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 261) ; strip destination
 	db 10, ROUTE_6_WIDTH ; (connection strip length, connected map width)
@@ -2030,7 +1093,7 @@
 	dw ($C801 + ((ROUTE_6_HEIGHT * 6) + (ROUTE_6_HEIGHT * ROUTE_6_WIDTH))) ; window
 
 	; EAST to Route 11
-	db GROUP_ROUTE_11, MAP_ROUTE_11 ; connected map (group, id)
+	map ROUTE_11
 	dw (Route11_BlockData) ; strip pointer
 	dw $c865 ; strip destination
 	db 9, ROUTE_11_WIDTH ; (connection strip length, connected map width)
@@ -2038,27 +1101,10 @@
 	dw ($C807 + ROUTE_11_WIDTH) ; window
 ; 0x955dc
 
-Route6_SecondMapHeader: ; 0x955dc
-	; border block
-	db $f
+	map_header_2 Route6, ROUTE_6, $f, NORTH | SOUTH ; 0x955dc
 
-	; height, width
-	db ROUTE_6_HEIGHT, ROUTE_6_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route6_BlockData), Route6_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route6_MapScriptHeader), Route6_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route6_MapEventHeader
-
-	; connections
-	db NORTH | SOUTH
-
 	; NORTH to Saffron City
-	db GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY ; connected map (group, id)
+	map SAFFRON_CITY
 	dw (SaffronCity_BlockData + SAFFRON_CITY_WIDTH + 10 + (16 * SAFFRON_CITY_HEIGHT) - 16) ; strip pointer
 	dw ($C703 + 253) ; strip destination
 	db 16, SAFFRON_CITY_WIDTH ; (connection strip length, connected map width)
@@ -2066,7 +1112,7 @@
 	dw ($C801 + ((SAFFRON_CITY_HEIGHT * 6) + (SAFFRON_CITY_HEIGHT * SAFFRON_CITY_WIDTH))) ; window
 
 	; SOUTH to Vermilion City
-	db GROUP_VERMILION_CITY, MAP_VERMILION_CITY ; connected map (group, id)
+	map VERMILION_CITY
 	dw (VermilionCity_BlockData + ((10 - 16 + ROUTE_6_WIDTH) / 2)) ; strip pointer
 	dw ($C703 + 253 + ((ROUTE_6_HEIGHT + 3) * (ROUTE_6_WIDTH + 6))) ; strip destination
 	db 16, VERMILION_CITY_WIDTH ; (connection strip length, connected map width)
@@ -2074,27 +1120,10 @@
 	dw ($C807 + VERMILION_CITY_WIDTH) ; window
 ; 0x95600
 
-SaffronCity_SecondMapHeader: ; 0x95600
-	; border block
-	db $f
+	map_header_2 SaffronCity, SAFFRON_CITY, $f, NORTH | SOUTH | WEST | EAST ; 0x95600
 
-	; height, width
-	db SAFFRON_CITY_HEIGHT, SAFFRON_CITY_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SaffronCity_BlockData), SaffronCity_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(SaffronCity_MapScriptHeader), SaffronCity_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw SaffronCity_MapEventHeader
-
-	; connections
-	db NORTH | SOUTH | WEST | EAST
-
 	; NORTH to Route 5
-	db GROUP_ROUTE_5, MAP_ROUTE_5 ; connected map (group, id)
+	map ROUTE_5
 	dw (Route5_BlockData + (ROUTE_5_HEIGHT * ROUTE_5_WIDTH) - (ROUTE_5_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 261) ; strip destination
 	db 10, ROUTE_5_WIDTH ; (connection strip length, connected map width)
@@ -2102,7 +1131,7 @@
 	dw ($C801 + ((ROUTE_5_HEIGHT * 6) + (ROUTE_5_HEIGHT * ROUTE_5_WIDTH))) ; window
 
 	; SOUTH to Route 6
-	db GROUP_ROUTE_6, MAP_ROUTE_6 ; connected map (group, id)
+	map ROUTE_6
 	dw (Route6_BlockData) ; strip pointer
 	dw ($C703 + 261 + ((SAFFRON_CITY_HEIGHT + 3) * (SAFFRON_CITY_WIDTH + 6))) ; strip destination
 	db 10, ROUTE_6_WIDTH ; (connection strip length, connected map width)
@@ -2110,7 +1139,7 @@
 	dw ($C807 + ROUTE_6_WIDTH) ; window
 
 	; WEST to Route 7
-	db GROUP_ROUTE_7, MAP_ROUTE_7 ; connected map (group, id)
+	map ROUTE_7
 	dw (Route7_BlockData + ROUTE_7_WIDTH - 3) ; strip pointer
 	dw $c938 ; strip destination
 	db 9, ROUTE_7_WIDTH ; (connection strip length, connected map width)
@@ -2118,7 +1147,7 @@
 	dw ($C807 + 19) ; window
 
 	; EAST to Route 8
-	db GROUP_ROUTE_8, MAP_ROUTE_8 ; connected map (group, id)
+	map ROUTE_8
 	dw (Route8_BlockData) ; strip pointer
 	dw $c94f ; strip destination
 	db 9, ROUTE_8_WIDTH ; (connection strip length, connected map width)
@@ -2126,27 +1155,10 @@
 	dw ($C807 + ROUTE_8_WIDTH) ; window
 ; 0x9563c
 
-Route5_SecondMapHeader: ; 0x9563c
-	; border block
-	db $f
+	map_header_2 Route5, ROUTE_5, $f, NORTH | SOUTH ; 0x9563c
 
-	; height, width
-	db ROUTE_5_HEIGHT, ROUTE_5_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route5_BlockData), Route5_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route5_MapScriptHeader), Route5_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route5_MapEventHeader
-
-	; connections
-	db NORTH | SOUTH
-
 	; NORTH to Cerulean City
-	db GROUP_CERULEAN_CITY, MAP_CERULEAN_CITY ; connected map (group, id)
+	map CERULEAN_CITY
 	dw (CeruleanCity_BlockData + CERULEAN_CITY_WIDTH + 10 + (16 * CERULEAN_CITY_HEIGHT) - 16) ; strip pointer
 	dw ($C703 + 253) ; strip destination
 	db 16, CERULEAN_CITY_WIDTH ; (connection strip length, connected map width)
@@ -2154,7 +1166,7 @@
 	dw ($C801 + ((CERULEAN_CITY_HEIGHT * 6) + (CERULEAN_CITY_HEIGHT * CERULEAN_CITY_WIDTH))) ; window
 
 	; SOUTH to Saffron City
-	db GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY ; connected map (group, id)
+	map SAFFRON_CITY
 	dw (SaffronCity_BlockData + ((10 - 16 + ROUTE_5_WIDTH) / 2)) ; strip pointer
 	dw ($C703 + 253 + ((ROUTE_5_HEIGHT + 3) * (ROUTE_5_WIDTH + 6))) ; strip destination
 	db 16, SAFFRON_CITY_WIDTH ; (connection strip length, connected map width)
@@ -2162,27 +1174,10 @@
 	dw ($C807 + SAFFRON_CITY_WIDTH) ; window
 ; 0x95660
 
-CeruleanCity_SecondMapHeader: ; 0x95660
-	; border block
-	db $f
+	map_header_2 CeruleanCity, CERULEAN_CITY, $f, NORTH | SOUTH | WEST | EAST ; 0x95660
 
-	; height, width
-	db CERULEAN_CITY_HEIGHT, CERULEAN_CITY_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CeruleanCity_BlockData), CeruleanCity_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeruleanCity_MapScriptHeader), CeruleanCity_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeruleanCity_MapEventHeader
-
-	; connections
-	db NORTH | SOUTH | WEST | EAST
-
 	; NORTH to Route 24
-	db GROUP_ROUTE_24, MAP_ROUTE_24 ; connected map (group, id)
+	map ROUTE_24
 	dw (Route24_BlockData + (ROUTE_24_HEIGHT * ROUTE_24_WIDTH) - (ROUTE_24_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 262) ; strip destination
 	db 10, ROUTE_24_WIDTH ; (connection strip length, connected map width)
@@ -2190,7 +1185,7 @@
 	dw ($C801 + ((ROUTE_24_HEIGHT * 6) + (ROUTE_24_HEIGHT * ROUTE_24_WIDTH))) ; window
 
 	; SOUTH to Route 5
-	db GROUP_ROUTE_5, MAP_ROUTE_5 ; connected map (group, id)
+	map ROUTE_5
 	dw (Route5_BlockData) ; strip pointer
 	dw ($C703 + 261 + ((CERULEAN_CITY_HEIGHT + 3) * (CERULEAN_CITY_WIDTH + 6))) ; strip destination
 	db 10, ROUTE_5_WIDTH ; (connection strip length, connected map width)
@@ -2198,7 +1193,7 @@
 	dw ($C807 + ROUTE_5_WIDTH) ; window
 
 	; WEST to Route 4
-	db GROUP_ROUTE_4, MAP_ROUTE_4 ; connected map (group, id)
+	map ROUTE_4
 	dw (Route4_BlockData + ROUTE_4_WIDTH - 3) ; strip pointer
 	dw $c8d0 ; strip destination
 	db 9, ROUTE_4_WIDTH ; (connection strip length, connected map width)
@@ -2206,7 +1201,7 @@
 	dw ($C807 + 39) ; window
 
 	; EAST to Route 9
-	db GROUP_ROUTE_9, MAP_ROUTE_9 ; connected map (group, id)
+	map ROUTE_9
 	dw (Route9_BlockData) ; strip pointer
 	dw $c94f ; strip destination
 	db 9, ROUTE_9_WIDTH ; (connection strip length, connected map width)
@@ -2214,27 +1209,10 @@
 	dw ($C807 + ROUTE_9_WIDTH) ; window
 ; 0x9569c
 
-Route9_SecondMapHeader: ; 0x9569c
-	; border block
-	db $2c
+	map_header_2 Route9, ROUTE_9, $2c, SOUTH | WEST ; 0x9569c
 
-	; height, width
-	db ROUTE_9_HEIGHT, ROUTE_9_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route9_BlockData), Route9_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route9_MapScriptHeader), Route9_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route9_MapEventHeader
-
-	; connections
-	db SOUTH | WEST
-
 	; SOUTH to Route 10 North
-	db GROUP_ROUTE_10_NORTH, MAP_ROUTE_10_NORTH ; connected map (group, id)
+	map ROUTE_10_NORTH
 	dw (Route10North_BlockData) ; strip pointer
 	dw ($C703 + 276 + ((ROUTE_9_HEIGHT + 3) * (ROUTE_9_WIDTH + 6))) ; strip destination
 	db 10, ROUTE_10_NORTH_WIDTH ; (connection strip length, connected map width)
@@ -2242,7 +1220,7 @@
 	dw ($C807 + ROUTE_10_NORTH_WIDTH) ; window
 
 	; WEST to Cerulean City
-	db GROUP_CERULEAN_CITY, MAP_CERULEAN_CITY ; connected map (group, id)
+	map CERULEAN_CITY
 	dw (CeruleanCity_BlockData + (((CERULEAN_CITY_HEIGHT - ROUTE_9_HEIGHT) * CERULEAN_CITY_WIDTH) - (CERULEAN_CITY_WIDTH * 3) + (CERULEAN_CITY_WIDTH - 1) - 2)) ; strip pointer
 	dw $c800 ; strip destination
 	db 12, CERULEAN_CITY_WIDTH ; (connection strip length, connected map width)
@@ -2250,27 +1228,10 @@
 	dw ($C807 + 39) ; window
 ; 0x956c0
 
-Route24_SecondMapHeader: ; 0x956c0
-	; border block
-	db $2c
+	map_header_2 Route24, ROUTE_24, $2c, NORTH | SOUTH ; 0x956c0
 
-	; height, width
-	db ROUTE_24_HEIGHT, ROUTE_24_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route24_BlockData), Route24_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route24_MapScriptHeader), Route24_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route24_MapEventHeader
-
-	; connections
-	db NORTH | SOUTH
-
 	; NORTH to Route 25
-	db GROUP_ROUTE_25, MAP_ROUTE_25 ; connected map (group, id)
+	map ROUTE_25
 	dw (Route25_BlockData + (ROUTE_25_HEIGHT * ROUTE_25_WIDTH) - (ROUTE_25_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 256) ; strip destination
 	db 13, ROUTE_25_WIDTH ; (connection strip length, connected map width)
@@ -2278,7 +1239,7 @@
 	dw ($C801 + ((ROUTE_25_HEIGHT * 6) + (ROUTE_25_HEIGHT * ROUTE_25_WIDTH))) ; window
 
 	; SOUTH to Cerulean City
-	db GROUP_CERULEAN_CITY, MAP_CERULEAN_CITY ; connected map (group, id)
+	map CERULEAN_CITY
 	dw (CeruleanCity_BlockData + ((12 - 16 + ROUTE_24_WIDTH) / 2)) ; strip pointer
 	dw ($C703 + 253 + ((ROUTE_24_HEIGHT + 3) * (ROUTE_24_WIDTH + 6))) ; strip destination
 	db 16, CERULEAN_CITY_WIDTH ; (connection strip length, connected map width)
@@ -2286,27 +1247,10 @@
 	dw ($C807 + CERULEAN_CITY_WIDTH) ; window
 ; 0x956e4
 
-Route25_SecondMapHeader: ; 0x956e4
-	; border block
-	db $2c
+	map_header_2 Route25, ROUTE_25, $2c, SOUTH ; 0x956e4
 
-	; height, width
-	db ROUTE_25_HEIGHT, ROUTE_25_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route25_BlockData), Route25_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route25_MapScriptHeader), Route25_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route25_MapEventHeader
-
-	; connections
-	db SOUTH
-
 	; SOUTH to Route 24
-	db GROUP_ROUTE_24, MAP_ROUTE_24 ; connected map (group, id)
+	map ROUTE_24
 	dw (Route24_BlockData) ; strip pointer
 	dw ($C703 + 256 + ((ROUTE_25_HEIGHT + 3) * (ROUTE_25_WIDTH + 6))) ; strip destination
 	db 10, ROUTE_24_WIDTH ; (connection strip length, connected map width)
@@ -2314,27 +1258,10 @@
 	dw ($C807 + ROUTE_24_WIDTH) ; window
 ; 0x956fc
 
-Route3_SecondMapHeader: ; 0x956fc
-	; border block
-	db $2c
+	map_header_2 Route3, ROUTE_3, $2c, WEST | EAST ; 0x956fc
 
-	; height, width
-	db ROUTE_3_HEIGHT, ROUTE_3_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route3_BlockData), Route3_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route3_MapScriptHeader), Route3_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route3_MapEventHeader
-
-	; connections
-	db WEST | EAST
-
 	; WEST to Pewter City
-	db GROUP_PEWTER_CITY, MAP_PEWTER_CITY ; connected map (group, id)
+	map PEWTER_CITY
 	dw (PewterCity_BlockData + 21 + (PEWTER_CITY_HEIGHT * 2)) ; strip pointer
 	dw $c800 ; strip destination
 	db 15, PEWTER_CITY_WIDTH ; (connection strip length, connected map width)
@@ -2342,7 +1269,7 @@
 	dw ($C807 + 39) ; window
 
 	; EAST to Route 4
-	db GROUP_ROUTE_4, MAP_ROUTE_4 ; connected map (group, id)
+	map ROUTE_4
 	dw (Route4_BlockData) ; strip pointer
 	dw $c88d ; strip destination
 	db 9, ROUTE_4_WIDTH ; (connection strip length, connected map width)
@@ -2350,27 +1277,10 @@
 	dw ($C807 + ROUTE_4_WIDTH) ; window
 ; 0x95720
 
-Route4_SecondMapHeader: ; 0x95720
-	; border block
-	db $2c
+	map_header_2 Route4, ROUTE_4, $2c, WEST | EAST ; 0x95720
 
-	; height, width
-	db ROUTE_4_HEIGHT, ROUTE_4_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route4_BlockData), Route4_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route4_MapScriptHeader), Route4_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route4_MapEventHeader
-
-	; connections
-	db WEST | EAST
-
 	; WEST to Route 3
-	db GROUP_ROUTE_3, MAP_ROUTE_3 ; connected map (group, id)
+	map ROUTE_3
 	dw (Route3_BlockData + ROUTE_3_WIDTH - 3) ; strip pointer
 	dw $c84e ; strip destination
 	db 9, ROUTE_3_WIDTH ; (connection strip length, connected map width)
@@ -2378,7 +1288,7 @@
 	dw ($C807 + 59) ; window
 
 	; EAST to Cerulean City
-	db GROUP_CERULEAN_CITY, MAP_CERULEAN_CITY ; connected map (group, id)
+	map CERULEAN_CITY
 	dw (CeruleanCity_BlockData + ((100 - (CERULEAN_CITY_WIDTH * 4)) * 2)) ; strip pointer
 	dw $c817 ; strip destination
 	db 15, CERULEAN_CITY_WIDTH ; (connection strip length, connected map width)
@@ -2386,27 +1296,10 @@
 	dw ($C807 + CERULEAN_CITY_WIDTH) ; window
 ; 0x95744
 
-Route8_SecondMapHeader: ; 0x95744
-	; border block
-	db $2c
+	map_header_2 Route8, ROUTE_8, $2c, WEST | EAST ; 0x95744
 
-	; height, width
-	db ROUTE_8_HEIGHT, ROUTE_8_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route8_BlockData), Route8_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route8_MapScriptHeader), Route8_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route8_MapEventHeader
-
-	; connections
-	db WEST | EAST
-
 	; WEST to Saffron City
-	db GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY ; connected map (group, id)
+	map SAFFRON_CITY
 	dw (SaffronCity_BlockData + (((SAFFRON_CITY_HEIGHT - ROUTE_8_HEIGHT) * SAFFRON_CITY_WIDTH) - (SAFFRON_CITY_WIDTH * 3) + (SAFFRON_CITY_WIDTH - 1) - 2)) ; strip pointer
 	dw $c800 ; strip destination
 	db 12, SAFFRON_CITY_WIDTH ; (connection strip length, connected map width)
@@ -2414,7 +1307,7 @@
 	dw ($C807 + 39) ; window
 
 	; EAST to Lavender Town
-	db GROUP_LAVENDER_TOWN, MAP_LAVENDER_TOWN ; connected map (group, id)
+	map LAVENDER_TOWN
 	dw (LavenderTown_BlockData) ; strip pointer
 	dw $c865 ; strip destination
 	db 9, LAVENDER_TOWN_WIDTH ; (connection strip length, connected map width)
@@ -2422,27 +1315,10 @@
 	dw ($C807 + LAVENDER_TOWN_WIDTH) ; window
 ; 0x95768
 
-Route10North_SecondMapHeader: ; 0x95768
-	; border block
-	db $2c
+	map_header_2 Route10North, ROUTE_10_NORTH, $2c, NORTH | SOUTH ; 0x95768
 
-	; height, width
-	db ROUTE_10_NORTH_HEIGHT, ROUTE_10_NORTH_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route10North_BlockData), Route10North_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route10North_MapScriptHeader), Route10North_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route10North_MapEventHeader
-
-	; connections
-	db NORTH | SOUTH
-
 	; NORTH to Route 9
-	db GROUP_ROUTE_9, MAP_ROUTE_9 ; connected map (group, id)
+	map ROUTE_9
 	dw (Route9_BlockData + ((ROUTE_9_HEIGHT - 3) * ROUTE_9_WIDTH) + 17) ; strip pointer
 	dw ($C703 + 253) ; strip destination
 	db 13, ROUTE_9_WIDTH ; (connection strip length, connected map width)
@@ -2450,7 +1326,7 @@
 	dw ($C801 + ((ROUTE_9_HEIGHT * 6) + (ROUTE_9_HEIGHT * ROUTE_9_WIDTH))) ; window
 
 	; SOUTH to Route 10 South
-	db GROUP_ROUTE_10_SOUTH, MAP_ROUTE_10_SOUTH ; connected map (group, id)
+	map ROUTE_10_SOUTH
 	dw (Route10South_BlockData) ; strip pointer
 	dw ($C703 + 256 + ((ROUTE_10_NORTH_HEIGHT + 3) * (ROUTE_10_NORTH_WIDTH + 6))) ; strip destination
 	db 10, ROUTE_10_SOUTH_WIDTH ; (connection strip length, connected map width)
@@ -2458,27 +1334,10 @@
 	dw ($C807 + ROUTE_10_SOUTH_WIDTH) ; window
 ; 0x9578c
 
-Route10South_SecondMapHeader: ; 0x9578c
-	; border block
-	db $2c
+	map_header_2 Route10South, ROUTE_10_SOUTH, $2c, NORTH | SOUTH ; 0x9578c
 
-	; height, width
-	db ROUTE_10_SOUTH_HEIGHT, ROUTE_10_SOUTH_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route10South_BlockData), Route10South_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route10South_MapScriptHeader), Route10South_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route10South_MapEventHeader
-
-	; connections
-	db NORTH | SOUTH
-
 	; NORTH to Route 10 North
-	db GROUP_ROUTE_10_NORTH, MAP_ROUTE_10_NORTH ; connected map (group, id)
+	map ROUTE_10_NORTH
 	dw (Route10North_BlockData + (ROUTE_10_NORTH_HEIGHT * ROUTE_10_NORTH_WIDTH) - (ROUTE_10_NORTH_WIDTH * 3)) ; strip pointer
 	dw ($C703 + 256) ; strip destination
 	db 10, ROUTE_10_NORTH_WIDTH ; (connection strip length, connected map width)
@@ -2486,7 +1345,7 @@
 	dw ($C801 + ((ROUTE_10_NORTH_HEIGHT * 6) + (ROUTE_10_NORTH_HEIGHT * ROUTE_10_NORTH_WIDTH))) ; window
 
 	; SOUTH to Lavender Town
-	db GROUP_LAVENDER_TOWN, MAP_LAVENDER_TOWN ; connected map (group, id)
+	map LAVENDER_TOWN
 	dw (LavenderTown_BlockData) ; strip pointer
 	dw ($C703 + 256 + ((ROUTE_10_SOUTH_HEIGHT + 3) * (ROUTE_10_SOUTH_WIDTH + 6))) ; strip destination
 	db 10, LAVENDER_TOWN_WIDTH ; (connection strip length, connected map width)
@@ -2494,6403 +1353,323 @@
 	dw ($C807 + LAVENDER_TOWN_WIDTH) ; window
 ; 0x957b0
 
-Route23_SecondMapHeader: ; 0x957b0
-	; border block
-	db $f
-
-	; height, width
-	db ROUTE_23_HEIGHT, ROUTE_23_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route23_BlockData), Route23_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route23_MapScriptHeader), Route23_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route23_MapEventHeader
-
-	; connections
-	db 0
-; 0x957bc
-
-SproutTower1F_SecondMapHeader: ; 0x957bc
-	; border block
-	db $0
-
-	; height, width
-	db SPROUT_TOWER_1F_HEIGHT, SPROUT_TOWER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SproutTower1F_BlockData), SproutTower1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(SproutTower1F_MapScriptHeader), SproutTower1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw SproutTower1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x957c8
-
-SproutTower2F_SecondMapHeader: ; 0x957c8
-	; border block
-	db $0
-
-	; height, width
-	db SPROUT_TOWER_2F_HEIGHT, SPROUT_TOWER_2F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SproutTower2F_BlockData), SproutTower2F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(SproutTower2F_MapScriptHeader), SproutTower2F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw SproutTower2F_MapEventHeader
-
-	; connections
-	db 0
-; 0x957d4
-
-SproutTower3F_SecondMapHeader: ; 0x957d4
-	; border block
-	db $0
-
-	; height, width
-	db SPROUT_TOWER_3F_HEIGHT, SPROUT_TOWER_3F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SproutTower3F_BlockData), SproutTower3F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(SproutTower3F_MapScriptHeader), SproutTower3F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw SproutTower3F_MapEventHeader
-
-	; connections
-	db 0
-; 0x957e0
-
-TinTower1F_SecondMapHeader: ; 0x957e0
-	; border block
-	db $0
-
-	; height, width
-	db TIN_TOWER_1F_HEIGHT, TIN_TOWER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(TinTower1F_BlockData), TinTower1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(TinTower1F_MapScriptHeader), TinTower1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw TinTower1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x957ec
-
-TinTower2F_SecondMapHeader: ; 0x957ec
-	; border block
-	db $0
-
-	; height, width
-	db TIN_TOWER_2F_HEIGHT, TIN_TOWER_2F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(TinTower2F_BlockData), TinTower2F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(TinTower2F_MapScriptHeader), TinTower2F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw TinTower2F_MapEventHeader
-
-	; connections
-	db 0
-; 0x957f8
-
-TinTower3F_SecondMapHeader: ; 0x957f8
-	; border block
-	db $0
-
-	; height, width
-	db TIN_TOWER_3F_HEIGHT, TIN_TOWER_3F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(TinTower3F_BlockData), TinTower3F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(TinTower3F_MapScriptHeader), TinTower3F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw TinTower3F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95804
-
-TinTower4F_SecondMapHeader: ; 0x95804
-	; border block
-	db $0
-
-	; height, width
-	db TIN_TOWER_4F_HEIGHT, TIN_TOWER_4F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(TinTower4F_BlockData), TinTower4F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(TinTower4F_MapScriptHeader), TinTower4F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw TinTower4F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95810
-
-TinTower5F_SecondMapHeader: ; 0x95810
-	; border block
-	db $0
-
-	; height, width
-	db TIN_TOWER_5F_HEIGHT, TIN_TOWER_5F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(TinTower5F_BlockData), TinTower5F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(TinTower5F_MapScriptHeader), TinTower5F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw TinTower5F_MapEventHeader
-
-	; connections
-	db 0
-; 0x9581c
-
-TinTower6F_SecondMapHeader: ; 0x9581c
-	; border block
-	db $0
-
-	; height, width
-	db TIN_TOWER_6F_HEIGHT, TIN_TOWER_6F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(TinTower6F_BlockData), TinTower6F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(TinTower6F_MapScriptHeader), TinTower6F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw TinTower6F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95828
-
-TinTower7F_SecondMapHeader: ; 0x95828
-	; border block
-	db $0
-
-	; height, width
-	db TIN_TOWER_7F_HEIGHT, TIN_TOWER_7F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(TinTower7F_BlockData), TinTower7F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(TinTower7F_MapScriptHeader), TinTower7F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw TinTower7F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95834
-
-TinTower8F_SecondMapHeader: ; 0x95834
-	; border block
-	db $0
-
-	; height, width
-	db TIN_TOWER_8F_HEIGHT, TIN_TOWER_8F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(TinTower8F_BlockData), TinTower8F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(TinTower8F_MapScriptHeader), TinTower8F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw TinTower8F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95840
-
-TinTower9F_SecondMapHeader: ; 0x95840
-	; border block
-	db $0
-
-	; height, width
-	db TIN_TOWER_9F_HEIGHT, TIN_TOWER_9F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(TinTower9F_BlockData), TinTower9F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(TinTower9F_MapScriptHeader), TinTower9F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw TinTower9F_MapEventHeader
-
-	; connections
-	db 0
-; 0x9584c
-
-BurnedTower1F_SecondMapHeader: ; 0x9584c
-	; border block
-	db $0
-
-	; height, width
-	db BURNED_TOWER_1F_HEIGHT, BURNED_TOWER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(BurnedTower1F_BlockData), BurnedTower1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(BurnedTower1F_MapScriptHeader), BurnedTower1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw BurnedTower1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95858
-
-BurnedTowerB1F_SecondMapHeader: ; 0x95858
-	; border block
-	db $9
-
-	; height, width
-	db BURNED_TOWER_B1F_HEIGHT, BURNED_TOWER_B1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(BurnedTowerB1F_BlockData), BurnedTowerB1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(BurnedTowerB1F_MapScriptHeader), BurnedTowerB1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw BurnedTowerB1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95864
-
-NationalPark_SecondMapHeader: ; 0x95864
-	; border block
-	db $0
-
-	; height, width
-	db NATIONAL_PARK_HEIGHT, NATIONAL_PARK_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(NationalPark_BlockData), NationalPark_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(NationalPark_MapScriptHeader), NationalPark_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw NationalPark_MapEventHeader
-
-	; connections
-	db 0
-; 0x95870
-
-NationalParkBugContest_SecondMapHeader: ; 0x95870
-	; border block
-	db $0
-
-	; height, width
-	db NATIONAL_PARK_BUG_CONTEST_HEIGHT, NATIONAL_PARK_BUG_CONTEST_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(NationalPark_BlockData), NationalPark_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(NationalParkBugContest_MapScriptHeader), NationalParkBugContest_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw NationalParkBugContest_MapEventHeader
-
-	; connections
-	db 0
-; 0x9587c
-
-RadioTower1F_SecondMapHeader: ; 0x9587c
-	; border block
-	db $0
-
-	; height, width
-	db RADIO_TOWER_1F_HEIGHT, RADIO_TOWER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(RadioTower1F_BlockData), RadioTower1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(RadioTower1F_MapScriptHeader), RadioTower1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw RadioTower1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95888
-
-RadioTower2F_SecondMapHeader: ; 0x95888
-	; border block
-	db $0
-
-	; height, width
-	db RADIO_TOWER_2F_HEIGHT, RADIO_TOWER_2F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(RadioTower2F_BlockData), RadioTower2F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(RadioTower2F_MapScriptHeader), RadioTower2F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw RadioTower2F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95894
-
-RadioTower3F_SecondMapHeader: ; 0x95894
-	; border block
-	db $0
-
-	; height, width
-	db RADIO_TOWER_3F_HEIGHT, RADIO_TOWER_3F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(RadioTower3F_BlockData), RadioTower3F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(RadioTower3F_MapScriptHeader), RadioTower3F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw RadioTower3F_MapEventHeader
-
-	; connections
-	db 0
-; 0x958a0
-
-RadioTower4F_SecondMapHeader: ; 0x958a0
-	; border block
-	db $0
-
-	; height, width
-	db RADIO_TOWER_4F_HEIGHT, RADIO_TOWER_4F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(RadioTower4F_BlockData), RadioTower4F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(RadioTower4F_MapScriptHeader), RadioTower4F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw RadioTower4F_MapEventHeader
-
-	; connections
-	db 0
-; 0x958ac
-
-RadioTower5F_SecondMapHeader: ; 0x958ac
-	; border block
-	db $0
-
-	; height, width
-	db RADIO_TOWER_5F_HEIGHT, RADIO_TOWER_5F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(RadioTower5F_BlockData), RadioTower5F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(RadioTower5F_MapScriptHeader), RadioTower5F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw RadioTower5F_MapEventHeader
-
-	; connections
-	db 0
-; 0x958b8
-
-RuinsofAlphOutside_SecondMapHeader: ; 0x958b8
-	; border block
-	db $5
-
-	; height, width
-	db RUINS_OF_ALPH_OUTSIDE_HEIGHT, RUINS_OF_ALPH_OUTSIDE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(RuinsofAlphOutside_BlockData), RuinsofAlphOutside_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(RuinsofAlphOutside_MapScriptHeader), RuinsofAlphOutside_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw RuinsofAlphOutside_MapEventHeader
-
-	; connections
-	db 0
-; 0x958c4
-
-RuinsofAlphHoOhChamber_SecondMapHeader: ; 0x958c4
-	; border block
-	db $0
-
-	; height, width
-	db RUINS_OF_ALPH_HO_OH_CHAMBER_HEIGHT, RUINS_OF_ALPH_HO_OH_CHAMBER_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(RuinsofAlphHoOhChamber_BlockData), RuinsofAlphHoOhChamber_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(RuinsofAlphHoOhChamber_MapScriptHeader), RuinsofAlphHoOhChamber_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw RuinsofAlphHoOhChamber_MapEventHeader
-
-	; connections
-	db 0
-; 0x958d0
-
-RuinsofAlphKabutoChamber_SecondMapHeader:: ; 0x958d0
-	; border block
-	db $0
-
-	; height, width
-	db RUINS_OF_ALPH_KABUTO_CHAMBER_HEIGHT, RUINS_OF_ALPH_KABUTO_CHAMBER_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(RuinsofAlphHoOhChamber_BlockData), RuinsofAlphHoOhChamber_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(RuinsofAlphKabutoChamber_MapScriptHeader), RuinsofAlphKabutoChamber_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw RuinsofAlphKabutoChamber_MapEventHeader
-
-	; connections
-	db 0
-; 0x958dc
-
-RuinsofAlphOmanyteChamber_SecondMapHeader: ; 0x958dc
-	; border block
-	db $0
-
-	; height, width
-	db RUINS_OF_ALPH_OMANYTE_CHAMBER_HEIGHT, RUINS_OF_ALPH_OMANYTE_CHAMBER_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(RuinsofAlphHoOhChamber_BlockData), RuinsofAlphHoOhChamber_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(RuinsofAlphOmanyteChamber_MapScriptHeader), RuinsofAlphOmanyteChamber_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw RuinsofAlphOmanyteChamber_MapEventHeader
-
-	; connections
-	db 0
-; 0x958e8
-
-RuinsofAlphAerodactylChamber_SecondMapHeader:: ; 0x958e8
-	; border block
-	db $0
-
-	; height, width
-	db RUINS_OF_ALPH_AERODACTYL_CHAMBER_HEIGHT, RUINS_OF_ALPH_AERODACTYL_CHAMBER_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(RuinsofAlphHoOhChamber_BlockData), RuinsofAlphHoOhChamber_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(RuinsofAlphAerodactylChamber_MapScriptHeader), RuinsofAlphAerodactylChamber_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw RuinsofAlphAerodactylChamber_MapEventHeader
-
-	; connections
-	db 0
-; 0x958f4
-
-RuinsofAlphInnerChamber_SecondMapHeader: ; 0x958f4
-	; border block
-	db $0
-
-	; height, width
-	db RUINS_OF_ALPH_INNER_CHAMBER_HEIGHT, RUINS_OF_ALPH_INNER_CHAMBER_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(RuinsofAlphInnerChamber_BlockData), RuinsofAlphInnerChamber_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(RuinsofAlphInnerChamber_MapScriptHeader), RuinsofAlphInnerChamber_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw RuinsofAlphInnerChamber_MapEventHeader
-
-	; connections
-	db 0
-; 0x95900
-
-RuinsofAlphResearchCenter_SecondMapHeader: ; 0x95900
-	; border block
-	db $0
-
-	; height, width
-	db RUINS_OF_ALPH_RESEARCH_CENTER_HEIGHT, RUINS_OF_ALPH_RESEARCH_CENTER_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(RuinsofAlphResearchCenter_BlockData), RuinsofAlphResearchCenter_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(RuinsofAlphResearchCenter_MapScriptHeader), RuinsofAlphResearchCenter_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw RuinsofAlphResearchCenter_MapEventHeader
-
-	; connections
-	db 0
-; 0x9590c
-
-RuinsofAlphHoOhItemRoom_SecondMapHeader: ; 0x9590c
-	; border block
-	db $0
-
-	; height, width
-	db RUINS_OF_ALPH_HO_OH_ITEM_ROOM_HEIGHT, RUINS_OF_ALPH_HO_OH_ITEM_ROOM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(RuinsofAlphHoOhItemRoom_BlockData), RuinsofAlphHoOhItemRoom_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(RuinsofAlphHoOhItemRoom_MapScriptHeader), RuinsofAlphHoOhItemRoom_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw RuinsofAlphHoOhItemRoom_MapEventHeader
-
-	; connections
-	db 0
-; 0x95918
-
-RuinsofAlphKabutoItemRoom_SecondMapHeader: ; 0x95918
-	; border block
-	db $0
-
-	; height, width
-	db RUINS_OF_ALPH_KABUTO_ITEM_ROOM_HEIGHT, RUINS_OF_ALPH_KABUTO_ITEM_ROOM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(RuinsofAlphHoOhItemRoom_BlockData), RuinsofAlphHoOhItemRoom_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(RuinsofAlphKabutoItemRoom_MapScriptHeader), RuinsofAlphKabutoItemRoom_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw RuinsofAlphKabutoItemRoom_MapEventHeader
-
-	; connections
-	db 0
-; 0x95924
-
-RuinsofAlphOmanyteItemRoom_SecondMapHeader: ; 0x95924
-	; border block
-	db $0
-
-	; height, width
-	db RUINS_OF_ALPH_OMANYTE_ITEM_ROOM_HEIGHT, RUINS_OF_ALPH_OMANYTE_ITEM_ROOM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(RuinsofAlphHoOhItemRoom_BlockData), RuinsofAlphHoOhItemRoom_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(RuinsofAlphOmanyteItemRoom_MapScriptHeader), RuinsofAlphOmanyteItemRoom_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw RuinsofAlphOmanyteItemRoom_MapEventHeader
-
-	; connections
-	db 0
-; 0x95930
-
-RuinsofAlphAerodactylItemRoom_SecondMapHeader: ; 0x95930
-	; border block
-	db $0
-
-	; height, width
-	db RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM_HEIGHT, RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(RuinsofAlphHoOhItemRoom_BlockData), RuinsofAlphHoOhItemRoom_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(RuinsofAlphAerodactylItemRoom_MapScriptHeader), RuinsofAlphAerodactylItemRoom_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw RuinsofAlphAerodactylItemRoom_MapEventHeader
-
-	; connections
-	db 0
-; 0x9593c
-
-RuinsofAlphHoOhWordRoom_SecondMapHeader: ; 0x9593c
-	; border block
-	db $0
-
-	; height, width
-	db RUINS_OF_ALPH_HO_OH_WORD_ROOM_HEIGHT, RUINS_OF_ALPH_HO_OH_WORD_ROOM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(RuinsofAlphHoOhWordRoom_BlockData), RuinsofAlphHoOhWordRoom_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(RuinsofAlphHoOhWordRoom_MapScriptHeader), RuinsofAlphHoOhWordRoom_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw RuinsofAlphHoOhWordRoom_MapEventHeader
-
-	; connections
-	db 0
-; 0x95948
-
-RuinsofAlphKabutoWordRoom_SecondMapHeader: ; 0x95948
-	; border block
-	db $0
-
-	; height, width
-	db RUINS_OF_ALPH_KABUTO_WORD_ROOM_HEIGHT, RUINS_OF_ALPH_KABUTO_WORD_ROOM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(RuinsofAlphKabutoWordRoom_BlockData), RuinsofAlphKabutoWordRoom_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(RuinsofAlphKabutoWordRoom_MapScriptHeader), RuinsofAlphKabutoWordRoom_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw RuinsofAlphKabutoWordRoom_MapEventHeader
-
-	; connections
-	db 0
-; 0x95954
-
-RuinsofAlphOmanyteWordRoom_SecondMapHeader: ; 0x95954
-	; border block
-	db $0
-
-	; height, width
-	db RUINS_OF_ALPH_OMANYTE_WORD_ROOM_HEIGHT, RUINS_OF_ALPH_OMANYTE_WORD_ROOM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(RuinsofAlphOmanyteWordRoom_BlockData), RuinsofAlphOmanyteWordRoom_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(RuinsofAlphOmanyteWordRoom_MapScriptHeader), RuinsofAlphOmanyteWordRoom_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw RuinsofAlphOmanyteWordRoom_MapEventHeader
-
-	; connections
-	db 0
-; 0x95960
-
-RuinsofAlphAerodactylWordRoom_SecondMapHeader: ; 0x95960
-	; border block
-	db $0
-
-	; height, width
-	db RUINS_OF_ALPH_AERODACTYL_WORD_ROOM_HEIGHT, RUINS_OF_ALPH_AERODACTYL_WORD_ROOM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(RuinsofAlphAerodactylWordRoom_BlockData), RuinsofAlphAerodactylWordRoom_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(RuinsofAlphAerodactylWordRoom_MapScriptHeader), RuinsofAlphAerodactylWordRoom_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw RuinsofAlphAerodactylWordRoom_MapEventHeader
-
-	; connections
-	db 0
-; 0x9596c
-
-UnionCave1F_SecondMapHeader: ; 0x9596c
-	; border block
-	db $9
-
-	; height, width
-	db UNION_CAVE_1F_HEIGHT, UNION_CAVE_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(UnionCave1F_BlockData), UnionCave1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(UnionCave1F_MapScriptHeader), UnionCave1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw UnionCave1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95978
-
-UnionCaveB1F_SecondMapHeader: ; 0x95978
-	; border block
-	db $9
-
-	; height, width
-	db UNION_CAVE_B1F_HEIGHT, UNION_CAVE_B1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(UnionCaveB1F_BlockData), UnionCaveB1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(UnionCaveB1F_MapScriptHeader), UnionCaveB1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw UnionCaveB1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95984
-
-UnionCaveB2F_SecondMapHeader: ; 0x95984
-	; border block
-	db $9
-
-	; height, width
-	db UNION_CAVE_B2F_HEIGHT, UNION_CAVE_B2F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(UnionCaveB2F_BlockData), UnionCaveB2F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(UnionCaveB2F_MapScriptHeader), UnionCaveB2F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw UnionCaveB2F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95990
-
-SlowpokeWellB1F_SecondMapHeader: ; 0x95990
-	; border block
-	db $9
-
-	; height, width
-	db SLOWPOKE_WELL_B1F_HEIGHT, SLOWPOKE_WELL_B1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SlowpokeWellB1F_BlockData), SlowpokeWellB1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(SlowpokeWellB1F_MapScriptHeader), SlowpokeWellB1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw SlowpokeWellB1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x9599c
-
-SlowpokeWellB2F_SecondMapHeader: ; 0x9599c
-	; border block
-	db $9
-
-	; height, width
-	db SLOWPOKE_WELL_B2F_HEIGHT, SLOWPOKE_WELL_B2F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SlowpokeWellB2F_BlockData), SlowpokeWellB2F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(SlowpokeWellB2F_MapScriptHeader), SlowpokeWellB2F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw SlowpokeWellB2F_MapEventHeader
-
-	; connections
-	db 0
-; 0x959a8
-
-OlivineLighthouse1F_SecondMapHeader: ; 0x959a8
-	; border block
-	db $0
-
-	; height, width
-	db OLIVINE_LIGHTHOUSE_1F_HEIGHT, OLIVINE_LIGHTHOUSE_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineLighthouse1F_BlockData), OlivineLighthouse1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(OlivineLighthouse1F_MapScriptHeader), OlivineLighthouse1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw OlivineLighthouse1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x959b4
-
-OlivineLighthouse2F_SecondMapHeader: ; 0x959b4
-	; border block
-	db $0
-
-	; height, width
-	db OLIVINE_LIGHTHOUSE_2F_HEIGHT, OLIVINE_LIGHTHOUSE_2F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineLighthouse2F_BlockData), OlivineLighthouse2F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(OlivineLighthouse2F_MapScriptHeader), OlivineLighthouse2F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw OlivineLighthouse2F_MapEventHeader
-
-	; connections
-	db 0
-; 0x959c0
-
-OlivineLighthouse3F_SecondMapHeader: ; 0x959c0
-	; border block
-	db $0
-
-	; height, width
-	db OLIVINE_LIGHTHOUSE_3F_HEIGHT, OLIVINE_LIGHTHOUSE_3F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineLighthouse3F_BlockData), OlivineLighthouse3F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(OlivineLighthouse3F_MapScriptHeader), OlivineLighthouse3F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw OlivineLighthouse3F_MapEventHeader
-
-	; connections
-	db 0
-; 0x959cc
-
-OlivineLighthouse4F_SecondMapHeader: ; 0x959cc
-	; border block
-	db $0
-
-	; height, width
-	db OLIVINE_LIGHTHOUSE_4F_HEIGHT, OLIVINE_LIGHTHOUSE_4F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineLighthouse4F_BlockData), OlivineLighthouse4F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(OlivineLighthouse4F_MapScriptHeader), OlivineLighthouse4F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw OlivineLighthouse4F_MapEventHeader
-
-	; connections
-	db 0
-; 0x959d8
-
-OlivineLighthouse5F_SecondMapHeader: ; 0x959d8
-	; border block
-	db $0
-
-	; height, width
-	db OLIVINE_LIGHTHOUSE_5F_HEIGHT, OLIVINE_LIGHTHOUSE_5F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineLighthouse5F_BlockData), OlivineLighthouse5F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(OlivineLighthouse5F_MapScriptHeader), OlivineLighthouse5F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw OlivineLighthouse5F_MapEventHeader
-
-	; connections
-	db 0
-; 0x959e4
-
-OlivineLighthouse6F_SecondMapHeader: ; 0x959e4
-	; border block
-	db $0
-
-	; height, width
-	db OLIVINE_LIGHTHOUSE_6F_HEIGHT, OLIVINE_LIGHTHOUSE_6F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineLighthouse6F_BlockData), OlivineLighthouse6F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(OlivineLighthouse6F_MapScriptHeader), OlivineLighthouse6F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw OlivineLighthouse6F_MapEventHeader
-
-	; connections
-	db 0
-; 0x959f0
-
-MahoganyMart1F_SecondMapHeader: ; 0x959f0
-	; border block
-	db $0
-
-	; height, width
-	db MAHOGANY_MART_1F_HEIGHT, MAHOGANY_MART_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(MahoganyMart1F_BlockData), MahoganyMart1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(MahoganyMart1F_MapScriptHeader), MahoganyMart1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw MahoganyMart1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x959fc
-
-TeamRocketBaseB1F_SecondMapHeader: ; 0x959fc
-	; border block
-	db $0
-
-	; height, width
-	db TEAM_ROCKET_BASE_B1F_HEIGHT, TEAM_ROCKET_BASE_B1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(TeamRocketBaseB1F_BlockData), TeamRocketBaseB1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(TeamRocketBaseB1F_MapScriptHeader), TeamRocketBaseB1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw TeamRocketBaseB1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95a08
-
-TeamRocketBaseB2F_SecondMapHeader: ; 0x95a08
-	; border block
-	db $0
-
-	; height, width
-	db TEAM_ROCKET_BASE_B2F_HEIGHT, TEAM_ROCKET_BASE_B2F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(TeamRocketBaseB2F_BlockData), TeamRocketBaseB2F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(TeamRocketBaseB2F_MapScriptHeader), TeamRocketBaseB2F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw TeamRocketBaseB2F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95a14
-
-TeamRocketBaseB3F_SecondMapHeader: ; 0x95a14
-	; border block
-	db $0
-
-	; height, width
-	db TEAM_ROCKET_BASE_B3F_HEIGHT, TEAM_ROCKET_BASE_B3F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(TeamRocketBaseB3F_BlockData), TeamRocketBaseB3F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(TeamRocketBaseB3F_MapScriptHeader), TeamRocketBaseB3F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw TeamRocketBaseB3F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95a20
-
-IlexForest_SecondMapHeader: ; 0x95a20
-	; border block
-	db $5
-
-	; height, width
-	db ILEX_FOREST_HEIGHT, ILEX_FOREST_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(IlexForest_BlockData), IlexForest_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(IlexForest_MapScriptHeader), IlexForest_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw IlexForest_MapEventHeader
-
-	; connections
-	db 0
-; 0x95a2c
-
-WarehouseEntrance_SecondMapHeader: ; 0x95a2c
-	; border block
-	db $0
-
-	; height, width
-	db WAREHOUSE_ENTRANCE_HEIGHT, WAREHOUSE_ENTRANCE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(WarehouseEntrance_BlockData), WarehouseEntrance_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(WarehouseEntrance_MapScriptHeader), WarehouseEntrance_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw WarehouseEntrance_MapEventHeader
-
-	; connections
-	db 0
-; 0x95a38
-
-UndergroundPathSwitchRoomEntrances_SecondMapHeader: ; 0x95a38
-	; border block
-	db $0
-
-	; height, width
-	db UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES_HEIGHT, UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(UndergroundPathSwitchRoomEntrances_BlockData), UndergroundPathSwitchRoomEntrances_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(UndergroundPathSwitchRoomEntrances_MapScriptHeader), UndergroundPathSwitchRoomEntrances_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw UndergroundPathSwitchRoomEntrances_MapEventHeader
-
-	; connections
-	db 0
-; 0x95a44
-
-GoldenrodDeptStoreB1F_SecondMapHeader: ; 0x95a44
-	; border block
-	db $0
-
-	; height, width
-	db GOLDENROD_DEPT_STORE_B1F_HEIGHT, GOLDENROD_DEPT_STORE_B1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStoreB1F_BlockData), GoldenrodDeptStoreB1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStoreB1F_MapScriptHeader), GoldenrodDeptStoreB1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw GoldenrodDeptStoreB1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95a50
-
-UndergroundWarehouse_SecondMapHeader: ; 0x95a50
-	; border block
-	db $0
-
-	; height, width
-	db UNDERGROUND_WAREHOUSE_HEIGHT, UNDERGROUND_WAREHOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(UndergroundWarehouse_BlockData), UndergroundWarehouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(UndergroundWarehouse_MapScriptHeader), UndergroundWarehouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw UndergroundWarehouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x95a5c
-
-MountMortar1FOutside_SecondMapHeader: ; 0x95a5c
-	; border block
-	db $9
-
-	; height, width
-	db MOUNT_MORTAR_1F_OUTSIDE_HEIGHT, MOUNT_MORTAR_1F_OUTSIDE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(MountMortar1FOutside_BlockData), MountMortar1FOutside_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(MountMortar1FOutside_MapScriptHeader), MountMortar1FOutside_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw MountMortar1FOutside_MapEventHeader
-
-	; connections
-	db 0
-; 0x95a68
-
-MountMortar1FInside_SecondMapHeader: ; 0x95a68
-	; border block
-	db $9
-
-	; height, width
-	db MOUNT_MORTAR_1F_INSIDE_HEIGHT, MOUNT_MORTAR_1F_INSIDE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(MountMortar1FInside_BlockData), MountMortar1FInside_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(MountMortar1FInside_MapScriptHeader), MountMortar1FInside_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw MountMortar1FInside_MapEventHeader
-
-	; connections
-	db 0
-; 0x95a74
-
-MountMortar2FInside_SecondMapHeader: ; 0x95a74
-	; border block
-	db $9
-
-	; height, width
-	db MOUNT_MORTAR_2F_INSIDE_HEIGHT, MOUNT_MORTAR_2F_INSIDE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(MountMortar2FInside_BlockData), MountMortar2FInside_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(MountMortar2FInside_MapScriptHeader), MountMortar2FInside_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw MountMortar2FInside_MapEventHeader
-
-	; connections
-	db 0
-; 0x95a80
-
-MountMortarB1F_SecondMapHeader: ; 0x95a80
-	; border block
-	db $9
-
-	; height, width
-	db MOUNT_MORTAR_B1F_HEIGHT, MOUNT_MORTAR_B1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(MountMortarB1F_BlockData), MountMortarB1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(MountMortarB1F_MapScriptHeader), MountMortarB1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw MountMortarB1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95a8c
-
-IcePath1F_SecondMapHeader: ; 0x95a8c
-	; border block
-	db $9
-
-	; height, width
-	db ICE_PATH_1F_HEIGHT, ICE_PATH_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(IcePath1F_BlockData), IcePath1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(IcePath1F_MapScriptHeader), IcePath1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw IcePath1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95a98
-
-IcePathB1F_SecondMapHeader: ; 0x95a98
-	; border block
-	db $19
-
-	; height, width
-	db ICE_PATH_B1F_HEIGHT, ICE_PATH_B1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(IcePathB1F_BlockData), IcePathB1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(IcePathB1F_MapScriptHeader), IcePathB1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw IcePathB1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95aa4
-
-IcePathB2FMahoganySide_SecondMapHeader: ; 0x95aa4
-	; border block
-	db $19
-
-	; height, width
-	db ICE_PATH_B2F_MAHOGANY_SIDE_HEIGHT, ICE_PATH_B2F_MAHOGANY_SIDE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(IcePathB2FMahoganySide_BlockData), IcePathB2FMahoganySide_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(IcePathB2FMahoganySide_MapScriptHeader), IcePathB2FMahoganySide_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw IcePathB2FMahoganySide_MapEventHeader
-
-	; connections
-	db 0
-; 0x95ab0
-
-IcePathB2FBlackthornSide_SecondMapHeader: ; 0x95ab0
-	; border block
-	db $19
-
-	; height, width
-	db ICE_PATH_B2F_BLACKTHORN_SIDE_HEIGHT, ICE_PATH_B2F_BLACKTHORN_SIDE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(IcePathB2FBlackthornSide_BlockData), IcePathB2FBlackthornSide_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(IcePathB2FBlackthornSide_MapScriptHeader), IcePathB2FBlackthornSide_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw IcePathB2FBlackthornSide_MapEventHeader
-
-	; connections
-	db 0
-; 0x95abc
-
-IcePathB3F_SecondMapHeader: ; 0x95abc
-	; border block
-	db $19
-
-	; height, width
-	db ICE_PATH_B3F_HEIGHT, ICE_PATH_B3F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(IcePathB3F_BlockData), IcePathB3F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(IcePathB3F_MapScriptHeader), IcePathB3F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw IcePathB3F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95ac8
-
-WhirlIslandNW_SecondMapHeader: ; 0x95ac8
-	; border block
-	db $9
-
-	; height, width
-	db WHIRL_ISLAND_NW_HEIGHT, WHIRL_ISLAND_NW_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(WhirlIslandNW_BlockData), WhirlIslandNW_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(WhirlIslandNW_MapScriptHeader), WhirlIslandNW_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw WhirlIslandNW_MapEventHeader
-
-	; connections
-	db 0
-; 0x95ad4
-
-WhirlIslandNE_SecondMapHeader: ; 0x95ad4
-	; border block
-	db $9
-
-	; height, width
-	db WHIRL_ISLAND_NE_HEIGHT, WHIRL_ISLAND_NE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(WhirlIslandNE_BlockData), WhirlIslandNE_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(WhirlIslandNE_MapScriptHeader), WhirlIslandNE_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw WhirlIslandNE_MapEventHeader
-
-	; connections
-	db 0
-; 0x95ae0
-
-WhirlIslandSW_SecondMapHeader: ; 0x95ae0
-	; border block
-	db $9
-
-	; height, width
-	db WHIRL_ISLAND_SW_HEIGHT, WHIRL_ISLAND_SW_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(WhirlIslandSW_BlockData), WhirlIslandSW_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(WhirlIslandSW_MapScriptHeader), WhirlIslandSW_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw WhirlIslandSW_MapEventHeader
-
-	; connections
-	db 0
-; 0x95aec
-
-WhirlIslandCave_SecondMapHeader: ; 0x95aec
-	; border block
-	db $9
-
-	; height, width
-	db WHIRL_ISLAND_CAVE_HEIGHT, WHIRL_ISLAND_CAVE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(WhirlIslandCave_BlockData), WhirlIslandCave_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(WhirlIslandCave_MapScriptHeader), WhirlIslandCave_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw WhirlIslandCave_MapEventHeader
-
-	; connections
-	db 0
-; 0x95af8
-
-WhirlIslandSE_SecondMapHeader: ; 0x95af8
-	; border block
-	db $f
-
-	; height, width
-	db WHIRL_ISLAND_SE_HEIGHT, WHIRL_ISLAND_SE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(WhirlIslandSE_BlockData), WhirlIslandSE_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(WhirlIslandSE_MapScriptHeader), WhirlIslandSE_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw WhirlIslandSE_MapEventHeader
-
-	; connections
-	db 0
-; 0x95b04
-
-WhirlIslandB1F_SecondMapHeader: ; 0x95b04
-	; border block
-	db $9
-
-	; height, width
-	db WHIRL_ISLAND_B1F_HEIGHT, WHIRL_ISLAND_B1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(WhirlIslandB1F_BlockData), WhirlIslandB1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(WhirlIslandB1F_MapScriptHeader), WhirlIslandB1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw WhirlIslandB1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95b10
-
-WhirlIslandB2F_SecondMapHeader: ; 0x95b10
-	; border block
-	db $2e
-
-	; height, width
-	db WHIRL_ISLAND_B2F_HEIGHT, WHIRL_ISLAND_B2F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(WhirlIslandB2F_BlockData), WhirlIslandB2F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(WhirlIslandB2F_MapScriptHeader), WhirlIslandB2F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw WhirlIslandB2F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95b1c
-
-WhirlIslandLugiaChamber_SecondMapHeader: ; 0x95b1c
-	; border block
-	db $f
-
-	; height, width
-	db WHIRL_ISLAND_LUGIA_CHAMBER_HEIGHT, WHIRL_ISLAND_LUGIA_CHAMBER_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(WhirlIslandLugiaChamber_BlockData), WhirlIslandLugiaChamber_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(WhirlIslandLugiaChamber_MapScriptHeader), WhirlIslandLugiaChamber_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw WhirlIslandLugiaChamber_MapEventHeader
-
-	; connections
-	db 0
-; 0x95b28
-
-SilverCaveRoom1_SecondMapHeader: ; 0x95b28
-	; border block
-	db $9
-
-	; height, width
-	db SILVER_CAVE_ROOM_1_HEIGHT, SILVER_CAVE_ROOM_1_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SilverCaveRoom1_BlockData), SilverCaveRoom1_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(SilverCaveRoom1_MapScriptHeader), SilverCaveRoom1_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw SilverCaveRoom1_MapEventHeader
-
-	; connections
-	db 0
-; 0x95b34
-
-SilverCaveRoom2_SecondMapHeader: ; 0x95b34
-	; border block
-	db $9
-
-	; height, width
-	db SILVER_CAVE_ROOM_2_HEIGHT, SILVER_CAVE_ROOM_2_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SilverCaveRoom2_BlockData), SilverCaveRoom2_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(SilverCaveRoom2_MapScriptHeader), SilverCaveRoom2_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw SilverCaveRoom2_MapEventHeader
-
-	; connections
-	db 0
-; 0x95b40
-
-SilverCaveRoom3_SecondMapHeader: ; 0x95b40
-	; border block
-	db $9
-
-	; height, width
-	db SILVER_CAVE_ROOM_3_HEIGHT, SILVER_CAVE_ROOM_3_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SilverCaveRoom3_BlockData), SilverCaveRoom3_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(SilverCaveRoom3_MapScriptHeader), SilverCaveRoom3_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw SilverCaveRoom3_MapEventHeader
-
-	; connections
-	db 0
-; 0x95b4c
-
-SilverCaveItemRooms_SecondMapHeader: ; 0x95b4c
-	; border block
-	db $9
-
-	; height, width
-	db SILVER_CAVE_ITEM_ROOMS_HEIGHT, SILVER_CAVE_ITEM_ROOMS_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SilverCaveItemRooms_BlockData), SilverCaveItemRooms_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(SilverCaveItemRooms_MapScriptHeader), SilverCaveItemRooms_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw SilverCaveItemRooms_MapEventHeader
-
-	; connections
-	db 0
-; 0x95b58
-
-DarkCaveVioletEntrance_SecondMapHeader: ; 0x95b58
-	; border block
-	db $9
-
-	; height, width
-	db DARK_CAVE_VIOLET_ENTRANCE_HEIGHT, DARK_CAVE_VIOLET_ENTRANCE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(DarkCaveVioletEntrance_BlockData), DarkCaveVioletEntrance_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(DarkCaveVioletEntrance_MapScriptHeader), DarkCaveVioletEntrance_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw DarkCaveVioletEntrance_MapEventHeader
-
-	; connections
-	db 0
-; 0x95b64
-
-DarkCaveBlackthornEntrance_SecondMapHeader: ; 0x95b64
-	; border block
-	db $9
-
-	; height, width
-	db DARK_CAVE_BLACKTHORN_ENTRANCE_HEIGHT, DARK_CAVE_BLACKTHORN_ENTRANCE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(DarkCaveBlackthornEntrance_BlockData), DarkCaveBlackthornEntrance_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(DarkCaveBlackthornEntrance_MapScriptHeader), DarkCaveBlackthornEntrance_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw DarkCaveBlackthornEntrance_MapEventHeader
-
-	; connections
-	db 0
-; 0x95b70
-
-DragonsDen1F_SecondMapHeader: ; 0x95b70
-	; border block
-	db $9
-
-	; height, width
-	db DRAGONS_DEN_1F_HEIGHT, DRAGONS_DEN_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(DragonsDen1F_BlockData), DragonsDen1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(DragonsDen1F_MapScriptHeader), DragonsDen1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw DragonsDen1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95b7c
-
-DragonsDenB1F_SecondMapHeader: ; 0x95b7c
-	; border block
-	db $71
-
-	; height, width
-	db DRAGONS_DEN_B1F_HEIGHT, DRAGONS_DEN_B1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(DragonsDenB1F_BlockData), DragonsDenB1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(DragonsDenB1F_MapScriptHeader), DragonsDenB1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw DragonsDenB1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95b88
-
-DragonShrine_SecondMapHeader: ; 0x95b88
-	; border block
-	db $0
-
-	; height, width
-	db DRAGON_SHRINE_HEIGHT, DRAGON_SHRINE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(DragonShrine_BlockData), DragonShrine_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(DragonShrine_MapScriptHeader), DragonShrine_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw DragonShrine_MapEventHeader
-
-	; connections
-	db 0
-; 0x95b94
-
-TohjoFalls_SecondMapHeader: ; 0x95b94
-	; border block
-	db $9
-
-	; height, width
-	db TOHJO_FALLS_HEIGHT, TOHJO_FALLS_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(TohjoFalls_BlockData), TohjoFalls_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(TohjoFalls_MapScriptHeader), TohjoFalls_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw TohjoFalls_MapEventHeader
-
-	; connections
-	db 0
-; 0x95ba0
-
-OlivinePokeCenter1F_SecondMapHeader: ; 0x95ba0
-	; border block
-	db $0
-
-	; height, width
-	db OLIVINE_POKECENTER_1F_HEIGHT, OLIVINE_POKECENTER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivinePokeCenter1F_BlockData), OlivinePokeCenter1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(OlivinePokeCenter1F_MapScriptHeader), OlivinePokeCenter1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw OlivinePokeCenter1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95bac
-
-OlivineGym_SecondMapHeader: ; 0x95bac
-	; border block
-	db $0
-
-	; height, width
-	db OLIVINE_GYM_HEIGHT, OLIVINE_GYM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineGym_BlockData), OlivineGym_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(OlivineGym_MapScriptHeader), OlivineGym_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw OlivineGym_MapEventHeader
-
-	; connections
-	db 0
-; 0x95bb8
-
-OlivineVoltorbHouse_SecondMapHeader: ; 0x95bb8
-	; border block
-	db $0
-
-	; height, width
-	db OLIVINE_VOLTORB_HOUSE_HEIGHT, OLIVINE_VOLTORB_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_MapScriptHeader), OlivineVoltorbHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw OlivineVoltorbHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x95bc4
-
-OlivineHouseBeta_SecondMapHeader: ; 0x95bc4
-	; border block
-	db $0
-
-	; height, width
-	db OLIVINE_HOUSE_BETA_HEIGHT, OLIVINE_HOUSE_BETA_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(OlivineHouseBeta_MapScriptHeader), OlivineHouseBeta_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw OlivineHouseBeta_MapEventHeader
-
-	; connections
-	db 0
-; 0x95bd0
-
-OlivinePunishmentSpeechHouse_SecondMapHeader: ; 0x95bd0
-	; border block
-	db $0
-
-	; height, width
-	db OLIVINE_PUNISHMENT_SPEECH_HOUSE_HEIGHT, OLIVINE_PUNISHMENT_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(OlivinePunishmentSpeechHouse_MapScriptHeader), OlivinePunishmentSpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw OlivinePunishmentSpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x95bdc
-
-OlivineGoodRodHouse_SecondMapHeader: ; 0x95bdc
-	; border block
-	db $0
-
-	; height, width
-	db OLIVINE_GOOD_ROD_HOUSE_HEIGHT, OLIVINE_GOOD_ROD_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(OlivineGoodRodHouse_MapScriptHeader), OlivineGoodRodHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw OlivineGoodRodHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x95be8
-
-OlivineCafe_SecondMapHeader: ; 0x95be8
-	; border block
-	db $0
-
-	; height, width
-	db OLIVINE_CAFE_HEIGHT, OLIVINE_CAFE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineCafe_BlockData), OlivineCafe_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(OlivineCafe_MapScriptHeader), OlivineCafe_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw OlivineCafe_MapEventHeader
-
-	; connections
-	db 0
-; 0x95bf4
-
-OlivineMart_SecondMapHeader: ; 0x95bf4
-	; border block
-	db $0
-
-	; height, width
-	db OLIVINE_MART_HEIGHT, OLIVINE_MART_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineMart_BlockData), OlivineMart_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(OlivineMart_MapScriptHeader), OlivineMart_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw OlivineMart_MapEventHeader
-
-	; connections
-	db 0
-; 0x95c00
-
-Route38EcruteakGate_SecondMapHeader: ; 0x95c00
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_38_ECRUTEAK_GATE_HEIGHT, ROUTE_38_ECRUTEAK_GATE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route38EcruteakGate_BlockData), Route38EcruteakGate_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route38EcruteakGate_MapScriptHeader), Route38EcruteakGate_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route38EcruteakGate_MapEventHeader
-
-	; connections
-	db 0
-; 0x95c0c
-
-Route39Barn_SecondMapHeader: ; 0x95c0c
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_39_BARN_HEIGHT, ROUTE_39_BARN_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route39Barn_BlockData), Route39Barn_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route39Barn_MapScriptHeader), Route39Barn_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route39Barn_MapEventHeader
-
-	; connections
-	db 0
-; 0x95c18
-
-Route39Farmhouse_SecondMapHeader: ; 0x95c18
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_39_FARMHOUSE_HEIGHT, ROUTE_39_FARMHOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route39Farmhouse_MapScriptHeader), Route39Farmhouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route39Farmhouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x95c24
-
-MahoganyRedGyaradosSpeechHouse_SecondMapHeader: ; 0x95c24
-	; border block
-	db $0
-
-	; height, width
-	db MAHOGANY_RED_GYARADOS_SPEECH_HOUSE_HEIGHT, MAHOGANY_RED_GYARADOS_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(MahoganyRedGyaradosSpeechHouse_MapScriptHeader), MahoganyRedGyaradosSpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw MahoganyRedGyaradosSpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x95c30
-
-MahoganyGym_SecondMapHeader: ; 0x95c30
-	; border block
-	db $0
-
-	; height, width
-	db MAHOGANY_GYM_HEIGHT, MAHOGANY_GYM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(MahoganyGym_BlockData), MahoganyGym_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(MahoganyGym_MapScriptHeader), MahoganyGym_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw MahoganyGym_MapEventHeader
-
-	; connections
-	db 0
-; 0x95c3c
-
-MahoganyPokeCenter1F_SecondMapHeader: ; 0x95c3c
-	; border block
-	db $0
-
-	; height, width
-	db MAHOGANY_POKECENTER_1F_HEIGHT, MAHOGANY_POKECENTER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivinePokeCenter1F_BlockData), OlivinePokeCenter1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(MahoganyPokeCenter1F_MapScriptHeader), MahoganyPokeCenter1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw MahoganyPokeCenter1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95c48
-
-Route42EcruteakGate_SecondMapHeader: ; 0x95c48
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_42_ECRUTEAK_GATE_HEIGHT, ROUTE_42_ECRUTEAK_GATE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route38EcruteakGate_BlockData), Route38EcruteakGate_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route42EcruteakGate_MapScriptHeader), Route42EcruteakGate_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route42EcruteakGate_MapEventHeader
-
-	; connections
-	db 0
-; 0x95c54
-
-DiglettsCave_SecondMapHeader: ; 0x95c54
-	; border block
-	db $9
-
-	; height, width
-	db DIGLETTS_CAVE_HEIGHT, DIGLETTS_CAVE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(DiglettsCave_BlockData), DiglettsCave_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(DiglettsCave_MapScriptHeader), DiglettsCave_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw DiglettsCave_MapEventHeader
-
-	; connections
-	db 0
-; 0x95c60
-
-MountMoon_SecondMapHeader: ; 0x95c60
-	; border block
-	db $9
-
-	; height, width
-	db MOUNT_MOON_HEIGHT, MOUNT_MOON_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(MountMoon_BlockData), MountMoon_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(MountMoon_MapScriptHeader), MountMoon_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw MountMoon_MapEventHeader
-
-	; connections
-	db 0
-; 0x95c6c
-
-Underground_SecondMapHeader: ; 0x95c6c
-	; border block
-	db $0
-
-	; height, width
-	db UNDERGROUND_HEIGHT, UNDERGROUND_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Underground_BlockData), Underground_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Underground_MapScriptHeader), Underground_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Underground_MapEventHeader
-
-	; connections
-	db 0
-; 0x95c78
-
-RockTunnel1F_SecondMapHeader: ; 0x95c78
-	; border block
-	db $9
-
-	; height, width
-	db ROCK_TUNNEL_1F_HEIGHT, ROCK_TUNNEL_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(RockTunnel1F_BlockData), RockTunnel1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(RockTunnel1F_MapScriptHeader), RockTunnel1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw RockTunnel1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95c84
-
-RockTunnelB1F_SecondMapHeader: ; 0x95c84
-	; border block
-	db $9
-
-	; height, width
-	db ROCK_TUNNEL_B1F_HEIGHT, ROCK_TUNNEL_B1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(RockTunnelB1F_BlockData), RockTunnelB1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(RockTunnelB1F_MapScriptHeader), RockTunnelB1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw RockTunnelB1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95c90
-
-SafariZoneFuchsiaGateBeta_SecondMapHeader: ; 0x95c90
-	; border block
-	db $0
-
-	; height, width
-	db SAFARI_ZONE_FUCHSIA_GATE_BETA_HEIGHT, SAFARI_ZONE_FUCHSIA_GATE_BETA_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SafariZoneFuchsiaGateBeta_BlockData), SafariZoneFuchsiaGateBeta_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(SafariZoneFuchsiaGateBeta_MapScriptHeader), SafariZoneFuchsiaGateBeta_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw SafariZoneFuchsiaGateBeta_MapEventHeader
-
-	; connections
-	db 0
-; 0x95c9c
-
-SafariZoneBeta_SecondMapHeader: ; 0x95c9c
-	; border block
-	db $13
-
-	; height, width
-	db SAFARI_ZONE_BETA_HEIGHT, SAFARI_ZONE_BETA_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SafariZoneBeta_BlockData), SafariZoneBeta_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(SafariZoneBeta_MapScriptHeader), SafariZoneBeta_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw SafariZoneBeta_MapEventHeader
-
-	; connections
-	db 0
-; 0x95ca8
-
-VictoryRoad_SecondMapHeader: ; 0x95ca8
-	; border block
-	db $1d
-
-	; height, width
-	db VICTORY_ROAD_HEIGHT, VICTORY_ROAD_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(VictoryRoad_BlockData), VictoryRoad_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(VictoryRoad_MapScriptHeader), VictoryRoad_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw VictoryRoad_MapEventHeader
-
-	; connections
-	db 0
-; 0x95cb4
-
-EcruteakHouse_SecondMapHeader: ; 0x95cb4
-	; border block
-	db $0
-
-	; height, width
-	db ECRUTEAK_HOUSE_HEIGHT, ECRUTEAK_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(EcruteakHouse_BlockData), EcruteakHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(EcruteakHouse_MapScriptHeader), EcruteakHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw EcruteakHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x95cc0
-
-WiseTriosRoom_SecondMapHeader: ; 0x95cc0
-	; border block
-	db $0
-
-	; height, width
-	db WISE_TRIOS_ROOM_HEIGHT, WISE_TRIOS_ROOM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(WiseTriosRoom_BlockData), WiseTriosRoom_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(WiseTriosRoom_MapScriptHeader), WiseTriosRoom_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw WiseTriosRoom_MapEventHeader
-
-	; connections
-	db 0
-; 0x95ccc
-
-EcruteakPokeCenter1F_SecondMapHeader: ; 0x95ccc
-	; border block
-	db $0
-
-	; height, width
-	db ECRUTEAK_POKECENTER_1F_HEIGHT, ECRUTEAK_POKECENTER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivinePokeCenter1F_BlockData), OlivinePokeCenter1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(EcruteakPokeCenter1F_MapScriptHeader), EcruteakPokeCenter1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw EcruteakPokeCenter1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95cd8
-
-EcruteakLugiaSpeechHouse_SecondMapHeader: ; 0x95cd8
-	; border block
-	db $0
-
-	; height, width
-	db ECRUTEAK_LUGIA_SPEECH_HOUSE_HEIGHT, ECRUTEAK_LUGIA_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(EcruteakLugiaSpeechHouse_BlockData), EcruteakLugiaSpeechHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(EcruteakLugiaSpeechHouse_MapScriptHeader), EcruteakLugiaSpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw EcruteakLugiaSpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x95ce4
-
-DanceTheatre_SecondMapHeader: ; 0x95ce4
-	; border block
-	db $0
-
-	; height, width
-	db DANCE_THEATRE_HEIGHT, DANCE_THEATRE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(DanceTheatre_BlockData), DanceTheatre_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(DanceTheatre_MapScriptHeader), DanceTheatre_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw DanceTheatre_MapEventHeader
-
-	; connections
-	db 0
-; 0x95cf0
-
-EcruteakMart_SecondMapHeader: ; 0x95cf0
-	; border block
-	db $0
-
-	; height, width
-	db ECRUTEAK_MART_HEIGHT, ECRUTEAK_MART_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineMart_BlockData), OlivineMart_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(EcruteakMart_MapScriptHeader), EcruteakMart_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw EcruteakMart_MapEventHeader
-
-	; connections
-	db 0
-; 0x95cfc
-
-EcruteakGym_SecondMapHeader: ; 0x95cfc
-	; border block
-	db $0
-
-	; height, width
-	db ECRUTEAK_GYM_HEIGHT, ECRUTEAK_GYM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(EcruteakGym_BlockData), EcruteakGym_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(EcruteakGym_MapScriptHeader), EcruteakGym_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw EcruteakGym_MapEventHeader
-
-	; connections
-	db 0
-; 0x95d08
-
-EcruteakItemfinderHouse_SecondMapHeader: ; 0x95d08
-	; border block
-	db $0
-
-	; height, width
-	db ECRUTEAK_ITEMFINDER_HOUSE_HEIGHT, ECRUTEAK_ITEMFINDER_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(EcruteakLugiaSpeechHouse_BlockData), EcruteakLugiaSpeechHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(EcruteakItemfinderHouse_MapScriptHeader), EcruteakItemfinderHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw EcruteakItemfinderHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x95d14
-
-BlackthornGym1F_SecondMapHeader: ; 0x95d14
-	; border block
-	db $0
-
-	; height, width
-	db BLACKTHORN_GYM_1F_HEIGHT, BLACKTHORN_GYM_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(BlackthornGym1F_BlockData), BlackthornGym1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(BlackthornGym1F_MapScriptHeader), BlackthornGym1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw BlackthornGym1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95d20
-
-BlackthornGym2F_SecondMapHeader: ; 0x95d20
-	; border block
-	db $0
-
-	; height, width
-	db BLACKTHORN_GYM_2F_HEIGHT, BLACKTHORN_GYM_2F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(BlackthornGym2F_BlockData), BlackthornGym2F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(BlackthornGym2F_MapScriptHeader), BlackthornGym2F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw BlackthornGym2F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95d2c
-
-BlackthornDragonSpeechHouse_SecondMapHeader: ; 0x95d2c
-	; border block
-	db $0
-
-	; height, width
-	db BLACKTHORN_DRAGON_SPEECH_HOUSE_HEIGHT, BLACKTHORN_DRAGON_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(BlackthornDragonSpeechHouse_MapScriptHeader), BlackthornDragonSpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw BlackthornDragonSpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x95d38
-
-BlackthornDodrioTradeHouse_SecondMapHeader: ; 0x95d38
-	; border block
-	db $0
-
-	; height, width
-	db BLACKTHORN_DODRIO_TRADE_HOUSE_HEIGHT, BLACKTHORN_DODRIO_TRADE_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(BlackthornDodrioTradeHouse_MapScriptHeader), BlackthornDodrioTradeHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw BlackthornDodrioTradeHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x95d44
-
-BlackthornMart_SecondMapHeader: ; 0x95d44
-	; border block
-	db $0
-
-	; height, width
-	db BLACKTHORN_MART_HEIGHT, BLACKTHORN_MART_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineMart_BlockData), OlivineMart_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(BlackthornMart_MapScriptHeader), BlackthornMart_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw BlackthornMart_MapEventHeader
-
-	; connections
-	db 0
-; 0x95d50
-
-BlackthornPokeCenter1F_SecondMapHeader: ; 0x95d50
-	; border block
-	db $0
-
-	; height, width
-	db BLACKTHORN_POKECENTER_1F_HEIGHT, BLACKTHORN_POKECENTER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivinePokeCenter1F_BlockData), OlivinePokeCenter1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(BlackthornPokeCenter1F_MapScriptHeader), BlackthornPokeCenter1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw BlackthornPokeCenter1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95d5c
-
-MoveDeletersHouse_SecondMapHeader: ; 0x95d5c
-	; border block
-	db $0
-
-	; height, width
-	db MOVE_DELETERS_HOUSE_HEIGHT, MOVE_DELETERS_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(MoveDeletersHouse_MapScriptHeader), MoveDeletersHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw MoveDeletersHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x95d68
-
-CinnabarPokeCenter1F_SecondMapHeader: ; 0x95d68
-	; border block
-	db $0
-
-	; height, width
-	db CINNABAR_POKECENTER_1F_HEIGHT, CINNABAR_POKECENTER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivinePokeCenter1F_BlockData), OlivinePokeCenter1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CinnabarPokeCenter1F_MapScriptHeader), CinnabarPokeCenter1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CinnabarPokeCenter1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95d74
-
-CinnabarPokeCenter2FBeta_SecondMapHeader: ; 0x95d74
-	; border block
-	db $0
-
-	; height, width
-	db CINNABAR_POKECENTER_2F_BETA_HEIGHT, CINNABAR_POKECENTER_2F_BETA_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CinnabarPokeCenter2FBeta_BlockData), CinnabarPokeCenter2FBeta_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CinnabarPokeCenter2FBeta_MapScriptHeader), CinnabarPokeCenter2FBeta_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CinnabarPokeCenter2FBeta_MapEventHeader
-
-	; connections
-	db 0
-; 0x95d80
-
-Route19FuchsiaGate_SecondMapHeader: ; 0x95d80
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_19___FUCHSIA_GATE_HEIGHT, ROUTE_19___FUCHSIA_GATE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SafariZoneFuchsiaGateBeta_BlockData), SafariZoneFuchsiaGateBeta_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route19FuchsiaGate_MapScriptHeader), Route19FuchsiaGate_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route19FuchsiaGate_MapEventHeader
-
-	; connections
-	db 0
-; 0x95d8c
-
-SeafoamGym_SecondMapHeader: ; 0x95d8c
-	; border block
-	db $9
-
-	; height, width
-	db SEAFOAM_GYM_HEIGHT, SEAFOAM_GYM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SeafoamGym_BlockData), SeafoamGym_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(SeafoamGym_MapScriptHeader), SeafoamGym_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw SeafoamGym_MapEventHeader
-
-	; connections
-	db 0
-; 0x95d98
-
-CeruleanGymBadgeSpeechHouse_SecondMapHeader: ; 0x95d98
-	; border block
-	db $0
-
-	; height, width
-	db CERULEAN_GYM_BADGE_SPEECH_HOUSE_HEIGHT, CERULEAN_GYM_BADGE_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeruleanGymBadgeSpeechHouse_MapScriptHeader), CeruleanGymBadgeSpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeruleanGymBadgeSpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x95da4
-
-CeruleanPoliceStation_SecondMapHeader: ; 0x95da4
-	; border block
-	db $0
-
-	; height, width
-	db CERULEAN_POLICE_STATION_HEIGHT, CERULEAN_POLICE_STATION_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeruleanPoliceStation_MapScriptHeader), CeruleanPoliceStation_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeruleanPoliceStation_MapEventHeader
-
-	; connections
-	db 0
-; 0x95db0
-
-CeruleanTradeSpeechHouse_SecondMapHeader: ; 0x95db0
-	; border block
-	db $0
-
-	; height, width
-	db CERULEAN_TRADE_SPEECH_HOUSE_HEIGHT, CERULEAN_TRADE_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeruleanTradeSpeechHouse_MapScriptHeader), CeruleanTradeSpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeruleanTradeSpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x95dbc
-
-CeruleanPokeCenter1F_SecondMapHeader: ; 0x95dbc
-	; border block
-	db $0
-
-	; height, width
-	db CERULEAN_POKECENTER_1F_HEIGHT, CERULEAN_POKECENTER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivinePokeCenter1F_BlockData), OlivinePokeCenter1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeruleanPokeCenter1F_MapScriptHeader), CeruleanPokeCenter1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeruleanPokeCenter1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95dc8
-
-CeruleanPokeCenter2FBeta_SecondMapHeader: ; 0x95dc8
-	; border block
-	db $0
-
-	; height, width
-	db CERULEAN_POKECENTER_2F_BETA_HEIGHT, CERULEAN_POKECENTER_2F_BETA_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CinnabarPokeCenter2FBeta_BlockData), CinnabarPokeCenter2FBeta_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeruleanPokeCenter2FBeta_MapScriptHeader), CeruleanPokeCenter2FBeta_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeruleanPokeCenter2FBeta_MapEventHeader
-
-	; connections
-	db 0
-; 0x95dd4
-
-CeruleanGym_SecondMapHeader: ; 0x95dd4
-	; border block
-	db $0
-
-	; height, width
-	db CERULEAN_GYM_HEIGHT, CERULEAN_GYM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CeruleanGym_BlockData), CeruleanGym_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeruleanGym_MapScriptHeader), CeruleanGym_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeruleanGym_MapEventHeader
-
-	; connections
-	db 0
-; 0x95de0
-
-CeruleanMart_SecondMapHeader: ; 0x95de0
-	; border block
-	db $0
-
-	; height, width
-	db CERULEAN_MART_HEIGHT, CERULEAN_MART_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineMart_BlockData), OlivineMart_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeruleanMart_MapScriptHeader), CeruleanMart_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeruleanMart_MapEventHeader
-
-	; connections
-	db 0
-; 0x95dec
-
-Route10PokeCenter1F_SecondMapHeader: ; 0x95dec
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_10_POKECENTER_1F_HEIGHT, ROUTE_10_POKECENTER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivinePokeCenter1F_BlockData), OlivinePokeCenter1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route10PokeCenter1F_MapScriptHeader), Route10PokeCenter1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route10PokeCenter1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95df8
-
-Route10PokeCenter2FBeta_SecondMapHeader: ; 0x95df8
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_10_POKECENTER_2F_BETA_HEIGHT, ROUTE_10_POKECENTER_2F_BETA_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CinnabarPokeCenter2FBeta_BlockData), CinnabarPokeCenter2FBeta_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route10PokeCenter2FBeta_MapScriptHeader), Route10PokeCenter2FBeta_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route10PokeCenter2FBeta_MapEventHeader
-
-	; connections
-	db 0
-; 0x95e04
-
-PowerPlant_SecondMapHeader: ; 0x95e04
-	; border block
-	db $0
-
-	; height, width
-	db POWER_PLANT_HEIGHT, POWER_PLANT_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(PowerPlant_BlockData), PowerPlant_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(PowerPlant_MapScriptHeader), PowerPlant_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw PowerPlant_MapEventHeader
-
-	; connections
-	db 0
-; 0x95e10
-
-BillsHouse_SecondMapHeader: ; 0x95e10
-	; border block
-	db $0
-
-	; height, width
-	db BILLS_HOUSE_HEIGHT, BILLS_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(BillsHouse_MapScriptHeader), BillsHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw BillsHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x95e1c
-
-AzaleaPokeCenter1F_SecondMapHeader: ; 0x95e1c
-	; border block
-	db $0
-
-	; height, width
-	db AZALEA_POKECENTER_1F_HEIGHT, AZALEA_POKECENTER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivinePokeCenter1F_BlockData), OlivinePokeCenter1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(AzaleaPokeCenter1F_MapScriptHeader), AzaleaPokeCenter1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw AzaleaPokeCenter1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95e28
-
-CharcoalKiln_SecondMapHeader: ; 0x95e28
-	; border block
-	db $0
-
-	; height, width
-	db CHARCOAL_KILN_HEIGHT, CHARCOAL_KILN_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CharcoalKiln_MapScriptHeader), CharcoalKiln_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CharcoalKiln_MapEventHeader
-
-	; connections
-	db 0
-; 0x95e34
-
-AzaleaMart_SecondMapHeader: ; 0x95e34
-	; border block
-	db $0
-
-	; height, width
-	db AZALEA_MART_HEIGHT, AZALEA_MART_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineMart_BlockData), OlivineMart_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(AzaleaMart_MapScriptHeader), AzaleaMart_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw AzaleaMart_MapEventHeader
-
-	; connections
-	db 0
-; 0x95e40
-
-KurtsHouse_SecondMapHeader: ; 0x95e40
-	; border block
-	db $0
-
-	; height, width
-	db KURTS_HOUSE_HEIGHT, KURTS_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(KurtsHouse_BlockData), KurtsHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(KurtsHouse_MapScriptHeader), KurtsHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw KurtsHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x95e4c
-
-AzaleaGym_SecondMapHeader: ; 0x95e4c
-	; border block
-	db $0
-
-	; height, width
-	db AZALEA_GYM_HEIGHT, AZALEA_GYM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(AzaleaGym_BlockData), AzaleaGym_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(AzaleaGym_MapScriptHeader), AzaleaGym_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw AzaleaGym_MapEventHeader
-
-	; connections
-	db 0
-; 0x95e58
-
-LakeofRageHiddenPowerHouse_SecondMapHeader: ; 0x95e58
-	; border block
-	db $0
-
-	; height, width
-	db LAKE_OF_RAGE_HIDDEN_POWER_HOUSE_HEIGHT, LAKE_OF_RAGE_HIDDEN_POWER_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(LakeofRageHiddenPowerHouse_MapScriptHeader), LakeofRageHiddenPowerHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw LakeofRageHiddenPowerHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x95e64
-
-LakeofRageMagikarpHouse_SecondMapHeader: ; 0x95e64
-	; border block
-	db $0
-
-	; height, width
-	db LAKE_OF_RAGE_MAGIKARP_HOUSE_HEIGHT, LAKE_OF_RAGE_MAGIKARP_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(LakeofRageMagikarpHouse_MapScriptHeader), LakeofRageMagikarpHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw LakeofRageMagikarpHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x95e70
-
-Route43MahoganyGate_SecondMapHeader: ; 0x95e70
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_43_MAHOGANY_GATE_HEIGHT, ROUTE_43_MAHOGANY_GATE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SafariZoneFuchsiaGateBeta_BlockData), SafariZoneFuchsiaGateBeta_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route43MahoganyGate_MapScriptHeader), Route43MahoganyGate_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route43MahoganyGate_MapEventHeader
-
-	; connections
-	db 0
-; 0x95e7c
-
-Route43Gate_SecondMapHeader: ; 0x95e7c
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_43_GATE_HEIGHT, ROUTE_43_GATE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SafariZoneFuchsiaGateBeta_BlockData), SafariZoneFuchsiaGateBeta_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route43Gate_MapScriptHeader), Route43Gate_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route43Gate_MapEventHeader
-
-	; connections
-	db 0
-; 0x95e88
-
-VioletMart_SecondMapHeader: ; 0x95e88
-	; border block
-	db $0
-
-	; height, width
-	db VIOLET_MART_HEIGHT, VIOLET_MART_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineMart_BlockData), OlivineMart_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(VioletMart_MapScriptHeader), VioletMart_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw VioletMart_MapEventHeader
-
-	; connections
-	db 0
-; 0x95e94
-
-VioletGym_SecondMapHeader: ; 0x95e94
-	; border block
-	db $0
-
-	; height, width
-	db VIOLET_GYM_HEIGHT, VIOLET_GYM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(VioletGym_BlockData), VioletGym_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(VioletGym_MapScriptHeader), VioletGym_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw VioletGym_MapEventHeader
-
-	; connections
-	db 0
-; 0x95ea0
-
-EarlsPokemonAcademy_SecondMapHeader: ; 0x95ea0
-	; border block
-	db $0
-
-	; height, width
-	db EARLS_POKEMON_ACADEMY_HEIGHT, EARLS_POKEMON_ACADEMY_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(EarlsPokemonAcademy_BlockData), EarlsPokemonAcademy_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(EarlsPokemonAcademy_MapScriptHeader), EarlsPokemonAcademy_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw EarlsPokemonAcademy_MapEventHeader
-
-	; connections
-	db 0
-; 0x95eac
-
-VioletNicknameSpeechHouse_SecondMapHeader: ; 0x95eac
-	; border block
-	db $0
-
-	; height, width
-	db VIOLET_NICKNAME_SPEECH_HOUSE_HEIGHT, VIOLET_NICKNAME_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(EcruteakLugiaSpeechHouse_BlockData), EcruteakLugiaSpeechHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(VioletNicknameSpeechHouse_MapScriptHeader), VioletNicknameSpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw VioletNicknameSpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x95eb8
-
-VioletPokeCenter1F_SecondMapHeader: ; 0x95eb8
-	; border block
-	db $0
-
-	; height, width
-	db VIOLET_POKECENTER_1F_HEIGHT, VIOLET_POKECENTER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivinePokeCenter1F_BlockData), OlivinePokeCenter1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(VioletPokeCenter1F_MapScriptHeader), VioletPokeCenter1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw VioletPokeCenter1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95ec4
-
-VioletOnixTradeHouse_SecondMapHeader: ; 0x95ec4
-	; border block
-	db $0
-
-	; height, width
-	db VIOLET_ONIX_TRADE_HOUSE_HEIGHT, VIOLET_ONIX_TRADE_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(EcruteakLugiaSpeechHouse_BlockData), EcruteakLugiaSpeechHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(VioletOnixTradeHouse_MapScriptHeader), VioletOnixTradeHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw VioletOnixTradeHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x95ed0
-
-Route32RuinsofAlphGate_SecondMapHeader: ; 0x95ed0
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_32_RUINS_OF_ALPH_GATE_HEIGHT, ROUTE_32_RUINS_OF_ALPH_GATE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route38EcruteakGate_BlockData), Route38EcruteakGate_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route32RuinsofAlphGate_MapScriptHeader), Route32RuinsofAlphGate_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route32RuinsofAlphGate_MapEventHeader
-
-	; connections
-	db 0
-; 0x95edc
-
-Route32PokeCenter1F_SecondMapHeader: ; 0x95edc
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_32_POKECENTER_1F_HEIGHT, ROUTE_32_POKECENTER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivinePokeCenter1F_BlockData), OlivinePokeCenter1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route32PokeCenter1F_MapScriptHeader), Route32PokeCenter1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route32PokeCenter1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95ee8
-
-Route35Goldenrodgate_SecondMapHeader: ; 0x95ee8
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_35_GOLDENROD_GATE_HEIGHT, ROUTE_35_GOLDENROD_GATE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SafariZoneFuchsiaGateBeta_BlockData), SafariZoneFuchsiaGateBeta_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route35Goldenrodgate_MapScriptHeader), Route35Goldenrodgate_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route35Goldenrodgate_MapEventHeader
-
-	; connections
-	db 0
-; 0x95ef4
-
-Route35NationalParkgate_SecondMapHeader: ; 0x95ef4
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_35_NATIONAL_PARK_GATE_HEIGHT, ROUTE_35_NATIONAL_PARK_GATE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route35NationalParkgate_BlockData), Route35NationalParkgate_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route35NationalParkgate_MapScriptHeader), Route35NationalParkgate_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route35NationalParkgate_MapEventHeader
-
-	; connections
-	db 0
-; 0x95f00
-
-Route36RuinsofAlphgate_SecondMapHeader: ; 0x95f00
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_36_RUINS_OF_ALPH_GATE_HEIGHT, ROUTE_36_RUINS_OF_ALPH_GATE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SafariZoneFuchsiaGateBeta_BlockData), SafariZoneFuchsiaGateBeta_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route36RuinsofAlphgate_MapScriptHeader), Route36RuinsofAlphgate_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route36RuinsofAlphgate_MapEventHeader
-
-	; connections
-	db 0
-; 0x95f0c
-
-Route36NationalParkgate_SecondMapHeader: ; 0x95f0c
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_36_NATIONAL_PARK_GATE_HEIGHT, ROUTE_36_NATIONAL_PARK_GATE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route36NationalParkgate_BlockData), Route36NationalParkgate_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route36NationalParkgate_MapScriptHeader), Route36NationalParkgate_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route36NationalParkgate_MapEventHeader
-
-	; connections
-	db 0
-; 0x95f18
-
-GoldenrodGym_SecondMapHeader: ; 0x95f18
-	; border block
-	db $0
-
-	; height, width
-	db GOLDENROD_GYM_HEIGHT, GOLDENROD_GYM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(GoldenrodGym_BlockData), GoldenrodGym_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(GoldenrodGym_MapScriptHeader), GoldenrodGym_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw GoldenrodGym_MapEventHeader
-
-	; connections
-	db 0
-; 0x95f24
-
-GoldenrodBikeShop_SecondMapHeader: ; 0x95f24
-	; border block
-	db $0
-
-	; height, width
-	db GOLDENROD_BIKE_SHOP_HEIGHT, GOLDENROD_BIKE_SHOP_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(GoldenrodBikeShop_BlockData), GoldenrodBikeShop_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(GoldenrodBikeShop_MapScriptHeader), GoldenrodBikeShop_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw GoldenrodBikeShop_MapEventHeader
-
-	; connections
-	db 0
-; 0x95f30
-
-GoldenrodHappinessRater_SecondMapHeader: ; 0x95f30
-	; border block
-	db $0
-
-	; height, width
-	db GOLDENROD_HAPPINESS_RATER_HEIGHT, GOLDENROD_HAPPINESS_RATER_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(GoldenrodHappinessRater_MapScriptHeader), GoldenrodHappinessRater_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw GoldenrodHappinessRater_MapEventHeader
-
-	; connections
-	db 0
-; 0x95f3c
-
-GoldenrodBillsHouse_SecondMapHeader: ; 0x95f3c
-	; border block
-	db $0
-
-	; height, width
-	db GOLDENROD_BILLS_HOUSE_HEIGHT, GOLDENROD_BILLS_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(GoldenrodBillsHouse_MapScriptHeader), GoldenrodBillsHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw GoldenrodBillsHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x95f48
-
-GoldenrodMagnetTrainStation_SecondMapHeader: ; 0x95f48
-	; border block
-	db $0
-
-	; height, width
-	db GOLDENROD_MAGNET_TRAIN_STATION_HEIGHT, GOLDENROD_MAGNET_TRAIN_STATION_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(GoldenrodMagnetTrainStation_BlockData), GoldenrodMagnetTrainStation_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(GoldenrodMagnetTrainStation_MapScriptHeader), GoldenrodMagnetTrainStation_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw GoldenrodMagnetTrainStation_MapEventHeader
-
-	; connections
-	db 0
-; 0x95f54
-
-GoldenrodFlowerShop_SecondMapHeader: ; 0x95f54
-	; border block
-	db $0
-
-	; height, width
-	db GOLDENROD_FLOWER_SHOP_HEIGHT, GOLDENROD_FLOWER_SHOP_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(GoldenrodFlowerShop_BlockData), GoldenrodFlowerShop_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(GoldenrodFlowerShop_MapScriptHeader), GoldenrodFlowerShop_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw GoldenrodFlowerShop_MapEventHeader
-
-	; connections
-	db 0
-; 0x95f60
-
-GoldenrodPPSpeechHouse_SecondMapHeader: ; 0x95f60
-	; border block
-	db $0
-
-	; height, width
-	db GOLDENROD_PP_SPEECH_HOUSE_HEIGHT, GOLDENROD_PP_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(GoldenrodPPSpeechHouse_MapScriptHeader), GoldenrodPPSpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw GoldenrodPPSpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x95f6c
-
-GoldenrodNameRatersHouse_SecondMapHeader: ; 0x95f6c
-	; border block
-	db $0
-
-	; height, width
-	db GOLDENROD_NAME_RATERS_HOUSE_HEIGHT, GOLDENROD_NAME_RATERS_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(GoldenrodNameRatersHouse_MapScriptHeader), GoldenrodNameRatersHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw GoldenrodNameRatersHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x95f78
-
-GoldenrodDeptStore1F_SecondMapHeader: ; 0x95f78
-	; border block
-	db $0
-
-	; height, width
-	db GOLDENROD_DEPT_STORE_1F_HEIGHT, GOLDENROD_DEPT_STORE_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStore1F_BlockData), GoldenrodDeptStore1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStore1F_MapScriptHeader), GoldenrodDeptStore1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw GoldenrodDeptStore1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95f84
-
-GoldenrodDeptStore2F_SecondMapHeader: ; 0x95f84
-	; border block
-	db $0
-
-	; height, width
-	db GOLDENROD_DEPT_STORE_2F_HEIGHT, GOLDENROD_DEPT_STORE_2F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStore2F_BlockData), GoldenrodDeptStore2F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStore2F_MapScriptHeader), GoldenrodDeptStore2F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw GoldenrodDeptStore2F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95f90
-
-GoldenrodDeptStore3F_SecondMapHeader: ; 0x95f90
-	; border block
-	db $0
-
-	; height, width
-	db GOLDENROD_DEPT_STORE_3F_HEIGHT, GOLDENROD_DEPT_STORE_3F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStore3F_BlockData), GoldenrodDeptStore3F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStore3F_MapScriptHeader), GoldenrodDeptStore3F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw GoldenrodDeptStore3F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95f9c
-
-GoldenrodDeptStore4F_SecondMapHeader: ; 0x95f9c
-	; border block
-	db $0
-
-	; height, width
-	db GOLDENROD_DEPT_STORE_4F_HEIGHT, GOLDENROD_DEPT_STORE_4F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStore4F_BlockData), GoldenrodDeptStore4F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStore4F_MapScriptHeader), GoldenrodDeptStore4F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw GoldenrodDeptStore4F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95fa8
-
-GoldenrodDeptStore5F_SecondMapHeader: ; 0x95fa8
-	; border block
-	db $0
-
-	; height, width
-	db GOLDENROD_DEPT_STORE_5F_HEIGHT, GOLDENROD_DEPT_STORE_5F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStore5F_BlockData), GoldenrodDeptStore5F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStore5F_MapScriptHeader), GoldenrodDeptStore5F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw GoldenrodDeptStore5F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95fb4
-
-GoldenrodDeptStore6F_SecondMapHeader: ; 0x95fb4
-	; border block
-	db $0
-
-	; height, width
-	db GOLDENROD_DEPT_STORE_6F_HEIGHT, GOLDENROD_DEPT_STORE_6F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStore6F_BlockData), GoldenrodDeptStore6F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStore6F_MapScriptHeader), GoldenrodDeptStore6F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw GoldenrodDeptStore6F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95fc0
-
-GoldenrodDeptStoreElevator_SecondMapHeader: ; 0x95fc0
-	; border block
-	db $0
-
-	; height, width
-	db GOLDENROD_DEPT_STORE_ELEVATOR_HEIGHT, GOLDENROD_DEPT_STORE_ELEVATOR_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStoreElevator_BlockData), GoldenrodDeptStoreElevator_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStoreElevator_MapScriptHeader), GoldenrodDeptStoreElevator_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw GoldenrodDeptStoreElevator_MapEventHeader
-
-	; connections
-	db 0
-; 0x95fcc
-
-GoldenrodDeptStoreRoof_SecondMapHeader: ; 0x95fcc
-	; border block
-	db $24
-
-	; height, width
-	db GOLDENROD_DEPT_STORE_ROOF_HEIGHT, GOLDENROD_DEPT_STORE_ROOF_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStoreRoof_BlockData), GoldenrodDeptStoreRoof_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStoreRoof_MapScriptHeader), GoldenrodDeptStoreRoof_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw GoldenrodDeptStoreRoof_MapEventHeader
-
-	; connections
-	db 0
-; 0x95fd8
-
-GoldenrodGameCorner_SecondMapHeader: ; 0x95fd8
-	; border block
-	db $0
-
-	; height, width
-	db GOLDENROD_GAME_CORNER_HEIGHT, GOLDENROD_GAME_CORNER_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(GoldenrodGameCorner_BlockData), GoldenrodGameCorner_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(GoldenrodGameCorner_MapScriptHeader), GoldenrodGameCorner_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw GoldenrodGameCorner_MapEventHeader
-
-	; connections
-	db 0
-; 0x95fe4
-
-GoldenrodPokeCenter1F_SecondMapHeader: ; 0x95fe4
-	; border block
-	db $0
-
-	; height, width
-	db GOLDENROD_POKECENTER_1F_HEIGHT, GOLDENROD_POKECENTER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivinePokeCenter1F_BlockData), OlivinePokeCenter1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(GoldenrodPokeCenter1F_MapScriptHeader), GoldenrodPokeCenter1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw GoldenrodPokeCenter1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x95ff0
-
-GoldenrodPokeComCenter2FMobile_SecondMapHeader: ; 0x95ff0
-	; border block
-	db $0
-
-	; height, width
-	db GOLDENROD_POKECOM_CENTER_2F_MOBILE_HEIGHT, GOLDENROD_POKECOM_CENTER_2F_MOBILE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(GoldenrodPokeComCenter2FMobile_BlockData), GoldenrodPokeComCenter2FMobile_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(GoldenrodPokeComCenter2FMobile_MapScriptHeader), GoldenrodPokeComCenter2FMobile_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw GoldenrodPokeComCenter2FMobile_MapEventHeader
-
-	; connections
-	db 0
-; 0x95ffc
-
-IlexForestAzaleaGate_SecondMapHeader: ; 0x95ffc
-	; border block
-	db $0
-
-	; height, width
-	db ILEX_FOREST_AZALEA_GATE_HEIGHT, ILEX_FOREST_AZALEA_GATE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route38EcruteakGate_BlockData), Route38EcruteakGate_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(IlexForestAzaleaGate_MapScriptHeader), IlexForestAzaleaGate_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw IlexForestAzaleaGate_MapEventHeader
-
-	; connections
-	db 0
-; 0x96008
-
-Route34IlexForestGate_SecondMapHeader: ; 0x96008
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_34_ILEX_FOREST_GATE_HEIGHT, ROUTE_34_ILEX_FOREST_GATE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SafariZoneFuchsiaGateBeta_BlockData), SafariZoneFuchsiaGateBeta_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route34IlexForestGate_MapScriptHeader), Route34IlexForestGate_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route34IlexForestGate_MapEventHeader
-
-	; connections
-	db 0
-; 0x96014
-
-DayCare_SecondMapHeader: ; 0x96014
-	; border block
-	db $0
-
-	; height, width
-	db DAY_CARE_HEIGHT, DAY_CARE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(DayCare_BlockData), DayCare_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(DayCare_MapScriptHeader), DayCare_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw DayCare_MapEventHeader
-
-	; connections
-	db 0
-; 0x96020
-
-VermilionHouseFishingSpeechHouse_SecondMapHeader: ; 0x96020
-	; border block
-	db $0
-
-	; height, width
-	db VERMILION_HOUSE_FISHING_SPEECH_HOUSE_HEIGHT, VERMILION_HOUSE_FISHING_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(VermilionHouseFishingSpeechHouse_MapScriptHeader), VermilionHouseFishingSpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw VermilionHouseFishingSpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x9602c
-
-VermilionPokeCenter1F_SecondMapHeader: ; 0x9602c
-	; border block
-	db $0
-
-	; height, width
-	db VERMILION_POKECENTER_1F_HEIGHT, VERMILION_POKECENTER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivinePokeCenter1F_BlockData), OlivinePokeCenter1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(VermilionPokeCenter1F_MapScriptHeader), VermilionPokeCenter1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw VermilionPokeCenter1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x96038
-
-VermilionPokeCenter2FBeta_SecondMapHeader: ; 0x96038
-	; border block
-	db $0
-
-	; height, width
-	db VERMILION_POKECENTER_2F_BETA_HEIGHT, VERMILION_POKECENTER_2F_BETA_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CinnabarPokeCenter2FBeta_BlockData), CinnabarPokeCenter2FBeta_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(VermilionPokeCenter2FBeta_MapScriptHeader), VermilionPokeCenter2FBeta_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw VermilionPokeCenter2FBeta_MapEventHeader
-
-	; connections
-	db 0
-; 0x96044
-
-PokemonFanClub_SecondMapHeader: ; 0x96044
-	; border block
-	db $0
-
-	; height, width
-	db POKEMON_FAN_CLUB_HEIGHT, POKEMON_FAN_CLUB_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(PokemonFanClub_BlockData), PokemonFanClub_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(PokemonFanClub_MapScriptHeader), PokemonFanClub_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw PokemonFanClub_MapEventHeader
-
-	; connections
-	db 0
-; 0x96050
-
-VermilionMagnetTrainSpeechHouse_SecondMapHeader: ; 0x96050
-	; border block
-	db $0
-
-	; height, width
-	db VERMILION_MAGNET_TRAIN_SPEECH_HOUSE_HEIGHT, VERMILION_MAGNET_TRAIN_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(VermilionMagnetTrainSpeechHouse_MapScriptHeader), VermilionMagnetTrainSpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw VermilionMagnetTrainSpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x9605c
-
-VermilionMart_SecondMapHeader: ; 0x9605c
-	; border block
-	db $0
-
-	; height, width
-	db VERMILION_MART_HEIGHT, VERMILION_MART_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineMart_BlockData), OlivineMart_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(VermilionMart_MapScriptHeader), VermilionMart_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw VermilionMart_MapEventHeader
-
-	; connections
-	db 0
-; 0x96068
-
-VermilionHouseDiglettsCaveSpeechHouse_SecondMapHeader: ; 0x96068
-	; border block
-	db $0
-
-	; height, width
-	db VERMILION_HOUSE_DIGLETTS_CAVE_SPEECH_HOUSE_HEIGHT, VERMILION_HOUSE_DIGLETTS_CAVE_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(VermilionHouseDiglettsCaveSpeechHouse_MapScriptHeader), VermilionHouseDiglettsCaveSpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw VermilionHouseDiglettsCaveSpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x96074
-
-VermilionGym_SecondMapHeader: ; 0x96074
-	; border block
-	db $0
-
-	; height, width
-	db VERMILION_GYM_HEIGHT, VERMILION_GYM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(VermilionGym_BlockData), VermilionGym_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(VermilionGym_MapScriptHeader), VermilionGym_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw VermilionGym_MapEventHeader
-
-	; connections
-	db 0
-; 0x96080
-
-Route6SaffronGate_SecondMapHeader: ; 0x96080
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_6_SAFFRON_GATE_HEIGHT, ROUTE_6_SAFFRON_GATE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SafariZoneFuchsiaGateBeta_BlockData), SafariZoneFuchsiaGateBeta_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route6SaffronGate_MapScriptHeader), Route6SaffronGate_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route6SaffronGate_MapEventHeader
-
-	; connections
-	db 0
-; 0x9608c
-
-Route6UndergroundEntrance_SecondMapHeader: ; 0x9608c
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_6_UNDERGROUND_ENTRANCE_HEIGHT, ROUTE_6_UNDERGROUND_ENTRANCE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route6UndergroundEntrance_BlockData), Route6UndergroundEntrance_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route6UndergroundEntrance_MapScriptHeader), Route6UndergroundEntrance_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route6UndergroundEntrance_MapEventHeader
-
-	; connections
-	db 0
-; 0x96098
-
-RedsHouse1F_SecondMapHeader: ; 0x96098
-	; border block
-	db $0
-
-	; height, width
-	db REDS_HOUSE_1F_HEIGHT, REDS_HOUSE_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(RedsHouse1F_BlockData), RedsHouse1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(RedsHouse1F_MapScriptHeader), RedsHouse1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw RedsHouse1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x960a4
-
-RedsHouse2F_SecondMapHeader: ; 0x960a4
-	; border block
-	db $0
-
-	; height, width
-	db REDS_HOUSE_2F_HEIGHT, REDS_HOUSE_2F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(RedsHouse2F_BlockData), RedsHouse2F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(RedsHouse2F_MapScriptHeader), RedsHouse2F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw RedsHouse2F_MapEventHeader
-
-	; connections
-	db 0
-; 0x960b0
-
-BluesHouse_SecondMapHeader: ; 0x960b0
-	; border block
-	db $0
-
-	; height, width
-	db BLUES_HOUSE_HEIGHT, BLUES_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(BluesHouse_MapScriptHeader), BluesHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw BluesHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x960bc
-
-OaksLab_SecondMapHeader: ; 0x960bc
-	; border block
-	db $0
-
-	; height, width
-	db OAKS_LAB_HEIGHT, OAKS_LAB_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OaksLab_BlockData), OaksLab_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(OaksLab_MapScriptHeader), OaksLab_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw OaksLab_MapEventHeader
-
-	; connections
-	db 0
-; 0x960c8
-
-PewterNidoranSpeechHouse_SecondMapHeader: ; 0x960c8
-	; border block
-	db $0
-
-	; height, width
-	db PEWTER_NIDORAN_SPEECH_HOUSE_HEIGHT, PEWTER_NIDORAN_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(PewterNidoranSpeechHouse_MapScriptHeader), PewterNidoranSpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw PewterNidoranSpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x960d4
-
-PewterGym_SecondMapHeader: ; 0x960d4
-	; border block
-	db $0
-
-	; height, width
-	db PEWTER_GYM_HEIGHT, PEWTER_GYM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(PewterGym_BlockData), PewterGym_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(PewterGym_MapScriptHeader), PewterGym_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw PewterGym_MapEventHeader
-
-	; connections
-	db 0
-; 0x960e0
-
-PewterMart_SecondMapHeader: ; 0x960e0
-	; border block
-	db $0
-
-	; height, width
-	db PEWTER_MART_HEIGHT, PEWTER_MART_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineMart_BlockData), OlivineMart_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(PewterMart_MapScriptHeader), PewterMart_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw PewterMart_MapEventHeader
-
-	; connections
-	db 0
-; 0x960ec
-
-PewterPokeCenter1F_SecondMapHeader: ; 0x960ec
-	; border block
-	db $0
-
-	; height, width
-	db PEWTER_POKECENTER_1F_HEIGHT, PEWTER_POKECENTER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivinePokeCenter1F_BlockData), OlivinePokeCenter1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(PewterPokeCenter1F_MapScriptHeader), PewterPokeCenter1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw PewterPokeCenter1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x960f8
-
-PewterPokeCEnter2FBeta_SecondMapHeader: ; 0x960f8
-	; border block
-	db $0
-
-	; height, width
-	db PEWTER_POKECENTER_2F_BETA_HEIGHT, PEWTER_POKECENTER_2F_BETA_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CinnabarPokeCenter2FBeta_BlockData), CinnabarPokeCenter2FBeta_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(PewterPokeCEnter2FBeta_MapScriptHeader), PewterPokeCEnter2FBeta_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw PewterPokeCEnter2FBeta_MapEventHeader
-
-	; connections
-	db 0
-; 0x96104
-
-PewterSnoozeSpeechHouse_SecondMapHeader: ; 0x96104
-	; border block
-	db $0
-
-	; height, width
-	db PEWTER_SNOOZE_SPEECH_HOUSE_HEIGHT, PEWTER_SNOOZE_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(PewterSnoozeSpeechHouse_MapScriptHeader), PewterSnoozeSpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw PewterSnoozeSpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x96110
-
-OlivinePort_SecondMapHeader: ; 0x96110
-	; border block
-	db $a
-
-	; height, width
-	db OLIVINE_PORT_HEIGHT, OLIVINE_PORT_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivinePort_BlockData), OlivinePort_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(OlivinePort_MapScriptHeader), OlivinePort_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw OlivinePort_MapEventHeader
-
-	; connections
-	db 0
-; 0x9611c
-
-VermilionPort_SecondMapHeader: ; 0x9611c
-	; border block
-	db $a
-
-	; height, width
-	db VERMILION_PORT_HEIGHT, VERMILION_PORT_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(VermilionPort_BlockData), VermilionPort_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(VermilionPort_MapScriptHeader), VermilionPort_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw VermilionPort_MapEventHeader
-
-	; connections
-	db 0
-; 0x96128
-
-FastShip1F_SecondMapHeader: ; 0x96128
-	; border block
-	db $0
-
-	; height, width
-	db FAST_SHIP_1F_HEIGHT, FAST_SHIP_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(FastShip1F_BlockData), FastShip1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(FastShip1F_MapScriptHeader), FastShip1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw FastShip1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x96134
-
-FastShipCabins_NNW_NNE_NE_SecondMapHeader: ; 0x96134
-	; border block
-	db $0
-
-	; height, width
-	db FAST_SHIP_CABINS_NNW_NNE_NE_HEIGHT, FAST_SHIP_CABINS_NNW_NNE_NE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(FastShipCabins_NNW_NNE_NE_BlockData), FastShipCabins_NNW_NNE_NE_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(FastShipCabins_NNW_NNE_NE_MapScriptHeader), FastShipCabins_NNW_NNE_NE_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw FastShipCabins_NNW_NNE_NE_MapEventHeader
-
-	; connections
-	db 0
-; 0x96140
-
-FastShipCabins_SW_SSW_NW_SecondMapHeader: ; 0x96140
-	; border block
-	db $0
-
-	; height, width
-	db FAST_SHIP_CABINS_SW_SSW_NW_HEIGHT, FAST_SHIP_CABINS_SW_SSW_NW_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(FastShipCabins_SW_SSW_NW_BlockData), FastShipCabins_SW_SSW_NW_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(FastShipCabins_SW_SSW_NW_MapScriptHeader), FastShipCabins_SW_SSW_NW_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw FastShipCabins_SW_SSW_NW_MapEventHeader
-
-	; connections
-	db 0
-; 0x9614c
-
-FastShipCabins_SE_SSE_CaptainsCabin_SecondMapHeader: ; 0x9614c
-	; border block
-	db $0
-
-	; height, width
-	db FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_HEIGHT, FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(FastShipCabins_SE_SSE_CaptainsCabin_BlockData), FastShipCabins_SE_SSE_CaptainsCabin_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(FastShipCabins_SE_SSE_CaptainsCabin_MapScriptHeader), FastShipCabins_SE_SSE_CaptainsCabin_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw FastShipCabins_SE_SSE_CaptainsCabin_MapEventHeader
-
-	; connections
-	db 0
-; 0x96158
-
-FastShipB1F_SecondMapHeader: ; 0x96158
-	; border block
-	db $0
-
-	; height, width
-	db FAST_SHIP_B1F_HEIGHT, FAST_SHIP_B1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(FastShipB1F_BlockData), FastShipB1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(FastShipB1F_MapScriptHeader), FastShipB1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw FastShipB1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x96164
-
-OlivinePortPassage_SecondMapHeader: ; 0x96164
-	; border block
-	db $0
-
-	; height, width
-	db OLIVINE_PORT_PASSAGE_HEIGHT, OLIVINE_PORT_PASSAGE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivinePortPassage_BlockData), OlivinePortPassage_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(OlivinePortPassage_MapScriptHeader), OlivinePortPassage_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw OlivinePortPassage_MapEventHeader
-
-	; connections
-	db 0
-; 0x96170
-
-VermilionPortPassage_SecondMapHeader: ; 0x96170
-	; border block
-	db $0
-
-	; height, width
-	db VERMILION_PORT_PASSAGE_HEIGHT, VERMILION_PORT_PASSAGE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivinePortPassage_BlockData), OlivinePortPassage_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(VermilionPortPassage_MapScriptHeader), VermilionPortPassage_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw VermilionPortPassage_MapEventHeader
-
-	; connections
-	db 0
-; 0x9617c
-
-MountMoonSquare_SecondMapHeader: ; 0x9617c
-	; border block
-	db $2d
-
-	; height, width
-	db MOUNT_MOON_SQUARE_HEIGHT, MOUNT_MOON_SQUARE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(MountMoonSquare_BlockData), MountMoonSquare_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(MountMoonSquare_MapScriptHeader), MountMoonSquare_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw MountMoonSquare_MapEventHeader
-
-	; connections
-	db 0
-; 0x96188
-
-MountMoonGiftShop_SecondMapHeader: ; 0x96188
-	; border block
-	db $0
-
-	; height, width
-	db MOUNT_MOON_GIFT_SHOP_HEIGHT, MOUNT_MOON_GIFT_SHOP_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(MahoganyMart1F_BlockData), MahoganyMart1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(MountMoonGiftShop_MapScriptHeader), MountMoonGiftShop_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw MountMoonGiftShop_MapEventHeader
-
-	; connections
-	db 0
-; 0x96194
-
-TinTowerRoof_SecondMapHeader: ; 0x96194
-	; border block
-	db $0
-
-	; height, width
-	db TIN_TOWER_ROOF_HEIGHT, TIN_TOWER_ROOF_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(TinTowerRoof_BlockData), TinTowerRoof_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(TinTowerRoof_MapScriptHeader), TinTowerRoof_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw TinTowerRoof_MapEventHeader
-
-	; connections
-	db 0
-; 0x961a0
-
-IndigoPlateauPokeCenter1F_SecondMapHeader: ; 0x961a0
-	; border block
-	db $0
-
-	; height, width
-	db INDIGO_PLATEAU_POKECENTER_1F_HEIGHT, INDIGO_PLATEAU_POKECENTER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(IndigoPlateauPokeCenter1F_BlockData), IndigoPlateauPokeCenter1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(IndigoPlateauPokeCenter1F_MapScriptHeader), IndigoPlateauPokeCenter1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw IndigoPlateauPokeCenter1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x961ac
-
-WillsRoom_SecondMapHeader: ; 0x961ac
-	; border block
-	db $0
-
-	; height, width
-	db WILLS_ROOM_HEIGHT, WILLS_ROOM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(WillsRoom_BlockData), WillsRoom_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(WillsRoom_MapScriptHeader), WillsRoom_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw WillsRoom_MapEventHeader
-
-	; connections
-	db 0
-; 0x961b8
-
-KogasRoom_SecondMapHeader: ; 0x961b8
-	; border block
-	db $0
-
-	; height, width
-	db KOGAS_ROOM_HEIGHT, KOGAS_ROOM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(KogasRoom_BlockData), KogasRoom_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(KogasRoom_MapScriptHeader), KogasRoom_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw KogasRoom_MapEventHeader
-
-	; connections
-	db 0
-; 0x961c4
-
-BrunosRoom_SecondMapHeader: ; 0x961c4
-	; border block
-	db $0
-
-	; height, width
-	db BRUNOS_ROOM_HEIGHT, BRUNOS_ROOM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(BrunosRoom_BlockData), BrunosRoom_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(BrunosRoom_MapScriptHeader), BrunosRoom_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw BrunosRoom_MapEventHeader
-
-	; connections
-	db 0
-; 0x961d0
-
-KarensRoom_SecondMapHeader: ; 0x961d0
-	; border block
-	db $0
-
-	; height, width
-	db KARENS_ROOM_HEIGHT, KARENS_ROOM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(KarensRoom_BlockData), KarensRoom_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(KarensRoom_MapScriptHeader), KarensRoom_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw KarensRoom_MapEventHeader
-
-	; connections
-	db 0
-; 0x961dc
-
-LancesRoom_SecondMapHeader: ; 0x961dc
-	; border block
-	db $0
-
-	; height, width
-	db LANCES_ROOM_HEIGHT, LANCES_ROOM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(LancesRoom_BlockData), LancesRoom_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(LancesRoom_MapScriptHeader), LancesRoom_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw LancesRoom_MapEventHeader
-
-	; connections
-	db 0
-; 0x961e8
-
-HallOfFame_SecondMapHeader: ; 0x961e8
-	; border block
-	db $0
-
-	; height, width
-	db HALL_OF_FAME_HEIGHT, HALL_OF_FAME_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(HallOfFame_BlockData), HallOfFame_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(HallOfFame_MapScriptHeader), HallOfFame_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw HallOfFame_MapEventHeader
-
-	; connections
-	db 0
-; 0x961f4
-
-FuchsiaMart_SecondMapHeader: ; 0x961f4
-	; border block
-	db $0
-
-	; height, width
-	db FUCHSIA_MART_HEIGHT, FUCHSIA_MART_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineMart_BlockData), OlivineMart_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(FuchsiaMart_MapScriptHeader), FuchsiaMart_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw FuchsiaMart_MapEventHeader
-
-	; connections
-	db 0
-; 0x96200
-
-SafariZoneMainOffice_SecondMapHeader: ; 0x96200
-	; border block
-	db $0
-
-	; height, width
-	db SAFARI_ZONE_MAIN_OFFICE_HEIGHT, SAFARI_ZONE_MAIN_OFFICE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineCafe_BlockData), OlivineCafe_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(SafariZoneMainOffice_MapScriptHeader), SafariZoneMainOffice_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw SafariZoneMainOffice_MapEventHeader
-
-	; connections
-	db 0
-; 0x9620c
-
-FuchsiaGym_SecondMapHeader: ; 0x9620c
-	; border block
-	db $0
-
-	; height, width
-	db FUCHSIA_GYM_HEIGHT, FUCHSIA_GYM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(FuchsiaGym_BlockData), FuchsiaGym_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(FuchsiaGym_MapScriptHeader), FuchsiaGym_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw FuchsiaGym_MapEventHeader
-
-	; connections
-	db 0
-; 0x96218
-
-FuchsiaBillSpeechHouse_SecondMapHeader: ; 0x96218
-	; border block
-	db $0
-
-	; height, width
-	db FUCHSIA_BILL_SPEECH_HOUSE_HEIGHT, FUCHSIA_BILL_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(FuchsiaBillSpeechHouse_MapScriptHeader), FuchsiaBillSpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw FuchsiaBillSpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x96224
-
-FuchsiaPokeCenter1F_SecondMapHeader: ; 0x96224
-	; border block
-	db $0
-
-	; height, width
-	db FUCHSIA_POKECENTER_1F_HEIGHT, FUCHSIA_POKECENTER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivinePokeCenter1F_BlockData), OlivinePokeCenter1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(FuchsiaPokeCenter1F_MapScriptHeader), FuchsiaPokeCenter1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw FuchsiaPokeCenter1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x96230
-
-FuchsiaPokeCenter2FBeta_SecondMapHeader: ; 0x96230
-	; border block
-	db $0
-
-	; height, width
-	db FUCHSIA_POKECENTER_2F_BETA_HEIGHT, FUCHSIA_POKECENTER_2F_BETA_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CinnabarPokeCenter2FBeta_BlockData), CinnabarPokeCenter2FBeta_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(FuchsiaPokeCenter2FBeta_MapScriptHeader), FuchsiaPokeCenter2FBeta_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw FuchsiaPokeCenter2FBeta_MapEventHeader
-
-	; connections
-	db 0
-; 0x9623c
-
-SafariZoneWardensHome_SecondMapHeader: ; 0x9623c
-	; border block
-	db $0
-
-	; height, width
-	db SAFARI_ZONE_WARDENS_HOME_HEIGHT, SAFARI_ZONE_WARDENS_HOME_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(PokemonFanClub_BlockData), PokemonFanClub_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(SafariZoneWardensHome_MapScriptHeader), SafariZoneWardensHome_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw SafariZoneWardensHome_MapEventHeader
-
-	; connections
-	db 0
-; 0x96248
-
-Route15FuchsiaGate_SecondMapHeader: ; 0x96248
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_15_FUCHSIA_GATE_HEIGHT, ROUTE_15_FUCHSIA_GATE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route38EcruteakGate_BlockData), Route38EcruteakGate_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route15FuchsiaGate_MapScriptHeader), Route15FuchsiaGate_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route15FuchsiaGate_MapEventHeader
-
-	; connections
-	db 0
-; 0x96254
-
-LavenderPokeCenter1F_SecondMapHeader: ; 0x96254
-	; border block
-	db $0
-
-	; height, width
-	db LAVENDER_POKECENTER_1F_HEIGHT, LAVENDER_POKECENTER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivinePokeCenter1F_BlockData), OlivinePokeCenter1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(LavenderPokeCenter1F_MapScriptHeader), LavenderPokeCenter1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw LavenderPokeCenter1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x96260
-
-LavenderPokeCenter2FBeta_SecondMapHeader: ; 0x96260
-	; border block
-	db $0
-
-	; height, width
-	db LAVENDER_POKECENTER_2F_BETA_HEIGHT, LAVENDER_POKECENTER_2F_BETA_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CinnabarPokeCenter2FBeta_BlockData), CinnabarPokeCenter2FBeta_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(LavenderPokeCenter2FBeta_MapScriptHeader), LavenderPokeCenter2FBeta_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw LavenderPokeCenter2FBeta_MapEventHeader
-
-	; connections
-	db 0
-; 0x9626c
-
-MrFujisHouse_SecondMapHeader: ; 0x9626c
-	; border block
-	db $0
-
-	; height, width
-	db MR_FUJIS_HOUSE_HEIGHT, MR_FUJIS_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(MrFujisHouse_BlockData), MrFujisHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(MrFujisHouse_MapScriptHeader), MrFujisHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw MrFujisHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x96278
-
-LavenderTownSpeechHouse_SecondMapHeader: ; 0x96278
-	; border block
-	db $0
-
-	; height, width
-	db LAVENDER_TOWN_SPEECH_HOUSE_HEIGHT, LAVENDER_TOWN_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(LavenderTownSpeechHouse_MapScriptHeader), LavenderTownSpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw LavenderTownSpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x96284
-
-LavenderNameRater_SecondMapHeader: ; 0x96284
-	; border block
-	db $0
-
-	; height, width
-	db LAVENDER_NAME_RATER_HEIGHT, LAVENDER_NAME_RATER_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(LavenderNameRater_MapScriptHeader), LavenderNameRater_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw LavenderNameRater_MapEventHeader
-
-	; connections
-	db 0
-; 0x96290
-
-LavenderMart_SecondMapHeader: ; 0x96290
-	; border block
-	db $0
-
-	; height, width
-	db LAVENDER_MART_HEIGHT, LAVENDER_MART_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineMart_BlockData), OlivineMart_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(LavenderMart_MapScriptHeader), LavenderMart_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw LavenderMart_MapEventHeader
-
-	; connections
-	db 0
-; 0x9629c
-
-SoulHouse_SecondMapHeader: ; 0x9629c
-	; border block
-	db $0
-
-	; height, width
-	db SOUL_HOUSE_HEIGHT, SOUL_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SoulHouse_BlockData), SoulHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(SoulHouse_MapScriptHeader), SoulHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw SoulHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x962a8
-
-LavRadioTower1F_SecondMapHeader: ; 0x962a8
-	; border block
-	db $0
-
-	; height, width
-	db LAV_RADIO_TOWER_1F_HEIGHT, LAV_RADIO_TOWER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(LavRadioTower1F_BlockData), LavRadioTower1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(LavRadioTower1F_MapScriptHeader), LavRadioTower1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw LavRadioTower1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x962b4
-
-Route8SaffronGate_SecondMapHeader: ; 0x962b4
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_8_SAFFRON_GATE_HEIGHT, ROUTE_8_SAFFRON_GATE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route38EcruteakGate_BlockData), Route38EcruteakGate_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route8SaffronGate_MapScriptHeader), Route8SaffronGate_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route8SaffronGate_MapEventHeader
-
-	; connections
-	db 0
-; 0x962c0
-
-Route12SuperRodHouse_SecondMapHeader: ; 0x962c0
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_12_SUPER_ROD_HOUSE_HEIGHT, ROUTE_12_SUPER_ROD_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route12SuperRodHouse_MapScriptHeader), Route12SuperRodHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route12SuperRodHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x962cc
-
-SilverCavePokeCenter1F_SecondMapHeader: ; 0x962cc
-	; border block
-	db $0
-
-	; height, width
-	db SILVER_CAVE_POKECENTER_1F_HEIGHT, SILVER_CAVE_POKECENTER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivinePokeCenter1F_BlockData), OlivinePokeCenter1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(SilverCavePokeCenter1F_MapScriptHeader), SilverCavePokeCenter1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw SilverCavePokeCenter1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x962d8
-
-Route28FamousSpeechHouse_SecondMapHeader: ; 0x962d8
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_28_FAMOUS_SPEECH_HOUSE_HEIGHT, ROUTE_28_FAMOUS_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route28FamousSpeechHouse_MapScriptHeader), Route28FamousSpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route28FamousSpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x962e4
-
-PokeCenter2F_SecondMapHeader: ; 0x962e4
-	; border block
-	db $0
-
-	; height, width
-	db POKECENTER_2F_HEIGHT, POKECENTER_2F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CinnabarPokeCenter2FBeta_BlockData), CinnabarPokeCenter2FBeta_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(PokeCenter2F_MapScriptHeader), PokeCenter2F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw PokeCenter2F_MapEventHeader
-
-	; connections
-	db 0
-; 0x962f0
-
-TradeCenter_SecondMapHeader: ; 0x962f0
-	; border block
-	db $0
-
-	; height, width
-	db TRADE_CENTER_HEIGHT, TRADE_CENTER_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(TradeCenter_BlockData), TradeCenter_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(TradeCenter_MapScriptHeader), TradeCenter_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw TradeCenter_MapEventHeader
-
-	; connections
-	db 0
-; 0x962fc
-
-Colosseum_SecondMapHeader: ; 0x962fc
-	; border block
-	db $0
-
-	; height, width
-	db COLOSSEUM_HEIGHT, COLOSSEUM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Colosseum_BlockData), Colosseum_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Colosseum_MapScriptHeader), Colosseum_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Colosseum_MapEventHeader
-
-	; connections
-	db 0
-; 0x96308
-
-TimeCapsule_SecondMapHeader: ; 0x96308
-	; border block
-	db $0
-
-	; height, width
-	db TIME_CAPSULE_HEIGHT, TIME_CAPSULE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(TradeCenter_BlockData), TradeCenter_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(TimeCapsule_MapScriptHeader), TimeCapsule_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw TimeCapsule_MapEventHeader
-
-	; connections
-	db 0
-; 0x96314
-
-MobileTradeRoomMobile_SecondMapHeader: ; 0x96314
-	; border block
-	db $0
-
-	; height, width
-	db MOBILE_TRADE_ROOM_MOBILE_HEIGHT, MOBILE_TRADE_ROOM_MOBILE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(MobileTradeRoomMobile_BlockData), MobileTradeRoomMobile_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(MobileTradeRoomMobile_MapScriptHeader), MobileTradeRoomMobile_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw MobileTradeRoomMobile_MapEventHeader
-
-	; connections
-	db 0
-; 0x96320
-
-MobileBattleRoom_SecondMapHeader: ; 0x96320
-	; border block
-	db $0
-
-	; height, width
-	db MOBILE_BATTLE_ROOM_HEIGHT, MOBILE_BATTLE_ROOM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(MobileBattleRoom_BlockData), MobileBattleRoom_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(MobileBattleRoom_MapScriptHeader), MobileBattleRoom_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw MobileBattleRoom_MapEventHeader
-
-	; connections
-	db 0
-; 0x9632c
-
-CeladonDeptStore1F_SecondMapHeader: ; 0x9632c
-	; border block
-	db $0
-
-	; height, width
-	db CELADON_DEPT_STORE_1F_HEIGHT, CELADON_DEPT_STORE_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStore1F_BlockData), GoldenrodDeptStore1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeladonDeptStore1F_MapScriptHeader), CeladonDeptStore1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeladonDeptStore1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x96338
-
-CeladonDeptStore2F_SecondMapHeader: ; 0x96338
-	; border block
-	db $0
-
-	; height, width
-	db CELADON_DEPT_STORE_2F_HEIGHT, CELADON_DEPT_STORE_2F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStore2F_BlockData), GoldenrodDeptStore2F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeladonDeptStore2F_MapScriptHeader), CeladonDeptStore2F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeladonDeptStore2F_MapEventHeader
-
-	; connections
-	db 0
-; 0x96344
-
-CeladonDeptStore3F_SecondMapHeader: ; 0x96344
-	; border block
-	db $0
-
-	; height, width
-	db CELADON_DEPT_STORE_3F_HEIGHT, CELADON_DEPT_STORE_3F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStore3F_BlockData), GoldenrodDeptStore3F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeladonDeptStore3F_MapScriptHeader), CeladonDeptStore3F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeladonDeptStore3F_MapEventHeader
-
-	; connections
-	db 0
-; 0x96350
-
-CeladonDeptStore4F_SecondMapHeader: ; 0x96350
-	; border block
-	db $0
-
-	; height, width
-	db CELADON_DEPT_STORE_4F_HEIGHT, CELADON_DEPT_STORE_4F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStore4F_BlockData), GoldenrodDeptStore4F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeladonDeptStore4F_MapScriptHeader), CeladonDeptStore4F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeladonDeptStore4F_MapEventHeader
-
-	; connections
-	db 0
-; 0x9635c
-
-CeladonDeptStore5F_SecondMapHeader: ; 0x9635c
-	; border block
-	db $0
-
-	; height, width
-	db CELADON_DEPT_STORE_5F_HEIGHT, CELADON_DEPT_STORE_5F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStore5F_BlockData), GoldenrodDeptStore5F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeladonDeptStore5F_MapScriptHeader), CeladonDeptStore5F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeladonDeptStore5F_MapEventHeader
-
-	; connections
-	db 0
-; 0x96368
-
-CeladonDeptStore6F_SecondMapHeader: ; 0x96368
-	; border block
-	db $0
-
-	; height, width
-	db CELADON_DEPT_STORE_6F_HEIGHT, CELADON_DEPT_STORE_6F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStore6F_BlockData), GoldenrodDeptStore6F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeladonDeptStore6F_MapScriptHeader), CeladonDeptStore6F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeladonDeptStore6F_MapEventHeader
-
-	; connections
-	db 0
-; 0x96374
-
-CeladonDeptStoreElevator_SecondMapHeader: ; 0x96374
-	; border block
-	db $0
-
-	; height, width
-	db CELADON_DEPT_STORE_ELEVATOR_HEIGHT, CELADON_DEPT_STORE_ELEVATOR_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(GoldenrodDeptStoreElevator_BlockData), GoldenrodDeptStoreElevator_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeladonDeptStoreElevator_MapScriptHeader), CeladonDeptStoreElevator_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeladonDeptStoreElevator_MapEventHeader
-
-	; connections
-	db 0
-; 0x96380
-
-CeladonMansion1F_SecondMapHeader: ; 0x96380
-	; border block
-	db $0
-
-	; height, width
-	db CELADON_MANSION_1F_HEIGHT, CELADON_MANSION_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CeladonMansion1F_BlockData), CeladonMansion1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeladonMansion1F_MapScriptHeader), CeladonMansion1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeladonMansion1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x9638c
-
-CeladonMansion2F_SecondMapHeader: ; 0x9638c
-	; border block
-	db $0
-
-	; height, width
-	db CELADON_MANSION_2F_HEIGHT, CELADON_MANSION_2F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CeladonMansion2F_BlockData), CeladonMansion2F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeladonMansion2F_MapScriptHeader), CeladonMansion2F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeladonMansion2F_MapEventHeader
-
-	; connections
-	db 0
-; 0x96398
-
-CeladonMansion3F_SecondMapHeader: ; 0x96398
-	; border block
-	db $0
-
-	; height, width
-	db CELADON_MANSION_3F_HEIGHT, CELADON_MANSION_3F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CeladonMansion3F_BlockData), CeladonMansion3F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeladonMansion3F_MapScriptHeader), CeladonMansion3F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeladonMansion3F_MapEventHeader
-
-	; connections
-	db 0
-; 0x963a4
-
-CeladonMansionRoof_SecondMapHeader: ; 0x963a4
-	; border block
-	db $1
-
-	; height, width
-	db CELADON_MANSION_ROOF_HEIGHT, CELADON_MANSION_ROOF_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CeladonMansionRoof_BlockData), CeladonMansionRoof_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeladonMansionRoof_MapScriptHeader), CeladonMansionRoof_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeladonMansionRoof_MapEventHeader
-
-	; connections
-	db 0
-; 0x963b0
-
-CeladonMansionRoofHouse_SecondMapHeader: ; 0x963b0
-	; border block
-	db $0
-
-	; height, width
-	db CELADON_MANSION_ROOF_HOUSE_HEIGHT, CELADON_MANSION_ROOF_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeladonMansionRoofHouse_MapScriptHeader), CeladonMansionRoofHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeladonMansionRoofHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x963bc
-
-CeladonPokeCenter1F_SecondMapHeader: ; 0x963bc
-	; border block
-	db $0
-
-	; height, width
-	db CELADON_POKECENTER_1F_HEIGHT, CELADON_POKECENTER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivinePokeCenter1F_BlockData), OlivinePokeCenter1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeladonPokeCenter1F_MapScriptHeader), CeladonPokeCenter1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeladonPokeCenter1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x963c8
-
-CeladonPokeCenter2FBeta_SecondMapHeader: ; 0x963c8
-	; border block
-	db $0
-
-	; height, width
-	db CELADON_POKECENTER_2F_BETA_HEIGHT, CELADON_POKECENTER_2F_BETA_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CinnabarPokeCenter2FBeta_BlockData), CinnabarPokeCenter2FBeta_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeladonPokeCenter2FBeta_MapScriptHeader), CeladonPokeCenter2FBeta_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeladonPokeCenter2FBeta_MapEventHeader
-
-	; connections
-	db 0
-; 0x963d4
-
-CeladonGameCorner_SecondMapHeader: ; 0x963d4
-	; border block
-	db $0
-
-	; height, width
-	db CELADON_GAME_CORNER_HEIGHT, CELADON_GAME_CORNER_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CeladonGameCorner_BlockData), CeladonGameCorner_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeladonGameCorner_MapScriptHeader), CeladonGameCorner_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeladonGameCorner_MapEventHeader
-
-	; connections
-	db 0
-; 0x963e0
-
-CeladonGameCornerPrizeRoom_SecondMapHeader: ; 0x963e0
-	; border block
-	db $0
-
-	; height, width
-	db CELADON_GAME_CORNER_PRIZE_ROOM_HEIGHT, CELADON_GAME_CORNER_PRIZE_ROOM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CeladonGameCornerPrizeRoom_BlockData), CeladonGameCornerPrizeRoom_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeladonGameCornerPrizeRoom_MapScriptHeader), CeladonGameCornerPrizeRoom_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeladonGameCornerPrizeRoom_MapEventHeader
-
-	; connections
-	db 0
-; 0x963ec
-
-CeladonGym_SecondMapHeader: ; 0x963ec
-	; border block
-	db $0
-
-	; height, width
-	db CELADON_GYM_HEIGHT, CELADON_GYM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CeladonGym_BlockData), CeladonGym_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeladonGym_MapScriptHeader), CeladonGym_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeladonGym_MapEventHeader
-
-	; connections
-	db 0
-; 0x963f8
-
-CeladonCafe_SecondMapHeader: ; 0x963f8
-	; border block
-	db $0
-
-	; height, width
-	db CELADON_CAFE_HEIGHT, CELADON_CAFE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CeladonCafe_BlockData), CeladonCafe_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CeladonCafe_MapScriptHeader), CeladonCafe_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CeladonCafe_MapEventHeader
-
-	; connections
-	db 0
-; 0x96404
-
-Route16FuchsiaSpeechHouse_SecondMapHeader: ; 0x96404
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_16_FUCHSIA_SPEECH_HOUSE_HEIGHT, ROUTE_16_FUCHSIA_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route16FuchsiaSpeechHouse_MapScriptHeader), Route16FuchsiaSpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route16FuchsiaSpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x96410
-
-Route16Gate_SecondMapHeader: ; 0x96410
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_16_GATE_HEIGHT, ROUTE_16_GATE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route38EcruteakGate_BlockData), Route38EcruteakGate_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route16Gate_MapScriptHeader), Route16Gate_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route16Gate_MapEventHeader
-
-	; connections
-	db 0
-; 0x9641c
-
-Route7SaffronGate_SecondMapHeader: ; 0x9641c
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_7_SAFFRON_GATE_HEIGHT, ROUTE_7_SAFFRON_GATE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route38EcruteakGate_BlockData), Route38EcruteakGate_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route7SaffronGate_MapScriptHeader), Route7SaffronGate_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route7SaffronGate_MapEventHeader
-
-	; connections
-	db 0
-; 0x96428
-
-Route1718Gate_SecondMapHeader: ; 0x96428
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_17_18_GATE_HEIGHT, ROUTE_17_18_GATE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route38EcruteakGate_BlockData), Route38EcruteakGate_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route1718Gate_MapScriptHeader), Route1718Gate_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route1718Gate_MapEventHeader
-
-	; connections
-	db 0
-; 0x96434
-
-ManiasHouse_SecondMapHeader: ; 0x96434
-	; border block
-	db $0
-
-	; height, width
-	db MANIAS_HOUSE_HEIGHT, MANIAS_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(ManiasHouse_MapScriptHeader), ManiasHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw ManiasHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x96440
-
-CianwoodGym_SecondMapHeader: ; 0x96440
-	; border block
-	db $0
-
-	; height, width
-	db CIANWOOD_GYM_HEIGHT, CIANWOOD_GYM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CianwoodGym_BlockData), CianwoodGym_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CianwoodGym_MapScriptHeader), CianwoodGym_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CianwoodGym_MapEventHeader
-
-	; connections
-	db 0
-; 0x9644c
-
-CianwoodPokeCenter1F_SecondMapHeader: ; 0x9644c
-	; border block
-	db $0
-
-	; height, width
-	db CIANWOOD_POKECENTER_1F_HEIGHT, CIANWOOD_POKECENTER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivinePokeCenter1F_BlockData), OlivinePokeCenter1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CianwoodPokeCenter1F_MapScriptHeader), CianwoodPokeCenter1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CianwoodPokeCenter1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x96458
-
-CianwoodPharmacy_SecondMapHeader: ; 0x96458
-	; border block
-	db $0
-
-	; height, width
-	db CIANWOOD_PHARMACY_HEIGHT, CIANWOOD_PHARMACY_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CianwoodPharmacy_MapScriptHeader), CianwoodPharmacy_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CianwoodPharmacy_MapEventHeader
-
-	; connections
-	db 0
-; 0x96464
-
-CianwoodCityPhotoStudio_SecondMapHeader: ; 0x96464
-	; border block
-	db $0
-
-	; height, width
-	db CIANWOOD_CITY_PHOTO_STUDIO_HEIGHT, CIANWOOD_CITY_PHOTO_STUDIO_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CianwoodCityPhotoStudio_MapScriptHeader), CianwoodCityPhotoStudio_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CianwoodCityPhotoStudio_MapEventHeader
-
-	; connections
-	db 0
-; 0x96470
-
-CianwoodLugiaSpeechHouse_SecondMapHeader: ; 0x96470
-	; border block
-	db $0
-
-	; height, width
-	db CIANWOOD_LUGIA_SPEECH_HOUSE_HEIGHT, CIANWOOD_LUGIA_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CianwoodLugiaSpeechHouse_MapScriptHeader), CianwoodLugiaSpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CianwoodLugiaSpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x9647c
-
-PokeSeersHouse_SecondMapHeader: ; 0x9647c
-	; border block
-	db $0
-
-	; height, width
-	db POKE_SEERS_HOUSE_HEIGHT, POKE_SEERS_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(PokeSeersHouse_MapScriptHeader), PokeSeersHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw PokeSeersHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x96488
-
-BattleTower1F_SecondMapHeader: ; 0x96488
-	; border block
-	db $0
-
-	; height, width
-	db BATTLE_TOWER_1F_HEIGHT, BATTLE_TOWER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(BattleTower1F_BlockData), BattleTower1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(BattleTower1F_MapScriptHeader), BattleTower1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw BattleTower1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x96494
-
-BattleTowerBattleRoom_SecondMapHeader: ; 0x96494
-	; border block
-	db $0
-
-	; height, width
-	db BATTLE_TOWER_BATTLE_ROOM_HEIGHT, BATTLE_TOWER_BATTLE_ROOM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(BattleTowerBattleRoom_BlockData), BattleTowerBattleRoom_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(BattleTowerBattleRoom_MapScriptHeader), BattleTowerBattleRoom_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw BattleTowerBattleRoom_MapEventHeader
-
-	; connections
-	db 0
-; 0x964a0
-
-BattleTowerElevator_SecondMapHeader: ; 0x964a0
-	; border block
-	db $0
-
-	; height, width
-	db BATTLE_TOWER_ELEVATOR_HEIGHT, BATTLE_TOWER_ELEVATOR_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(BattleTowerElevator_BlockData), BattleTowerElevator_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(BattleTowerElevator_MapScriptHeader), BattleTowerElevator_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw BattleTowerElevator_MapEventHeader
-
-	; connections
-	db 0
-; 0x964ac
-
-BattleTowerHallway_SecondMapHeader: ; 0x964ac
-	; border block
-	db $0
-
-	; height, width
-	db BATTLE_TOWER_HALLWAY_HEIGHT, BATTLE_TOWER_HALLWAY_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(BattleTowerHallway_BlockData), BattleTowerHallway_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(BattleTowerHallway_MapScriptHeader), BattleTowerHallway_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw BattleTowerHallway_MapEventHeader
-
-	; connections
-	db 0
-; 0x964b8
-
-Route40BattleTowerGate_SecondMapHeader: ; 0x964b8
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_40_BATTLE_TOWER_GATE_HEIGHT, ROUTE_40_BATTLE_TOWER_GATE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SafariZoneFuchsiaGateBeta_BlockData), SafariZoneFuchsiaGateBeta_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route40BattleTowerGate_MapScriptHeader), Route40BattleTowerGate_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route40BattleTowerGate_MapEventHeader
-
-	; connections
-	db 0
-; 0x964c4
-
-BattleTowerOutside_SecondMapHeader: ; 0x964c4
-	; border block
-	db $5
-
-	; height, width
-	db BATTLE_TOWER_OUTSIDE_HEIGHT, BATTLE_TOWER_OUTSIDE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(BattleTowerOutside_BlockData), BattleTowerOutside_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(BattleTowerOutside_MapScriptHeader), BattleTowerOutside_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw BattleTowerOutside_MapEventHeader
-
-	; connections
-	db 0
-; 0x964d0
-
-ViridianGym_SecondMapHeader: ; 0x964d0
-	; border block
-	db $0
-
-	; height, width
-	db VIRIDIAN_GYM_HEIGHT, VIRIDIAN_GYM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(ViridianGym_BlockData), ViridianGym_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(ViridianGym_MapScriptHeader), ViridianGym_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw ViridianGym_MapEventHeader
-
-	; connections
-	db 0
-; 0x964dc
-
-ViridianNicknameSpeechHouse_SecondMapHeader: ; 0x964dc
-	; border block
-	db $0
-
-	; height, width
-	db VIRIDIAN_NICKNAME_SPEECH_HOUSE_HEIGHT, VIRIDIAN_NICKNAME_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(ViridianNicknameSpeechHouse_MapScriptHeader), ViridianNicknameSpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw ViridianNicknameSpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x964e8
-
-TrainerHouse1F_SecondMapHeader: ; 0x964e8
-	; border block
-	db $0
-
-	; height, width
-	db TRAINER_HOUSE_1F_HEIGHT, TRAINER_HOUSE_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(TrainerHouse1F_BlockData), TrainerHouse1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(TrainerHouse1F_MapScriptHeader), TrainerHouse1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw TrainerHouse1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x964f4
-
-TrainerHouseB1F_SecondMapHeader: ; 0x964f4
-	; border block
-	db $0
-
-	; height, width
-	db TRAINER_HOUSE_B1F_HEIGHT, TRAINER_HOUSE_B1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(TrainerHouseB1F_BlockData), TrainerHouseB1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(TrainerHouseB1F_MapScriptHeader), TrainerHouseB1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw TrainerHouseB1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x96500
-
-ViridianMart_SecondMapHeader: ; 0x96500
-	; border block
-	db $0
-
-	; height, width
-	db VIRIDIAN_MART_HEIGHT, VIRIDIAN_MART_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineMart_BlockData), OlivineMart_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(ViridianMart_MapScriptHeader), ViridianMart_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw ViridianMart_MapEventHeader
-
-	; connections
-	db 0
-; 0x9650c
-
-ViridianPokeCenter1F_SecondMapHeader: ; 0x9650c
-	; border block
-	db $0
-
-	; height, width
-	db VIRIDIAN_POKECENTER_1F_HEIGHT, VIRIDIAN_POKECENTER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivinePokeCenter1F_BlockData), OlivinePokeCenter1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(ViridianPokeCenter1F_MapScriptHeader), ViridianPokeCenter1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw ViridianPokeCenter1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x96518
-
-ViridianPokeCenter2FBeta_SecondMapHeader: ; 0x96518
-	; border block
-	db $0
-
-	; height, width
-	db VIRIDIAN_POKECENTER_2F_BETA_HEIGHT, VIRIDIAN_POKECENTER_2F_BETA_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CinnabarPokeCenter2FBeta_BlockData), CinnabarPokeCenter2FBeta_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(ViridianPokeCenter2FBeta_MapScriptHeader), ViridianPokeCenter2FBeta_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw ViridianPokeCenter2FBeta_MapEventHeader
-
-	; connections
-	db 0
-; 0x96524
-
-Route2NuggetSpeechHouse_SecondMapHeader: ; 0x96524
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_2_NUGGET_SPEECH_HOUSE_HEIGHT, ROUTE_2_NUGGET_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route2NuggetSpeechHouse_MapScriptHeader), Route2NuggetSpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route2NuggetSpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x96530
-
-Route2Gate_SecondMapHeader: ; 0x96530
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_2_GATE_HEIGHT, ROUTE_2_GATE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SafariZoneFuchsiaGateBeta_BlockData), SafariZoneFuchsiaGateBeta_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route2Gate_MapScriptHeader), Route2Gate_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route2Gate_MapEventHeader
-
-	; connections
-	db 0
-; 0x9653c
-
-VictoryRoadGate_SecondMapHeader: ; 0x9653c
-	; border block
-	db $0
-
-	; height, width
-	db VICTORY_ROAD_GATE_HEIGHT, VICTORY_ROAD_GATE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(VictoryRoadGate_BlockData), VictoryRoadGate_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(VictoryRoadGate_MapScriptHeader), VictoryRoadGate_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw VictoryRoadGate_MapEventHeader
-
-	; connections
-	db 0
-; 0x96548
-
-ElmsLab_SecondMapHeader: ; 0x96548
-	; border block
-	db $0
-
-	; height, width
-	db ELMS_LAB_HEIGHT, ELMS_LAB_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(ElmsLab_BlockData), ElmsLab_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(ElmsLab_MapScriptHeader), ElmsLab_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw ElmsLab_MapEventHeader
-
-	; connections
-	db 0
-; 0x96554
-
-KrissHouse1F_SecondMapHeader: ; 0x96554
-	; border block
-	db $0
-
-	; height, width
-	db KRISS_HOUSE_1F_HEIGHT, KRISS_HOUSE_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(KrissHouse1F_BlockData), KrissHouse1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(KrissHouse1F_MapScriptHeader), KrissHouse1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw KrissHouse1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x96560
-
-KrissHouse2F_SecondMapHeader: ; 0x96560
-	; border block
-	db $0
-
-	; height, width
-	db KRISS_HOUSE_2F_HEIGHT, KRISS_HOUSE_2F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(KrissHouse2F_BlockData), KrissHouse2F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(KrissHouse2F_MapScriptHeader), KrissHouse2F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw KrissHouse2F_MapEventHeader
-
-	; connections
-	db 0
-; 0x9656c
-
-KrissNeighborsHouse_SecondMapHeader: ; 0x9656c
-	; border block
-	db $0
-
-	; height, width
-	db KRISS_NEIGHBORS_HOUSE_HEIGHT, KRISS_NEIGHBORS_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(KrissNeighborsHouse_MapScriptHeader), KrissNeighborsHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw KrissNeighborsHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x96578
-
-ElmsHouse_SecondMapHeader: ; 0x96578
-	; border block
-	db $0
-
-	; height, width
-	db ELMS_HOUSE_HEIGHT, ELMS_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(ElmsHouse_BlockData), ElmsHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(ElmsHouse_MapScriptHeader), ElmsHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw ElmsHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x96584
-
-Route26HealSpeechHouse_SecondMapHeader: ; 0x96584
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_26_HEAL_SPEECH_HOUSE_HEIGHT, ROUTE_26_HEAL_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route26HealSpeechHouse_MapScriptHeader), Route26HealSpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route26HealSpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x96590
-
-Route26DayofWeekSiblingsHouse_SecondMapHeader: ; 0x96590
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_26_DAY_OF_WEEK_SIBLINGS_HOUSE_HEIGHT, ROUTE_26_DAY_OF_WEEK_SIBLINGS_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route26DayofWeekSiblingsHouse_MapScriptHeader), Route26DayofWeekSiblingsHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route26DayofWeekSiblingsHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x9659c
-
-Route27SandstormHouse_SecondMapHeader: ; 0x9659c
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_27_SANDSTORM_HOUSE_HEIGHT, ROUTE_27_SANDSTORM_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route27SandstormHouse_MapScriptHeader), Route27SandstormHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route27SandstormHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x965a8
-
-Route2946Gate_SecondMapHeader: ; 0x965a8
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_29_46_GATE_HEIGHT, ROUTE_29_46_GATE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SafariZoneFuchsiaGateBeta_BlockData), SafariZoneFuchsiaGateBeta_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route2946Gate_MapScriptHeader), Route2946Gate_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route2946Gate_MapEventHeader
-
-	; connections
-	db 0
-; 0x965b4
-
-FightingDojo_SecondMapHeader: ; 0x965b4
-	; border block
-	db $0
-
-	; height, width
-	db FIGHTING_DOJO_HEIGHT, FIGHTING_DOJO_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(FightingDojo_BlockData), FightingDojo_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(FightingDojo_MapScriptHeader), FightingDojo_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw FightingDojo_MapEventHeader
-
-	; connections
-	db 0
-; 0x965c0
-
-SaffronGym_SecondMapHeader: ; 0x965c0
-	; border block
-	db $0
-
-	; height, width
-	db SAFFRON_GYM_HEIGHT, SAFFRON_GYM_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SaffronGym_BlockData), SaffronGym_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(SaffronGym_MapScriptHeader), SaffronGym_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw SaffronGym_MapEventHeader
-
-	; connections
-	db 0
-; 0x965cc
-
-SaffronMart_SecondMapHeader: ; 0x965cc
-	; border block
-	db $0
-
-	; height, width
-	db SAFFRON_MART_HEIGHT, SAFFRON_MART_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineMart_BlockData), OlivineMart_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(SaffronMart_MapScriptHeader), SaffronMart_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw SaffronMart_MapEventHeader
-
-	; connections
-	db 0
-; 0x965d8
-
-SaffronPokeCenter1F_SecondMapHeader: ; 0x965d8
-	; border block
-	db $0
-
-	; height, width
-	db SAFFRON_POKECENTER_1F_HEIGHT, SAFFRON_POKECENTER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivinePokeCenter1F_BlockData), OlivinePokeCenter1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(SaffronPokeCenter1F_MapScriptHeader), SaffronPokeCenter1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw SaffronPokeCenter1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x965e4
-
-SaffronPokeCenter2FBeta_SecondMapHeader: ; 0x965e4
-	; border block
-	db $0
-
-	; height, width
-	db SAFFRON_POKECENTER_2F_BETA_HEIGHT, SAFFRON_POKECENTER_2F_BETA_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CinnabarPokeCenter2FBeta_BlockData), CinnabarPokeCenter2FBeta_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(SaffronPokeCenter2FBeta_MapScriptHeader), SaffronPokeCenter2FBeta_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw SaffronPokeCenter2FBeta_MapEventHeader
-
-	; connections
-	db 0
-; 0x965f0
-
-MrPsychicsHouse_SecondMapHeader: ; 0x965f0
-	; border block
-	db $0
-
-	; height, width
-	db MR_PSYCHICS_HOUSE_HEIGHT, MR_PSYCHICS_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(MrPsychicsHouse_MapScriptHeader), MrPsychicsHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw MrPsychicsHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x965fc
-
-SaffronTrainStation_SecondMapHeader: ; 0x965fc
-	; border block
-	db $0
-
-	; height, width
-	db SAFFRON_TRAIN_STATION_HEIGHT, SAFFRON_TRAIN_STATION_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SaffronTrainStation_BlockData), SaffronTrainStation_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(SaffronTrainStation_MapScriptHeader), SaffronTrainStation_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw SaffronTrainStation_MapEventHeader
-
-	; connections
-	db 0
-; 0x96608
-
-SilphCo1F_SecondMapHeader: ; 0x96608
-	; border block
-	db $0
-
-	; height, width
-	db SILPH_CO_1F_HEIGHT, SILPH_CO_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SilphCo1F_BlockData), SilphCo1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(SilphCo1F_MapScriptHeader), SilphCo1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw SilphCo1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x96614
-
-CopycatsHouse1F_SecondMapHeader: ; 0x96614
-	; border block
-	db $0
-
-	; height, width
-	db COPYCATS_HOUSE_1F_HEIGHT, COPYCATS_HOUSE_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CopycatsHouse1F_BlockData), CopycatsHouse1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CopycatsHouse1F_MapScriptHeader), CopycatsHouse1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CopycatsHouse1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x96620
-
-CopycatsHouse2F_SecondMapHeader: ; 0x96620
-	; border block
-	db $0
-
-	; height, width
-	db COPYCATS_HOUSE_2F_HEIGHT, COPYCATS_HOUSE_2F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(CopycatsHouse2F_BlockData), CopycatsHouse2F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CopycatsHouse2F_MapScriptHeader), CopycatsHouse2F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CopycatsHouse2F_MapEventHeader
-
-	; connections
-	db 0
-; 0x9662c
-
-Route5UndergroundEntrance_SecondMapHeader: ; 0x9662c
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_5_UNDERGROUND_ENTRANCE_HEIGHT, ROUTE_5_UNDERGROUND_ENTRANCE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route6UndergroundEntrance_BlockData), Route6UndergroundEntrance_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route5UndergroundEntrance_MapScriptHeader), Route5UndergroundEntrance_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route5UndergroundEntrance_MapEventHeader
-
-	; connections
-	db 0
-; 0x96638
-
-Route5SaffronCityGate_SecondMapHeader: ; 0x96638
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_5_SAFFRON_CITY_GATE_HEIGHT, ROUTE_5_SAFFRON_CITY_GATE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(SafariZoneFuchsiaGateBeta_BlockData), SafariZoneFuchsiaGateBeta_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route5SaffronCityGate_MapScriptHeader), Route5SaffronCityGate_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route5SaffronCityGate_MapEventHeader
-
-	; connections
-	db 0
-; 0x96644
-
-Route5CleanseTagSpeechHouse_SecondMapHeader: ; 0x96644
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_5_CLEANSE_TAG_SPEECH_HOUSE_HEIGHT, ROUTE_5_CLEANSE_TAG_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route5CleanseTagSpeechHouse_MapScriptHeader), Route5CleanseTagSpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route5CleanseTagSpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x96650
-
-CherrygroveMart_SecondMapHeader: ; 0x96650
-	; border block
-	db $0
-
-	; height, width
-	db CHERRYGROVE_MART_HEIGHT, CHERRYGROVE_MART_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineMart_BlockData), OlivineMart_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CherrygroveMart_MapScriptHeader), CherrygroveMart_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CherrygroveMart_MapEventHeader
-
-	; connections
-	db 0
-; 0x9665c
-
-CherrygrovePokeCenter1F_SecondMapHeader: ; 0x9665c
-	; border block
-	db $0
-
-	; height, width
-	db CHERRYGROVE_POKECENTER_1F_HEIGHT, CHERRYGROVE_POKECENTER_1F_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivinePokeCenter1F_BlockData), OlivinePokeCenter1F_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CherrygrovePokeCenter1F_MapScriptHeader), CherrygrovePokeCenter1F_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CherrygrovePokeCenter1F_MapEventHeader
-
-	; connections
-	db 0
-; 0x96668
-
-CherrygroveGymSpeechHouse_SecondMapHeader: ; 0x96668
-	; border block
-	db $0
-
-	; height, width
-	db CHERRYGROVE_GYM_SPEECH_HOUSE_HEIGHT, CHERRYGROVE_GYM_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CherrygroveGymSpeechHouse_MapScriptHeader), CherrygroveGymSpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CherrygroveGymSpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x96674
-
-GuideGentsHouse_SecondMapHeader: ; 0x96674
-	; border block
-	db $0
-
-	; height, width
-	db GUIDE_GENTS_HOUSE_HEIGHT, GUIDE_GENTS_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(GuideGentsHouse_MapScriptHeader), GuideGentsHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw GuideGentsHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x96680
-
-CherrygroveEvolutionSpeechHouse_SecondMapHeader: ; 0x96680
-	; border block
-	db $0
-
-	; height, width
-	db CHERRYGROVE_EVOLUTION_SPEECH_HOUSE_HEIGHT, CHERRYGROVE_EVOLUTION_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(CherrygroveEvolutionSpeechHouse_MapScriptHeader), CherrygroveEvolutionSpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw CherrygroveEvolutionSpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x9668c
-
-Route30BerrySpeechHouse_SecondMapHeader: ; 0x9668c
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_30_BERRY_SPEECH_HOUSE_HEIGHT, ROUTE_30_BERRY_SPEECH_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(OlivineVoltorbHouse_BlockData), OlivineVoltorbHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route30BerrySpeechHouse_MapScriptHeader), Route30BerrySpeechHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route30BerrySpeechHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x96698
-
-MrPokemonsHouse_SecondMapHeader: ; 0x96698
-	; border block
-	db $0
-
-	; height, width
-	db MR_POKEMONS_HOUSE_HEIGHT, MR_POKEMONS_HOUSE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(MrPokemonsHouse_BlockData), MrPokemonsHouse_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(MrPokemonsHouse_MapScriptHeader), MrPokemonsHouse_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw MrPokemonsHouse_MapEventHeader
-
-	; connections
-	db 0
-; 0x966a4
-
-Route31VioletGate_SecondMapHeader: ; 0x966a4
-	; border block
-	db $0
-
-	; height, width
-	db ROUTE_31_VIOLET_GATE_HEIGHT, ROUTE_31_VIOLET_GATE_WIDTH
-
-	; blockdata (bank-then-pointer)
-	dbw BANK(Route38EcruteakGate_BlockData), Route38EcruteakGate_BlockData
-
-	; script header (bank-then-pointer)
-	dbw BANK(Route31VioletGate_MapScriptHeader), Route31VioletGate_MapScriptHeader
-
-	; map event header (bank-then-pointer)
-	dw Route31VioletGate_MapEventHeader
-
-	; connections
-	db 0
-; 0x966b0
-
+	map_header_2 Route23, ROUTE_23, $f, NONE ; 0x957b0
+	map_header_2 SproutTower1F, SPROUT_TOWER_1F, $0, NONE ; 0x957bc
+	map_header_2 SproutTower2F, SPROUT_TOWER_2F, $0, NONE ; 0x957c8
+	map_header_2 SproutTower3F, SPROUT_TOWER_3F, $0, NONE ; 0x957d4
+	map_header_2 TinTower1F, TIN_TOWER_1F, $0, NONE ; 0x957e0
+	map_header_2 TinTower2F, TIN_TOWER_2F, $0, NONE ; 0x957ec
+	map_header_2 TinTower3F, TIN_TOWER_3F, $0, NONE ; 0x957f8
+	map_header_2 TinTower4F, TIN_TOWER_4F, $0, NONE ; 0x95804
+	map_header_2 TinTower5F, TIN_TOWER_5F, $0, NONE ; 0x95810
+	map_header_2 TinTower6F, TIN_TOWER_6F, $0, NONE ; 0x9581c
+	map_header_2 TinTower7F, TIN_TOWER_7F, $0, NONE ; 0x95828
+	map_header_2 TinTower8F, TIN_TOWER_8F, $0, NONE ; 0x95834
+	map_header_2 TinTower9F, TIN_TOWER_9F, $0, NONE ; 0x95840
+	map_header_2 BurnedTower1F, BURNED_TOWER_1F, $0, NONE ; 0x9584c
+	map_header_2 BurnedTowerB1F, BURNED_TOWER_B1F, $9, NONE ; 0x95858
+	map_header_2 NationalPark, NATIONAL_PARK, $0, NONE ; 0x95864
+	map_header_2 NationalParkBugContest, NATIONAL_PARK_BUG_CONTEST, $0, NONE ; 0x95870
+	map_header_2 RadioTower1F, RADIO_TOWER_1F, $0, NONE ; 0x9587c
+	map_header_2 RadioTower2F, RADIO_TOWER_2F, $0, NONE ; 0x95888
+	map_header_2 RadioTower3F, RADIO_TOWER_3F, $0, NONE ; 0x95894
+	map_header_2 RadioTower4F, RADIO_TOWER_4F, $0, NONE ; 0x958a0
+	map_header_2 RadioTower5F, RADIO_TOWER_5F, $0, NONE ; 0x958ac
+	map_header_2 RuinsofAlphOutside, RUINS_OF_ALPH_OUTSIDE, $5, NONE ; 0x958b8
+	map_header_2 RuinsofAlphHoOhChamber, RUINS_OF_ALPH_HO_OH_CHAMBER, $0, NONE ; 0x958c4
+	map_header_2 RuinsofAlphKabutoChamber, RUINS_OF_ALPH_KABUTO_CHAMBER, $0, NONE ; 0x958d0
+	map_header_2 RuinsofAlphOmanyteChamber, RUINS_OF_ALPH_OMANYTE_CHAMBER, $0, NONE ; 0x958dc
+	map_header_2 RuinsofAlphAerodactylChamber, RUINS_OF_ALPH_AERODACTYL_CHAMBER, $0, NONE ; 0x958e8
+	map_header_2 RuinsofAlphInnerChamber, RUINS_OF_ALPH_INNER_CHAMBER, $0, NONE ; 0x958f4
+	map_header_2 RuinsofAlphResearchCenter, RUINS_OF_ALPH_RESEARCH_CENTER, $0, NONE ; 0x95900
+	map_header_2 RuinsofAlphHoOhItemRoom, RUINS_OF_ALPH_HO_OH_ITEM_ROOM, $0, NONE ; 0x9590c
+	map_header_2 RuinsofAlphKabutoItemRoom, RUINS_OF_ALPH_KABUTO_ITEM_ROOM, $0, NONE ; 0x95918
+	map_header_2 RuinsofAlphOmanyteItemRoom, RUINS_OF_ALPH_OMANYTE_ITEM_ROOM, $0, NONE ; 0x95924
+	map_header_2 RuinsofAlphAerodactylItemRoom, RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM, $0, NONE ; 0x95930
+	map_header_2 RuinsofAlphHoOhWordRoom, RUINS_OF_ALPH_HO_OH_WORD_ROOM, $0, NONE ; 0x9593c
+	map_header_2 RuinsofAlphKabutoWordRoom, RUINS_OF_ALPH_KABUTO_WORD_ROOM, $0, NONE ; 0x95948
+	map_header_2 RuinsofAlphOmanyteWordRoom, RUINS_OF_ALPH_OMANYTE_WORD_ROOM, $0, NONE ; 0x95954
+	map_header_2 RuinsofAlphAerodactylWordRoom, RUINS_OF_ALPH_AERODACTYL_WORD_ROOM, $0, NONE ; 0x95960
+	map_header_2 UnionCave1F, UNION_CAVE_1F, $9, NONE ; 0x9596c
+	map_header_2 UnionCaveB1F, UNION_CAVE_B1F, $9, NONE ; 0x95978
+	map_header_2 UnionCaveB2F, UNION_CAVE_B2F, $9, NONE ; 0x95984
+	map_header_2 SlowpokeWellB1F, SLOWPOKE_WELL_B1F, $9, NONE ; 0x95990
+	map_header_2 SlowpokeWellB2F, SLOWPOKE_WELL_B2F, $9, NONE ; 0x9599c
+	map_header_2 OlivineLighthouse1F, OLIVINE_LIGHTHOUSE_1F, $0, NONE ; 0x959a8
+	map_header_2 OlivineLighthouse2F, OLIVINE_LIGHTHOUSE_2F, $0, NONE ; 0x959b4
+	map_header_2 OlivineLighthouse3F, OLIVINE_LIGHTHOUSE_3F, $0, NONE ; 0x959c0
+	map_header_2 OlivineLighthouse4F, OLIVINE_LIGHTHOUSE_4F, $0, NONE ; 0x959cc
+	map_header_2 OlivineLighthouse5F, OLIVINE_LIGHTHOUSE_5F, $0, NONE ; 0x959d8
+	map_header_2 OlivineLighthouse6F, OLIVINE_LIGHTHOUSE_6F, $0, NONE ; 0x959e4
+	map_header_2 MahoganyMart1F, MAHOGANY_MART_1F, $0, NONE ; 0x959f0
+	map_header_2 TeamRocketBaseB1F, TEAM_ROCKET_BASE_B1F, $0, NONE ; 0x959fc
+	map_header_2 TeamRocketBaseB2F, TEAM_ROCKET_BASE_B2F, $0, NONE ; 0x95a08
+	map_header_2 TeamRocketBaseB3F, TEAM_ROCKET_BASE_B3F, $0, NONE ; 0x95a14
+	map_header_2 IlexForest, ILEX_FOREST, $5, NONE ; 0x95a20
+	map_header_2 WarehouseEntrance, WAREHOUSE_ENTRANCE, $0, NONE ; 0x95a2c
+	map_header_2 UndergroundPathSwitchRoomEntrances, UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES, $0, NONE ; 0x95a38
+	map_header_2 GoldenrodDeptStoreB1F, GOLDENROD_DEPT_STORE_B1F, $0, NONE ; 0x95a44
+	map_header_2 UndergroundWarehouse, UNDERGROUND_WAREHOUSE, $0, NONE ; 0x95a50
+	map_header_2 MountMortar1FOutside, MOUNT_MORTAR_1F_OUTSIDE, $9, NONE ; 0x95a5c
+	map_header_2 MountMortar1FInside, MOUNT_MORTAR_1F_INSIDE, $9, NONE ; 0x95a68
+	map_header_2 MountMortar2FInside, MOUNT_MORTAR_2F_INSIDE, $9, NONE ; 0x95a74
+	map_header_2 MountMortarB1F, MOUNT_MORTAR_B1F, $9, NONE ; 0x95a80
+	map_header_2 IcePath1F, ICE_PATH_1F, $9, NONE ; 0x95a8c
+	map_header_2 IcePathB1F, ICE_PATH_B1F, $19, NONE ; 0x95a98
+	map_header_2 IcePathB2FMahoganySide, ICE_PATH_B2F_MAHOGANY_SIDE, $19, NONE ; 0x95aa4
+	map_header_2 IcePathB2FBlackthornSide, ICE_PATH_B2F_BLACKTHORN_SIDE, $19, NONE ; 0x95ab0
+	map_header_2 IcePathB3F, ICE_PATH_B3F, $19, NONE ; 0x95abc
+	map_header_2 WhirlIslandNW, WHIRL_ISLAND_NW, $9, NONE ; 0x95ac8
+	map_header_2 WhirlIslandNE, WHIRL_ISLAND_NE, $9, NONE ; 0x95ad4
+	map_header_2 WhirlIslandSW, WHIRL_ISLAND_SW, $9, NONE ; 0x95ae0
+	map_header_2 WhirlIslandCave, WHIRL_ISLAND_CAVE, $9, NONE ; 0x95aec
+	map_header_2 WhirlIslandSE, WHIRL_ISLAND_SE, $f, NONE ; 0x95af8
+	map_header_2 WhirlIslandB1F, WHIRL_ISLAND_B1F, $9, NONE ; 0x95b04
+	map_header_2 WhirlIslandB2F, WHIRL_ISLAND_B2F, $2e, NONE ; 0x95b10
+	map_header_2 WhirlIslandLugiaChamber, WHIRL_ISLAND_LUGIA_CHAMBER, $f, NONE ; 0x95b1c
+	map_header_2 SilverCaveRoom1, SILVER_CAVE_ROOM_1, $9, NONE ; 0x95b28
+	map_header_2 SilverCaveRoom2, SILVER_CAVE_ROOM_2, $9, NONE ; 0x95b34
+	map_header_2 SilverCaveRoom3, SILVER_CAVE_ROOM_3, $9, NONE ; 0x95b40
+	map_header_2 SilverCaveItemRooms, SILVER_CAVE_ITEM_ROOMS, $9, NONE ; 0x95b4c
+	map_header_2 DarkCaveVioletEntrance, DARK_CAVE_VIOLET_ENTRANCE, $9, NONE ; 0x95b58
+	map_header_2 DarkCaveBlackthornEntrance, DARK_CAVE_BLACKTHORN_ENTRANCE, $9, NONE ; 0x95b64
+	map_header_2 DragonsDen1F, DRAGONS_DEN_1F, $9, NONE ; 0x95b70
+	map_header_2 DragonsDenB1F, DRAGONS_DEN_B1F, $71, NONE ; 0x95b7c
+	map_header_2 DragonShrine, DRAGON_SHRINE, $0, NONE ; 0x95b88
+	map_header_2 TohjoFalls, TOHJO_FALLS, $9, NONE ; 0x95b94
+	map_header_2 OlivinePokeCenter1F, OLIVINE_POKECENTER_1F, $0, NONE ; 0x95ba0
+	map_header_2 OlivineGym, OLIVINE_GYM, $0, NONE ; 0x95bac
+	map_header_2 OlivineVoltorbHouse, OLIVINE_VOLTORB_HOUSE, $0, NONE ; 0x95bb8
+	map_header_2 OlivineHouseBeta, OLIVINE_HOUSE_BETA, $0, NONE ; 0x95bc4
+	map_header_2 OlivinePunishmentSpeechHouse, OLIVINE_PUNISHMENT_SPEECH_HOUSE, $0, NONE ; 0x95bd0
+	map_header_2 OlivineGoodRodHouse, OLIVINE_GOOD_ROD_HOUSE, $0, NONE ; 0x95bdc
+	map_header_2 OlivineCafe, OLIVINE_CAFE, $0, NONE ; 0x95be8
+	map_header_2 OlivineMart, OLIVINE_MART, $0, NONE ; 0x95bf4
+	map_header_2 Route38EcruteakGate, ROUTE_38_ECRUTEAK_GATE, $0, NONE ; 0x95c00
+	map_header_2 Route39Barn, ROUTE_39_BARN, $0, NONE ; 0x95c0c
+	map_header_2 Route39Farmhouse, ROUTE_39_FARMHOUSE, $0, NONE ; 0x95c18
+	map_header_2 MahoganyRedGyaradosSpeechHouse, MAHOGANY_RED_GYARADOS_SPEECH_HOUSE, $0, NONE ; 0x95c24
+	map_header_2 MahoganyGym, MAHOGANY_GYM, $0, NONE ; 0x95c30
+	map_header_2 MahoganyPokeCenter1F, MAHOGANY_POKECENTER_1F, $0, NONE ; 0x95c3c
+	map_header_2 Route42EcruteakGate, ROUTE_42_ECRUTEAK_GATE, $0, NONE ; 0x95c48
+	map_header_2 DiglettsCave, DIGLETTS_CAVE, $9, NONE ; 0x95c54
+	map_header_2 MountMoon, MOUNT_MOON, $9, NONE ; 0x95c60
+	map_header_2 Underground, UNDERGROUND, $0, NONE ; 0x95c6c
+	map_header_2 RockTunnel1F, ROCK_TUNNEL_1F, $9, NONE ; 0x95c78
+	map_header_2 RockTunnelB1F, ROCK_TUNNEL_B1F, $9, NONE ; 0x95c84
+	map_header_2 SafariZoneFuchsiaGateBeta, SAFARI_ZONE_FUCHSIA_GATE_BETA, $0, NONE ; 0x95c90
+	map_header_2 SafariZoneBeta, SAFARI_ZONE_BETA, $13, NONE ; 0x95c9c
+	map_header_2 VictoryRoad, VICTORY_ROAD, $1d, NONE ; 0x95ca8
+	map_header_2 EcruteakHouse, ECRUTEAK_HOUSE, $0, NONE ; 0x95cb4
+	map_header_2 WiseTriosRoom, WISE_TRIOS_ROOM, $0, NONE ; 0x95cc0
+	map_header_2 EcruteakPokeCenter1F, ECRUTEAK_POKECENTER_1F, $0, NONE ; 0x95ccc
+	map_header_2 EcruteakLugiaSpeechHouse, ECRUTEAK_LUGIA_SPEECH_HOUSE, $0, NONE ; 0x95cd8
+	map_header_2 DanceTheatre, DANCE_THEATRE, $0, NONE ; 0x95ce4
+	map_header_2 EcruteakMart, ECRUTEAK_MART, $0, NONE ; 0x95cf0
+	map_header_2 EcruteakGym, ECRUTEAK_GYM, $0, NONE ; 0x95cfc
+	map_header_2 EcruteakItemfinderHouse, ECRUTEAK_ITEMFINDER_HOUSE, $0, NONE ; 0x95d08
+	map_header_2 BlackthornGym1F, BLACKTHORN_GYM_1F, $0, NONE ; 0x95d14
+	map_header_2 BlackthornGym2F, BLACKTHORN_GYM_2F, $0, NONE ; 0x95d20
+	map_header_2 BlackthornDragonSpeechHouse, BLACKTHORN_DRAGON_SPEECH_HOUSE, $0, NONE ; 0x95d2c
+	map_header_2 BlackthornDodrioTradeHouse, BLACKTHORN_DODRIO_TRADE_HOUSE, $0, NONE ; 0x95d38
+	map_header_2 BlackthornMart, BLACKTHORN_MART, $0, NONE ; 0x95d44
+	map_header_2 BlackthornPokeCenter1F, BLACKTHORN_POKECENTER_1F, $0, NONE ; 0x95d50
+	map_header_2 MoveDeletersHouse, MOVE_DELETERS_HOUSE, $0, NONE ; 0x95d5c
+	map_header_2 CinnabarPokeCenter1F, CINNABAR_POKECENTER_1F, $0, NONE ; 0x95d68
+	map_header_2 CinnabarPokeCenter2FBeta, CINNABAR_POKECENTER_2F_BETA, $0, NONE ; 0x95d74
+	map_header_2 Route19FuchsiaGate, ROUTE_19___FUCHSIA_GATE, $0, NONE ; 0x95d80
+	map_header_2 SeafoamGym, SEAFOAM_GYM, $9, NONE ; 0x95d8c
+	map_header_2 CeruleanGymBadgeSpeechHouse, CERULEAN_GYM_BADGE_SPEECH_HOUSE, $0, NONE ; 0x95d98
+	map_header_2 CeruleanPoliceStation, CERULEAN_POLICE_STATION, $0, NONE ; 0x95da4
+	map_header_2 CeruleanTradeSpeechHouse, CERULEAN_TRADE_SPEECH_HOUSE, $0, NONE ; 0x95db0
+	map_header_2 CeruleanPokeCenter1F, CERULEAN_POKECENTER_1F, $0, NONE ; 0x95dbc
+	map_header_2 CeruleanPokeCenter2FBeta, CERULEAN_POKECENTER_2F_BETA, $0, NONE ; 0x95dc8
+	map_header_2 CeruleanGym, CERULEAN_GYM, $0, NONE ; 0x95dd4
+	map_header_2 CeruleanMart, CERULEAN_MART, $0, NONE ; 0x95de0
+	map_header_2 Route10PokeCenter1F, ROUTE_10_POKECENTER_1F, $0, NONE ; 0x95dec
+	map_header_2 Route10PokeCenter2FBeta, ROUTE_10_POKECENTER_2F_BETA, $0, NONE ; 0x95df8
+	map_header_2 PowerPlant, POWER_PLANT, $0, NONE ; 0x95e04
+	map_header_2 BillsHouse, BILLS_HOUSE, $0, NONE ; 0x95e10
+	map_header_2 AzaleaPokeCenter1F, AZALEA_POKECENTER_1F, $0, NONE ; 0x95e1c
+	map_header_2 CharcoalKiln, CHARCOAL_KILN, $0, NONE ; 0x95e28
+	map_header_2 AzaleaMart, AZALEA_MART, $0, NONE ; 0x95e34
+	map_header_2 KurtsHouse, KURTS_HOUSE, $0, NONE ; 0x95e40
+	map_header_2 AzaleaGym, AZALEA_GYM, $0, NONE ; 0x95e4c
+	map_header_2 LakeofRageHiddenPowerHouse, LAKE_OF_RAGE_HIDDEN_POWER_HOUSE, $0, NONE ; 0x95e58
+	map_header_2 LakeofRageMagikarpHouse, LAKE_OF_RAGE_MAGIKARP_HOUSE, $0, NONE ; 0x95e64
+	map_header_2 Route43MahoganyGate, ROUTE_43_MAHOGANY_GATE, $0, NONE ; 0x95e70
+	map_header_2 Route43Gate, ROUTE_43_GATE, $0, NONE ; 0x95e7c
+	map_header_2 VioletMart, VIOLET_MART, $0, NONE ; 0x95e88
+	map_header_2 VioletGym, VIOLET_GYM, $0, NONE ; 0x95e94
+	map_header_2 EarlsPokemonAcademy, EARLS_POKEMON_ACADEMY, $0, NONE ; 0x95ea0
+	map_header_2 VioletNicknameSpeechHouse, VIOLET_NICKNAME_SPEECH_HOUSE, $0, NONE ; 0x95eac
+	map_header_2 VioletPokeCenter1F, VIOLET_POKECENTER_1F, $0, NONE ; 0x95eb8
+	map_header_2 VioletOnixTradeHouse, VIOLET_ONIX_TRADE_HOUSE, $0, NONE ; 0x95ec4
+	map_header_2 Route32RuinsofAlphGate, ROUTE_32_RUINS_OF_ALPH_GATE, $0, NONE ; 0x95ed0
+	map_header_2 Route32PokeCenter1F, ROUTE_32_POKECENTER_1F, $0, NONE ; 0x95edc
+	map_header_2 Route35Goldenrodgate, ROUTE_35_GOLDENROD_GATE, $0, NONE ; 0x95ee8
+	map_header_2 Route35NationalParkgate, ROUTE_35_NATIONAL_PARK_GATE, $0, NONE ; 0x95ef4
+	map_header_2 Route36RuinsofAlphgate, ROUTE_36_RUINS_OF_ALPH_GATE, $0, NONE ; 0x95f00
+	map_header_2 Route36NationalParkgate, ROUTE_36_NATIONAL_PARK_GATE, $0, NONE ; 0x95f0c
+	map_header_2 GoldenrodGym, GOLDENROD_GYM, $0, NONE ; 0x95f18
+	map_header_2 GoldenrodBikeShop, GOLDENROD_BIKE_SHOP, $0, NONE ; 0x95f24
+	map_header_2 GoldenrodHappinessRater, GOLDENROD_HAPPINESS_RATER, $0, NONE ; 0x95f30
+	map_header_2 GoldenrodBillsHouse, GOLDENROD_BILLS_HOUSE, $0, NONE ; 0x95f3c
+	map_header_2 GoldenrodMagnetTrainStation, GOLDENROD_MAGNET_TRAIN_STATION, $0, NONE ; 0x95f48
+	map_header_2 GoldenrodFlowerShop, GOLDENROD_FLOWER_SHOP, $0, NONE ; 0x95f54
+	map_header_2 GoldenrodPPSpeechHouse, GOLDENROD_PP_SPEECH_HOUSE, $0, NONE ; 0x95f60
+	map_header_2 GoldenrodNameRatersHouse, GOLDENROD_NAME_RATERS_HOUSE, $0, NONE ; 0x95f6c
+	map_header_2 GoldenrodDeptStore1F, GOLDENROD_DEPT_STORE_1F, $0, NONE ; 0x95f78
+	map_header_2 GoldenrodDeptStore2F, GOLDENROD_DEPT_STORE_2F, $0, NONE ; 0x95f84
+	map_header_2 GoldenrodDeptStore3F, GOLDENROD_DEPT_STORE_3F, $0, NONE ; 0x95f90
+	map_header_2 GoldenrodDeptStore4F, GOLDENROD_DEPT_STORE_4F, $0, NONE ; 0x95f9c
+	map_header_2 GoldenrodDeptStore5F, GOLDENROD_DEPT_STORE_5F, $0, NONE ; 0x95fa8
+	map_header_2 GoldenrodDeptStore6F, GOLDENROD_DEPT_STORE_6F, $0, NONE ; 0x95fb4
+	map_header_2 GoldenrodDeptStoreElevator, GOLDENROD_DEPT_STORE_ELEVATOR, $0, NONE ; 0x95fc0
+	map_header_2 GoldenrodDeptStoreRoof, GOLDENROD_DEPT_STORE_ROOF, $24, NONE ; 0x95fcc
+	map_header_2 GoldenrodGameCorner, GOLDENROD_GAME_CORNER, $0, NONE ; 0x95fd8
+	map_header_2 GoldenrodPokeCenter1F, GOLDENROD_POKECENTER_1F, $0, NONE ; 0x95fe4
+	map_header_2 GoldenrodPokeComCenter2FMobile, GOLDENROD_POKECOM_CENTER_2F_MOBILE, $0, NONE ; 0x95ff0
+	map_header_2 IlexForestAzaleaGate, ILEX_FOREST_AZALEA_GATE, $0, NONE ; 0x95ffc
+	map_header_2 Route34IlexForestGate, ROUTE_34_ILEX_FOREST_GATE, $0, NONE ; 0x96008
+	map_header_2 DayCare, DAY_CARE, $0, NONE ; 0x96014
+	map_header_2 VermilionHouseFishingSpeechHouse, VERMILION_HOUSE_FISHING_SPEECH_HOUSE, $0, NONE ; 0x96020
+	map_header_2 VermilionPokeCenter1F, VERMILION_POKECENTER_1F, $0, NONE ; 0x9602c
+	map_header_2 VermilionPokeCenter2FBeta, VERMILION_POKECENTER_2F_BETA, $0, NONE ; 0x96038
+	map_header_2 PokemonFanClub, POKEMON_FAN_CLUB, $0, NONE ; 0x96044
+	map_header_2 VermilionMagnetTrainSpeechHouse, VERMILION_MAGNET_TRAIN_SPEECH_HOUSE, $0, NONE ; 0x96050
+	map_header_2 VermilionMart, VERMILION_MART, $0, NONE ; 0x9605c
+	map_header_2 VermilionHouseDiglettsCaveSpeechHouse, VERMILION_HOUSE_DIGLETTS_CAVE_SPEECH_HOUSE, $0, NONE ; 0x96068
+	map_header_2 VermilionGym, VERMILION_GYM, $0, NONE ; 0x96074
+	map_header_2 Route6SaffronGate, ROUTE_6_SAFFRON_GATE, $0, NONE ; 0x96080
+	map_header_2 Route6UndergroundEntrance, ROUTE_6_UNDERGROUND_ENTRANCE, $0, NONE ; 0x9608c
+	map_header_2 RedsHouse1F, REDS_HOUSE_1F, $0, NONE ; 0x96098
+	map_header_2 RedsHouse2F, REDS_HOUSE_2F, $0, NONE ; 0x960a4
+	map_header_2 BluesHouse, BLUES_HOUSE, $0, NONE ; 0x960b0
+	map_header_2 OaksLab, OAKS_LAB, $0, NONE ; 0x960bc
+	map_header_2 PewterNidoranSpeechHouse, PEWTER_NIDORAN_SPEECH_HOUSE, $0, NONE ; 0x960c8
+	map_header_2 PewterGym, PEWTER_GYM, $0, NONE ; 0x960d4
+	map_header_2 PewterMart, PEWTER_MART, $0, NONE ; 0x960e0
+	map_header_2 PewterPokeCenter1F, PEWTER_POKECENTER_1F, $0, NONE ; 0x960ec
+	map_header_2 PewterPokeCEnter2FBeta, PEWTER_POKECENTER_2F_BETA, $0, NONE ; 0x960f8
+	map_header_2 PewterSnoozeSpeechHouse, PEWTER_SNOOZE_SPEECH_HOUSE, $0, NONE ; 0x96104
+	map_header_2 OlivinePort, OLIVINE_PORT, $a, NONE ; 0x96110
+	map_header_2 VermilionPort, VERMILION_PORT, $a, NONE ; 0x9611c
+	map_header_2 FastShip1F, FAST_SHIP_1F, $0, NONE ; 0x96128
+	map_header_2 FastShipCabins_NNW_NNE_NE, FAST_SHIP_CABINS_NNW_NNE_NE, $0, NONE ; 0x96134
+	map_header_2 FastShipCabins_SW_SSW_NW, FAST_SHIP_CABINS_SW_SSW_NW, $0, NONE ; 0x96140
+	map_header_2 FastShipCabins_SE_SSE_CaptainsCabin, FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN, $0, NONE ; 0x9614c
+	map_header_2 FastShipB1F, FAST_SHIP_B1F, $0, NONE ; 0x96158
+	map_header_2 OlivinePortPassage, OLIVINE_PORT_PASSAGE, $0, NONE ; 0x96164
+	map_header_2 VermilionPortPassage, VERMILION_PORT_PASSAGE, $0, NONE ; 0x96170
+	map_header_2 MountMoonSquare, MOUNT_MOON_SQUARE, $2d, NONE ; 0x9617c
+	map_header_2 MountMoonGiftShop, MOUNT_MOON_GIFT_SHOP, $0, NONE ; 0x96188
+	map_header_2 TinTowerRoof, TIN_TOWER_ROOF, $0, NONE ; 0x96194
+	map_header_2 IndigoPlateauPokeCenter1F, INDIGO_PLATEAU_POKECENTER_1F, $0, NONE ; 0x961a0
+	map_header_2 WillsRoom, WILLS_ROOM, $0, NONE ; 0x961ac
+	map_header_2 KogasRoom, KOGAS_ROOM, $0, NONE ; 0x961b8
+	map_header_2 BrunosRoom, BRUNOS_ROOM, $0, NONE ; 0x961c4
+	map_header_2 KarensRoom, KARENS_ROOM, $0, NONE ; 0x961d0
+	map_header_2 LancesRoom, LANCES_ROOM, $0, NONE ; 0x961dc
+	map_header_2 HallOfFame, HALL_OF_FAME, $0, NONE ; 0x961e8
+	map_header_2 FuchsiaMart, FUCHSIA_MART, $0, NONE ; 0x961f4
+	map_header_2 SafariZoneMainOffice, SAFARI_ZONE_MAIN_OFFICE, $0, NONE ; 0x96200
+	map_header_2 FuchsiaGym, FUCHSIA_GYM, $0, NONE ; 0x9620c
+	map_header_2 FuchsiaBillSpeechHouse, FUCHSIA_BILL_SPEECH_HOUSE, $0, NONE ; 0x96218
+	map_header_2 FuchsiaPokeCenter1F, FUCHSIA_POKECENTER_1F, $0, NONE ; 0x96224
+	map_header_2 FuchsiaPokeCenter2FBeta, FUCHSIA_POKECENTER_2F_BETA, $0, NONE ; 0x96230
+	map_header_2 SafariZoneWardensHome, SAFARI_ZONE_WARDENS_HOME, $0, NONE ; 0x9623c
+	map_header_2 Route15FuchsiaGate, ROUTE_15_FUCHSIA_GATE, $0, NONE ; 0x96248
+	map_header_2 LavenderPokeCenter1F, LAVENDER_POKECENTER_1F, $0, NONE ; 0x96254
+	map_header_2 LavenderPokeCenter2FBeta, LAVENDER_POKECENTER_2F_BETA, $0, NONE ; 0x96260
+	map_header_2 MrFujisHouse, MR_FUJIS_HOUSE, $0, NONE ; 0x9626c
+	map_header_2 LavenderTownSpeechHouse, LAVENDER_TOWN_SPEECH_HOUSE, $0, NONE ; 0x96278
+	map_header_2 LavenderNameRater, LAVENDER_NAME_RATER, $0, NONE ; 0x96284
+	map_header_2 LavenderMart, LAVENDER_MART, $0, NONE ; 0x96290
+	map_header_2 SoulHouse, SOUL_HOUSE, $0, NONE ; 0x9629c
+	map_header_2 LavRadioTower1F, LAV_RADIO_TOWER_1F, $0, NONE ; 0x962a8
+	map_header_2 Route8SaffronGate, ROUTE_8_SAFFRON_GATE, $0, NONE ; 0x962b4
+	map_header_2 Route12SuperRodHouse, ROUTE_12_SUPER_ROD_HOUSE, $0, NONE ; 0x962c0
+	map_header_2 SilverCavePokeCenter1F, SILVER_CAVE_POKECENTER_1F, $0, NONE ; 0x962cc
+	map_header_2 Route28FamousSpeechHouse, ROUTE_28_FAMOUS_SPEECH_HOUSE, $0, NONE ; 0x962d8
+	map_header_2 PokeCenter2F, POKECENTER_2F, $0, NONE ; 0x962e4
+	map_header_2 TradeCenter, TRADE_CENTER, $0, NONE ; 0x962f0
+	map_header_2 Colosseum, COLOSSEUM, $0, NONE ; 0x962fc
+	map_header_2 TimeCapsule, TIME_CAPSULE, $0, NONE ; 0x96308
+	map_header_2 MobileTradeRoomMobile, MOBILE_TRADE_ROOM_MOBILE, $0, NONE ; 0x96314
+	map_header_2 MobileBattleRoom, MOBILE_BATTLE_ROOM, $0, NONE ; 0x96320
+	map_header_2 CeladonDeptStore1F, CELADON_DEPT_STORE_1F, $0, NONE ; 0x9632c
+	map_header_2 CeladonDeptStore2F, CELADON_DEPT_STORE_2F, $0, NONE ; 0x96338
+	map_header_2 CeladonDeptStore3F, CELADON_DEPT_STORE_3F, $0, NONE ; 0x96344
+	map_header_2 CeladonDeptStore4F, CELADON_DEPT_STORE_4F, $0, NONE ; 0x96350
+	map_header_2 CeladonDeptStore5F, CELADON_DEPT_STORE_5F, $0, NONE ; 0x9635c
+	map_header_2 CeladonDeptStore6F, CELADON_DEPT_STORE_6F, $0, NONE ; 0x96368
+	map_header_2 CeladonDeptStoreElevator, CELADON_DEPT_STORE_ELEVATOR, $0, NONE ; 0x96374
+	map_header_2 CeladonMansion1F, CELADON_MANSION_1F, $0, NONE ; 0x96380
+	map_header_2 CeladonMansion2F, CELADON_MANSION_2F, $0, NONE ; 0x9638c
+	map_header_2 CeladonMansion3F, CELADON_MANSION_3F, $0, NONE ; 0x96398
+	map_header_2 CeladonMansionRoof, CELADON_MANSION_ROOF, $1, NONE ; 0x963a4
+	map_header_2 CeladonMansionRoofHouse, CELADON_MANSION_ROOF_HOUSE, $0, NONE ; 0x963b0
+	map_header_2 CeladonPokeCenter1F, CELADON_POKECENTER_1F, $0, NONE ; 0x963bc
+	map_header_2 CeladonPokeCenter2FBeta, CELADON_POKECENTER_2F_BETA, $0, NONE ; 0x963c8
+	map_header_2 CeladonGameCorner, CELADON_GAME_CORNER, $0, NONE ; 0x963d4
+	map_header_2 CeladonGameCornerPrizeRoom, CELADON_GAME_CORNER_PRIZE_ROOM, $0, NONE ; 0x963e0
+	map_header_2 CeladonGym, CELADON_GYM, $0, NONE ; 0x963ec
+	map_header_2 CeladonCafe, CELADON_CAFE, $0, NONE ; 0x963f8
+	map_header_2 Route16FuchsiaSpeechHouse, ROUTE_16_FUCHSIA_SPEECH_HOUSE, $0, NONE ; 0x96404
+	map_header_2 Route16Gate, ROUTE_16_GATE, $0, NONE ; 0x96410
+	map_header_2 Route7SaffronGate, ROUTE_7_SAFFRON_GATE, $0, NONE ; 0x9641c
+	map_header_2 Route1718Gate, ROUTE_17_18_GATE, $0, NONE ; 0x96428
+	map_header_2 ManiasHouse, MANIAS_HOUSE, $0, NONE ; 0x96434
+	map_header_2 CianwoodGym, CIANWOOD_GYM, $0, NONE ; 0x96440
+	map_header_2 CianwoodPokeCenter1F, CIANWOOD_POKECENTER_1F, $0, NONE ; 0x9644c
+	map_header_2 CianwoodPharmacy, CIANWOOD_PHARMACY, $0, NONE ; 0x96458
+	map_header_2 CianwoodCityPhotoStudio, CIANWOOD_CITY_PHOTO_STUDIO, $0, NONE ; 0x96464
+	map_header_2 CianwoodLugiaSpeechHouse, CIANWOOD_LUGIA_SPEECH_HOUSE, $0, NONE ; 0x96470
+	map_header_2 PokeSeersHouse, POKE_SEERS_HOUSE, $0, NONE ; 0x9647c
+	map_header_2 BattleTower1F, BATTLE_TOWER_1F, $0, NONE ; 0x96488
+	map_header_2 BattleTowerBattleRoom, BATTLE_TOWER_BATTLE_ROOM, $0, NONE ; 0x96494
+	map_header_2 BattleTowerElevator, BATTLE_TOWER_ELEVATOR, $0, NONE ; 0x964a0
+	map_header_2 BattleTowerHallway, BATTLE_TOWER_HALLWAY, $0, NONE ; 0x964ac
+	map_header_2 Route40BattleTowerGate, ROUTE_40_BATTLE_TOWER_GATE, $0, NONE ; 0x964b8
+	map_header_2 BattleTowerOutside, BATTLE_TOWER_OUTSIDE, $5, NONE ; 0x964c4
+	map_header_2 ViridianGym, VIRIDIAN_GYM, $0, NONE ; 0x964d0
+	map_header_2 ViridianNicknameSpeechHouse, VIRIDIAN_NICKNAME_SPEECH_HOUSE, $0, NONE ; 0x964dc
+	map_header_2 TrainerHouse1F, TRAINER_HOUSE_1F, $0, NONE ; 0x964e8
+	map_header_2 TrainerHouseB1F, TRAINER_HOUSE_B1F, $0, NONE ; 0x964f4
+	map_header_2 ViridianMart, VIRIDIAN_MART, $0, NONE ; 0x96500
+	map_header_2 ViridianPokeCenter1F, VIRIDIAN_POKECENTER_1F, $0, NONE ; 0x9650c
+	map_header_2 ViridianPokeCenter2FBeta, VIRIDIAN_POKECENTER_2F_BETA, $0, NONE ; 0x96518
+	map_header_2 Route2NuggetSpeechHouse, ROUTE_2_NUGGET_SPEECH_HOUSE, $0, NONE ; 0x96524
+	map_header_2 Route2Gate, ROUTE_2_GATE, $0, NONE ; 0x96530
+	map_header_2 VictoryRoadGate, VICTORY_ROAD_GATE, $0, NONE ; 0x9653c
+	map_header_2 ElmsLab, ELMS_LAB, $0, NONE ; 0x96548
+	map_header_2 KrissHouse1F, KRISS_HOUSE_1F, $0, NONE ; 0x96554
+	map_header_2 KrissHouse2F, KRISS_HOUSE_2F, $0, NONE ; 0x96560
+	map_header_2 KrissNeighborsHouse, KRISS_NEIGHBORS_HOUSE, $0, NONE ; 0x9656c
+	map_header_2 ElmsHouse, ELMS_HOUSE, $0, NONE ; 0x96578
+	map_header_2 Route26HealSpeechHouse, ROUTE_26_HEAL_SPEECH_HOUSE, $0, NONE ; 0x96584
+	map_header_2 Route26DayofWeekSiblingsHouse, ROUTE_26_DAY_OF_WEEK_SIBLINGS_HOUSE, $0, NONE ; 0x96590
+	map_header_2 Route27SandstormHouse, ROUTE_27_SANDSTORM_HOUSE, $0, NONE ; 0x9659c
+	map_header_2 Route2946Gate, ROUTE_29_46_GATE, $0, NONE ; 0x965a8
+	map_header_2 FightingDojo, FIGHTING_DOJO, $0, NONE ; 0x965b4
+	map_header_2 SaffronGym, SAFFRON_GYM, $0, NONE ; 0x965c0
+	map_header_2 SaffronMart, SAFFRON_MART, $0, NONE ; 0x965cc
+	map_header_2 SaffronPokeCenter1F, SAFFRON_POKECENTER_1F, $0, NONE ; 0x965d8
+	map_header_2 SaffronPokeCenter2FBeta, SAFFRON_POKECENTER_2F_BETA, $0, NONE ; 0x965e4
+	map_header_2 MrPsychicsHouse, MR_PSYCHICS_HOUSE, $0, NONE ; 0x965f0
+	map_header_2 SaffronTrainStation, SAFFRON_TRAIN_STATION, $0, NONE ; 0x965fc
+	map_header_2 SilphCo1F, SILPH_CO_1F, $0, NONE ; 0x96608
+	map_header_2 CopycatsHouse1F, COPYCATS_HOUSE_1F, $0, NONE ; 0x96614
+	map_header_2 CopycatsHouse2F, COPYCATS_HOUSE_2F, $0, NONE ; 0x96620
+	map_header_2 Route5UndergroundEntrance, ROUTE_5_UNDERGROUND_ENTRANCE, $0, NONE ; 0x9662c
+	map_header_2 Route5SaffronCityGate, ROUTE_5_SAFFRON_CITY_GATE, $0, NONE ; 0x96638
+	map_header_2 Route5CleanseTagSpeechHouse, ROUTE_5_CLEANSE_TAG_SPEECH_HOUSE, $0, NONE ; 0x96644
+	map_header_2 CherrygroveMart, CHERRYGROVE_MART, $0, NONE ; 0x96650
+	map_header_2 CherrygrovePokeCenter1F, CHERRYGROVE_POKECENTER_1F, $0, NONE ; 0x9665c
+	map_header_2 CherrygroveGymSpeechHouse, CHERRYGROVE_GYM_SPEECH_HOUSE, $0, NONE ; 0x96668
+	map_header_2 GuideGentsHouse, GUIDE_GENTS_HOUSE, $0, NONE ; 0x96674
+	map_header_2 CherrygroveEvolutionSpeechHouse, CHERRYGROVE_EVOLUTION_SPEECH_HOUSE, $0, NONE ; 0x96680
+	map_header_2 Route30BerrySpeechHouse, ROUTE_30_BERRY_SPEECH_HOUSE, $0, NONE ; 0x9668c
+	map_header_2 MrPokemonsHouse, MR_POKEMONS_HOUSE, $0, NONE ; 0x96698
+	map_header_2 Route31VioletGate, ROUTE_31_VIOLET_GATE, $0, NONE ; 0x966a4
--- a/text/types.asm
+++ b/text/types.asm
@@ -1,5 +1,6 @@
 PrintMonTypes: ; 5090d
-; Print both types of CurSpecies on the stats screen at hl.
+; Print one or both types of [CurSpecies]
+; on the stats screen at hl.
 
 	push hl
 	call GetBaseData
@@ -7,27 +8,29 @@
 
 	push hl
 	ld a, [BaseType1]
-	call .PrintType
+	call .Print
 
+	; Single-typed monsters really
+	; have two of the same type.
 	ld a, [BaseType1]
 	ld b, a
 	ld a, [BaseType2]
 	cp b
 	pop hl
-	jr z, .HideSecondType
+	jr z, .hide_type_2
 
-; Next row
-	ld bc, 20
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 
-.PrintType
+.Print
 	ld b, a
 	jr PrintType
 
-.HideSecondType
-; This doesn't actually do anything.
+.hide_type_2
+	; Erase any type name that was here before.
+	; Seems to be pointless in localized versions.
 	ld a, " "
-	ld bc, 20 - 3
+	ld bc, SCREEN_WIDTH - 3
 	add hl, bc
 	ld [hl], a
 	inc bc
@@ -36,6 +39,7 @@
 	jp ByteFill
 ; 5093a
 
+
 PrintMoveType: ; 5093a
 ; Print the type of move b at hl.
 
@@ -52,10 +56,11 @@
 	pop hl
 
 	ld b, a
-; 50953
 
+
 PrintType: ; 50953
 ; Print type b at hl.
+
 	ld a, b
 
 	push hl
@@ -74,7 +79,8 @@
 
 
 GetTypeName: ; 50964
-; Copy the name of type $d265 to StringBuffer1.
+; Copy the name of type [$d265] to StringBuffer1.
+
 	ld a, [$d265]
 	ld hl, TypeNames
 	ld e, a
@@ -85,7 +91,7 @@
 	ld h, [hl]
 	ld l, a
 	ld de, StringBuffer1
-	ld bc, $000d
+	ld bc, 13
 	jp CopyBytes
 ; 5097b
 
@@ -110,7 +116,7 @@
 	dw Normal
 	dw Normal
 	dw Normal
-	dw UnknownType
+	dw CurseType
 	dw Fire
 	dw Water
 	dw Grass
@@ -120,43 +126,24 @@
 	dw Dragon
 	dw Dark
 
-Normal:
-	db "NORMAL@"
-Fighting:
-	db "FIGHTING@"
-Flying:
-	db "FLYING@"
-Poison:
-	db "POISON@"
-UnknownType:
-	db "???@"
-Fire:
-	db "FIRE@"
-Water:
-	db "WATER@"
-Grass:
-	db "GRASS@"
-Electric:
-	db "ELECTRIC@"
-Psychic:
-	db "PSYCHIC@"
-Ice:
-	db "ICE@"
-Ground:
-	db "GROUND@"
-Rock:
-	db "ROCK@"
-Bird:
-	db "BIRD@"
-Bug:
-	db "BUG@"
-Ghost:
-	db "GHOST@"
-Steel:
-	db "STEEL@"
-Dragon:
-	db "DRAGON@"
-Dark:
-	db "DARK@"
-; 50a28
+Normal:    db "NORMAL@"
+Fighting:  db "FIGHTING@"
+Flying:    db "FLYING@"
+Poison:    db "POISON@"
+CurseType: db "???@"
+Fire:      db "FIRE@"
+Water:     db "WATER@"
+Grass:     db "GRASS@"
+Electric:  db "ELECTRIC@"
+Psychic:   db "PSYCHIC@"
+Ice:       db "ICE@"
+Ground:    db "GROUND@"
+Rock:      db "ROCK@"
+Bird:      db "BIRD@"
+Bug:       db "BUG@"
+Ghost:     db "GHOST@"
+Steel:     db "STEEL@"
+Dragon:    db "DRAGON@"
+Dark:      db "DARK@"
 
+; 50a28
--- a/wram.asm
+++ b/wram.asm
@@ -250,7 +250,13 @@
 wMapMusic:: ; c2c0
 	ds 1
 
-SECTION "auto",WRAM0[$c2c7]
+	ds 1
+
+wLZAddress:: dw ; c2c2
+wLZBank::    db ; c2c4
+
+	ds 2
+
 InputType:: ; c2c7
 	ds 1
 AutoInputAddress:: ; c2c8
@@ -260,7 +266,8 @@
 AutoInputLength:: ; c2cb
 	ds 1
 
-SECTION "linkbattle",WRAM0[$c2dc]
+	ds 16
+
 InLinkBattle:: ; c2dc
 ; 0 not in link battle
 ; 1 link battle
@@ -267,7 +274,6 @@
 ; 4 mobile battle
 	ds 1
 
-SECTION "scriptengine",WRAM0[$c2dd]
 ScriptVar:: ; c2dd
 	ds 1
 
--