shithub: pokecrystal

Download patch

ref: 975efb28aec9faf9409cbf85fc636ac2e4219138
parent: 0001c688d35d006d178ac892b1adef887a8b0796
parent: 7176eff7aafda5378305a593c459d158ac27601f
author: JimB16 <f1@jimb.de>
date: Wed Oct 7 16:38:24 EDT 2015

Merge remote-tracking branch 'upstream/master'

--- a/battle/core.asm
+++ b/battle/core.asm
@@ -8816,7 +8816,7 @@
 	callba Function106187
 	ld c, $c8
 	call DelayFrames
-	ld a, $1
+	ld a, BANK(sLinkBattleStats)
 	call GetSRAMBank
 	call Function3fa42
 	call Function3f85f
@@ -8891,7 +8891,7 @@
 	call .asm_3f8e0
 	hlcoord 0, 8
 	ld b, $5
-	ld de, $b268
+	ld de, sLinkBattleStats + $8
 .asm_3f870
 	push bc
 	push hl
--- a/constants/map_constants.asm
+++ b/constants/map_constants.asm
@@ -830,3 +830,10 @@
 	const SPRITEMOVEFN_1F
 	const SPRITEMOVEFN_20
 	const SPRITEMOVEFN_21
+
+	const_def
+	const PALETTE_AUTO
+	const PALETTE_DAY
+	const PALETTE_NITE
+	const PALETTE_MORN
+	const PALETTE_DARK
--- a/engine/events.asm
+++ b/engine/events.asm
@@ -382,7 +382,7 @@
 	call CheckBit4_ScriptFlags3
 	jr z, .ok
 
-	call Function97cc0
+	call RockSmashEncounter
 	ret c
 	jr .ok
 
@@ -582,7 +582,7 @@
 	ret c
 	call TryReadSign
 	ret c
-	call Function97c5f
+	call CheckFacingTileEvent
 	ret c
 	xor a
 	ret
--- a/engine/events_2.asm
+++ b/engine/events_2.asm
@@ -44,7 +44,7 @@
 	ret
 ; 97c5f
 
-Function97c5f:: ; 97c5f
+CheckFacingTileEvent:: ; 97c5f
 	call GetFacingTileCoord
 	ld [EngineBuffer1], a
 	ld c, a
@@ -95,41 +95,41 @@
 ; 97cc0
 
 
-Function97cc0:: ; 97cc0
+RockSmashEncounter:: ; 97cc0
 ; Rock Smash encounter
 
 	call Function968c7
-	jr c, .asm_97ce2
-	call Function97cfd
-	jr nc, .asm_97ce2
+	jr c, .nope
+	call CanUseSweetScent
+	jr nc, .nope
 	ld hl, StatusFlags2
 	bit 2, [hl]
-	jr nz, .asm_97cdb
+	jr nz, .bug_contest
 	callba TryWildEncounter
-	jr nz, .asm_97ce2
-	jr .asm_97ce6
+	jr nz, .nope
+	jr .ok
 
-.asm_97cdb
-	call Function97d23
-	jr nc, .asm_97ce2
-	jr .asm_97ced
+.bug_contest
+	call _TryWildEncounter_BugContest
+	jr nc, .nope
+	jr .ok_bug_contest
 
-.asm_97ce2
+.nope
 	ld a, 1
 	and a
 	ret
 
-.asm_97ce6
+.ok
 	ld a, BANK(RockSmashBattleScript)
 	ld hl, RockSmashBattleScript
-	jr .asm_97cf4
+	jr .done
 
-.asm_97ced
+.ok_bug_contest
 	ld a, BANK(BugCatchingContestBattleScript)
 	ld hl, BugCatchingContestBattleScript
-	jr .asm_97cf4
+	jr .done
 
-.asm_97cf4
+.done
 	call CallScript
 	scf
 	ret
@@ -142,45 +142,45 @@
 	end
 ; 97cfd
 
-Function97cfd:: ; 97cfd
+CanUseSweetScent:: ; 97cfd
 	ld hl, StatusFlags
 	bit 5, [hl]
-	jr nz, .asm_97d21
+	jr nz, .no
 	ld a, [wPermission]
 	cp $4
-	jr z, .asm_97d17
+	jr z, .ice_check
 	cp $7
-	jr z, .asm_97d17
+	jr z, .ice_check
 	callba Function149dd
-	jr nc, .asm_97d21
+	jr nc, .no
 
-.asm_97d17
+.ice_check
 	ld a, [StandingTile]
 	call CheckIceTile
-	jr z, .asm_97d21
+	jr z, .no
 	scf
 	ret
 
-.asm_97d21
+.no
 	and a
 	ret
 ; 97d23
 
-Function97d23: ; 97d23
+_TryWildEncounter_BugContest: ; 97d23
 	call TryWildEncounter_BugContest
 	ret nc
-	call Function97d31
+	call ChooseWildEncounter_BugContest
 	callba CheckRepelEffect
 	ret
 ; 97d31
 
-Function97d31:: ; 97d31
+ChooseWildEncounter_BugContest:: ; 97d31
 ; Pick a random mon out of ContestMons.
 
-.asm_97d31
+.loop
 	call Random
 	cp 100 << 1
-	jr nc, .asm_97d31
+	jr nc, .loop
 	srl a
 
 	ld hl, ContestMons
@@ -232,10 +232,10 @@
 	ld a, [StandingTile]
 	call CheckSuperTallGrassTile
 	ld b, $66
-	jr z, .asm_97d70
+	jr z, .ok
 	ld b, $33
 
-.asm_97d70
+.ok
 	callba ApplyMusicEffectOnEncounterRate
 	callba ApplyCleanseTagEffectOnEncounterRate
 	call Random
--- a/engine/specials.asm
+++ b/engine/specials.asm
@@ -83,11 +83,11 @@
 	add_special PlayMapMusic
 	add_special RestartMapMusic
 	add_special HealMachineAnim
-	add_special Function8379
-	add_special Functionc25a
-	add_special Functionc268
-	add_special Functionc276
-	add_special Functionc284
+	add_special Special_SurfStartStep
+	add_special Special_FindGreaterThanThatLevel
+	add_special Special_FindAtLeastThatHappy
+	add_special Special_FindThatSpecies
+	add_special Special_FindThatSpeciesYourTrainerID
 	add_special Functionc3ef
 	add_special Function17421
 	add_special Function17440
@@ -163,7 +163,7 @@
 	add_special Function103612
 	add_special SpecialHoOhChamber
 	add_special Function102142
-	add_special Function4989a
+	add_special Special_CelebiShrineEvent
 	add_special Function49bf9
 	add_special SpecialPokeSeer
 	add_special SpecialBuenasPassword
@@ -186,8 +186,8 @@
 	add_special Function4ae12
 	add_special LoadMapPalettes
 	add_special Function4a927
-	add_special Function90a54
-	add_special Function90a88
+	add_special Special_InitialSetDSTFlag
+	add_special Special_InitialClearDSTFlag
 	add_special SpecialNone
 ; c224
 
@@ -225,40 +225,40 @@
 	ret
 ; c25a
 
-Functionc25a: ; c25a
+Special_FindGreaterThanThatLevel: ; c25a
 	ld a, [ScriptVar]
 	ld b, a
-	callba Function4dbd2
-	jr z, Functionc298
-	jr Functionc292
+	callba _FindGreaterThanThatLevel
+	jr z, FoundNone
+	jr FoundOne
 
-Functionc268: ; c268
+Special_FindAtLeastThatHappy: ; c268
 	ld a, [ScriptVar]
 	ld b, a
-	callba Function4dbd9
-	jr z, Functionc298
-	jr Functionc292
+	callba _FindAtLeastThatHappy
+	jr z, FoundNone
+	jr FoundOne
 
-Functionc276: ; c276
+Special_FindThatSpecies: ; c276
 	ld a, [ScriptVar]
 	ld b, a
-	callba Function4dbe0
-	jr z, Functionc298
-	jr Functionc292
+	callba _FindThatSpecies
+	jr z, FoundNone
+	jr FoundOne
 
-Functionc284: ; c284
+Special_FindThatSpeciesYourTrainerID: ; c284
 	ld a, [ScriptVar]
 	ld b, a
-	callba Function4dbe6
-	jr z, Functionc298
-	jr Functionc292
+	callba _FindThatSpeciesYourTrainerID
+	jr z, FoundNone
+	jr FoundOne
 
-Functionc292: ; c292
+FoundOne: ; c292
 	ld a, $1
 	ld [ScriptVar], a
 	ret
 
-Functionc298: ; c298
+FoundNone: ; c298
 	xor a
 	ld [ScriptVar], a
 	ret
@@ -314,9 +314,9 @@
 ; c2f6
 
 Special_CheckMysteryGift: ; c2f6
-	ld a, BANK(s0_abe2)
+	ld a, BANK(sMysteryGiftItem)
 	call GetSRAMBank
-	ld a, [s0_abe2]
+	ld a, [sMysteryGiftItem]
 	and a
 	jr z, .no
 	inc a
@@ -328,9 +328,9 @@
 ; c309
 
 Special_GetMysteryGiftItem: ; c309
-	ld a, BANK(s0_abe2)
+	ld a, BANK(sMysteryGiftItem)
 	call GetSRAMBank
-	ld a, [s0_abe2]
+	ld a, [sMysteryGiftItem]
 	ld [CurItem], a
 	ld a, $1
 	ld [wd10c], a
@@ -338,12 +338,12 @@
 	call ReceiveItem
 	jr nc, .asm_c33d
 	xor a
-	ld [s0_abe2], a
+	ld [sMysteryGiftItem], a
 	call CloseSRAM
 	ld a, [CurItem]
 	ld [wd265], a
 	call GetItemName
-	ld hl, UnknownText_0xc345
+	ld hl, .ReceiveItemText
 	call PrintText
 	ld a, $1
 	ld [ScriptVar], a
@@ -356,7 +356,7 @@
 	ret
 ; c345
 
-UnknownText_0xc345: ; 0xc345
+.ReceiveItemText: ; 0xc345
 	; received item
 	text_jump UnknownText_0x1bd3be
 	db "@"
@@ -639,8 +639,8 @@
 ; c4b9
 
 SpecialTrainerHouse: ; 0xc4b9
-	ld a, BANK(s0_abfd)
+	ld a, BANK(sMysteryGiftTrainerHouseFlag)
 	call GetSRAMBank
-	ld a, [s0_abfd]
+	ld a, [sMysteryGiftTrainerHouseFlag]
 	ld [ScriptVar], a
 	jp CloseSRAM
--- /dev/null
+++ b/engine/time.asm
@@ -1,0 +1,464 @@
+Function113d6: ; 113d6
+	call Function114dd
+	ret
+; 113da
+
+Function113da: ; 113da
+	xor a
+	ld [wdc2d], a
+	ld [wdc3a], a
+	ld [wdc1c], a
+	ret
+; 113e5
+
+Function113e5:: ; 113e5
+	xor a
+	ld [wd464], a
+
+Function113e9: ; 113e9
+	ld a, [wd464]
+	cp 3
+	jr c, .asm_113f2
+	ld a, 3
+
+.asm_113f2
+	ld e, a
+	ld d, 0
+	ld hl, .data_113fd
+	add hl, de
+	ld a, [hl]
+	jp Function1142e
+; 113fd
+
+.data_113fd
+	db 20, 10, 5, 3
+; 11401
+
+Function11401: ; 11401
+	call Function1143c
+	ret nc
+	ld hl, wd464
+	ld a, [hl]
+	cp 3
+	jr nc, .asm_1140e
+	inc [hl]
+
+.asm_1140e
+	call Function113e9
+	scf
+	ret
+; 11413
+
+Function11413: ; 11413
+	ld a, 1
+
+Function11415: ; 11415
+	ld [hl], a
+	push hl
+	call UpdateTime
+	pop hl
+	inc hl
+	call Function11621
+	ret
+; 11420
+
+Function11420: ; 11420
+	inc hl
+	push hl
+	call Function115cf
+	call Function115c8
+	pop hl
+	dec hl
+	call Function11586
+	ret
+; 1142e
+
+Function1142e: ; 1142e
+	ld hl, wd465
+	ld [hl], a
+	call UpdateTime
+	ld hl, wd466
+	call Function1162e
+	ret
+; 1143c
+
+Function1143c: ; 1143c
+	ld hl, wd466
+	call Function115d6
+	call Function115ae
+	ld hl, wd465
+	call Function11586
+	ret
+; 1144c
+
+Function1144c: ; 1144c
+	ld hl, wdc1c
+	jp Function11413
+; 11452
+
+Function11452:: ; 11452
+	ld hl, wdc1c
+	call Function11420
+	ret nc
+	xor a
+	ld hl, DailyFlags
+rept 3
+	ld [hli], a
+endr
+	ld [hl], a
+	ld hl, wDailyRematchFlags
+rept 4
+	ld [hli], a
+endr
+	ld hl, wDailyPhoneItemFlags
+rept 4
+	ld [hli], a
+endr
+	ld hl, wDailyPhoneTimeOfDayFlags
+rept 4
+	ld [hli], a
+endr
+	ld hl, wdc58
+	ld a, [hl]
+	and a
+	jr z, .asm_11480
+	dec [hl]
+	jr nz, .asm_11483
+
+.asm_11480
+	call Function11485
+
+.asm_11483
+	jr Function1144c
+; 11485
+
+Function11485: ; 11485
+	call Random
+	and 3
+	add 3
+	ld [wdc58], a
+	ret
+; 11490
+
+Function11490: ; 11490
+	ld a, $14
+	ld [wd46c], a
+	ld a, $0
+	ld [wd46d], a
+	call UpdateTime
+	ld hl, wdc35
+	call Function11613
+	ret
+; 114a4
+
+
+Function114a4:: ; 114a4 (4:54a4)
+	ld hl, wdc35
+	call Function115db
+	ld a, [wcfd7]
+	and a
+	jr nz, .asm_114d4
+	ld a, [wcfd6]
+	and a
+	jr nz, .asm_114d4
+	ld a, [wcfd4]
+	ld b, a
+	ld a, [wd46d]
+	sub b
+	jr nc, .asm_114c2
+	add $3c
+.asm_114c2
+	ld [wd46d], a
+	ld a, [wcfd5]
+	ld b, a
+	ld a, [wd46c]
+	sbc b
+	ld [wd46c], a
+	jr c, .asm_114d4
+	and a
+	ret
+.asm_114d4
+	xor a
+	ld [wd46c], a
+	ld [wd46d], a
+	scf
+	ret
+
+
+Function114dd: ; 114dd
+	call UpdateTime
+	ld hl, wdc23
+	call Function11621
+	ret
+; 114e7
+
+Function114e7:: ; 114e7
+	ld hl, wdc23
+	call Function115cf
+	call Function115c8
+	and a
+	jr z, .asm_114fa
+
+	ld b, a
+	callba ApplyPokerusTick
+
+.asm_114fa
+	xor a
+	ret
+; 114fc
+
+Function114fc: ; 114fc
+	ld a, $2
+	ld hl, wdc3a
+	ld [hl], a
+	call UpdateTime
+	ld hl, wdc3b
+	call Function11621
+	ret
+; 1150c
+
+Function1150c: ; 1150c
+	ld hl, wdc3b
+	call Function115cf
+	call Function115c8
+	ld hl, wdc3a
+	call Function11586
+	ret
+; 1151c
+
+Function1151c: ; 1151c
+	ld hl, DailyFlags
+	set 2, [hl]
+	ret
+; 11522
+
+Function11522: ; 11522
+	and a
+	ld hl, DailyFlags
+	bit 2, [hl]
+	ret nz
+	scf
+	ret
+; 1152b
+
+Function1152b: ; 1152b
+	call Function11534
+	ld hl, wdc2d
+	jp Function11415
+; 11534
+
+Function11534: ; 11534
+	call GetWeekday
+	ld c, a
+	ld a, $5
+	sub c
+	jr z, .asm_1153f
+	jr nc, .asm_11541
+
+.asm_1153f
+	add $7
+
+.asm_11541
+	ret
+; 11542
+
+Function11542: ; 11542
+	ld hl, wdc2d
+	jp Function11420
+; 11548
+
+Function11548: ; 11548
+	ld a, BANK(s0_abfa)
+	call GetSRAMBank
+	ld hl, s0_abfa
+	ld a, [hli]
+	ld [Buffer1], a
+	ld a, [hl]
+	ld [Buffer2], a
+	call CloseSRAM
+	ld hl, Buffer1
+	call Function11420
+	jr nc, .asm_11572
+	ld hl, Buffer1
+	call Function11413
+	call CloseSRAM
+	callba Function1050c8
+
+.asm_11572
+	ld a, BANK(s0_abfa)
+	call GetSRAMBank
+	ld hl, Buffer1
+	ld a, [hli]
+	ld [s0_abfa], a
+	ld a, [hl]
+	ld [s0_abfa + 1], a
+	call CloseSRAM
+	ret
+; 11586
+
+Function11586: ; 11586
+	cp -1
+	jr z, .skip
+	ld c, a
+	ld a, [hl]
+	sub c
+	jr nc, .ok
+	xor a
+
+.ok
+	ld [hl], a
+	jr z, .skip
+	xor a
+	ret
+
+.skip
+	xor a
+	ld [hl], a
+	scf
+	ret
+; 11599
+
+Function11599: ; 11599
+	ld a, [wcfd7]
+	and a
+	jr nz, Function115cc
+	ld a, [wcfd6]
+	and a
+	jr nz, Function115cc
+	ld a, [wcfd5]
+	jr nz, Function115cc
+	ld a, [wcfd4]
+	ret
+; 115ae
+
+Function115ae: ; 115ae
+	ld a, [wcfd7]
+	and a
+	jr nz, Function115cc
+	ld a, [wcfd6]
+	and a
+	jr nz, Function115cc
+	ld a, [wcfd5]
+	ret
+; 115be
+
+Function115be: ; 115be
+	ld a, [wcfd7]
+	and a
+	jr nz, Function115cc
+	ld a, [wcfd6]
+	ret
+; 115c8
+
+Function115c8: ; 115c8
+	ld a, [wcfd7]
+	ret
+; 115cc
+
+Function115cc: ; 115cc
+	ld a, $ff
+	ret
+; 115cf
+
+Function115cf: ; 115cf
+	xor a
+	jr Function11605
+; 115d2
+
+Function115d2: ; 115d2
+	inc hl
+	xor a
+	jr Function115f8
+; 115d6
+
+Function115d6: ; 115d6
+rept 2
+	inc hl
+endr
+	xor a
+	jr Function115eb
+; 115db
+
+Function115db: ; 115db
+rept 3
+	inc hl
+endr
+	ld a, [hSeconds]
+	ld c, a
+	sub [hl]
+	jr nc, .asm_115e6
+	add 60
+.asm_115e6
+	ld [hl], c
+	dec hl
+	ld [wcfd4], a
+
+Function115eb: ; 115eb
+	ld a, [hMinutes]
+	ld c, a
+	sbc [hl]
+	jr nc, .asm_115f3
+	add 60
+.asm_115f3
+	ld [hl], c
+	dec hl
+	ld [wcfd5], a
+
+Function115f8: ; 115f8
+	ld a, [hHours]
+	ld c, a
+	sbc [hl]
+	jr nc, .asm_11600
+	add 24
+.asm_11600
+	ld [hl], c
+	dec hl
+	ld [wcfd6], a
+
+Function11605
+	ld a, [CurDay]
+	ld c, a
+	sbc [hl]
+	jr nc, .skip
+	add 20 * 7
+.skip
+	ld [hl], c
+	ld [wcfd7], a
+	ret
+; 11613
+
+Function11613: ; 11613
+	ld a, [CurDay]
+	ld [hli], a
+	ld a, [hHours]
+	ld [hli], a
+	ld a, [hMinutes]
+	ld [hli], a
+	ld a, [hSeconds]
+	ld [hli], a
+	ret
+; 11621
+
+Function11621: ; 11621
+	ld a, [CurDay]
+	ld [hl], a
+	ret
+; 11626
+
+Function11626: ; 11626
+	ld a, [CurDay]
+	ld [hli], a
+	ld a, [hHours]
+	ld [hli], a
+	ret
+; 1162e
+
+Function1162e: ; 1162e
+	ld a, [CurDay]
+	ld [hli], a
+	ld a, [hHours]
+	ld [hli], a
+	ld a, [hMinutes]
+	ld [hli], a
+	ret
+; 11639
\ No newline at end of file
--- a/home/text.asm
+++ b/home/text.asm
@@ -221,49 +221,65 @@
 endc
 	jp z, \2
 endm
-	dict $15, Char15
-	dict $4f, Line
-	dict $4e, NextLine
-	dict $16, Char16
+
+dict2: macro
+if \1 == 0
+	and a
+else
+	cp \1
+endc
+	jr nz, \@
+	ld a, \2
+\@:
+endm
+
+dict3: macro
+if \1 == 0
+	and a
+else
+	cp \1
+endc
+	jr z, \2
+endm
+
+	dict "<DAY>", Char15
+	dict "<LINE>", LineChar
+	dict "<NEXT>", NextLineChar
+	dict TX_FAR, TextFar
 	dict $00, NullChar
-	dict $4c, Function1337
+	dict $4c, Char4C
 	dict $4b, Char4B
-	dict $51, Paragraph
-	dict $49, PrintMomsName
-	dict $52, PrintPlayerName
-	dict $53, PrintRivalName
+	dict "<PARA>", Paragraph
+	dict "<MOM>", PrintMomsName
+	dict "<PLAYER>", PrintPlayerName
+	dict "<RIVAL>", PrintRivalName
 	dict $35, Char35
 	dict $36, Char36
 	dict $37, Char37
-	dict $38, PrintRedsName
-	dict $39, PrintGreensName
-	dict $54, Char54
-	dict $5b, Char5B
-	dict $5e, Char5E
-	dict $5c, Char5C
-	dict $5d, Char5D
+	dict "<RED>", PrintRedsName
+	dict "<GREEN>", PrintGreensName
+	dict "#", PlacePOKe
+	dict "<PC>", PCChar
+	dict "<ROCKET>", RocketChar
+	dict "<TM>", TMChar
+	dict "<TRNER>", TrainerChar
 	dict $23, Char23
 	dict $22, Char22
-	dict $55, ContText
-	dict $56, Char56
-	dict $57, DoneText
-	dict $58, PromptText
-	dict $4a, Char4A
-	dict $24, Char24
+	dict "<CONT>", ContText
+	dict "<......>", SixDotsChar
+	dict "<DONE>", DoneText
+	dict "<PROMPT>", PromptText
+	dict "<PKMN>", PlacePKMN
+	dict $24, PlacePOKE
 	dict $25, NextChar
-	cp $1f
-	jr nz, .ok
-	ld a, $7f
-.ok
+	dict2 $1f, " "
 	dict $5f, Char5F
-	dict $59, Char59
-	dict $5a, Char5A
-	dict $3f, Char3F
-	dict $14, Char14
-	cp $e4 ; handakuten
-	jr z, .place
-	cp $e5 ; dakuten
-	jr z, .place
+	dict "<TARGET>", PlaceMoveTargetsName
+	dict "<USER>", PlaceMoveUsersName
+	dict "<ENEMY>", PlaceEnemysName
+	dict "<PLAY_G>", PlaceGenderedPlayerName
+	dict3 $e4, .place
+	dict3 $e5, .place
 
 	jr .nope
 	ld b, a
@@ -319,7 +335,7 @@
 print_name: macro
 	push de
 	ld de, \1
-	jp Function126a
+	jp PlaceCommandCharacter
 endm
 
 PrintMomsName:   print_name MomsName   ; 1186
@@ -328,46 +344,46 @@
 PrintRedsName:   print_name RedsName   ; 119b
 PrintGreensName: print_name GreensName ; 11a2
 
-Char5D: print_name Char5DText ; 11a9
-Char5C: print_name Char5CText ; 11b0
-Char5B: print_name Char5BText ; 11b7
-Char5E: print_name Char5EText ; 11be
-Char54: print_name Char54Text ; 11c5
+TrainerChar: print_name TrainerCharText ; 11a9
+TMChar: print_name TMCharText ; 11b0
+PCChar: print_name PCCharText ; 11b7
+RocketChar: print_name RocketCharText ; 11be
+PlacePOKe: print_name PlacePOKeText ; 11c5
 Char23: print_name Char23Text ; 11cc
-Char56: print_name Char56Text ; 11d3
-Char4A: print_name Char4AText ; 11da
-Char24: print_name Char24Text ; 11e1
+SixDotsChar: print_name SixDotsCharText ; 11d3
+PlacePKMN: print_name PlacePKMNText ; 11da
+PlacePOKE: print_name PlacePOKEText ; 11e1
 Char35: print_name Char35Text ; 11e8
 Char36: print_name Char36Text ; 11ef
 Char37: print_name Char37Text ; 11f6
 
 
-Char59:: ; 11fd
+PlaceMoveTargetsName:: ; 11fd
 	ld a, [hBattleTurn]
 	xor 1
-	jr Char59_5A
+	jr PlaceMoveTargetsName_5A
 
-Char5A:: ; 1203
+PlaceMoveUsersName:: ; 1203
 	ld a, [hBattleTurn]
 
-Char59_5A: ; 1205
+PlaceMoveTargetsName_5A: ; 1205
 	push de
 	and a
 	jr nz, .enemy
 
 	ld de, BattleMonNick
-	jr Function126a
+	jr PlaceCommandCharacter
 
 .enemy
-	ld de, Char5AText ; Enemy
+	ld de, EnemyText ; Enemy
 	call PlaceString
 	ld h, b
 	ld l, c
 	ld de, EnemyMonNick
-	jr Function126a
+	jr PlaceCommandCharacter
 
 
-Char3F:: ; 121b
+PlaceEnemysName:: ; 121b
 	push de
 
 	ld a, [InLinkBattle]
@@ -390,18 +406,18 @@
 	callab Battle_GetTrainerName
 	pop hl
 	ld de, StringBuffer1
-	jr Function126a
+	jr PlaceCommandCharacter
 
 .rival
 	ld de, RivalName
-	jr Function126a
+	jr PlaceCommandCharacter
 
 .linkbattle
 	ld de, OTName
-	jr Function126a
+	jr PlaceCommandCharacter
 
 
-Char14:: ; 1252
+PlaceGenderedPlayerName:: ; 1252
 	push de
 	ld de, PlayerName
 	call PlaceString
@@ -410,12 +426,12 @@
 	ld a, [PlayerGender]
 	bit 0, a
 	ld de, String12a5
-	jr z, Function126a
+	jr z, PlaceCommandCharacter
 	ld de, String12a6
-	jr Function126a
+	jr PlaceCommandCharacter
 
 
-Function126a:: ; 126a
+PlaceCommandCharacter:: ; 126a
 	call PlaceString
 	ld h, b
 	ld l, c
@@ -423,16 +439,16 @@
 	jp NextChar
 ; 0x1273
 
-Char5CText:: db "TM@" ; 1273
-Char5DText:: db "TRAINER@" ; 1276
-Char5BText:: db "PC@" ; 127e
-Char5EText:: db "ROCKET@" ; 1281
-Char54Text:: db "POKé@" ; 1288
+TMCharText:: db "TM@" ; 1273
+TrainerCharText:: db "TRAINER@" ; 1276
+PCCharText:: db "PC@" ; 127e
+RocketCharText:: db "ROCKET@" ; 1281
+PlacePOKeText:: db "POKé@" ; 1288
 Char23Text:: db "こうげき@" ; 128d
-Char56Text:: db "……@" ; 1292
-Char5AText:: db "Enemy @" ; 1295
-Char4AText:: db $e1, $e2, "@" ; PK MN ; 129c
-Char24Text:: db $70, $71, "@" ; PO KE ; 129f
+SixDotsCharText:: db "……@" ; 1292
+EnemyText:: db "Enemy @" ; 1295
+PlacePKMNText:: db "<PK><MN>@" ; PK MN ; 129c
+PlacePOKEText:: db "<PO><KE>@" ; PO KE ; 129f
 String12a2:: db " @" ; 12a2
 Char35Text::
 Char36Text::
@@ -441,7 +457,7 @@
 String12a6:: db "@" ; 12a6
 ; 12a7
 
-NextLine:: ; 12a7
+NextLineChar:: ; 12a7
 	pop hl
 	ld bc, SCREEN_WIDTH * 2
 	add hl, bc
@@ -457,7 +473,7 @@
 	jp NextChar
 ; 12b9
 
-Char16:: ; 12b9
+TextFar:: ; 12b9
 	pop hl
 	push de
 	ld bc, -TileMap + $10000
@@ -500,7 +516,7 @@
 ; 12ea
 
 
-Line:: ; 12ea
+LineChar:: ; 12ea
 	pop hl
 	hlcoord TEXTBOX_INNERX, TEXTBOX_INNERY + 2
 	push hl
@@ -549,7 +565,7 @@
 	or a
 	call z, Function13cd
 
-Function1337:: ; 1337
+Char4C:: ; 1337
 	push de
 	call Function138c
 	call Function138c
--- a/items/item_effects.asm
+++ b/items/item_effects.asm
@@ -658,15 +658,15 @@
 	ld b, $0
 	callba Function116c1
 
-	ld a, $1
+	ld a, BANK(sBoxMonNicknames)
 	call GetSRAMBank
 
 	ld hl, wd050
-	ld de, $b082
-	ld bc, $000b
+	ld de, sBoxMonNicknames
+	ld bc, PKMN_NAME_LENGTH
 	call CopyBytes
 
-	ld hl, $b082
+	ld hl, sBoxMonNicknames
 	ld de, StringBuffer1
 	call InitName
 
@@ -673,12 +673,12 @@
 	call CloseSRAM
 
 .asm_ebaf
-	ld a, $1
+	ld a, BANK(sBoxMonNicknames)
 	call GetSRAMBank
 
-	ld hl, $b082
+	ld hl, sBoxMonNicknames
 	ld de, wd050
-	ld bc, $000b
+	ld bc, PKMN_NAME_LENGTH
 	call CopyBytes
 
 	call CloseSRAM
--- a/macros.asm
+++ b/macros.asm
@@ -104,6 +104,13 @@
 	endr
 	ENDM
 
+ldcoord: MACRO
+	if _NARG < 3
+	ld [TileMap + SCREEN_WIDTH * (\2) + (\1)], a
+	else
+	ld [\3 + SCREEN_WIDTH * (\2) + (\1)], a
+	endc
+	ENDM
 
 ; pic animations
 frame: MACRO
--- a/macros/charmap.asm
+++ b/macros/charmap.asm
@@ -282,5 +282,22 @@
 	charmap "<USER>",   $5a
 	charmap "<ENEMY>",  $3f
 	charmap "<PKMN>",   $4a
-
+	charmap "<PK>",     $e1
+	charmap "<MN>",     $e2
+	charmap "<PO>",     $70
+	charmap "<KE>",     $71
+	charmap "<MOM>",    $49
+	charmap "<POKE>",   $24
 	charmap "<PLAY_G>", $14 ; <PLAYER> + gender
+	charmap "<PARA>",   $51
+	charmap "<LINE>",   $4f
+	charmap "<NEXT>",   $4e
+	charmap "<CONT>",   $55
+	charmap "<DONE>",   $57
+	charmap "<PROMPT>", $58
+	charmap "<DAY>",    $15
+	charmap "<PC>",     $5b
+	charmap "<TM>",     $5c
+	charmap "<TRNER>",  $5d
+	charmap "<ROCKET>", $5e
+	charmap "<......>", $56
--- a/macros/event.asm
+++ b/macros/event.asm
@@ -300,11 +300,19 @@
 	db givepoke_command
 	db \1 ; pokemon
 	db \2 ; level
+	if _NARG >= 3
 	db \3 ; item
+	if _NARG >= 4
 	db \4 ; trainer
 	if \4
 	dw \5 ; trainer_name_pointer
 	dw \6 ; pkmn_nickname
+	endc
+	else
+	db 0
+	endc
+	else
+	db 0, 0
 	endc
 	endm
 
--- a/main.asm
+++ b/main.asm
@@ -239,9 +239,9 @@
 	ld [wRoamMon2MapNumber], a
 	ld [wRoamMon3MapNumber], a
 
-	ld a, BANK(s0_abe2)
+	ld a, BANK(sMysteryGiftItem)
 	call GetSRAMBank
-	ld hl, s0_abe2
+	ld hl, sMysteryGiftItem
 	xor a
 	ld [hli], a
 	dec a
@@ -3728,7 +3728,7 @@
 	ret
 ; 8379
 
-Function8379: ; 8379
+Special_SurfStartStep: ; 8379
 	call Function1b1e
 	call Function8388
 	call Function1b3f
@@ -5008,7 +5008,7 @@
 	special Special_ReplaceKrisSprite
 	special PlayMapMusic
 ; step into the water
-	special Function8379 ; (slow_step_x, step_end)
+	special Special_SurfStartStep ; (slow_step_x, step_end)
 	applymovement PLAYER, MovementBuffer ; PLAYER, MovementBuffer
 	end
 ; c9a2
@@ -10284,472 +10284,8 @@
 
 INCLUDE "engine/pack.asm"
 
+INCLUDE "engine/time.asm"
 
-Function113d6: ; 113d6
-	call Function114dd
-	ret
-; 113da
-
-Function113da: ; 113da
-	xor a
-	ld [wdc2d], a
-	ld [wdc3a], a
-	ld [wdc1c], a
-	ret
-; 113e5
-
-Function113e5:: ; 113e5
-	xor a
-	ld [wd464], a
-
-Function113e9: ; 113e9
-	ld a, [wd464]
-	cp 3
-	jr c, .asm_113f2
-	ld a, 3
-
-.asm_113f2
-	ld e, a
-	ld d, 0
-	ld hl, .data_113fd
-	add hl, de
-	ld a, [hl]
-	jp Function1142e
-; 113fd
-
-.data_113fd
-	db 20, 10, 5, 3
-; 11401
-
-Function11401: ; 11401
-	call Function1143c
-	ret nc
-	ld hl, wd464
-	ld a, [hl]
-	cp 3
-	jr nc, .asm_1140e
-	inc [hl]
-
-.asm_1140e
-	call Function113e9
-	scf
-	ret
-; 11413
-
-Function11413: ; 11413
-	ld a, 1
-
-Function11415: ; 11415
-	ld [hl], a
-	push hl
-	call UpdateTime
-	pop hl
-	inc hl
-	call Function11621
-	ret
-; 11420
-
-Function11420: ; 11420
-	inc hl
-	push hl
-	call Function115cf
-	call Function115c8
-	pop hl
-	dec hl
-	call Function11586
-	ret
-; 1142e
-
-Function1142e: ; 1142e
-	ld hl, wd465
-	ld [hl], a
-	call UpdateTime
-	ld hl, wd466
-	call Function1162e
-	ret
-; 1143c
-
-Function1143c: ; 1143c
-	ld hl, wd466
-	call Function115d6
-	call Function115ae
-	ld hl, wd465
-	call Function11586
-	ret
-; 1144c
-
-Function1144c: ; 1144c
-	ld hl, wdc1c
-	jp Function11413
-; 11452
-
-Function11452:: ; 11452
-	ld hl, wdc1c
-	call Function11420
-	ret nc
-	xor a
-	ld hl, DailyFlags
-rept 3
-	ld [hli], a
-endr
-	ld [hl], a
-	ld hl, wDailyRematchFlags
-rept 4
-	ld [hli], a
-endr
-	ld hl, wDailyPhoneItemFlags
-rept 4
-	ld [hli], a
-endr
-	ld hl, wDailyPhoneTimeOfDayFlags
-rept 4
-	ld [hli], a
-endr
-	ld hl, wdc58
-	ld a, [hl]
-	and a
-	jr z, .asm_11480
-	dec [hl]
-	jr nz, .asm_11483
-
-.asm_11480
-	call Function11485
-
-.asm_11483
-	jr Function1144c
-; 11485
-
-Function11485: ; 11485
-	call Random
-	and 3
-	add 3
-	ld [wdc58], a
-	ret
-; 11490
-
-Function11490: ; 11490
-	ld a, $14
-	ld [wd46c], a
-	ld a, $0
-	ld [wd46d], a
-	call UpdateTime
-	ld hl, wdc35
-	call Function11613
-	ret
-; 114a4
-
-
-Function114a4:: ; 114a4 (4:54a4)
-	ld hl, wdc35
-	call Function115db
-	ld a, [wcfd7]
-	and a
-	jr nz, .asm_114d4
-	ld a, [wcfd6]
-	and a
-	jr nz, .asm_114d4
-	ld a, [wcfd4]
-	ld b, a
-	ld a, [wd46d]
-	sub b
-	jr nc, .asm_114c2
-	add $3c
-.asm_114c2
-	ld [wd46d], a
-	ld a, [wcfd5]
-	ld b, a
-	ld a, [wd46c]
-	sbc b
-	ld [wd46c], a
-	jr c, .asm_114d4
-	and a
-	ret
-.asm_114d4
-	xor a
-	ld [wd46c], a
-	ld [wd46d], a
-	scf
-	ret
-
-
-Function114dd: ; 114dd
-	call UpdateTime
-	ld hl, wdc23
-	call Function11621
-	ret
-; 114e7
-
-Function114e7:: ; 114e7
-	ld hl, wdc23
-	call Function115cf
-	call Function115c8
-	and a
-	jr z, .asm_114fa
-
-	ld b, a
-	callba ApplyPokerusTick
-
-.asm_114fa
-	xor a
-	ret
-; 114fc
-
-Function114fc: ; 114fc
-	ld a, $2
-	ld hl, wdc3a
-	ld [hl], a
-	call UpdateTime
-	ld hl, wdc3b
-	call Function11621
-	ret
-; 1150c
-
-Function1150c: ; 1150c
-	ld hl, wdc3b
-	call Function115cf
-	call Function115c8
-	ld hl, wdc3a
-	call Function11586
-	ret
-; 1151c
-
-Function1151c: ; 1151c
-	ld hl, DailyFlags
-	set 2, [hl]
-	ret
-; 11522
-
-Function11522: ; 11522
-	and a
-	ld hl, DailyFlags
-	bit 2, [hl]
-	ret nz
-	scf
-	ret
-; 1152b
-
-Function1152b: ; 1152b
-	call Function11534
-	ld hl, wdc2d
-	jp Function11415
-; 11534
-
-Function11534: ; 11534
-	call GetWeekday
-	ld c, a
-	ld a, $5
-	sub c
-	jr z, .asm_1153f
-	jr nc, .asm_11541
-
-.asm_1153f
-	add $7
-
-.asm_11541
-	ret
-; 11542
-
-Function11542: ; 11542
-	ld hl, wdc2d
-	jp Function11420
-; 11548
-
-Function11548: ; 11548
-	ld a, BANK(s0_abfa)
-	call GetSRAMBank
-	ld hl, s0_abfa
-	ld a, [hli]
-	ld [Buffer1], a
-	ld a, [hl]
-	ld [Buffer2], a
-	call CloseSRAM
-	ld hl, Buffer1
-	call Function11420
-	jr nc, .asm_11572
-	ld hl, Buffer1
-	call Function11413
-	call CloseSRAM
-	callba Function1050c8
-
-.asm_11572
-	ld a, BANK(s0_abfa)
-	call GetSRAMBank
-	ld hl, Buffer1
-	ld a, [hli]
-	ld [s0_abfa], a
-	ld a, [hl]
-	ld [s0_abfa + 1], a
-	call CloseSRAM
-	ret
-; 11586
-
-Function11586: ; 11586
-	cp $ff
-	jr z, .asm_11595
-	ld c, a
-	ld a, [hl]
-	sub c
-	jr nc, .asm_11590
-	xor a
-
-.asm_11590
-	ld [hl], a
-	jr z, .asm_11595
-	xor a
-	ret
-
-.asm_11595
-	xor a
-	ld [hl], a
-	scf
-	ret
-; 11599
-
-Function11599: ; 11599
-	ld a, [wcfd7]
-	and a
-	jr nz, Function115cc
-	ld a, [wcfd6]
-	and a
-	jr nz, Function115cc
-	ld a, [wcfd5]
-	jr nz, Function115cc
-	ld a, [wcfd4]
-	ret
-; 115ae
-
-Function115ae: ; 115ae
-	ld a, [wcfd7]
-	and a
-	jr nz, Function115cc
-	ld a, [wcfd6]
-	and a
-	jr nz, Function115cc
-	ld a, [wcfd5]
-	ret
-; 115be
-
-Function115be: ; 115be
-	ld a, [wcfd7]
-	and a
-	jr nz, Function115cc
-	ld a, [wcfd6]
-	ret
-; 115c8
-
-Function115c8: ; 115c8
-	ld a, [wcfd7]
-	ret
-; 115cc
-
-Function115cc: ; 115cc
-	ld a, $ff
-	ret
-; 115cf
-
-Function115cf: ; 115cf
-	xor a
-	jr Function11605
-; 115d2
-
-Function115d2: ; 115d2
-	inc hl
-	xor a
-	jr Function115f8
-; 115d6
-
-Function115d6: ; 115d6
-rept 2
-	inc hl
-endr
-	xor a
-	jr Function115eb
-; 115db
-
-Function115db: ; 115db
-rept 3
-	inc hl
-endr
-	ld a, [hSeconds]
-	ld c, a
-	sub [hl]
-	jr nc, .asm_115e6
-	add 60
-.asm_115e6
-	ld [hl], c
-	dec hl
-	ld [wcfd4], a
-
-Function115eb: ; 115eb
-	ld a, [hMinutes]
-	ld c, a
-	sbc [hl]
-	jr nc, .asm_115f3
-	add 60
-.asm_115f3
-	ld [hl], c
-	dec hl
-	ld [wcfd5], a
-
-Function115f8: ; 115f8
-	ld a, [hHours]
-	ld c, a
-	sbc [hl]
-	jr nc, .asm_11600
-	add 24
-.asm_11600
-	ld [hl], c
-	dec hl
-	ld [wcfd6], a
-
-Function11605
-	ld a, [CurDay]
-	ld c, a
-	sbc [hl]
-	jr nc, .asm_1160e
-	add 140
-.asm_1160e
-	ld [hl], c
-	ld [wcfd7], a
-	ret
-; 11613
-
-Function11613: ; 11613
-	ld a, [CurDay]
-	ld [hli], a
-	ld a, [hHours]
-	ld [hli], a
-	ld a, [hMinutes]
-	ld [hli], a
-	ld a, [hSeconds]
-	ld [hli], a
-	ret
-; 11621
-
-Function11621: ; 11621
-	ld a, [CurDay]
-	ld [hl], a
-	ret
-; 11626
-
-Function11626: ; 11626
-	ld a, [CurDay]
-	ld [hli], a
-	ld a, [hHours]
-	ld [hli], a
-	ret
-; 1162e
-
-Function1162e: ; 1162e
-	ld a, [CurDay]
-	ld [hli], a
-	ld a, [hHours]
-	ld [hli], a
-	ld a, [hMinutes]
-	ld [hli], a
-	ret
-; 11639
-
 CanLearnTMHMMove: ; 11639
 	ld a, [CurPartySpecies]
 	ld [CurSpecies], a
@@ -25284,11 +24820,11 @@
 	ld hl, MenuDataHeader_0x24d3f
 	call LoadMenuDataHeader
 	call Function24d47
-	call Function24d91
+	call PopulateMonMenu
 
 	ld a, 1
 	ld [hBGMapMode], a
-	call Function24d59
+	call MonMenuLoop
 	ld [MenuSelection], a
 
 	call ExitMenu
@@ -25316,8 +24852,8 @@
 	ret
 ; 24d59
 
-Function24d59: ; 24d59
-.asm_24d59
+MonMenuLoop: ; 24d59
+.loop
 	ld a, $a0
 	ld [wcf91], a
 	ld a, [Buffer1]
@@ -25330,16 +24866,16 @@
 	call PlaySFX
 	ld a, [hJoyPressed]
 	bit 0, a ; A
-	jr nz, .asm_24d84
+	jr nz, .select
 	bit 1, a ; B
-	jr nz, .asm_24d81
-	jr .asm_24d59
+	jr nz, .cancel
+	jr .loop
 
-.asm_24d81
+.cancel
 	ld a, 18 ; CANCEL
 	ret
 
-.asm_24d84
+.select
 	ld a, [wcfa9]
 	dec a
 	ld c, a
@@ -25350,35 +24886,35 @@
 	ret
 ; 24d91
 
-Function24d91: ; 24d91
+PopulateMonMenu: ; 24d91
 	call Function1cfd
-	ld bc, $002a
+	ld bc, $002a ; 42
 	add hl, bc
 	ld de, Buffer2
-.asm_24d9b
+.loop
 	ld a, [de]
 	inc de
-	cp $ff
+	cp -1
 	ret z
 	push de
 	push hl
-	call Function24db0
+	call GetMonMenuString
 	pop hl
 	call PlaceString
-	ld bc, $0028
+	ld bc, $0028 ; 40
 	add hl, bc
 	pop de
-	jr .asm_24d9b
+	jr .loop
 ; 24db0
 
-Function24db0: ; 24db0
+GetMonMenuString: ; 24db0
 	ld hl, MonMenuOptions + 1
-	ld de, $0003
+	ld de, 3
 	call IsInArray
 	dec hl
 	ld a, [hli]
-	cp $1
-	jr z, .asm_24dc8
+	cp 1
+	jr z, .NotMove
 	inc hl
 	ld a, [hl]
 	ld [wd265], a
@@ -25385,7 +24921,7 @@
 	call GetMoveName
 	ret
 
-.asm_24dc8
+.NotMove
 	inc hl
 	ld a, [hl]
 	dec a
@@ -25400,35 +24936,35 @@
 	call Function24e68
 	ld a, [CurPartySpecies]
 	cp EGG
-	jr z, .asm_24e3f
+	jr z, .egg
 	ld a, [InLinkBattle]
 	and a
-	jr nz, .asm_24e03
+	jr nz, .skip
 	ld a, PartyMon1Moves - PartyMon1
 	call GetPartyParamLocation
 	ld d, h
 	ld e, l
 	ld c, NUM_MOVES
-.asm_24ded
+.loop
 	push bc
 	push de
 	ld a, [de]
 	and a
-	jr z, .asm_24dfd
+	jr z, .next
 	push hl
 	call Function24e52
 	pop hl
-	jr nc, .asm_24dfd
+	jr nc, .next
 	call Function24e83
 
-.asm_24dfd
+.next
 	pop de
 	inc de
 	pop bc
 	dec c
-	jr nz, .asm_24ded
+	jr nz, .loop
 
-.asm_24e03
+.skip
 	ld a, $f
 	call Function24e83
 	ld a, $10
@@ -25437,7 +24973,7 @@
 	call Function24e83
 	ld a, [InLinkBattle]
 	and a
-	jr nz, .asm_24e2f
+	jr nz, .skip2
 	push hl
 	ld a, PartyMon1Item - PartyMon1
 	call GetPartyParamLocation
@@ -25445,24 +24981,24 @@
 	callba ItemIsMail
 	pop hl
 	ld a, $14
-	jr c, .asm_24e2c
+	jr c, .ok
 	ld a, $11
 
-.asm_24e2c
+.ok
 	call Function24e83
 
-.asm_24e2f
+.skip2
 	ld a, [Buffer1]
 	cp $8
-	jr z, .asm_24e3b
+	jr z, .ok2
 	ld a, $12
 	call Function24e83
 
-.asm_24e3b
+.ok2
 	call Function24e76
 	ret
 
-.asm_24e3f
+.egg
 	ld a, $f
 	call Function24e83
 	ld a, $10
@@ -29756,7 +29292,7 @@
 
 .asm_28946
 	ld a, $7f
-	ld [TileMap + 11 + 16 * SCREEN_WIDTH], a
+	ldcoord 11, 16
 	ld a, $13
 	ld [wcfa8], a
 	ld a, $1
@@ -29788,7 +29324,7 @@
 
 .asm_2898d
 	ld a, $7f
-	ld [TileMap + 1 + 16 * SCREEN_WIDTH], a
+	ldcoord 1, 16
 	ld a, $23
 	ld [wcfa8], a
 	ld a, $1
@@ -29934,7 +29470,7 @@
 Function28ade: ; 28ade
 .asm_28ade
 	ld a, $ed
-	ld [TileMap + 9 + 17 * SCREEN_WIDTH], a
+	ldcoord 9, 17
 .asm_28ae3
 	call Functiona57
 	ld a, [$ffa9]
@@ -29944,7 +29480,7 @@
 	jr nz, .asm_28b0b
 	push af
 	ld a, $7f
-	ld [TileMap + 9 + 17 * SCREEN_WIDTH], a
+	ldcoord 9, 17
 	pop af
 	bit 6, a
 	jr z, .asm_28b03
@@ -29959,7 +29495,7 @@
 
 .asm_28b0b
 	ld a, $ec
-	ld [TileMap + 9 + 17 * SCREEN_WIDTH], a
+	ldcoord 9, 17
 	ld a, $f
 	ld [wcf56], a
 	callba Function16d6ce
@@ -35920,9 +35456,9 @@
 	cp CAL
 	jr nz, .not_cal2
 
-	ld a, BANK(s0_abfd)
+	ld a, BANK(sMysteryGiftTrainerHouseFlag)
 	call GetSRAMBank
-	ld a, [s0_abfd]
+	ld a, [sMysteryGiftTrainerHouseFlag]
 	and a
 	call CloseSRAM
 	jr z, .not_cal2
@@ -40452,8 +39988,8 @@
 	ld a, $4
 	call Function49336
 	ld a, $3
-	ld [AttrMap + 0 + 1 * SCREEN_WIDTH], a ; (0, 1)
-	ld [AttrMap + 0 + 14 * SCREEN_WIDTH], a ; (0, 14)
+	ldcoord 0, 1, AttrMap
+	ldcoord 0, 14, AttrMap
 	hlcoord 2, 0, AttrMap
 	ld bc, $0812
 	ld a, $5
@@ -40555,13 +40091,13 @@
 	db $a8, $00, $b5, $b0, $de, $e8, $fc, $1c
 	db $ba, $66, $f7, $0e, $ba, $5e, $43, $bd
 
-Function4989a: ; 4989a
+Special_CelebiShrineEvent: ; 4989a
 	call DelayFrame
 	ld a, [VramState]
 	push af
 	xor a
 	ld [VramState], a
-	call Function49912
+	call LoadCelebiGFX
 	ld de, $0750
 	ld a, $2c
 	call Function3b2a
@@ -40623,7 +40159,7 @@
 	ret
 ; 49912
 
-Function49912: ; 49912
+LoadCelebiGFX: ; 49912
 	callba Function8cf53
 	ld de, SpecialCelebiLeafGFX
 	ld hl, VTiles1
@@ -45031,26 +44567,26 @@
 	ld [CurPartyLevel], a
 	ret
 
-Function4dbd2: ; 4dbd2
+_FindGreaterThanThatLevel: ; 4dbd2
 	ld hl, PartyMon1Level
-	call Function4dc31
+	call FindGreaterThanThatLevel
 	ret
 ; 4dbd9
 
-Function4dbd9: ; 4dbd9
+_FindAtLeastThatHappy: ; 4dbd9
 	ld hl, PartyMon1Happiness
-	call Function4dc0a
+	call FindAtLeastThatHappy
 	ret
 ; 4dbe0
 
-Function4dbe0: ; 4dbe0
+_FindThatSpecies: ; 4dbe0
 	ld hl, PartyMon1Species
-	jp Function4dc56
+	jp FindThatSpecies
 ; 4dbe6
 
-Function4dbe6: ; 4dbe6
+_FindThatSpeciesYourTrainerID: ; 4dbe6
 	ld hl, PartyMon1Species
-	call Function4dc56
+	call FindThatSpecies
 	ret z
 	ld a, c
 	ld hl, PartyMon1ID
@@ -45058,25 +44594,27 @@
 	call AddNTimes
 	ld a, [PlayerID]
 	cp [hl]
-	jr nz, .asm_4dc08
+	jr nz, .nope
 	inc hl
 	ld a, [PlayerID + 1]
 	cp [hl]
-	jr nz, .asm_4dc08
+	jr nz, .nope
 	ld a, $1
 	and a
 	ret
 
-.asm_4dc08
+.nope
 	xor a
 	ret
 ; 4dc0a
 
-Function4dc0a: ; 4dc0a
+FindAtLeastThatHappy: ; 4dc0a
+; Sets the bits for the Pokemon that have a happiness greater than or equal to b.
+; The lowest bits are used.  Sets z if no Pokemon in your party is at least that happy.
 	ld c, $0
 	ld a, [PartyCount]
 	ld d, a
-.asm_4dc10
+.loop
 	ld a, d
 	dec a
 	push hl
@@ -45087,29 +44625,29 @@
 	ld a, b
 	cp [hl]
 	pop hl
-	jr z, .asm_4dc22
-	jr nc, .asm_4dc26
+	jr z, .greater_equal
+	jr nc, .lower
 
-.asm_4dc22
+.greater_equal
 	ld a, c
 	or $1
 	ld c, a
 
-.asm_4dc26
+.lower
 	sla c
 	dec d
-	jr nz, .asm_4dc10
-	call Function4dc67
+	jr nz, .loop
+	call RetroactivelyIgnoreEggs
 	ld a, c
 	and a
 	ret
 ; 4dc31
 
-Function4dc31: ; 4dc31
+FindGreaterThanThatLevel: ; 4dc31
 	ld c, $0
 	ld a, [PartyCount]
 	ld d, a
-.asm_4dc37
+.loop
 	ld a, d
 	dec a
 	push hl
@@ -45120,52 +44658,52 @@
 	ld a, b
 	cp [hl]
 	pop hl
-	jr c, .asm_4dc4b
+	jr c, .greater
 	ld a, c
 	or $1
 	ld c, a
 
-.asm_4dc4b
+.greater
 	sla c
 	dec d
-	jr nz, .asm_4dc37
-	call Function4dc67
+	jr nz, .loop
+	call RetroactivelyIgnoreEggs
 	ld a, c
 	and a
 	ret
 ; 4dc56
 
-Function4dc56: ; 4dc56
-	ld c, $ff
+FindThatSpecies: ; 4dc56
+	ld c, -1
 	ld hl, PartySpecies
-.asm_4dc5b
+.loop
 	ld a, [hli]
-	cp $ff
+	cp -1
 	ret z
 	inc c
 	cp b
-	jr nz, .asm_4dc5b
+	jr nz, .loop
 	ld a, $1
 	and a
 	ret
 ; 4dc67
 
-Function4dc67: ; 4dc67
-	ld e, $fe
+RetroactivelyIgnoreEggs: ; 4dc67
+	ld e, -2
 	ld hl, PartySpecies
-.asm_4dc6c
+.loop
 	ld a, [hli]
-	cp $ff
+	cp -1
 	ret z
 	cp EGG
-	jr nz, .asm_4dc77
+	jr nz, .skip_notegg
 	ld a, c
 	and e
 	ld c, a
 
-.asm_4dc77
+.skip_notegg
 	rlc e
-	jr .asm_4dc6c
+	jr .loop
 ; 4dc7b
 
 
@@ -48260,7 +47798,7 @@
 	callasm GetPartyNick
 	writetext UnknownText_0x50726
 	closetext
-	callasm Function506ef
+	callasm SweetScentEncounter
 	iffalse UnknownScript_0x506e9
 	checkflag ENGINE_BUG_CONTEST_TIMER
 	iftrue UnknownScript_0x506e5
@@ -48281,29 +47819,29 @@
 	end
 ; 0x506ef
 
-Function506ef: ; 506ef
-	callba Function97cfd
-	jr nc, .asm_5071e
+SweetScentEncounter: ; 506ef
+	callba CanUseSweetScent
+	jr nc, .no_battle
 	ld hl, StatusFlags2
 	bit 2, [hl]
-	jr nz, .asm_50712
+	jr nz, .not_in_bug_contest
 	callba GetMapEncounterRate
 	ld a, b
 	and a
-	jr z, .asm_5071e
+	jr z, .no_battle
 	callba ChooseWildEncounter
-	jr nz, .asm_5071e
-	jr .asm_50718
+	jr nz, .no_battle
+	jr .start_battle
 
-.asm_50712
-	callba Function97d31
+.not_in_bug_contest
+	callba ChooseWildEncounter_BugContest
 
-.asm_50718
+.start_battle
 	ld a, $1
 	ld [ScriptVar], a
 	ret
 
-.asm_5071e
+.no_battle
 	xor a
 	ld [ScriptVar], a
 	ld [BattleType], a
@@ -63156,7 +62694,7 @@
 macro_8c490: MACRO
 	db \1
 	dw \2
-	dw TileMap + SCREEN_WIDTH * \4 + \3
+	dwcoord \3, \4
 ENDM
 
 	macro_8c490 0, Unknown_8c538,  1,  6
@@ -63703,10 +63241,10 @@
 ; 8c938
 
 Unknown_8c938: ; 8c938
-	dw TileMap +  8 + 10 * SCREEN_WIDTH
-	dw TileMap +  8 +  6 * SCREEN_WIDTH
-	dw TileMap +  6 +  8 * SCREEN_WIDTH
-	dw TileMap + 10 +  8 * SCREEN_WIDTH
+	dwcoord 8, 10
+	dwcoord 8, 6
+	dwcoord 6, 8
+	dwcoord 10, 8
 ; 8c940
 
 Function8c940: ; 8c940
@@ -69375,7 +68913,7 @@
 	db "@"
 ; 0x90a54
 
-Function90a54: ; 90a54
+Special_InitialSetDSTFlag: ; 90a54
 	ld a, [wDST]
 	set 7, a
 	ld [wDST], a
@@ -69406,7 +68944,7 @@
 	db "@"
 ; 0x90a88
 
-Function90a88: ; 90a88
+Special_InitialClearDSTFlag: ; 90a88
 	ld a, [wDST]
 	res 7, a
 	ld [wDST], a
@@ -74562,13 +74100,13 @@
 Function931ba: ; 931ba
 	ld a, [EffectFailed]
 	add $25
-	ld [TileMap + 2 + 13 * SCREEN_WIDTH], a
+	ldcoord 2, 13
 	inc a
-	ld [TileMap + 2 + 14 * SCREEN_WIDTH], a
+	ldcoord 2, 14
 	inc a
-	ld [TileMap + 3 + 13 * SCREEN_WIDTH], a
+	ldcoord 3, 13
 	inc a
-	ld [TileMap + 3 + 14 * SCREEN_WIDTH], a
+	ldcoord 3, 14
 	hlcoord 18, 17
 	ld [hl], $ee
 	ld hl, UnknownText_0x931db
@@ -89695,7 +89233,7 @@
 Function104a71: ; 104a71 (41:4a71)
 	call Function105106
 	ld a, $1
-	ld [s0_abfd], a
+	ld [sMysteryGiftTrainerHouseFlag], a
 	ld hl, wc903
 	ld de, s0_abfe
 	ld bc, $b
@@ -90630,7 +90168,7 @@
 
 Function1050d9: ; 1050d9
 	call Function105106
-	ld hl, s0_abe2
+	ld hl, sMysteryGiftItem
 	ld de, s0_abe4
 	ld a, [hli]
 	ld [de], a
@@ -90644,7 +90182,7 @@
 Function1050ea: ; 1050ea (41:50ea)
 	call Function105106
 	ld hl, s0_abe4
-	ld de, s0_abe2
+	ld de, sMysteryGiftItem
 	ld a, [hli]
 	ld [de], a
 	inc de
@@ -93614,3 +93152,4 @@
 ELSE
 INCBIN "misc/stadium2_1.bin"
 ENDC
+
--- a/maps/CeladonGameCornerPrizeRoom.asm
+++ b/maps/CeladonGameCornerPrizeRoom.asm
@@ -147,7 +147,7 @@
 	closetext
 	writebyte PIKACHU
 	special Special_GameCornerPrizeMonCheckDex
-	givepoke PIKACHU, 25, 0, 0
+	givepoke PIKACHU, 25
 	takecoins 2222
 	jump UnknownScript_0x727d3
 
@@ -165,7 +165,7 @@
 	closetext
 	writebyte PORYGON
 	special Special_GameCornerPrizeMonCheckDex
-	givepoke PORYGON, 15, 0, 0
+	givepoke PORYGON, 15
 	takecoins 5555
 	jump UnknownScript_0x727d3
 
@@ -183,7 +183,7 @@
 	closetext
 	writebyte LARVITAR
 	special Special_GameCornerPrizeMonCheckDex
-	givepoke LARVITAR, 40, 0, 0
+	givepoke LARVITAR, 40
 	takecoins 8888
 	jump UnknownScript_0x727d3
 
--- a/maps/DragonShrine.asm
+++ b/maps/DragonShrine.asm
@@ -211,7 +211,7 @@
 	writetext UnknownText_0x18d697
 	playsound SFX_CAUGHT_MON
 	waitbutton
-	givepoke DRATINI, 15, 0, 0
+	givepoke DRATINI, 15
 	checkevent EVENT_ANSWERED_DRAGON_MASTER_QUIZ_WRONG
 	special SpecialDratini
 	setevent EVENT_GOT_DRATINI
--- a/maps/ElmsLab.asm
+++ b/maps/ElmsLab.asm
@@ -105,10 +105,10 @@
 	checkevent EVENT_TOLD_ELM_ABOUT_TOGEPI_OVER_THE_PHONE
 	iffalse ElmCheckTogepiEgg
 	writebyte TOGEPI
-	special Functionc284
+	special Special_FindThatSpeciesYourTrainerID
 	iftrue ShowElmTogepiScript
 	writebyte TOGETIC
-	special Functionc284
+	special Special_FindThatSpeciesYourTrainerID
 	iftrue ShowElmTogepiScript
 	writetext UnknownText_0x79a40
 	closetext
@@ -117,10 +117,10 @@
 
 ElmEggHatchedScript:
 	writebyte TOGEPI
-	special Functionc284
+	special Special_FindThatSpeciesYourTrainerID
 	iftrue ShowElmTogepiScript
 	writebyte TOGETIC
-	special Functionc284
+	special Special_FindThatSpeciesYourTrainerID
 	iftrue ShowElmTogepiScript
 	jump ElmCheckGotEggAgain
 
@@ -177,7 +177,7 @@
 	playsound SFX_CAUGHT_MON
 	waitbutton
 	keeptextopen
-	givepoke CYNDAQUIL, 5, BERRY, 0
+	givepoke CYNDAQUIL, 5, BERRY
 	loadmovesprites
 	checkcode VAR_FACING
 	if_equal $3, ElmDirectionsScript
@@ -207,7 +207,7 @@
 	playsound SFX_CAUGHT_MON
 	waitbutton
 	keeptextopen
-	givepoke TOTODILE, 5, BERRY, 0
+	givepoke TOTODILE, 5, BERRY
 	loadmovesprites
 	applymovement PLAYER, AfterTotodileMovement
 	jump ElmDirectionsScript
@@ -235,7 +235,7 @@
 	playsound SFX_CAUGHT_MON
 	waitbutton
 	keeptextopen
-	givepoke CHIKORITA, 5, BERRY, 0
+	givepoke CHIKORITA, 5, BERRY
 	loadmovesprites
 	applymovement PLAYER, AfterChikoritaMovement
 	jump ElmDirectionsScript
--- a/maps/GoldenrodGameCorner.asm
+++ b/maps/GoldenrodGameCorner.asm
@@ -176,7 +176,7 @@
 	closetext
 	writebyte ABRA
 	special Special_GameCornerPrizeMonCheckDex
-	givepoke ABRA, 5, 0, 0
+	givepoke ABRA, 5
 	takecoins 100
 	jump UnknownScript_0x56d0c
 
@@ -194,7 +194,7 @@
 	closetext
 	writebyte CUBONE
 	special Special_GameCornerPrizeMonCheckDex
-	givepoke CUBONE, 15, 0, 0
+	givepoke CUBONE, 15
 	takecoins 800
 	jump UnknownScript_0x56d0c
 
@@ -212,7 +212,7 @@
 	closetext
 	writebyte WOBBUFFET
 	special Special_GameCornerPrizeMonCheckDex
-	givepoke WOBBUFFET, 15, 0, 0
+	givepoke WOBBUFFET, 15
 	takecoins 1500
 	jump UnknownScript_0x56d0c
 
--- a/maps/IlexForest.asm
+++ b/maps/IlexForest.asm
@@ -455,7 +455,7 @@
 	spriteface PLAYER, DOWN
 	pause 20
 	clearflag ENGINE_HAVE_EXAMINED_GS_BALL
-	special Function4989a
+	special Special_CelebiShrineEvent
 	loadpokedata CELEBI, 30
 	startbattle
 	returnafterbattle
--- a/maps/KrissHouse1F.asm
+++ b/maps/KrissHouse1F.asm
@@ -48,13 +48,13 @@
 	writetext UnknownText_0x7a742
 	yesorno
 	iffalse UnknownScript_0x7a52a
-	special Function90a54
+	special Special_InitialSetDSTFlag
 	yesorno
 	iffalse UnknownScript_0x7a519
 	jump UnknownScript_0x7a531
 
 UnknownScript_0x7a52a:
-	special Function90a88
+	special Special_InitialClearDSTFlag
 	yesorno
 	iffalse UnknownScript_0x7a519
 UnknownScript_0x7a531:
--- a/maps/LakeofRageMagikarpHouse.asm
+++ b/maps/LakeofRageMagikarpHouse.asm
@@ -37,7 +37,7 @@
 
 UnknownScript_0x19a6e0:
 	writebyte MAGIKARP
-	special Functionc276
+	special Special_FindThatSpecies
 	iffalse UnknownScript_0x19a6d7
 	writetext UnknownText_0x19a93e
 	closetext
--- a/maps/MountMortarB1F.asm
+++ b/maps/MountMortarB1F.asm
@@ -30,7 +30,7 @@
 	writetext UnknownText_0x7e355
 	playsound SFX_CAUGHT_MON
 	waitbutton
-	givepoke TYROGUE, 10, 0, 0
+	givepoke TYROGUE, 10
 	setevent EVENT_GOT_TYROGUE_FROM_KIYO
 UnknownScript_0x7e231:
 	writetext UnknownText_0x7e36a
--- a/maps/map_headers.asm
+++ b/maps/map_headers.asm
@@ -30,466 +30,466 @@
 
 
 MapGroup1:
-	map_header OlivinePokeCenter1F, $7, INDOOR, OLIVINE_CITY, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header OlivineGym, $12, INDOOR, OLIVINE_CITY, MUSIC_GYM, 1, 1, 1
-	map_header OlivineVoltorbHouse, $5, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, 1, 1
-	map_header OlivineHouseBeta, $5, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, 1, 1
-	map_header OlivinePunishmentSpeechHouse, $5, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, 1, 1
-	map_header OlivineGoodRodHouse, $5, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, 1, 1
-	map_header OlivineCafe, $e, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, 1, 1
-	map_header OlivineMart, $c, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, 1, 1
-	map_header Route38EcruteakGate, $8, GATE, ROUTE_38, MUSIC_ROUTE_37, 0, 1, 1
-	map_header Route39Barn, $10, INDOOR, ROUTE_39, MUSIC_ECRUTEAK_CITY, 0, 1, 1
-	map_header Route39Farmhouse, $5, INDOOR, ROUTE_39, MUSIC_ECRUTEAK_CITY, 0, 1, 1
-	map_header Route38, $1, ROUTE, ROUTE_38, MUSIC_ROUTE_37, 0, 0, 1
-	map_header Route39, $1, ROUTE, ROUTE_39, MUSIC_ROUTE_37, 0, 0, 1
-	map_header OlivineCity, $1, TOWN, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, 0, 1
+	map_header OlivinePokeCenter1F, $7, INDOOR, OLIVINE_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header OlivineGym, $12, INDOOR, OLIVINE_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header OlivineVoltorbHouse, $5, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
+	map_header OlivineHouseBeta, $5, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
+	map_header OlivinePunishmentSpeechHouse, $5, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
+	map_header OlivineGoodRodHouse, $5, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
+	map_header OlivineCafe, $e, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
+	map_header OlivineMart, $c, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
+	map_header Route38EcruteakGate, $8, GATE, ROUTE_38, MUSIC_ROUTE_37, 0, PALETTE_DAY, 1
+	map_header Route39Barn, $10, INDOOR, ROUTE_39, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
+	map_header Route39Farmhouse, $5, INDOOR, ROUTE_39, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
+	map_header Route38, $1, ROUTE, ROUTE_38, MUSIC_ROUTE_37, 0, PALETTE_AUTO, 1
+	map_header Route39, $1, ROUTE, ROUTE_39, MUSIC_ROUTE_37, 0, PALETTE_AUTO, 1
+	map_header OlivineCity, $1, TOWN, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_AUTO, 1
 
 
 MapGroup2:
-	map_header MahoganyRedGyaradosSpeechHouse, $5, INDOOR, MAHOGANY_TOWN, MUSIC_CHERRYGROVE_CITY, 0, 1, 1
-	map_header MahoganyGym, $f, INDOOR, MAHOGANY_TOWN, MUSIC_GYM, 1, 1, 1
-	map_header MahoganyPokeCenter1F, $7, INDOOR, MAHOGANY_TOWN, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header Route42EcruteakGate, $8, GATE, ROUTE_42, MUSIC_LAKE_OF_RAGE, 0, 1, 1
-	map_header Route42, $1, ROUTE, ROUTE_42, MUSIC_LAKE_OF_RAGE, 0, 0, 3
-	map_header Route44, $1, ROUTE, ROUTE_44, MUSIC_LAKE_OF_RAGE, 0, 0, 4
-	map_header MahoganyTown, $1, TOWN, MAHOGANY_TOWN, MUSIC_CHERRYGROVE_CITY, 0, 0, 1
+	map_header MahoganyRedGyaradosSpeechHouse, $5, INDOOR, MAHOGANY_TOWN, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, 1
+	map_header MahoganyGym, $f, INDOOR, MAHOGANY_TOWN, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header MahoganyPokeCenter1F, $7, INDOOR, MAHOGANY_TOWN, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header Route42EcruteakGate, $8, GATE, ROUTE_42, MUSIC_LAKE_OF_RAGE, 0, PALETTE_DAY, 1
+	map_header Route42, $1, ROUTE, ROUTE_42, MUSIC_LAKE_OF_RAGE, 0, PALETTE_AUTO, 3
+	map_header Route44, $1, ROUTE, ROUTE_44, MUSIC_LAKE_OF_RAGE, 0, PALETTE_AUTO, 4
+	map_header MahoganyTown, $1, TOWN, MAHOGANY_TOWN, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_AUTO, 1
 
 
 MapGroup3:
-	map_header SproutTower1F, $17, DUNGEON, SPROUT_TOWER, MUSIC_SPROUT_TOWER, 0, 1, 1
-	map_header SproutTower2F, $17, DUNGEON, SPROUT_TOWER, MUSIC_SPROUT_TOWER, 0, 1, 1
-	map_header SproutTower3F, $17, DUNGEON, SPROUT_TOWER, MUSIC_SPROUT_TOWER, 0, 1, 1
-	map_header TinTower1F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, 1, 1
-	map_header TinTower2F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, 1, 1
-	map_header TinTower3F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, 1, 1
-	map_header TinTower4F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, 1, 1
-	map_header TinTower5F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, 1, 1
-	map_header TinTower6F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, 1, 1
-	map_header TinTower7F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, 1, 1
-	map_header TinTower8F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, 1, 1
-	map_header TinTower9F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, 1, 1
-	map_header BurnedTower1F, $17, DUNGEON, BURNED_TOWER, MUSIC_BURNED_TOWER, 1, 2, 1
-	map_header BurnedTowerB1F, $18, CAVE, BURNED_TOWER, MUSIC_BURNED_TOWER, 1, 2, 1
-	map_header NationalPark, $19, ROUTE, NATIONAL_PARK, MUSIC_NATIONAL_PARK, 0, 0, 1
-	map_header NationalParkBugContest, $19, ROUTE, NATIONAL_PARK, MUSIC_BUG_CATCHING_CONTEST, 0, 0, 1
-	map_header RadioTower1F, $1b, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, 1, 1
-	map_header RadioTower2F, $1b, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, 1, 1
-	map_header RadioTower3F, $1b, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, 1, 1
-	map_header RadioTower4F, $1b, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, 1, 1
-	map_header RadioTower5F, $1b, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, 1, 1
-	map_header RuinsofAlphOutside, $1, ROUTE, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 0, 0, 4
-	map_header RuinsofAlphHoOhChamber, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, 1, 1
-	map_header RuinsofAlphKabutoChamber, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, 1, 1
-	map_header RuinsofAlphOmanyteChamber, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, 1, 1
-	map_header RuinsofAlphAerodactylChamber, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, 1, 1
-	map_header RuinsofAlphInnerChamber, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_RUINS_OF_ALPH_INTERIOR, 1, 1, 1
-	map_header RuinsofAlphResearchCenter, $b, INDOOR, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 0, 1, 1
-	map_header RuinsofAlphHoOhItemRoom, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, 1, 1
-	map_header RuinsofAlphKabutoItemRoom, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, 1, 1
-	map_header RuinsofAlphOmanyteItemRoom, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, 1, 1
-	map_header RuinsofAlphAerodactylItemRoom, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, 1, 1
-	map_header RuinsofAlphHoOhWordRoom, $21, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, 1, 1
-	map_header RuinsofAlphKabutoWordRoom, $22, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, 1, 1
-	map_header RuinsofAlphOmanyteWordRoom, $23, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, 1, 1
-	map_header RuinsofAlphAerodactylWordRoom, $24, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, 1, 1
-	map_header UnionCave1F, $18, CAVE, UNION_CAVE, MUSIC_UNION_CAVE, 1, 2, 3
-	map_header UnionCaveB1F, $18, CAVE, UNION_CAVE, MUSIC_UNION_CAVE, 1, 2, 3
-	map_header UnionCaveB2F, $18, CAVE, UNION_CAVE, MUSIC_UNION_CAVE, 1, 2, 1
-	map_header SlowpokeWellB1F, $18, CAVE, SLOWPOKE_WELL, MUSIC_DARK_CAVE, 1, 2, 3
-	map_header SlowpokeWellB2F, $18, CAVE, SLOWPOKE_WELL, MUSIC_DARK_CAVE, 1, 2, 3
-	map_header OlivineLighthouse1F, $13, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, 1, 1
-	map_header OlivineLighthouse2F, $13, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, 1, 1
-	map_header OlivineLighthouse3F, $13, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, 1, 1
-	map_header OlivineLighthouse4F, $13, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, 1, 1
-	map_header OlivineLighthouse5F, $13, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, 1, 1
-	map_header OlivineLighthouse6F, $13, DUNGEON, LIGHTHOUSE, MUSIC_VIOLET_CITY, 0, 1, 1
-	map_header MahoganyMart1F, $10, INDOOR, MAHOGANY_TOWN, MUSIC_MAHOGANY_MART, 1, 1, 1
-	map_header TeamRocketBaseB1F, $1c, DUNGEON, MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, 1, 1, 1
-	map_header TeamRocketBaseB2F, $b, DUNGEON, MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, 1, 1, 1
-	map_header TeamRocketBaseB3F, $b, DUNGEON, MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, 1, 1, 1
-	map_header IlexForest, $1f, CAVE, ILEX_FOREST, MUSIC_UNION_CAVE, 0, 2, 4
-	map_header WarehouseEntrance, $8, DUNGEON, GOLDENROD_CITY, MUSIC_UNION_CAVE, 1, 1, 1
-	map_header UndergroundPathSwitchRoomEntrances, $f, DUNGEON, GOLDENROD_CITY, MUSIC_UNION_CAVE, 1, 1, 1
-	map_header GoldenrodDeptStoreB1F, $1c, DUNGEON, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, 1, 1
-	map_header UndergroundWarehouse, $1c, DUNGEON, GOLDENROD_CITY, MUSIC_UNION_CAVE, 1, 1, 1
-	map_header MountMortar1FOutside, $1e, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, 1, 2, 3
-	map_header MountMortar1FInside, $1e, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, 1, 2, 3
-	map_header MountMortar2FInside, $1e, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, 1, 2, 3
-	map_header MountMortarB1F, $1e, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, 1, 2, 3
-	map_header IcePath1F, $1d, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, 2, 5
-	map_header IcePathB1F, $1d, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, 2, 5
-	map_header IcePathB2FMahoganySide, $1d, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, 2, 5
-	map_header IcePathB2FBlackthornSide, $1d, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, 2, 5
-	map_header IcePathB3F, $1d, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, 2, 5
-	map_header WhirlIslandNW, $1e, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, 4, 10
-	map_header WhirlIslandNE, $1e, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, 4, 10
-	map_header WhirlIslandSW, $1e, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, 4, 10
-	map_header WhirlIslandCave, $1e, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, 4, 10
-	map_header WhirlIslandSE, $1e, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, 4, 10
-	map_header WhirlIslandB1F, $1e, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, 4, 10
-	map_header WhirlIslandB2F, $1e, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, 4, 10
-	map_header WhirlIslandLugiaChamber, $1e, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, 4, 10
-	map_header SilverCaveRoom1, $1e, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, 1, 4, 3
-	map_header SilverCaveRoom2, $18, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, 1, 2, 3
-	map_header SilverCaveRoom3, $18, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, 1, 1, 3
-	map_header SilverCaveItemRooms, $18, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, 1, 2, 3
-	map_header DarkCaveVioletEntrance, $1e, CAVE, DARK_CAVE, MUSIC_DARK_CAVE, 1, 4, 3
-	map_header DarkCaveBlackthornEntrance, $1e, CAVE, DARK_CAVE, MUSIC_DARK_CAVE, 1, 4, 3
-	map_header DragonsDen1F, $18, CAVE, DRAGONS_DEN, MUSIC_DRAGONS_DEN, 1, 2, 5
-	map_header DragonsDenB1F, $1, CAVE, DRAGONS_DEN, MUSIC_DRAGONS_DEN, 1, 2, 5
-	map_header DragonShrine, $a, INDOOR, DRAGONS_DEN, MUSIC_DRAGONS_DEN, 1, 2, 1
-	map_header TohjoFalls, $18, CAVE, TOHJO_FALLS, MUSIC_UNION_CAVE, 1, 2, 3
-	map_header DiglettsCave, $18, CAVE, DIGLETTS_CAVE, MUSIC_MT_MOON, 1, 2, 1
-	map_header MountMoon, $18, CAVE, MT_MOON, MUSIC_MT_MOON, 1, 2, 1
-	map_header Underground, $1c, GATE, UNDERGROUND, MUSIC_MT_MOON, 0, 2, 1
-	map_header RockTunnel1F, $1e, CAVE, ROCK_TUNNEL, MUSIC_MT_MOON, 1, 4, 1
-	map_header RockTunnelB1F, $1e, CAVE, ROCK_TUNNEL, MUSIC_MT_MOON, 1, 4, 1
-	map_header SafariZoneFuchsiaGateBeta, $8, INDOOR, FUCHSIA_CITY, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header SafariZoneBeta, $19, CAVE, FUCHSIA_CITY, MUSIC_EVOLUTION, 0, 0, 1
-	map_header VictoryRoad, $18, CAVE, VICTORY_ROAD, MUSIC_VICTORY_ROAD, 1, 2, 1
+	map_header SproutTower1F, $17, DUNGEON, SPROUT_TOWER, MUSIC_SPROUT_TOWER, 0, PALETTE_DAY, 1
+	map_header SproutTower2F, $17, DUNGEON, SPROUT_TOWER, MUSIC_SPROUT_TOWER, 0, PALETTE_DAY, 1
+	map_header SproutTower3F, $17, DUNGEON, SPROUT_TOWER, MUSIC_SPROUT_TOWER, 0, PALETTE_DAY, 1
+	map_header TinTower1F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
+	map_header TinTower2F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
+	map_header TinTower3F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
+	map_header TinTower4F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
+	map_header TinTower5F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
+	map_header TinTower6F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
+	map_header TinTower7F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
+	map_header TinTower8F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
+	map_header TinTower9F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
+	map_header BurnedTower1F, $17, DUNGEON, BURNED_TOWER, MUSIC_BURNED_TOWER, 1, PALETTE_NITE, 1
+	map_header BurnedTowerB1F, $18, CAVE, BURNED_TOWER, MUSIC_BURNED_TOWER, 1, PALETTE_NITE, 1
+	map_header NationalPark, $19, ROUTE, NATIONAL_PARK, MUSIC_NATIONAL_PARK, 0, PALETTE_AUTO, 1
+	map_header NationalParkBugContest, $19, ROUTE, NATIONAL_PARK, MUSIC_BUG_CATCHING_CONTEST, 0, PALETTE_AUTO, 1
+	map_header RadioTower1F, $1b, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, 1
+	map_header RadioTower2F, $1b, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, 1
+	map_header RadioTower3F, $1b, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, 1
+	map_header RadioTower4F, $1b, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, 1
+	map_header RadioTower5F, $1b, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphOutside, $1, ROUTE, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 0, PALETTE_AUTO, 4
+	map_header RuinsofAlphHoOhChamber, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphKabutoChamber, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphOmanyteChamber, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphAerodactylChamber, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphInnerChamber, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_RUINS_OF_ALPH_INTERIOR, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphResearchCenter, $b, INDOOR, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 0, PALETTE_DAY, 1
+	map_header RuinsofAlphHoOhItemRoom, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphKabutoItemRoom, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphOmanyteItemRoom, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphAerodactylItemRoom, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphHoOhWordRoom, $21, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphKabutoWordRoom, $22, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphOmanyteWordRoom, $23, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphAerodactylWordRoom, $24, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header UnionCave1F, $18, CAVE, UNION_CAVE, MUSIC_UNION_CAVE, 1, PALETTE_NITE, 3
+	map_header UnionCaveB1F, $18, CAVE, UNION_CAVE, MUSIC_UNION_CAVE, 1, PALETTE_NITE, 3
+	map_header UnionCaveB2F, $18, CAVE, UNION_CAVE, MUSIC_UNION_CAVE, 1, PALETTE_NITE, 1
+	map_header SlowpokeWellB1F, $18, CAVE, SLOWPOKE_WELL, MUSIC_DARK_CAVE, 1, PALETTE_NITE, 3
+	map_header SlowpokeWellB2F, $18, CAVE, SLOWPOKE_WELL, MUSIC_DARK_CAVE, 1, PALETTE_NITE, 3
+	map_header OlivineLighthouse1F, $13, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, PALETTE_DAY, 1
+	map_header OlivineLighthouse2F, $13, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, PALETTE_DAY, 1
+	map_header OlivineLighthouse3F, $13, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, PALETTE_DAY, 1
+	map_header OlivineLighthouse4F, $13, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, PALETTE_DAY, 1
+	map_header OlivineLighthouse5F, $13, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, PALETTE_DAY, 1
+	map_header OlivineLighthouse6F, $13, DUNGEON, LIGHTHOUSE, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
+	map_header MahoganyMart1F, $10, INDOOR, MAHOGANY_TOWN, MUSIC_MAHOGANY_MART, 1, PALETTE_DAY, 1
+	map_header TeamRocketBaseB1F, $1c, DUNGEON, MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, 1, PALETTE_DAY, 1
+	map_header TeamRocketBaseB2F, $b, DUNGEON, MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, 1, PALETTE_DAY, 1
+	map_header TeamRocketBaseB3F, $b, DUNGEON, MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, 1, PALETTE_DAY, 1
+	map_header IlexForest, $1f, CAVE, ILEX_FOREST, MUSIC_UNION_CAVE, 0, PALETTE_NITE, 4
+	map_header WarehouseEntrance, $8, DUNGEON, GOLDENROD_CITY, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header UndergroundPathSwitchRoomEntrances, $f, DUNGEON, GOLDENROD_CITY, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header GoldenrodDeptStoreB1F, $1c, DUNGEON, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, 1
+	map_header UndergroundWarehouse, $1c, DUNGEON, GOLDENROD_CITY, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header MountMortar1FOutside, $1e, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, 1, PALETTE_NITE, 3
+	map_header MountMortar1FInside, $1e, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, 1, PALETTE_NITE, 3
+	map_header MountMortar2FInside, $1e, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, 1, PALETTE_NITE, 3
+	map_header MountMortarB1F, $1e, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, 1, PALETTE_NITE, 3
+	map_header IcePath1F, $1d, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, PALETTE_NITE, 5
+	map_header IcePathB1F, $1d, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, PALETTE_NITE, 5
+	map_header IcePathB2FMahoganySide, $1d, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, PALETTE_NITE, 5
+	map_header IcePathB2FBlackthornSide, $1d, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, PALETTE_NITE, 5
+	map_header IcePathB3F, $1d, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, PALETTE_NITE, 5
+	map_header WhirlIslandNW, $1e, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, 10
+	map_header WhirlIslandNE, $1e, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, 10
+	map_header WhirlIslandSW, $1e, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, 10
+	map_header WhirlIslandCave, $1e, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, 10
+	map_header WhirlIslandSE, $1e, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, 10
+	map_header WhirlIslandB1F, $1e, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, 10
+	map_header WhirlIslandB2F, $1e, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, 10
+	map_header WhirlIslandLugiaChamber, $1e, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, 10
+	map_header SilverCaveRoom1, $1e, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, 1, PALETTE_DARK, 3
+	map_header SilverCaveRoom2, $18, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, 1, PALETTE_NITE, 3
+	map_header SilverCaveRoom3, $18, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, 1, PALETTE_DAY, 3
+	map_header SilverCaveItemRooms, $18, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, 1, PALETTE_NITE, 3
+	map_header DarkCaveVioletEntrance, $1e, CAVE, DARK_CAVE, MUSIC_DARK_CAVE, 1, PALETTE_DARK, 3
+	map_header DarkCaveBlackthornEntrance, $1e, CAVE, DARK_CAVE, MUSIC_DARK_CAVE, 1, PALETTE_DARK, 3
+	map_header DragonsDen1F, $18, CAVE, DRAGONS_DEN, MUSIC_DRAGONS_DEN, 1, PALETTE_NITE, 5
+	map_header DragonsDenB1F, $1, CAVE, DRAGONS_DEN, MUSIC_DRAGONS_DEN, 1, PALETTE_NITE, 5
+	map_header DragonShrine, $a, INDOOR, DRAGONS_DEN, MUSIC_DRAGONS_DEN, 1, PALETTE_NITE, 1
+	map_header TohjoFalls, $18, CAVE, TOHJO_FALLS, MUSIC_UNION_CAVE, 1, PALETTE_NITE, 3
+	map_header DiglettsCave, $18, CAVE, DIGLETTS_CAVE, MUSIC_MT_MOON, 1, PALETTE_NITE, 1
+	map_header MountMoon, $18, CAVE, MT_MOON, MUSIC_MT_MOON, 1, PALETTE_NITE, 1
+	map_header Underground, $1c, GATE, UNDERGROUND, MUSIC_MT_MOON, 0, PALETTE_NITE, 1
+	map_header RockTunnel1F, $1e, CAVE, ROCK_TUNNEL, MUSIC_MT_MOON, 1, PALETTE_DARK, 1
+	map_header RockTunnelB1F, $1e, CAVE, ROCK_TUNNEL, MUSIC_MT_MOON, 1, PALETTE_DARK, 1
+	map_header SafariZoneFuchsiaGateBeta, $8, INDOOR, FUCHSIA_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header SafariZoneBeta, $19, CAVE, FUCHSIA_CITY, MUSIC_EVOLUTION, 0, PALETTE_AUTO, 1
+	map_header VictoryRoad, $18, CAVE, VICTORY_ROAD, MUSIC_VICTORY_ROAD, 1, PALETTE_NITE, 1
 
 
 MapGroup4:
-	map_header EcruteakHouse, $17, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, 1, 1
-	map_header WiseTriosRoom, $10, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 1, 1, 1
-	map_header EcruteakPokeCenter1F, $7, INDOOR, ECRUTEAK_CITY, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header EcruteakLugiaSpeechHouse, $10, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, 1, 1
-	map_header DanceTheatre, $10, INDOOR, ECRUTEAK_CITY, MUSIC_DANCING_HALL, 0, 1, 1
-	map_header EcruteakMart, $c, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, 1, 1
-	map_header EcruteakGym, $17, INDOOR, ECRUTEAK_CITY, MUSIC_GYM, 1, 1, 1
-	map_header EcruteakItemfinderHouse, $10, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, 1, 1
-	map_header EcruteakCity, $1, TOWN, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, 0, 4
+	map_header EcruteakHouse, $17, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
+	map_header WiseTriosRoom, $10, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 1, PALETTE_DAY, 1
+	map_header EcruteakPokeCenter1F, $7, INDOOR, ECRUTEAK_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header EcruteakLugiaSpeechHouse, $10, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
+	map_header DanceTheatre, $10, INDOOR, ECRUTEAK_CITY, MUSIC_DANCING_HALL, 0, PALETTE_DAY, 1
+	map_header EcruteakMart, $c, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
+	map_header EcruteakGym, $17, INDOOR, ECRUTEAK_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header EcruteakItemfinderHouse, $10, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
+	map_header EcruteakCity, $1, TOWN, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_AUTO, 4
 
 
 MapGroup5:
-	map_header BlackthornGym1F, $f, INDOOR, BLACKTHORN_CITY, MUSIC_GYM, 1, 1, 1
-	map_header BlackthornGym2F, $f, INDOOR, BLACKTHORN_CITY, MUSIC_GYM, 1, 1, 1
-	map_header BlackthornDragonSpeechHouse, $5, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, 1, 1
-	map_header BlackthornDodrioTradeHouse, $5, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, 1, 1
-	map_header BlackthornMart, $c, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, 1, 1
-	map_header BlackthornPokeCenter1F, $7, INDOOR, BLACKTHORN_CITY, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header MoveDeletersHouse, $5, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, 1, 1
-	map_header Route45, $1, ROUTE, ROUTE_45, MUSIC_ROUTE_36, 0, 0, 9
-	map_header Route46, $1, ROUTE, ROUTE_46, MUSIC_ROUTE_36, 0, 0, 1
-	map_header BlackthornCity, $1, TOWN, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, 0, 4
+	map_header BlackthornGym1F, $f, INDOOR, BLACKTHORN_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header BlackthornGym2F, $f, INDOOR, BLACKTHORN_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header BlackthornDragonSpeechHouse, $5, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
+	map_header BlackthornDodrioTradeHouse, $5, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
+	map_header BlackthornMart, $c, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
+	map_header BlackthornPokeCenter1F, $7, INDOOR, BLACKTHORN_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header MoveDeletersHouse, $5, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
+	map_header Route45, $1, ROUTE, ROUTE_45, MUSIC_ROUTE_36, 0, PALETTE_AUTO, 9
+	map_header Route46, $1, ROUTE, ROUTE_46, MUSIC_ROUTE_36, 0, PALETTE_AUTO, 1
+	map_header BlackthornCity, $1, TOWN, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, PALETTE_AUTO, 4
 
 
 MapGroup6:
-	map_header CinnabarPokeCenter1F, $7, INDOOR, CINNABAR_ISLAND, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header CinnabarPokeCenter2FBeta, $7, INDOOR, CINNABAR_ISLAND, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header Route19FuchsiaGate, $8, GATE, ROUTE_19, MUSIC_ROUTE_3, 0, 1, 1
-	map_header SeafoamGym, $18, INDOOR, SEAFOAM_ISLANDS, MUSIC_GYM, 1, 1, 1
-	map_header Route19, $3, ROUTE, ROUTE_19, MUSIC_ROUTE_3, 0, 0, 1
-	map_header Route20, $3, ROUTE, ROUTE_20, MUSIC_ROUTE_3, 0, 0, 2
-	map_header Route21, $3, ROUTE, ROUTE_21, MUSIC_ROUTE_3, 0, 0, 2
-	map_header CinnabarIsland, $3, TOWN, CINNABAR_ISLAND, MUSIC_VIRIDIAN_CITY, 0, 0, 2
+	map_header CinnabarPokeCenter1F, $7, INDOOR, CINNABAR_ISLAND, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header CinnabarPokeCenter2FBeta, $7, INDOOR, CINNABAR_ISLAND, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header Route19FuchsiaGate, $8, GATE, ROUTE_19, MUSIC_ROUTE_3, 0, PALETTE_DAY, 1
+	map_header SeafoamGym, $18, INDOOR, SEAFOAM_ISLANDS, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header Route19, $3, ROUTE, ROUTE_19, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 1
+	map_header Route20, $3, ROUTE, ROUTE_20, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 2
+	map_header Route21, $3, ROUTE, ROUTE_21, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 2
+	map_header CinnabarIsland, $3, TOWN, CINNABAR_ISLAND, MUSIC_VIRIDIAN_CITY, 0, PALETTE_AUTO, 2
 
 
 MapGroup7:
-	map_header CeruleanGymBadgeSpeechHouse, $5, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header CeruleanPoliceStation, $5, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header CeruleanTradeSpeechHouse, $5, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header CeruleanPokeCenter1F, $7, INDOOR, CERULEAN_CITY, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header CeruleanPokeCenter2FBeta, $7, INDOOR, CERULEAN_CITY, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header CeruleanGym, $9, INDOOR, CERULEAN_CITY, MUSIC_GYM, 1, 1, 0
-	map_header CeruleanMart, $c, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header Route10PokeCenter1F, $7, INDOOR, ROUTE_10, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header Route10PokeCenter2FBeta, $7, INDOOR, ROUTE_10, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header PowerPlant, $b, INDOOR, POWER_PLANT, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header BillsHouse, $5, INDOOR, ROUTE_25, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header Route4, $3, ROUTE, ROUTE_4, MUSIC_ROUTE_3, 0, 0, 0
-	map_header Route9, $3, ROUTE, ROUTE_9, MUSIC_ROUTE_3, 0, 0, 3
-	map_header Route10North, $3, ROUTE, ROUTE_10, MUSIC_ROUTE_3, 0, 0, 3
-	map_header Route24, $3, ROUTE, ROUTE_24, MUSIC_ROUTE_3, 0, 0, 3
-	map_header Route25, $3, ROUTE, ROUTE_25, MUSIC_ROUTE_3, 0, 0, 3
-	map_header CeruleanCity, $3, TOWN, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, 0, 0
+	map_header CeruleanGymBadgeSpeechHouse, $5, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header CeruleanPoliceStation, $5, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header CeruleanTradeSpeechHouse, $5, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header CeruleanPokeCenter1F, $7, INDOOR, CERULEAN_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header CeruleanPokeCenter2FBeta, $7, INDOOR, CERULEAN_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header CeruleanGym, $9, INDOOR, CERULEAN_CITY, MUSIC_GYM, 1, PALETTE_DAY, 0
+	map_header CeruleanMart, $c, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header Route10PokeCenter1F, $7, INDOOR, ROUTE_10, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header Route10PokeCenter2FBeta, $7, INDOOR, ROUTE_10, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header PowerPlant, $b, INDOOR, POWER_PLANT, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header BillsHouse, $5, INDOOR, ROUTE_25, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header Route4, $3, ROUTE, ROUTE_4, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 0
+	map_header Route9, $3, ROUTE, ROUTE_9, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 3
+	map_header Route10North, $3, ROUTE, ROUTE_10, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 3
+	map_header Route24, $3, ROUTE, ROUTE_24, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 3
+	map_header Route25, $3, ROUTE, ROUTE_25, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 3
+	map_header CeruleanCity, $3, TOWN, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_AUTO, 0
 
 
 MapGroup8:
-	map_header AzaleaPokeCenter1F, $7, INDOOR, AZALEA_TOWN, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header CharcoalKiln, $5, INDOOR, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 0, 1, 1
-	map_header AzaleaMart, $c, INDOOR, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 0, 1, 1
-	map_header KurtsHouse, $10, INDOOR, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 0, 1, 1
-	map_header AzaleaGym, $f, INDOOR, AZALEA_TOWN, MUSIC_GYM, 1, 1, 1
-	map_header Route33, $2, ROUTE, ROUTE_33, MUSIC_ROUTE_30, 0, 0, 1
-	map_header AzaleaTown, $2, TOWN, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 0, 0, 1
+	map_header AzaleaPokeCenter1F, $7, INDOOR, AZALEA_TOWN, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header CharcoalKiln, $5, INDOOR, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
+	map_header AzaleaMart, $c, INDOOR, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
+	map_header KurtsHouse, $10, INDOOR, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
+	map_header AzaleaGym, $f, INDOOR, AZALEA_TOWN, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header Route33, $2, ROUTE, ROUTE_33, MUSIC_ROUTE_30, 0, PALETTE_AUTO, 1
+	map_header AzaleaTown, $2, TOWN, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 0, PALETTE_AUTO, 1
 
 
 MapGroup9:
-	map_header LakeofRageHiddenPowerHouse, $5, INDOOR, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, 0, 1, 1
-	map_header LakeofRageMagikarpHouse, $5, INDOOR, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, 0, 1, 1
-	map_header Route43MahoganyGate, $8, GATE, ROUTE_43, MUSIC_LAKE_OF_RAGE, 0, 1, 1
-	map_header Route43Gate, $8, GATE, ROUTE_43, MUSIC_LAKE_OF_RAGE, 0, 1, 1
-	map_header Route43, $1, ROUTE, ROUTE_43, MUSIC_LAKE_OF_RAGE, 0, 0, 4
-	map_header LakeofRage, $1, TOWN, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, 0, 0, 8
+	map_header LakeofRageHiddenPowerHouse, $5, INDOOR, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, 0, PALETTE_DAY, 1
+	map_header LakeofRageMagikarpHouse, $5, INDOOR, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, 0, PALETTE_DAY, 1
+	map_header Route43MahoganyGate, $8, GATE, ROUTE_43, MUSIC_LAKE_OF_RAGE, 0, PALETTE_DAY, 1
+	map_header Route43Gate, $8, GATE, ROUTE_43, MUSIC_LAKE_OF_RAGE, 0, PALETTE_DAY, 1
+	map_header Route43, $1, ROUTE, ROUTE_43, MUSIC_LAKE_OF_RAGE, 0, PALETTE_AUTO, 4
+	map_header LakeofRage, $1, TOWN, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, 0, PALETTE_AUTO, 8
 
 
 MapGroup10:
-	map_header Route32, $1, ROUTE, ROUTE_32, MUSIC_ROUTE_30, 0, 0, 11
-	map_header Route35, $1, ROUTE, ROUTE_35, MUSIC_ROUTE_36, 0, 0, 4
-	map_header Route36, $1, ROUTE, ROUTE_36, MUSIC_ROUTE_36, 0, 0, 1
-	map_header Route37, $1, ROUTE, ROUTE_37, MUSIC_ROUTE_36, 0, 0, 1
-	map_header VioletCity, $1, TOWN, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, 0, 4
-	map_header VioletMart, $c, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, 1, 1
-	map_header VioletGym, $f, INDOOR, VIOLET_CITY, MUSIC_GYM, 1, 1, 1
-	map_header EarlsPokemonAcademy, $a, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, 1, 1
-	map_header VioletNicknameSpeechHouse, $10, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, 1, 1
-	map_header VioletPokeCenter1F, $7, INDOOR, VIOLET_CITY, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header VioletOnixTradeHouse, $10, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, 1, 1
-	map_header Route32RuinsofAlphGate, $8, GATE, ROUTE_32, MUSIC_ROUTE_30, 0, 1, 1
-	map_header Route32PokeCenter1F, $7, INDOOR, ROUTE_32, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header Route35Goldenrodgate, $8, GATE, ROUTE_35, MUSIC_ROUTE_36, 0, 1, 1
-	map_header Route35NationalParkgate, $8, INDOOR, ROUTE_35, MUSIC_GOLDENROD_CITY, 0, 1, 1
-	map_header Route36RuinsofAlphgate, $8, GATE, ROUTE_36, MUSIC_ROUTE_36, 0, 1, 1
-	map_header Route36NationalParkgate, $8, INDOOR, ROUTE_36, MUSIC_GOLDENROD_CITY, 0, 1, 1
+	map_header Route32, $1, ROUTE, ROUTE_32, MUSIC_ROUTE_30, 0, PALETTE_AUTO, 11
+	map_header Route35, $1, ROUTE, ROUTE_35, MUSIC_ROUTE_36, 0, PALETTE_AUTO, 4
+	map_header Route36, $1, ROUTE, ROUTE_36, MUSIC_ROUTE_36, 0, PALETTE_AUTO, 1
+	map_header Route37, $1, ROUTE, ROUTE_37, MUSIC_ROUTE_36, 0, PALETTE_AUTO, 1
+	map_header VioletCity, $1, TOWN, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_AUTO, 4
+	map_header VioletMart, $c, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
+	map_header VioletGym, $f, INDOOR, VIOLET_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header EarlsPokemonAcademy, $a, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
+	map_header VioletNicknameSpeechHouse, $10, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
+	map_header VioletPokeCenter1F, $7, INDOOR, VIOLET_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header VioletOnixTradeHouse, $10, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
+	map_header Route32RuinsofAlphGate, $8, GATE, ROUTE_32, MUSIC_ROUTE_30, 0, PALETTE_DAY, 1
+	map_header Route32PokeCenter1F, $7, INDOOR, ROUTE_32, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header Route35Goldenrodgate, $8, GATE, ROUTE_35, MUSIC_ROUTE_36, 0, PALETTE_DAY, 1
+	map_header Route35NationalParkgate, $8, INDOOR, ROUTE_35, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header Route36RuinsofAlphgate, $8, GATE, ROUTE_36, MUSIC_ROUTE_36, 0, PALETTE_DAY, 1
+	map_header Route36NationalParkgate, $8, INDOOR, ROUTE_36, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
 
 
 MapGroup11:
-	map_header Route34, $2, ROUTE, ROUTE_34, MUSIC_ROUTE_36, 0, 0, 1
-	map_header GoldenrodCity, $2, TOWN, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, 0, 1
-	map_header GoldenrodGym, $f, INDOOR, GOLDENROD_CITY, MUSIC_GYM, 1, 1, 1
-	map_header GoldenrodBikeShop, $12, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, 1, 1
-	map_header GoldenrodHappinessRater, $5, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, 1, 1
-	map_header GoldenrodBillsHouse, $5, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, 1, 1
-	map_header GoldenrodMagnetTrainStation, $11, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, 1, 1
-	map_header GoldenrodFlowerShop, $5, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, 1, 1
-	map_header GoldenrodPPSpeechHouse, $5, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, 1, 1
-	map_header GoldenrodNameRatersHouse, $5, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, 1, 1
-	map_header GoldenrodDeptStore1F, $c, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, 1, 1
-	map_header GoldenrodDeptStore2F, $c, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, 1, 1
-	map_header GoldenrodDeptStore3F, $c, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, 1, 1
-	map_header GoldenrodDeptStore4F, $c, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, 1, 1
-	map_header GoldenrodDeptStore5F, $c, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, 1, 1
-	map_header GoldenrodDeptStore6F, $c, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, 1, 1
-	map_header GoldenrodDeptStoreElevator, $c, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, 1, 1
-	map_header GoldenrodDeptStoreRoof, $c, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, 1, 1
-	map_header GoldenrodGameCorner, $e, INDOOR, GOLDENROD_CITY, MUSIC_GAME_CORNER, 0, 1, 1
-	map_header GoldenrodPokeCenter1F, $7, INDOOR, GOLDENROD_CITY, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header GoldenrodPokeComCenter2FMobile, $15, INDOOR, GOLDENROD_CITY, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header IlexForestAzaleaGate, $8, GATE, ROUTE_34, MUSIC_ROUTE_36, 0, 1, 1
-	map_header Route34IlexForestGate, $8, GATE, ROUTE_34, MUSIC_ROUTE_36, 0, 1, 1
-	map_header DayCare, $5, INDOOR, ROUTE_34, MUSIC_AZALEA_TOWN, 0, 1, 1
+	map_header Route34, $2, ROUTE, ROUTE_34, MUSIC_ROUTE_36, 0, PALETTE_AUTO, 1
+	map_header GoldenrodCity, $2, TOWN, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_AUTO, 1
+	map_header GoldenrodGym, $f, INDOOR, GOLDENROD_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header GoldenrodBikeShop, $12, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodHappinessRater, $5, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodBillsHouse, $5, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodMagnetTrainStation, $11, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodFlowerShop, $5, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodPPSpeechHouse, $5, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodNameRatersHouse, $5, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodDeptStore1F, $c, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodDeptStore2F, $c, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodDeptStore3F, $c, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodDeptStore4F, $c, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodDeptStore5F, $c, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodDeptStore6F, $c, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodDeptStoreElevator, $c, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodDeptStoreRoof, $c, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodGameCorner, $e, INDOOR, GOLDENROD_CITY, MUSIC_GAME_CORNER, 0, PALETTE_DAY, 1
+	map_header GoldenrodPokeCenter1F, $7, INDOOR, GOLDENROD_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header GoldenrodPokeComCenter2FMobile, $15, INDOOR, GOLDENROD_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header IlexForestAzaleaGate, $8, GATE, ROUTE_34, MUSIC_ROUTE_36, 0, PALETTE_DAY, 1
+	map_header Route34IlexForestGate, $8, GATE, ROUTE_34, MUSIC_ROUTE_36, 0, PALETTE_DAY, 1
+	map_header DayCare, $5, INDOOR, ROUTE_34, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
 
 
 MapGroup12:
-	map_header Route6, $3, ROUTE, ROUTE_6, MUSIC_ROUTE_3, 0, 0, 4
-	map_header Route11, $3, ROUTE, ROUTE_11, MUSIC_ROUTE_12, 0, 0, 1
-	map_header VermilionCity, $3, TOWN, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, 0, 2
-	map_header VermilionHouseFishingSpeechHouse, $5, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, 1, 1
-	map_header VermilionPokeCenter1F, $7, INDOOR, VERMILION_CITY, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header VermilionPokeCenter2FBeta, $7, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, 1, 1
-	map_header PokemonFanClub, $5, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, 1, 1
-	map_header VermilionMagnetTrainSpeechHouse, $5, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, 1, 1
-	map_header VermilionMart, $c, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, 1, 1
-	map_header VermilionHouseDiglettsCaveSpeechHouse, $5, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, 1, 1
-	map_header VermilionGym, $e, INDOOR, VERMILION_CITY, MUSIC_GYM, 1, 1, 1
-	map_header Route6SaffronGate, $8, GATE, ROUTE_6, MUSIC_ROUTE_3, 0, 1, 1
-	map_header Route6UndergroundEntrance, $8, GATE, ROUTE_6, MUSIC_ROUTE_3, 0, 1, 1
+	map_header Route6, $3, ROUTE, ROUTE_6, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 4
+	map_header Route11, $3, ROUTE, ROUTE_11, MUSIC_ROUTE_12, 0, PALETTE_AUTO, 1
+	map_header VermilionCity, $3, TOWN, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_AUTO, 2
+	map_header VermilionHouseFishingSpeechHouse, $5, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, 1
+	map_header VermilionPokeCenter1F, $7, INDOOR, VERMILION_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header VermilionPokeCenter2FBeta, $7, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, 1
+	map_header PokemonFanClub, $5, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, 1
+	map_header VermilionMagnetTrainSpeechHouse, $5, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, 1
+	map_header VermilionMart, $c, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, 1
+	map_header VermilionHouseDiglettsCaveSpeechHouse, $5, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, 1
+	map_header VermilionGym, $e, INDOOR, VERMILION_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header Route6SaffronGate, $8, GATE, ROUTE_6, MUSIC_ROUTE_3, 0, PALETTE_DAY, 1
+	map_header Route6UndergroundEntrance, $8, GATE, ROUTE_6, MUSIC_ROUTE_3, 0, PALETTE_DAY, 1
 
 
 MapGroup13:
-	map_header Route1, $3, ROUTE, ROUTE_1, MUSIC_ROUTE_1, 0, 0, 1
-	map_header PalletTown, $3, TOWN, PALLET_TOWN, MUSIC_PALLET_TOWN, 0, 0, 2
-	map_header RedsHouse1F, $6, INDOOR, PALLET_TOWN, MUSIC_PALLET_TOWN, 0, 1, 1
-	map_header RedsHouse2F, $6, INDOOR, PALLET_TOWN, MUSIC_PALLET_TOWN, 0, 1, 1
-	map_header BluesHouse, $5, INDOOR, PALLET_TOWN, MUSIC_PALLET_TOWN, 0, 1, 1
-	map_header OaksLab, $a, INDOOR, PALLET_TOWN, MUSIC_POKEMON_TALK, 0, 1, 1
+	map_header Route1, $3, ROUTE, ROUTE_1, MUSIC_ROUTE_1, 0, PALETTE_AUTO, 1
+	map_header PalletTown, $3, TOWN, PALLET_TOWN, MUSIC_PALLET_TOWN, 0, PALETTE_AUTO, 2
+	map_header RedsHouse1F, $6, INDOOR, PALLET_TOWN, MUSIC_PALLET_TOWN, 0, PALETTE_DAY, 1
+	map_header RedsHouse2F, $6, INDOOR, PALLET_TOWN, MUSIC_PALLET_TOWN, 0, PALETTE_DAY, 1
+	map_header BluesHouse, $5, INDOOR, PALLET_TOWN, MUSIC_PALLET_TOWN, 0, PALETTE_DAY, 1
+	map_header OaksLab, $a, INDOOR, PALLET_TOWN, MUSIC_POKEMON_TALK, 0, PALETTE_DAY, 1
 
 
 MapGroup14:
-	map_header Route3, $3, ROUTE, ROUTE_3, MUSIC_ROUTE_3, 0, 0, 1
-	map_header PewterCity, $3, TOWN, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, 0, 1
-	map_header PewterNidoranSpeechHouse, $5, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header PewterGym, $17, INDOOR, PEWTER_CITY, MUSIC_GYM, 1, 1, 1
-	map_header PewterMart, $c, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header PewterPokeCenter1F, $7, INDOOR, PEWTER_CITY, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header PewterPokeCEnter2FBeta, $7, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header PewterSnoozeSpeechHouse, $5, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, 1, 1
+	map_header Route3, $3, ROUTE, ROUTE_3, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 1
+	map_header PewterCity, $3, TOWN, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_AUTO, 1
+	map_header PewterNidoranSpeechHouse, $5, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header PewterGym, $17, INDOOR, PEWTER_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header PewterMart, $c, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header PewterPokeCenter1F, $7, INDOOR, PEWTER_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header PewterPokeCEnter2FBeta, $7, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header PewterSnoozeSpeechHouse, $5, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
 
 
 MapGroup15:
-	map_header OlivinePort, $9, ROUTE, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, 0, 2
-	map_header VermilionPort, $9, ROUTE, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, 0, 2
-	map_header FastShip1F, $13, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, 1, 1
-	map_header FastShipCabins_NNW_NNE_NE, $13, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, 1, 1
-	map_header FastShipCabins_SW_SSW_NW, $13, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, 1, 1
-	map_header FastShipCabins_SE_SSE_CaptainsCabin, $13, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, 1, 1
-	map_header FastShipB1F, $13, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, 1, 1
-	map_header OlivinePortPassage, $1c, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, 1, 1
-	map_header VermilionPortPassage, $1c, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, 1, 1
-	map_header MountMoonSquare, $3, ROUTE, MT_MOON, MUSIC_MT_MOON_SQUARE, 0, 0, 1
-	map_header MountMoonGiftShop, $10, INDOOR, MT_MOON, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header TinTowerRoof, $17, ROUTE, TIN_TOWER, MUSIC_TIN_TOWER, 0, 0, 1
+	map_header OlivinePort, $9, ROUTE, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_AUTO, 2
+	map_header VermilionPort, $9, ROUTE, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_AUTO, 2
+	map_header FastShip1F, $13, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, PALETTE_DAY, 1
+	map_header FastShipCabins_NNW_NNE_NE, $13, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, PALETTE_DAY, 1
+	map_header FastShipCabins_SW_SSW_NW, $13, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, PALETTE_DAY, 1
+	map_header FastShipCabins_SE_SSE_CaptainsCabin, $13, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, PALETTE_DAY, 1
+	map_header FastShipB1F, $13, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, PALETTE_DAY, 1
+	map_header OlivinePortPassage, $1c, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
+	map_header VermilionPortPassage, $1c, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, 1
+	map_header MountMoonSquare, $3, ROUTE, MT_MOON, MUSIC_MT_MOON_SQUARE, 0, PALETTE_AUTO, 1
+	map_header MountMoonGiftShop, $10, INDOOR, MT_MOON, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header TinTowerRoof, $17, ROUTE, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_AUTO, 1
 
 
 MapGroup16:
-	map_header Route23, $3, TOWN, ROUTE_23, MUSIC_INDIGO_PLATEAU, 0, 0, 1
-	map_header IndigoPlateauPokeCenter1F, $7, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 0, 1, 1
-	map_header WillsRoom, $f, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, 1, 1
-	map_header KogasRoom, $f, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, 1, 1
-	map_header BrunosRoom, $f, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, 1, 1
-	map_header KarensRoom, $f, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, 1, 1
-	map_header LancesRoom, $12, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, 1, 1
-	map_header HallOfFame, $1d, INDOOR, INDIGO_PLATEAU, MUSIC_NEW_BARK_TOWN, 1, 1, 1
+	map_header Route23, $3, TOWN, ROUTE_23, MUSIC_INDIGO_PLATEAU, 0, PALETTE_AUTO, 1
+	map_header IndigoPlateauPokeCenter1F, $7, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 0, PALETTE_DAY, 1
+	map_header WillsRoom, $f, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, PALETTE_DAY, 1
+	map_header KogasRoom, $f, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, PALETTE_DAY, 1
+	map_header BrunosRoom, $f, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, PALETTE_DAY, 1
+	map_header KarensRoom, $f, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, PALETTE_DAY, 1
+	map_header LancesRoom, $12, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, PALETTE_DAY, 1
+	map_header HallOfFame, $1d, INDOOR, INDIGO_PLATEAU, MUSIC_NEW_BARK_TOWN, 1, PALETTE_DAY, 1
 
 
 MapGroup17:
-	map_header Route13, $3, ROUTE, ROUTE_13, MUSIC_ROUTE_12, 0, 0, 13
-	map_header Route14, $3, ROUTE, ROUTE_14, MUSIC_ROUTE_12, 0, 0, 1
-	map_header Route15, $3, ROUTE, ROUTE_15, MUSIC_ROUTE_12, 0, 0, 1
-	map_header Route18, $3, ROUTE, ROUTE_18, MUSIC_ROUTE_3, 0, 0, 1
-	map_header FuchsiaCity, $3, TOWN, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, 0, 8
-	map_header FuchsiaMart, $c, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, 1, 1
-	map_header SafariZoneMainOffice, $e, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, 1, 1
-	map_header FuchsiaGym, $a, INDOOR, FUCHSIA_CITY, MUSIC_GYM, 1, 1, 1
-	map_header FuchsiaBillSpeechHouse, $5, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, 1, 1
-	map_header FuchsiaPokeCenter1F, $7, INDOOR, FUCHSIA_CITY, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header FuchsiaPokeCenter2FBeta, $7, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, 1, 1
-	map_header SafariZoneWardensHome, $5, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, 1, 1
-	map_header Route15FuchsiaGate, $8, GATE, ROUTE_15, MUSIC_ROUTE_12, 0, 1, 1
+	map_header Route13, $3, ROUTE, ROUTE_13, MUSIC_ROUTE_12, 0, PALETTE_AUTO, 13
+	map_header Route14, $3, ROUTE, ROUTE_14, MUSIC_ROUTE_12, 0, PALETTE_AUTO, 1
+	map_header Route15, $3, ROUTE, ROUTE_15, MUSIC_ROUTE_12, 0, PALETTE_AUTO, 1
+	map_header Route18, $3, ROUTE, ROUTE_18, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 1
+	map_header FuchsiaCity, $3, TOWN, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_AUTO, 8
+	map_header FuchsiaMart, $c, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header SafariZoneMainOffice, $e, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header FuchsiaGym, $a, INDOOR, FUCHSIA_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header FuchsiaBillSpeechHouse, $5, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header FuchsiaPokeCenter1F, $7, INDOOR, FUCHSIA_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header FuchsiaPokeCenter2FBeta, $7, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header SafariZoneWardensHome, $5, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header Route15FuchsiaGate, $8, GATE, ROUTE_15, MUSIC_ROUTE_12, 0, PALETTE_DAY, 1
 
 
 MapGroup18:
-	map_header Route8, $3, ROUTE, ROUTE_8, MUSIC_ROUTE_3, 0, 0, 1
-	map_header Route12, $3, ROUTE, ROUTE_12, MUSIC_ROUTE_12, 0, 0, 13
-	map_header Route10South, $3, ROUTE, ROUTE_10, MUSIC_ROUTE_3, 0, 0, 3
-	map_header LavenderTown, $3, TOWN, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, 0, 1
-	map_header LavenderPokeCenter1F, $7, INDOOR, LAVENDER_TOWN, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header LavenderPokeCenter2FBeta, $7, INDOOR, LAVENDER_TOWN, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header MrFujisHouse, $5, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, 1, 1
-	map_header LavenderTownSpeechHouse, $5, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, 1, 1
-	map_header LavenderNameRater, $5, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, 1, 1
-	map_header LavenderMart, $c, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, 1, 1
-	map_header SoulHouse, $5, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, 1, 1
-	map_header LavRadioTower1F, $1b, INDOOR, LAV_RADIO_TOWER, MUSIC_LAVENDER_TOWN, 0, 1, 1
-	map_header Route8SaffronGate, $8, GATE, ROUTE_8, MUSIC_ROUTE_3, 0, 1, 1
-	map_header Route12SuperRodHouse, $5, INDOOR, ROUTE_12, MUSIC_VIRIDIAN_CITY, 0, 1, 1
+	map_header Route8, $3, ROUTE, ROUTE_8, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 1
+	map_header Route12, $3, ROUTE, ROUTE_12, MUSIC_ROUTE_12, 0, PALETTE_AUTO, 13
+	map_header Route10South, $3, ROUTE, ROUTE_10, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 3
+	map_header LavenderTown, $3, TOWN, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, PALETTE_AUTO, 1
+	map_header LavenderPokeCenter1F, $7, INDOOR, LAVENDER_TOWN, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header LavenderPokeCenter2FBeta, $7, INDOOR, LAVENDER_TOWN, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header MrFujisHouse, $5, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, PALETTE_DAY, 1
+	map_header LavenderTownSpeechHouse, $5, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, PALETTE_DAY, 1
+	map_header LavenderNameRater, $5, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, PALETTE_DAY, 1
+	map_header LavenderMart, $c, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, PALETTE_DAY, 1
+	map_header SoulHouse, $5, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, PALETTE_DAY, 1
+	map_header LavRadioTower1F, $1b, INDOOR, LAV_RADIO_TOWER, MUSIC_LAVENDER_TOWN, 0, PALETTE_DAY, 1
+	map_header Route8SaffronGate, $8, GATE, ROUTE_8, MUSIC_ROUTE_3, 0, PALETTE_DAY, 1
+	map_header Route12SuperRodHouse, $5, INDOOR, ROUTE_12, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
 
 
 MapGroup19:
-	map_header Route28, $3, ROUTE, ROUTE_28, MUSIC_INDIGO_PLATEAU, 0, 0, 4
-	map_header SilverCaveOutside, $3, TOWN, SILVER_CAVE, MUSIC_INDIGO_PLATEAU, 0, 0, 4
-	map_header SilverCavePokeCenter1F, $7, INDOOR, SILVER_CAVE, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header Route28FamousSpeechHouse, $5, INDOOR, ROUTE_28, MUSIC_AZALEA_TOWN, 0, 1, 1
+	map_header Route28, $3, ROUTE, ROUTE_28, MUSIC_INDIGO_PLATEAU, 0, PALETTE_AUTO, 4
+	map_header SilverCaveOutside, $3, TOWN, SILVER_CAVE, MUSIC_INDIGO_PLATEAU, 0, PALETTE_AUTO, 4
+	map_header SilverCavePokeCenter1F, $7, INDOOR, SILVER_CAVE, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header Route28FamousSpeechHouse, $5, INDOOR, ROUTE_28, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
 
 
 MapGroup20:
-	map_header PokeCenter2F, $7, INDOOR, SPECIAL_MAP, MUSIC_POKEMON_CENTER, 1, 1, 1
-	map_header TradeCenter, $8, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, 1, 1
-	map_header Colosseum, $8, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, 1, 1
-	map_header TimeCapsule, $8, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, 1, 1
-	map_header MobileTradeRoomMobile, $d, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, 1, 1
-	map_header MobileBattleRoom, $d, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, 1, 1
+	map_header PokeCenter2F, $7, INDOOR, SPECIAL_MAP, MUSIC_POKEMON_CENTER, 1, PALETTE_DAY, 1
+	map_header TradeCenter, $8, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, PALETTE_DAY, 1
+	map_header Colosseum, $8, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, PALETTE_DAY, 1
+	map_header TimeCapsule, $8, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, PALETTE_DAY, 1
+	map_header MobileTradeRoomMobile, $d, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, PALETTE_DAY, 1
+	map_header MobileBattleRoom, $d, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, PALETTE_DAY, 1
 
 
 MapGroup21:
-	map_header Route7, $3, ROUTE, ROUTE_7, MUSIC_ROUTE_3, 0, 0, 1
-	map_header Route16, $3, ROUTE, ROUTE_16, MUSIC_ROUTE_3, 0, 0, 1
-	map_header Route17, $3, ROUTE, ROUTE_17, MUSIC_ROUTE_3, 0, 0, 0
-	map_header CeladonCity, $3, TOWN, CELADON_CITY, MUSIC_CELADON_CITY, 0, 0, 0
-	map_header CeladonDeptStore1F, $c, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, 1, 1
-	map_header CeladonDeptStore2F, $c, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, 1, 1
-	map_header CeladonDeptStore3F, $c, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, 1, 1
-	map_header CeladonDeptStore4F, $c, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, 1, 1
-	map_header CeladonDeptStore5F, $c, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, 1, 1
-	map_header CeladonDeptStore6F, $c, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, 1, 1
-	map_header CeladonDeptStoreElevator, $c, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, 1, 1
-	map_header CeladonMansion1F, $d, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, 1, 1
-	map_header CeladonMansion2F, $d, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, 1, 1
-	map_header CeladonMansion3F, $d, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, 1, 1
-	map_header CeladonMansionRoof, $d, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, 1, 1
-	map_header CeladonMansionRoofHouse, $5, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, 1, 1
-	map_header CeladonPokeCenter1F, $7, INDOOR, CELADON_CITY, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header CeladonPokeCenter2FBeta, $7, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, 1, 1
-	map_header CeladonGameCorner, $e, INDOOR, CELADON_CITY, MUSIC_GAME_CORNER, 0, 1, 1
-	map_header CeladonGameCornerPrizeRoom, $e, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, 1, 1
-	map_header CeladonGym, $11, INDOOR, CELADON_CITY, MUSIC_GYM, 1, 1, 1
-	map_header CeladonCafe, $e, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, 1, 1
-	map_header Route16FuchsiaSpeechHouse, $5, INDOOR, ROUTE_16, MUSIC_CELADON_CITY, 0, 1, 1
-	map_header Route16Gate, $8, GATE, ROUTE_16, MUSIC_ROUTE_3, 0, 1, 1
-	map_header Route7SaffronGate, $8, GATE, ROUTE_7, MUSIC_ROUTE_3, 0, 1, 1
-	map_header Route1718Gate, $8, GATE, ROUTE_17, MUSIC_ROUTE_3, 0, 1, 1
+	map_header Route7, $3, ROUTE, ROUTE_7, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 1
+	map_header Route16, $3, ROUTE, ROUTE_16, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 1
+	map_header Route17, $3, ROUTE, ROUTE_17, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 0
+	map_header CeladonCity, $3, TOWN, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_AUTO, 0
+	map_header CeladonDeptStore1F, $c, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonDeptStore2F, $c, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonDeptStore3F, $c, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonDeptStore4F, $c, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonDeptStore5F, $c, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonDeptStore6F, $c, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonDeptStoreElevator, $c, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonMansion1F, $d, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonMansion2F, $d, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonMansion3F, $d, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonMansionRoof, $d, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonMansionRoofHouse, $5, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonPokeCenter1F, $7, INDOOR, CELADON_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header CeladonPokeCenter2FBeta, $7, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonGameCorner, $e, INDOOR, CELADON_CITY, MUSIC_GAME_CORNER, 0, PALETTE_DAY, 1
+	map_header CeladonGameCornerPrizeRoom, $e, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonGym, $11, INDOOR, CELADON_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header CeladonCafe, $e, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header Route16FuchsiaSpeechHouse, $5, INDOOR, ROUTE_16, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header Route16Gate, $8, GATE, ROUTE_16, MUSIC_ROUTE_3, 0, PALETTE_DAY, 1
+	map_header Route7SaffronGate, $8, GATE, ROUTE_7, MUSIC_ROUTE_3, 0, PALETTE_DAY, 1
+	map_header Route1718Gate, $8, GATE, ROUTE_17, MUSIC_ROUTE_3, 0, PALETTE_DAY, 1
 
 
 MapGroup22:
-	map_header Route40, $1, ROUTE, ROUTE_40, MUSIC_ROUTE_36, 0, 0, 1
-	map_header Route41, $1, ROUTE, ROUTE_41, MUSIC_ROUTE_36, 0, 0, 2
-	map_header CianwoodCity, $1, TOWN, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, 0, 1
-	map_header ManiasHouse, $5, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, 1, 1
-	map_header CianwoodGym, $17, INDOOR, CIANWOOD_CITY, MUSIC_GYM, 1, 1, 1
-	map_header CianwoodPokeCenter1F, $7, INDOOR, CIANWOOD_CITY, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header CianwoodPharmacy, $5, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, 1, 1
-	map_header CianwoodCityPhotoStudio, $5, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, 1, 1
-	map_header CianwoodLugiaSpeechHouse, $5, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, 1, 1
-	map_header PokeSeersHouse, $5, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, 1, 1
-	map_header BattleTower1F, $16, INDOOR, BATTLE_TOWER, MUSIC_BATTLE_TOWER_LOBBY, 1, 1, 1
-	map_header BattleTowerBattleRoom, $16, INDOOR, BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, 1, 1, 1
-	map_header BattleTowerElevator, $16, INDOOR, BATTLE_TOWER, MUSIC_NONE, 1, 1, 1
-	map_header BattleTowerHallway, $16, INDOOR, BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, 1, 1, 1
-	map_header Route40BattleTowerGate, $8, GATE, BATTLE_TOWER, MUSIC_ROUTE_36, 0, 1, 1
-	map_header BattleTowerOutside, $4, ROUTE, BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, 0, 0, 1
+	map_header Route40, $1, ROUTE, ROUTE_40, MUSIC_ROUTE_36, 0, PALETTE_AUTO, 1
+	map_header Route41, $1, ROUTE, ROUTE_41, MUSIC_ROUTE_36, 0, PALETTE_AUTO, 2
+	map_header CianwoodCity, $1, TOWN, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_AUTO, 1
+	map_header ManiasHouse, $5, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
+	map_header CianwoodGym, $17, INDOOR, CIANWOOD_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header CianwoodPokeCenter1F, $7, INDOOR, CIANWOOD_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header CianwoodPharmacy, $5, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
+	map_header CianwoodCityPhotoStudio, $5, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
+	map_header CianwoodLugiaSpeechHouse, $5, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
+	map_header PokeSeersHouse, $5, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
+	map_header BattleTower1F, $16, INDOOR, BATTLE_TOWER, MUSIC_BATTLE_TOWER_LOBBY, 1, PALETTE_DAY, 1
+	map_header BattleTowerBattleRoom, $16, INDOOR, BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, 1, PALETTE_DAY, 1
+	map_header BattleTowerElevator, $16, INDOOR, BATTLE_TOWER, MUSIC_NONE, 1, PALETTE_DAY, 1
+	map_header BattleTowerHallway, $16, INDOOR, BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, 1, PALETTE_DAY, 1
+	map_header Route40BattleTowerGate, $8, GATE, BATTLE_TOWER, MUSIC_ROUTE_36, 0, PALETTE_DAY, 1
+	map_header BattleTowerOutside, $4, ROUTE, BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, 0, PALETTE_AUTO, 1
 
 
 MapGroup23:
-	map_header Route2, $3, ROUTE, ROUTE_2, MUSIC_ROUTE_2, 0, 0, 1
-	map_header Route22, $3, ROUTE, ROUTE_22, MUSIC_ROUTE_3, 0, 0, 4
-	map_header ViridianCity, $3, TOWN, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, 0, 4
-	map_header ViridianGym, $11, INDOOR, VIRIDIAN_CITY, MUSIC_GYM, 1, 1, 1
-	map_header ViridianNicknameSpeechHouse, $5, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header TrainerHouse1F, $5, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header TrainerHouseB1F, $b, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header ViridianMart, $c, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header ViridianPokeCenter1F, $7, INDOOR, VIRIDIAN_CITY, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header ViridianPokeCenter2FBeta, $7, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header Route2NuggetSpeechHouse, $5, INDOOR, ROUTE_2, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header Route2Gate, $8, GATE, ROUTE_2, MUSIC_ROUTE_2, 0, 1, 1
-	map_header VictoryRoadGate, $8, GATE, ROUTE_26, MUSIC_INDIGO_PLATEAU, 0, 1, 1
+	map_header Route2, $3, ROUTE, ROUTE_2, MUSIC_ROUTE_2, 0, PALETTE_AUTO, 1
+	map_header Route22, $3, ROUTE, ROUTE_22, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 4
+	map_header ViridianCity, $3, TOWN, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_AUTO, 4
+	map_header ViridianGym, $11, INDOOR, VIRIDIAN_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header ViridianNicknameSpeechHouse, $5, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header TrainerHouse1F, $5, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header TrainerHouseB1F, $b, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header ViridianMart, $c, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header ViridianPokeCenter1F, $7, INDOOR, VIRIDIAN_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header ViridianPokeCenter2FBeta, $7, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header Route2NuggetSpeechHouse, $5, INDOOR, ROUTE_2, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header Route2Gate, $8, GATE, ROUTE_2, MUSIC_ROUTE_2, 0, PALETTE_DAY, 1
+	map_header VictoryRoadGate, $8, GATE, ROUTE_26, MUSIC_INDIGO_PLATEAU, 0, PALETTE_DAY, 1
 
 
 MapGroup24:
-	map_header Route26, $1, ROUTE, ROUTE_26, MUSIC_ROUTE_26, 0, 0, 2
-	map_header Route27, $1, ROUTE, ROUTE_27, MUSIC_ROUTE_26, 0, 0, 2
-	map_header Route29, $1, ROUTE, ROUTE_29, MUSIC_ROUTE_29, 0, 0, 1
-	map_header NewBarkTown, $1, TOWN, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, 0, 2
-	map_header ElmsLab, $a, INDOOR, NEW_BARK_TOWN, MUSIC_PROF_ELM, 0, 1, 1
-	map_header KrissHouse1F, $6, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, 1, 1
-	map_header KrissHouse2F, $14, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, 1, 1
-	map_header KrissNeighborsHouse, $5, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, 1, 1
-	map_header ElmsHouse, $6, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, 1, 1
-	map_header Route26HealSpeechHouse, $5, INDOOR, ROUTE_26, MUSIC_AZALEA_TOWN, 0, 1, 1
-	map_header Route26DayofWeekSiblingsHouse, $5, INDOOR, ROUTE_26, MUSIC_AZALEA_TOWN, 0, 1, 1
-	map_header Route27SandstormHouse, $5, INDOOR, ROUTE_27, MUSIC_AZALEA_TOWN, 0, 1, 1
-	map_header Route2946Gate, $8, GATE, ROUTE_29, MUSIC_ROUTE_29, 0, 1, 1
+	map_header Route26, $1, ROUTE, ROUTE_26, MUSIC_ROUTE_26, 0, PALETTE_AUTO, 2
+	map_header Route27, $1, ROUTE, ROUTE_27, MUSIC_ROUTE_26, 0, PALETTE_AUTO, 2
+	map_header Route29, $1, ROUTE, ROUTE_29, MUSIC_ROUTE_29, 0, PALETTE_AUTO, 1
+	map_header NewBarkTown, $1, TOWN, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, PALETTE_AUTO, 2
+	map_header ElmsLab, $a, INDOOR, NEW_BARK_TOWN, MUSIC_PROF_ELM, 0, PALETTE_DAY, 1
+	map_header KrissHouse1F, $6, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, PALETTE_DAY, 1
+	map_header KrissHouse2F, $14, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, PALETTE_DAY, 1
+	map_header KrissNeighborsHouse, $5, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, PALETTE_DAY, 1
+	map_header ElmsHouse, $6, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, PALETTE_DAY, 1
+	map_header Route26HealSpeechHouse, $5, INDOOR, ROUTE_26, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
+	map_header Route26DayofWeekSiblingsHouse, $5, INDOOR, ROUTE_26, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
+	map_header Route27SandstormHouse, $5, INDOOR, ROUTE_27, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
+	map_header Route2946Gate, $8, GATE, ROUTE_29, MUSIC_ROUTE_29, 0, PALETTE_DAY, 1
 
 
 MapGroup25:
-	map_header Route5, $3, ROUTE, ROUTE_5, MUSIC_ROUTE_3, 0, 0, 1
-	map_header SaffronCity, $3, TOWN, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, 0, 1
-	map_header FightingDojo, $11, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header SaffronGym, $1c, INDOOR, SAFFRON_CITY, MUSIC_GYM, 1, 1, 1
-	map_header SaffronMart, $c, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header SaffronPokeCenter1F, $7, INDOOR, SAFFRON_CITY, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header SaffronPokeCenter2FBeta, $7, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header MrPsychicsHouse, $5, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header SaffronTrainStation, $11, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header SilphCo1F, $b, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header CopycatsHouse1F, $6, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header CopycatsHouse2F, $6, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header Route5UndergroundEntrance, $8, GATE, ROUTE_5, MUSIC_ROUTE_3, 0, 1, 1
-	map_header Route5SaffronCityGate, $8, GATE, ROUTE_5, MUSIC_VIRIDIAN_CITY, 0, 1, 1
-	map_header Route5CleanseTagSpeechHouse, $5, INDOOR, ROUTE_5, MUSIC_VIRIDIAN_CITY, 0, 1, 1
+	map_header Route5, $3, ROUTE, ROUTE_5, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 1
+	map_header SaffronCity, $3, TOWN, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_AUTO, 1
+	map_header FightingDojo, $11, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header SaffronGym, $1c, INDOOR, SAFFRON_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header SaffronMart, $c, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header SaffronPokeCenter1F, $7, INDOOR, SAFFRON_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header SaffronPokeCenter2FBeta, $7, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header MrPsychicsHouse, $5, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header SaffronTrainStation, $11, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header SilphCo1F, $b, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header CopycatsHouse1F, $6, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header CopycatsHouse2F, $6, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header Route5UndergroundEntrance, $8, GATE, ROUTE_5, MUSIC_ROUTE_3, 0, PALETTE_DAY, 1
+	map_header Route5SaffronCityGate, $8, GATE, ROUTE_5, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header Route5CleanseTagSpeechHouse, $5, INDOOR, ROUTE_5, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
 
 
 MapGroup26:
-	map_header Route30, $1, ROUTE, ROUTE_30, MUSIC_ROUTE_30, 0, 0, 4
-	map_header Route31, $1, ROUTE, ROUTE_31, MUSIC_ROUTE_30, 0, 0, 4
-	map_header CherrygroveCity, $1, TOWN, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, 0, 1
-	map_header CherrygroveMart, $c, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, 1, 1
-	map_header CherrygrovePokeCenter1F, $7, INDOOR, CHERRYGROVE_CITY, MUSIC_POKEMON_CENTER, 0, 1, 1
-	map_header CherrygroveGymSpeechHouse, $5, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, 1, 1
-	map_header GuideGentsHouse, $5, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, 1, 1
-	map_header CherrygroveEvolutionSpeechHouse, $5, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, 1, 1
-	map_header Route30BerrySpeechHouse, $5, INDOOR, ROUTE_30, MUSIC_CHERRYGROVE_CITY, 0, 1, 1
-	map_header MrPokemonsHouse, $b, INDOOR, ROUTE_30, MUSIC_CHERRYGROVE_CITY, 0, 1, 1
-	map_header Route31VioletGate, $8, GATE, ROUTE_31, MUSIC_ROUTE_30, 0, 1, 1
+	map_header Route30, $1, ROUTE, ROUTE_30, MUSIC_ROUTE_30, 0, PALETTE_AUTO, 4
+	map_header Route31, $1, ROUTE, ROUTE_31, MUSIC_ROUTE_30, 0, PALETTE_AUTO, 4
+	map_header CherrygroveCity, $1, TOWN, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_AUTO, 1
+	map_header CherrygroveMart, $c, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, 1
+	map_header CherrygrovePokeCenter1F, $7, INDOOR, CHERRYGROVE_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header CherrygroveGymSpeechHouse, $5, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, 1
+	map_header GuideGentsHouse, $5, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, 1
+	map_header CherrygroveEvolutionSpeechHouse, $5, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, 1
+	map_header Route30BerrySpeechHouse, $5, INDOOR, ROUTE_30, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, 1
+	map_header MrPokemonsHouse, $b, INDOOR, ROUTE_30, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, 1
+	map_header Route31VioletGate, $8, GATE, ROUTE_31, MUSIC_ROUTE_30, 0, PALETTE_DAY, 1
--- /dev/null
+++ b/sram.asm
@@ -1,0 +1,136 @@
+SECTION "Scratch", SRAM, BANK [0]
+
+sScratch::
+
+
+SECTION "SRAM Bank 0", SRAM [$a600], BANK [0]
+
+s0_a600:: ds $11a
+s0_a71a:: ds $11a
+s0_a834:: ds $1d7
+s0_aa0b:: ds $1d7
+
+sMysteryGiftItem:: ds 1
+s0_abe3:: ds 1
+s0_abe4:: ds 1
+s0_abe5:: ds 1
+s0_abe6:: ds 10
+s0_abf0:: ds 10
+s0_abfa:: ds 2
+	ds 1
+sMysteryGiftTrainerHouseFlag:: ds 1
+s0_abfe:: ds 12
+sMysteryGiftTrainer:: ds (1 + 1 + NUM_MOVES) * PARTY_LENGTH + 1
+	ds 1
+s0_abe4End::
+
+	ds $30
+
+s0_ac60:: ds 8
+s0_ac68:: ds 1
+s0_ac69:: ds 1
+s0_ac6a:: ds 1
+
+	ds $b200 - $ac6b
+
+sBackupOptions:: ds OptionsEnd - Options
+
+s0_b208:: ds 1
+
+sBackupGameData::
+sBackupPlayerData::  ds wPlayerDataEnd - wPlayerData
+sBackupMapData::     ds wMapDataEnd - wMapData
+sBackupPokemonData:: ds wPokemonDataEnd - wPokemonData
+sBackupGameDataEnd::
+
+; bd83
+	ds $18a
+; bf0d
+
+sBackupChecksum:: ds 2
+s0_bf0f:: ds 1
+sStackTop:: ds 2
+
+
+SECTION "SRAM Bank 1", SRAM, BANK [1]
+
+sOptions:: ds OptionsEnd - Options
+
+s1_a008:: ds 1
+
+sGameData::
+sPlayerData::  ds wPlayerDataEnd - wPlayerData
+sMapData::     ds wMapDataEnd - wMapData
+sPokemonData:: ds wPokemonDataEnd - wPokemonData
+sGameDataEnd::
+
+; ab83
+	ds $18a
+; ad0d
+
+sChecksum::   ds 2
+s1_ad0f::     ds 1
+
+; ad10
+	box sBox
+; b160
+
+	ds $100
+
+sLinkBattleStats:: ; b260
+sLinkBattleWins::   ds 2
+sLinkBattleLosses:: ds 2
+sLinkBattleDraws::  ds 2
+	ds $5a
+sLinkBattleStatsEnd::
+
+sHallOfFame:: ; b2c0
+	ds HOF_LENGTH * NUM_HOF_TEAMS
+sHallOfFameEnd::
+
+s1_be3c:: ds 1
+
+sCrystalData::
+	ds wCrystalDataEnd - wCrystalData
+s1_be44:: ds 1
+s1_be45:: ds 1
+
+; data of the BattleTower must be in SRAM because you can save and leave between battles
+sBattleTower:: ; be46
+sNrOfBeatenBattleTowerTrainers::
+sbe46:: ds 1
+sbe47:: ds 1
+; The 7 trainers of the BattleTower are saved here, so nobody appears more than once
+sBTTrainers:: ; sbe48
+	ds 7
+sbe4f:: ds 1
+sbe50:: ds 1
+; Pkmn of previous trainer
+sBTPkmnOfTrainers:: ; 0xbe51
+sBTPkmnPrevTrainer1::
+	ds 1
+sBTPkmnPrevTrainer2:: ds 1
+sBTPkmnPrevTrainer3:: ds 1
+; Pkmn of preprevious trainer
+sBTPkmnPrevPrevTrainer1:: ds 1
+sBTPkmnPrevPrevTrainer2:: ds 1
+sBTPkmnPrevPrevTrainer3:: ds 1
+
+
+SECTION "Boxes 1-7",  SRAM, BANK [2]
+	box sBox1
+	box sBox2
+	box sBox3
+	box sBox4
+	box sBox5
+	box sBox6
+	box sBox7
+
+SECTION "Boxes 8-14", SRAM, BANK [3]
+	box sBox8
+	box sBox9
+	box sBox10
+	box sBox11
+	box sBox12
+	box sBox13
+	box sBox14
--- a/wram.asm
+++ b/wram.asm
@@ -129,8 +129,6 @@
                       ds 1 ; c132
 ENDM
 
-
-
 SECTION "CHR0", VRAM [$8000], BANK [0]
 VTiles0::
 SECTION "CHR1", VRAM [$8800], BANK [0]
@@ -2730,140 +2728,4 @@
 w6_d000:: ds $600
 w6_d600:: ds $600
 
-
-SECTION "Scratch", SRAM, BANK [0]
-
-sScratch::
-
-
-SECTION "SRAM Bank 0", SRAM [$a600], BANK [0]
-
-s0_a600:: ds $11a
-s0_a71a:: ds $11a
-s0_a834:: ds $1d7
-s0_aa0b:: ds $1d7
-
-s0_abe2:: ds 1
-s0_abe3:: ds 1
-s0_abe4:: ds 1
-s0_abe5:: ds 1
-s0_abe6:: ds 10
-s0_abf0:: ds 10
-s0_abfa:: ds 2
-	ds 1
-s0_abfd:: ds 1
-s0_abfe:: ds 12
-sMysteryGiftTrainer:: ds (1 + 1 + NUM_MOVES) * PARTY_LENGTH + 1
-	ds 1
-s0_abe4End::
-
-	ds $30
-
-s0_ac60:: ds 8
-s0_ac68:: ds 1
-s0_ac69:: ds 1
-s0_ac6a:: ds 1
-
-	ds $b200 - $ac6b
-
-sBackupOptions:: ds OptionsEnd - Options
-
-s0_b208:: ds 1
-
-sBackupGameData::
-sBackupPlayerData::  ds wPlayerDataEnd - wPlayerData
-sBackupMapData::     ds wMapDataEnd - wMapData
-sBackupPokemonData:: ds wPokemonDataEnd - wPokemonData
-sBackupGameDataEnd::
-
-; bd83
-	ds $18a
-; bf0d
-
-sBackupChecksum:: ds 2
-s0_bf0f:: ds 1
-sStackTop:: ds 2
-
-
-SECTION "SRAM Bank 1", SRAM, BANK [1]
-
-sOptions:: ds OptionsEnd - Options
-
-s1_a008:: ds 1
-
-sGameData::
-sPlayerData::  ds wPlayerDataEnd - wPlayerData
-sMapData::     ds wMapDataEnd - wMapData
-sPokemonData:: ds wPokemonDataEnd - wPokemonData
-sGameDataEnd::
-
-; ab83
-	ds $18a
-; ad0d
-
-sChecksum::   ds 2
-s1_ad0f::     ds 1
-
-; ad10
-	box sBox
-; b160
-
-	ds $100
-
-sLinkBattleStats:: ; b260
-sLinkBattleWins::   ds 2
-sLinkBattleLosses:: ds 2
-sLinkBattleDraws::  ds 2
-	ds $5a
-sLinkBattleStatsEnd::
-
-sHallOfFame:: ; b2c0
-	ds HOF_LENGTH * NUM_HOF_TEAMS
-sHallOfFameEnd::
-
-s1_be3c:: ds 1
-
-sCrystalData::
-	ds wCrystalDataEnd - wCrystalData
-s1_be44:: ds 1
-s1_be45:: ds 1
-
-; data of the BattleTower must be in SRAM because you can save and leave between battles
-sBattleTower:: ; be46
-sNrOfBeatenBattleTowerTrainers::
-sbe46:: ds 1
-sbe47:: ds 1
-; The 7 trainers of the BattleTower are saved here, so nobody appears more than once
-sBTTrainers:: ; sbe48
-	ds 7
-sbe4f:: ds 1
-sbe50:: ds 1
-; Pkmn of previous trainer
-sBTPkmnOfTrainers:: ; 0xbe51
-sBTPkmnPrevTrainer1::
-	ds 1
-sBTPkmnPrevTrainer2:: ds 1
-sBTPkmnPrevTrainer3:: ds 1
-; Pkmn of preprevious trainer
-sBTPkmnPrevPrevTrainer1:: ds 1
-sBTPkmnPrevPrevTrainer2:: ds 1
-sBTPkmnPrevPrevTrainer3:: ds 1
-
-
-SECTION "Boxes 1-7",  SRAM, BANK [2]
-	box sBox1
-	box sBox2
-	box sBox3
-	box sBox4
-	box sBox5
-	box sBox6
-	box sBox7
-
-SECTION "Boxes 8-14", SRAM, BANK [3]
-	box sBox8
-	box sBox9
-	box sBox10
-	box sBox11
-	box sBox12
-	box sBox13
-	box sBox14
+INCLUDE "sram.asm"