shithub: pokecrystal

Download patch

ref: 096afdcdaca0714612f3670a3c4a670f312c1c3f
parent: 98128cd4d8457948e7136a16e08bacff0bc3529d
parent: f6942b9a136b2ee3b25159ebc4d54509a42c5266
author: surskitty <[email protected]>
date: Mon Dec 11 19:50:55 EST 2017

Merge branch 'master' of github.com:pret/pokecrystal

--- a/Makefile
+++ b/Makefile
@@ -197,17 +197,16 @@
 
 gfx/battle/dude.2bpp: rgbgfx += -h
 
-gfx/misc/unknown_egg.2bpp: rgbgfx += -h
-
 gfx/pokegear/pokegear.2bpp: rgbgfx += -x2
 gfx/pokegear/pokegear_sprites.2bpp: tools/gfx += --trim-whitespace
 
-gfx/unknown/0f8f34.1bpp: tools/gfx += --trim-whitespace
-gfx/unknown/16c173.2bpp: tools/gfx += --remove-duplicates --remove-xflip
-gfx/unknown/170d16.2bpp: tools/gfx += --trim-whitespace
-gfx/unknown/1715a4.2bpp: tools/gfx += --trim-whitespace
-gfx/unknown/1715a4_nonmatching.2bpp: tools/gfx += --remove-duplicates --remove-xflip
-gfx/unknown/171db1.2bpp: tools/gfx += --trim-whitespace
+gfx/unknown/ascii_font.2bpp: tools/gfx += --trim-whitespace
+gfx/unknown/bold_font.1bpp: tools/gfx += --trim-whitespace
+gfx/unknown/egg_animated.2bpp: tools/gfx += --trim-whitespace
+gfx/unknown/egg_animated_nonmatching.2bpp: tools/gfx += --remove-duplicates --remove-xflip
+gfx/unknown/mobile_splash.2bpp: tools/gfx += --remove-duplicates --remove-xflip
+gfx/unknown/pichu_animated.2bpp: tools/gfx += --trim-whitespace
+gfx/unknown/unknown_egg.2bpp: rgbgfx += -h
 
 
 %.bin: ;
--- a/audio.asm
+++ b/audio.asm
@@ -4,19 +4,10 @@
 SECTION "Audio", ROMX
 
 INCLUDE "audio/engine.asm"
-
-; What music plays when a trainer notices you
-INCLUDE "audio/trainer_encounters.asm"
-
-Music:
+INCLUDE "trainers/encounter_music.asm"
 INCLUDE "audio/music_pointers.asm"
-
 INCLUDE "audio/music/nothing.asm"
-
-Cries:
 INCLUDE "audio/cry_pointers.asm"
-
-SFX:
 INCLUDE "audio/sfx_pointers.asm"
 
 
--- a/audio/cry_pointers.asm
+++ b/audio/cry_pointers.asm
@@ -1,4 +1,4 @@
-; e91b0
+Cries: ; e91b0
 	dba Cry_Nidoran_M
 	dba Cry_Nidoran_F
 	dba Cry_Slowpoke
--- /dev/null
+++ b/audio/drumkits.asm
@@ -1,0 +1,301 @@
+Drumkits: ; e8e52
+	dw Drumkit0
+	dw Drumkit1
+	dw Drumkit2
+	dw Drumkit3
+	dw Drumkit4
+	dw Drumkit5
+; e8e5e
+
+Drumkit0: ; e8e5e
+	dw Drum00    ; rest
+	dw Snare1    ; c
+	dw Snare2    ; c#
+	dw Snare3    ; d
+	dw Snare4    ; d#
+	dw Drum05    ; e
+	dw Triangle1 ; f
+	dw Triangle2 ; f#
+	dw HiHat1    ; g
+	dw Snare5    ; g#
+	dw Snare6    ; a
+	dw Snare7    ; a#
+	dw HiHat2    ; b
+Drumkit1: ; e8e78
+	dw Drum00
+	dw HiHat1
+	dw Snare5
+	dw Snare6
+	dw Snare7
+	dw HiHat2
+	dw HiHat3
+	dw Snare8
+	dw Triangle3
+	dw Triangle4
+	dw Snare9
+	dw Snare10
+	dw Snare11
+Drumkit2: ; e8e92
+	dw Drum00
+	dw Snare1
+	dw Snare9
+	dw Snare10
+	dw Snare11
+	dw Drum05
+	dw Triangle1
+	dw Triangle2
+	dw HiHat1
+	dw Snare5
+	dw Snare6
+	dw Snare7
+	dw HiHat2
+Drumkit3: ; e8eac
+	dw Drum21
+	dw Snare12
+	dw Snare13
+	dw Snare14
+	dw Kick1
+	dw Triangle5
+	dw Drum20
+	dw Drum27
+	dw Drum28
+	dw Drum29
+	dw Drum21
+	dw Kick2
+	dw Crash2
+Drumkit4: ; e8ec6
+	dw Drum21
+	dw Drum20
+	dw Snare13
+	dw Snare14
+	dw Kick1
+	dw Drum33
+	dw Triangle5
+	dw Drum35
+	dw Drum31
+	dw Drum32
+	dw Drum36
+	dw Kick2
+	dw Crash1
+Drumkit5: ; e8ee0
+	dw Drum00
+	dw Snare9
+	dw Snare10
+	dw Snare11
+	dw Drum27
+	dw Drum28
+	dw Drum29
+	dw Drum05
+	dw Triangle1
+	dw Crash1
+	dw Snare14
+	dw Snare13
+	dw Kick2
+; e8efa
+
+Drum00: ; e8efa
+; unused
+	noise C#,  1, $11, $00
+	endchannel
+; e8efe
+
+Snare1: ; e8efe
+	noise C#,  1, $c1, $33
+	endchannel
+; e8f02
+
+Snare2: ; e8f02
+	noise C#,  1, $b1, $33
+	endchannel
+; e8f06
+
+Snare3: ; e8f06
+	noise C#,  1, $a1, $33
+	endchannel
+; e8f0a
+
+Snare4: ; e8f0a
+	noise C#,  1, $81, $33
+	endchannel
+; e8f0e
+
+Drum05: ; e8f0e
+	noise C#,  8, $84, $37
+	noise C#,  7, $84, $36
+	noise C#,  6, $83, $35
+	noise C#,  5, $83, $34
+	noise C#,  4, $82, $33
+	noise C#,  3, $81, $32
+	endchannel
+; e8f21
+
+Triangle1: ; e8f21
+	noise C#,  1, $51, $2a
+	endchannel
+; e8f25
+
+Triangle2: ; e8f25
+	noise C#,  2, $41, $2b
+	noise C#,  1, $61, $2a
+	endchannel
+; e8f2c
+
+HiHat1: ; e8f2c
+	noise C#,  1, $81, $10
+	endchannel
+; e8f30
+
+Snare5: ; e8f30
+	noise C#,  1, $82, $23
+	endchannel
+; e8f34
+
+Snare6: ; e8f34
+	noise C#,  1, $82, $25
+	endchannel
+; e8f38
+
+Snare7: ; e8f38
+	noise C#,  1, $82, $26
+	endchannel
+; e8f3c
+
+HiHat2: ; e8f3c
+	noise C#,  1, $a1, $10
+	endchannel
+; e8f40
+
+HiHat3: ; e8f40
+	noise C#,  1, $a2, $11
+	endchannel
+; e8f44
+
+Snare8: ; e8f44
+	noise C#,  1, $a2, $50
+	endchannel
+; e8f48
+
+Triangle3: ; e8f48
+	noise C#,  1, $a1, $18
+	noise C#,  1, $31, $33
+	endchannel
+; e8f4f
+
+Triangle4: ; e8f4f
+	noise C#,  3, $91, $28
+	noise C#,  1, $71, $18
+	endchannel
+; e8f56
+
+Snare9: ; e8f56
+	noise C#,  1, $91, $22
+	endchannel
+; e8f5a
+
+Snare10: ; e8f5a
+	noise C#,  1, $71, $22
+	endchannel
+; e8f5e
+
+Snare11: ; e8f5e
+	noise C#,  1, $61, $22
+	endchannel
+; e8f62
+
+Drum20: ; e8f62
+	noise C#,  1, $11, $11
+	endchannel
+; e8f66
+
+Drum21: ; e8f66
+	endchannel
+; e8f67
+
+Snare12: ; e8f67
+	noise C#,  1, $91, $33
+	endchannel
+; e8f6b
+
+Snare13: ; e8f6b
+	noise C#,  1, $51, $32
+	endchannel
+; e8f6f
+
+Snare14: ; e8f6f
+	noise C#,  1, $81, $31
+	endchannel
+; e8f73
+
+Kick1: ; e8f73
+	noise C#,  1, $88, $6b
+	noise C#,  1, $71, $00
+	endchannel
+; e8f7a
+
+Triangle5: ; e8f7a
+	noise D_,  1, $91, $18
+	endchannel
+; e8f7e
+
+Drum27: ; e8f7e
+	noise C#,  8, $92, $10
+	endchannel
+; e8f82
+
+Drum28: ; e8f82
+	noise D_,  4, $91, $00
+	noise D_,  4, $11, $00
+	endchannel
+; e8f89
+
+Drum29: ; e8f89
+	noise D_,  4, $91, $11
+	noise D_,  4, $11, $00
+	endchannel
+; e8f90
+
+Crash1: ; e8f90
+	noise D_,  4, $88, $15
+	noise C#,  1, $65, $12
+	endchannel
+; e8f97
+
+Drum31: ; e8f97
+	noise D_,  4, $51, $21
+	noise D_,  4, $11, $11
+	endchannel
+; e8f9e
+
+Drum32: ; e8f9e
+	noise D_,  4, $51, $50
+	noise D_,  4, $11, $11
+	endchannel
+; e8fa5
+
+Drum33: ; e8fa5
+	noise C#,  1, $a1, $31
+	endchannel
+; e8fa9
+
+Crash2: ; e8fa9
+	noise C#,  1, $84, $12
+	endchannel
+; e8fad
+
+Drum35: ; e8fad
+	noise D_,  4, $81, $00
+	noise D_,  4, $11, $00
+	endchannel
+; e8fb4
+
+Drum36: ; e8fb4
+	noise D_,  4, $81, $21
+	noise D_,  4, $11, $11
+	endchannel
+; e8fbb
+
+Kick2: ; e8fbb
+	noise C#,  1, $a8, $6b
+	noise C#,  1, $71, $00
+	endchannel
+; e8fc2
--- a/audio/engine.asm
+++ b/audio/engine.asm
@@ -2882,351 +2882,14 @@
 
 ; e8d80
 
-FrequencyTable: ; e8d80
-	dw 0     ; __
-	dw $f82c ; C_
-	dw $f89d ; C#
-	dw $f907 ; D_
-	dw $f96b ; D#
-	dw $f9ca ; E_
-	dw $fa23 ; F_
-	dw $fa77 ; F#
-	dw $fac7 ; G_
-	dw $fb12 ; G#
-	dw $fb58 ; A_
-	dw $fb9b ; A#
-	dw $fbda ; B_
-	dw $fc16 ; C_
-	dw $fc4e ; C#
-	dw $fc83 ; D_
-	dw $fcb5 ; D#
-	dw $fce5 ; E_
-	dw $fd11 ; F_
-	dw $fd3b ; F#
-	dw $fd63 ; G_
-	dw $fd89 ; G#
-	dw $fdac ; A_
-	dw $fdcd ; A#
-	dw $fded ; B_
-; e8db2
 
-WaveSamples: ; e8db2
-	; these are streams of 32 4-bit values used as wavepatterns
-	; nothing interesting here!
-	dn 0, 2, 4, 6, 8, 10, 12, 14, 15, 15, 15, 14, 14, 13, 13, 12, 12, 11, 10, 9, 8, 7, 6, 5, 4, 4, 3, 3, 2, 2, 1, 1
-	dn 0, 2, 4, 6, 8, 10, 12, 14, 14, 15, 15, 15, 15, 14, 14, 14, 13, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 2, 1, 1
-	dn 1, 3, 6, 9, 11, 13, 14, 14, 14, 14, 15, 15, 15, 15, 14, 13, 13, 14, 15, 15, 15, 15, 14, 14, 14, 14, 13, 11, 9, 6, 3, 1
-	dn 0, 2, 4, 6, 8, 10, 12, 13, 14, 15, 15, 14, 13, 14, 15, 15, 14, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
-	dn 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 14, 15, 7, 7, 15, 14, 14, 13, 12, 10, 8, 7, 6, 5, 4, 3, 2, 1, 0
-	dn 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 3, 3, 2, 2, 1, 1, 15, 15, 14, 14, 12, 12, 10, 10, 8, 8, 10, 10, 12, 12, 14, 14
-	dn 0, 2, 4, 6, 8, 10, 12, 14, 12, 11, 10, 9, 8, 7, 6, 5, 15, 15, 15, 14, 14, 13, 13, 12, 4, 4, 3, 3, 2, 2, 1, 1
-	dn 12, 0, 10, 9, 8, 7, 15, 5, 15, 15, 15, 14, 14, 13, 13, 12, 4, 4, 3, 3, 2, 2, 15, 1, 0, 2, 4, 6, 8, 10, 12, 14
-	dn 4, 4, 3, 3, 2, 2, 1, 15, 0, 0, 4, 6, 8, 10, 12, 14, 15, 8, 15, 14, 14, 13, 13, 12, 12, 11, 10, 9, 8, 7, 6, 5
-	dn 1, 1, 0, 0, 0, 0, 0, 8, 0, 0, 1, 3, 5, 7, 9, 10, 11, 4, 11, 10, 10, 9, 9, 8, 8, 7, 6, 5, 4, 3, 2, 1
-; e8e52
+INCLUDE "data/audio/notes.asm"
 
-Drumkits: ; e8e52
-	dw Drumkit0
-	dw Drumkit1
-	dw Drumkit2
-	dw Drumkit3
-	dw Drumkit4
-	dw Drumkit5
-; e8e5e
+INCLUDE "data/audio/wave_samples.asm"
 
-Drumkit0: ; e8e5e
-	dw Drum00    ; rest
-	dw Snare1    ; c
-	dw Snare2    ; c#
-	dw Snare3    ; d
-	dw Snare4    ; d#
-	dw Drum05    ; e
-	dw Triangle1 ; f
-	dw Triangle2 ; f#
-	dw HiHat1    ; g
-	dw Snare5    ; g#
-	dw Snare6    ; a
-	dw Snare7    ; a#
-	dw HiHat2    ; b
-Drumkit1: ; e8e78
-	dw Drum00
-	dw HiHat1
-	dw Snare5
-	dw Snare6
-	dw Snare7
-	dw HiHat2
-	dw HiHat3
-	dw Snare8
-	dw Triangle3
-	dw Triangle4
-	dw Snare9
-	dw Snare10
-	dw Snare11
-Drumkit2: ; e8e92
-	dw Drum00
-	dw Snare1
-	dw Snare9
-	dw Snare10
-	dw Snare11
-	dw Drum05
-	dw Triangle1
-	dw Triangle2
-	dw HiHat1
-	dw Snare5
-	dw Snare6
-	dw Snare7
-	dw HiHat2
-Drumkit3: ; e8eac
-	dw Drum21
-	dw Snare12
-	dw Snare13
-	dw Snare14
-	dw Kick1
-	dw Triangle5
-	dw Drum20
-	dw Drum27
-	dw Drum28
-	dw Drum29
-	dw Drum21
-	dw Kick2
-	dw Crash2
-Drumkit4: ; e8ec6
-	dw Drum21
-	dw Drum20
-	dw Snare13
-	dw Snare14
-	dw Kick1
-	dw Drum33
-	dw Triangle5
-	dw Drum35
-	dw Drum31
-	dw Drum32
-	dw Drum36
-	dw Kick2
-	dw Crash1
-Drumkit5: ; e8ee0
-	dw Drum00
-	dw Snare9
-	dw Snare10
-	dw Snare11
-	dw Drum27
-	dw Drum28
-	dw Drum29
-	dw Drum05
-	dw Triangle1
-	dw Crash1
-	dw Snare14
-	dw Snare13
-	dw Kick2
-; e8efa
+INCLUDE "audio/drumkits.asm"
 
-Drum00: ; e8efa
-; unused
-	noise C#,  1, $11, $00
-	endchannel
-; e8efe
 
-Snare1: ; e8efe
-	noise C#,  1, $c1, $33
-	endchannel
-; e8f02
-
-Snare2: ; e8f02
-	noise C#,  1, $b1, $33
-	endchannel
-; e8f06
-
-Snare3: ; e8f06
-	noise C#,  1, $a1, $33
-	endchannel
-; e8f0a
-
-Snare4: ; e8f0a
-	noise C#,  1, $81, $33
-	endchannel
-; e8f0e
-
-Drum05: ; e8f0e
-	noise C#,  8, $84, $37
-	noise C#,  7, $84, $36
-	noise C#,  6, $83, $35
-	noise C#,  5, $83, $34
-	noise C#,  4, $82, $33
-	noise C#,  3, $81, $32
-	endchannel
-; e8f21
-
-Triangle1: ; e8f21
-	noise C#,  1, $51, $2a
-	endchannel
-; e8f25
-
-Triangle2: ; e8f25
-	noise C#,  2, $41, $2b
-	noise C#,  1, $61, $2a
-	endchannel
-; e8f2c
-
-HiHat1: ; e8f2c
-	noise C#,  1, $81, $10
-	endchannel
-; e8f30
-
-Snare5: ; e8f30
-	noise C#,  1, $82, $23
-	endchannel
-; e8f34
-
-Snare6: ; e8f34
-	noise C#,  1, $82, $25
-	endchannel
-; e8f38
-
-Snare7: ; e8f38
-	noise C#,  1, $82, $26
-	endchannel
-; e8f3c
-
-HiHat2: ; e8f3c
-	noise C#,  1, $a1, $10
-	endchannel
-; e8f40
-
-HiHat3: ; e8f40
-	noise C#,  1, $a2, $11
-	endchannel
-; e8f44
-
-Snare8: ; e8f44
-	noise C#,  1, $a2, $50
-	endchannel
-; e8f48
-
-Triangle3: ; e8f48
-	noise C#,  1, $a1, $18
-	noise C#,  1, $31, $33
-	endchannel
-; e8f4f
-
-Triangle4: ; e8f4f
-	noise C#,  3, $91, $28
-	noise C#,  1, $71, $18
-	endchannel
-; e8f56
-
-Snare9: ; e8f56
-	noise C#,  1, $91, $22
-	endchannel
-; e8f5a
-
-Snare10: ; e8f5a
-	noise C#,  1, $71, $22
-	endchannel
-; e8f5e
-
-Snare11: ; e8f5e
-	noise C#,  1, $61, $22
-	endchannel
-; e8f62
-
-Drum20: ; e8f62
-	noise C#,  1, $11, $11
-	endchannel
-; e8f66
-
-Drum21: ; e8f66
-	endchannel
-; e8f67
-
-Snare12: ; e8f67
-	noise C#,  1, $91, $33
-	endchannel
-; e8f6b
-
-Snare13: ; e8f6b
-	noise C#,  1, $51, $32
-	endchannel
-; e8f6f
-
-Snare14: ; e8f6f
-	noise C#,  1, $81, $31
-	endchannel
-; e8f73
-
-Kick1: ; e8f73
-	noise C#,  1, $88, $6b
-	noise C#,  1, $71, $00
-	endchannel
-; e8f7a
-
-Triangle5: ; e8f7a
-	noise D_,  1, $91, $18
-	endchannel
-; e8f7e
-
-Drum27: ; e8f7e
-	noise C#,  8, $92, $10
-	endchannel
-; e8f82
-
-Drum28: ; e8f82
-	noise D_,  4, $91, $00
-	noise D_,  4, $11, $00
-	endchannel
-; e8f89
-
-Drum29: ; e8f89
-	noise D_,  4, $91, $11
-	noise D_,  4, $11, $00
-	endchannel
-; e8f90
-
-Crash1: ; e8f90
-	noise D_,  4, $88, $15
-	noise C#,  1, $65, $12
-	endchannel
-; e8f97
-
-Drum31: ; e8f97
-	noise D_,  4, $51, $21
-	noise D_,  4, $11, $11
-	endchannel
-; e8f9e
-
-Drum32: ; e8f9e
-	noise D_,  4, $51, $50
-	noise D_,  4, $11, $11
-	endchannel
-; e8fa5
-
-Drum33: ; e8fa5
-	noise C#,  1, $a1, $31
-	endchannel
-; e8fa9
-
-Crash2: ; e8fa9
-	noise C#,  1, $84, $12
-	endchannel
-; e8fad
-
-Drum35: ; e8fad
-	noise D_,  4, $81, $00
-	noise D_,  4, $11, $00
-	endchannel
-; e8fb4
-
-Drum36: ; e8fb4
-	noise D_,  4, $81, $21
-	noise D_,  4, $11, $11
-	endchannel
-; e8fbb
-
-Kick2: ; e8fbb
-	noise C#,  1, $a8, $6b
-	noise C#,  1, $71, $00
-	endchannel
-; e8fc2
-
 GetLRTracks: ; e8fc2
 ; gets the default sound l/r channels
 ; stores mono/stereo table in hl
@@ -3306,3 +2969,24 @@
 	ret
 
 ; e900a
+
+PlayTrainerEncounterMusic:: ; e900a
+; input: e = trainer type
+	; turn fade off
+	xor a
+	ld [MusicFade], a
+	; play nothing for one frame
+	push de
+	ld de, 0 ; id: Music_Nothing
+	call PlayMusic
+	call DelayFrame
+	; play new song
+	call MaxVolume
+	pop de
+	ld d, $00
+	ld hl, TrainerEncounterMusic
+	add hl, de
+	ld e, [hl]
+	call PlayMusic
+	ret
+; e9027
--- a/audio/music_pointers.asm
+++ b/audio/music_pointers.asm
@@ -1,6 +1,8 @@
 ; See song sections in audio.asm.
 
-; e906e
+Music: ; e906e
+; entries correspond to MUSIC_* constants
+
 	dba Music_Nothing ; 0xe91a3
 	dba Music_TitleScreen ; 0xeb808
 	dba Music_Route1 ; 0xec000
--- a/audio/sfx.asm
+++ b/audio/sfx.asm
@@ -1211,16 +1211,16 @@
 
 	togglesfx
 
-Sfx_GetEggFromDaycareLady: ; f0e66
-Sfx_GetEggFromDaycareMan: ; f0e66
-	musicheader 4, 5, Sfx_GetEggFromDaycareLady_Ch5
-	musicheader 1, 6, Sfx_GetEggFromDaycareLady_Ch6
-	musicheader 1, 7, Sfx_GetEggFromDaycareLady_Ch7
-	musicheader 1, 8, Sfx_GetEggFromDaycareLady_Ch8
+Sfx_GetEggFromDayCareLady: ; f0e66
+Sfx_GetEggFromDayCareMan: ; f0e66
+	musicheader 4, 5, Sfx_GetEggFromDayCareLady_Ch5
+	musicheader 1, 6, Sfx_GetEggFromDayCareLady_Ch6
+	musicheader 1, 7, Sfx_GetEggFromDayCareLady_Ch7
+	musicheader 1, 8, Sfx_GetEggFromDayCareLady_Ch8
 ; f0e72
 
-Sfx_GetEggFromDaycareLady_Ch5: ; f0e72
-Sfx_GetEggFromDaycareMan_Ch5: ; f0e72
+Sfx_GetEggFromDayCareLady_Ch5: ; f0e72
+Sfx_GetEggFromDayCareMan_Ch5: ; f0e72
 	togglesfx
 	tempo 120
 	volume $77
@@ -1253,8 +1253,8 @@
 
 	togglesfx
 
-Sfx_GetEggFromDaycareLady_Ch6: ; f0e9b
-Sfx_GetEggFromDaycareMan_Ch6: ; f0e9b
+Sfx_GetEggFromDayCareLady_Ch6: ; f0e9b
+Sfx_GetEggFromDayCareMan_Ch6: ; f0e9b
 	togglesfx
 	vibrato $12, $34
 	dutycycle $3
@@ -1284,8 +1284,8 @@
 
 	togglesfx
 
-Sfx_GetEggFromDaycareLady_Ch7: ; f0ebe
-Sfx_GetEggFromDaycareMan_Ch7: ; f0ebe
+Sfx_GetEggFromDayCareLady_Ch7: ; f0ebe
+Sfx_GetEggFromDayCareMan_Ch7: ; f0ebe
 	togglesfx
 	notetype $8, $25
 	note __, 2
@@ -1305,8 +1305,8 @@
 
 	togglesfx
 
-Sfx_GetEggFromDaycareLady_Ch8: ; f0ed0
-Sfx_GetEggFromDaycareMan_Ch8: ; f0ed0
+Sfx_GetEggFromDayCareLady_Ch8: ; f0ed0
+Sfx_GetEggFromDayCareMan_Ch8: ; f0ed0
 	togglesfx
 	sfxtogglenoise $4
 	notetype $8
--- a/audio/sfx_pointers.asm
+++ b/audio/sfx_pointers.asm
@@ -1,4 +1,6 @@
-; e927c
+SFX: ; e927c
+; entries correspond to SFX_* constants
+
 	dba Sfx_DexFanfare5079
 	dba Sfx_Item
 	dba Sfx_CaughtMon
@@ -148,8 +150,8 @@
 	dba Sfx_Fanfare2
 	dba Sfx_RegisterPhoneNumber
 	dba Sfx_3RdPlace
-	dba Sfx_GetEggFromDaycareMan
-	dba Sfx_GetEggFromDaycareLady
+	dba Sfx_GetEggFromDayCareMan
+	dba Sfx_GetEggFromDayCareLady
 	dba Sfx_MoveDeleted
 	dba Sfx_2ndPlace
 	dba Sfx_1stPlace
--- a/audio/trainer_encounters.asm
+++ /dev/null
@@ -1,96 +1,0 @@
-; Currently, must be in the same bank as the sound engine.
-
-PlayTrainerEncounterMusic:: ; e900a
-; input: e = trainer type
-	; turn fade off
-	xor a
-	ld [MusicFade], a
-	; play nothing for one frame
-	push de
-	ld de, 0 ; id: Music_Nothing
-	call PlayMusic
-	call DelayFrame
-	; play new song
-	call MaxVolume
-	pop de
-	ld d, $00
-	ld hl, TrainerEncounterMusic
-	add hl, de
-	ld e, [hl]
-	call PlayMusic
-	ret
-; e9027
-
-TrainerEncounterMusic: ; e9027
-	db MUSIC_HIKER_ENCOUNTER
-	db MUSIC_YOUNGSTER_ENCOUNTER	; falkner
-	db MUSIC_LASS_ENCOUNTER			; whitney
-	db MUSIC_YOUNGSTER_ENCOUNTER	; bugsy
-	db MUSIC_OFFICER_ENCOUNTER		; morty
-	db MUSIC_OFFICER_ENCOUNTER		; pryce
-	db MUSIC_LASS_ENCOUNTER			; jasmine
-	db MUSIC_OFFICER_ENCOUNTER		; chuck
-	db MUSIC_BEAUTY_ENCOUNTER		; clair
-	db MUSIC_RIVAL_ENCOUNTER		; rival1
-	db MUSIC_HIKER_ENCOUNTER		; pokemon_prof
-	db MUSIC_HIKER_ENCOUNTER		; will
-	db MUSIC_HIKER_ENCOUNTER		; cal
-	db MUSIC_OFFICER_ENCOUNTER		; bruno
-	db MUSIC_HIKER_ENCOUNTER		; karen
-	db MUSIC_HIKER_ENCOUNTER		; koga
-	db MUSIC_OFFICER_ENCOUNTER		; champion
-	db MUSIC_YOUNGSTER_ENCOUNTER	; brock
-	db MUSIC_LASS_ENCOUNTER			; misty
-	db MUSIC_OFFICER_ENCOUNTER		; lt_surge
-	db MUSIC_ROCKET_ENCOUNTER		; scientist
-	db MUSIC_OFFICER_ENCOUNTER		; erika
-	db MUSIC_YOUNGSTER_ENCOUNTER	; youngster
-	db MUSIC_YOUNGSTER_ENCOUNTER	; schoolboy
-	db MUSIC_YOUNGSTER_ENCOUNTER	; bird_keeper
-	db MUSIC_LASS_ENCOUNTER			; lass
-	db MUSIC_LASS_ENCOUNTER			; janine
-	db MUSIC_HIKER_ENCOUNTER		; cooltrainerm
-	db MUSIC_BEAUTY_ENCOUNTER		; cooltrainerf
-	db MUSIC_BEAUTY_ENCOUNTER		; beauty
-	db MUSIC_POKEMANIAC_ENCOUNTER	; pokemaniac
-	db MUSIC_ROCKET_ENCOUNTER		; gruntm
-	db MUSIC_HIKER_ENCOUNTER		; gentleman
-	db MUSIC_BEAUTY_ENCOUNTER		; skier
-	db MUSIC_BEAUTY_ENCOUNTER		; teacher
-	db MUSIC_BEAUTY_ENCOUNTER		; sabrina
-	db MUSIC_YOUNGSTER_ENCOUNTER	; bug_catcher
-	db MUSIC_HIKER_ENCOUNTER		; fisher
-	db MUSIC_HIKER_ENCOUNTER		; swimmerm
-	db MUSIC_BEAUTY_ENCOUNTER		; swimmerf
-	db MUSIC_HIKER_ENCOUNTER		; sailor
-	db MUSIC_POKEMANIAC_ENCOUNTER	; super_nerd
-	db MUSIC_RIVAL_ENCOUNTER		; rival2
-	db MUSIC_HIKER_ENCOUNTER		; guitarist
-	db MUSIC_HIKER_ENCOUNTER		; hiker
-	db MUSIC_HIKER_ENCOUNTER		; biker
-	db MUSIC_OFFICER_ENCOUNTER		; blaine
-	db MUSIC_POKEMANIAC_ENCOUNTER	; burglar
-	db MUSIC_HIKER_ENCOUNTER		; firebreather
-	db MUSIC_POKEMANIAC_ENCOUNTER	; juggler
-	db MUSIC_HIKER_ENCOUNTER		; blackbelt_t
-	db MUSIC_ROCKET_ENCOUNTER		; executivem
-	db MUSIC_YOUNGSTER_ENCOUNTER	; psychic_t
-	db MUSIC_LASS_ENCOUNTER			; picnicker
-	db MUSIC_YOUNGSTER_ENCOUNTER	; camper
-	db MUSIC_ROCKET_ENCOUNTER		; executivef
-	db MUSIC_SAGE_ENCOUNTER			; sage
-	db MUSIC_SAGE_ENCOUNTER			; medium
-	db MUSIC_HIKER_ENCOUNTER		; boarder
-	db MUSIC_HIKER_ENCOUNTER		; pokefanm
-	db MUSIC_KIMONO_ENCOUNTER		; kimono_girl
-	db MUSIC_LASS_ENCOUNTER			; twins
-	db MUSIC_BEAUTY_ENCOUNTER		; pokefanf
-	db MUSIC_HIKER_ENCOUNTER		; red
-	db MUSIC_RIVAL_ENCOUNTER		; blue
-	db MUSIC_HIKER_ENCOUNTER		; officer
-	db MUSIC_ROCKET_ENCOUNTER		; gruntf
-	db MUSIC_HIKER_ENCOUNTER		; mysticalman
-	db MUSIC_HIKER_ENCOUNTER
-	db MUSIC_HIKER_ENCOUNTER
-	db MUSIC_HIKER_ENCOUNTER
-; e906e
--- a/battle/ai/scoring.asm
+++ b/battle/ai/scoring.asm
@@ -1,3 +1,5 @@
+AIScoring: ; 38591
+
 AI_Basic: ; 38591
 ; Don't do anything redundant:
 ;  -Using status-only moves if the player can't be statused
--- a/battle/anim_commands.asm
+++ b/battle/anim_commands.asm
@@ -1437,13 +1437,13 @@
 	ld de, UnknBGPals
 	ld a, [rBGP]
 	ld b, a
-	ld c, $7
+	ld c, 7
 	call CopyPals
 	ld hl, OBPals
 	ld de, UnknOBPals
 	ld a, [rBGP]
 	ld b, a
-	ld c, $2
+	ld c, 2
 	call CopyPals
 	pop af
 	ld [rSVBK], a
@@ -1461,11 +1461,11 @@
 	push af
 	ld a, $5
 	ld [rSVBK], a
-	ld hl, OBPals + $10
-	ld de, UnknOBPals + $10
+	ld hl, OBPals palette PAL_BATTLE_OB_GRAY
+	ld de, UnknOBPals palette PAL_BATTLE_OB_GRAY
 	ld a, [rOBP0]
 	ld b, a
-	ld c, $2
+	ld c, 2
 	call CopyPals
 	pop af
 	ld [rSVBK], a
--- a/battle/core.asm
+++ b/battle/core.asm
@@ -3484,8 +3484,8 @@
 	add hl, bc
 	ld a, [hl]
 	dec a
-	ld hl, BaseData + 7 ; type
-	ld bc, BaseData1 - BaseData0
+	ld hl, BaseData + BASE_TYPES
+	ld bc, BASE_DATA_SIZE
 	call AddNTimes
 	ld de, EnemyMonType
 	ld bc, 2
@@ -6676,7 +6676,7 @@
 ; Get list for the time of day
 	ld hl, .Morn
 	ld a, [TimeOfDay]
-	cp DAY
+	cp DAY_F
 	jr c, .Check
 	ld hl, .Day
 	jr z, .Check
--- a/battle/effect_command_pointers.asm
+++ b/battle/effect_command_pointers.asm
@@ -1,6 +1,7 @@
 	dw 0 ; padding
 
 BattleCommandPointers: ; 3fd28
+; entries correspond to constants/effect_command_constants.asm
 	dw BattleCommand_CheckTurn ; 34084
 	dw BattleCommand_CheckObedience ; 343db
 	dw BattleCommand_UsedMoveText ; 34541
--- a/battle/effect_commands.asm
+++ b/battle/effect_commands.asm
@@ -9323,7 +9323,7 @@
 
 BattleCommand_HealMorn: ; 37b74
 ; healmorn
-	ld b, MORN
+	ld b, MORN_F
 	jr BattleCommand_TimeBasedHealContinue
 
 ; 37b78
@@ -9330,7 +9330,7 @@
 
 BattleCommand_HealDay: ; 37b78
 ; healday
-	ld b, DAY
+	ld b, DAY_F
 	jr BattleCommand_TimeBasedHealContinue
 
 ; 37b7c
@@ -9337,7 +9337,7 @@
 
 BattleCommand_HealNite: ; 37b7c
 ; healnite
-	ld b, NITE
+	ld b, NITE_F
 	; fallthrough
 ; 37b7e
 
--- a/battle/move_names.asm
+++ b/battle/move_names.asm
@@ -1,3 +1,4 @@
+MoveNames::
 	db "POUND@"
 	db "KARATE CHOP@"
 	db "DOUBLESLAP@"
--- a/battle/moves/move_effects_pointers.asm
+++ b/battle/moves/move_effects_pointers.asm
@@ -1,3 +1,4 @@
+; entries correspond to EFFECT_* constants
 	dw NormalHit
 	dw DoSleep
 	dw PoisonHit
--- a/battle/objects/data.asm
+++ b/battle/objects/data.asm
@@ -19,567 +19,567 @@
 
 
 ; ANIM_OBJ_00
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $01
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01
 
 ; ANIM_OBJ_01
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $01
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01
 
 ; ANIM_OBJ_02
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $01
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01
 
 ; ANIM_OBJ_03
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $01
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01
 
 ; ANIM_OBJ_04
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $01
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01
 
 ; ANIM_OBJ_05
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $01
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01
 
 ; ANIM_OBJ_06
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_03, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $01
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_03, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01
 
 ; ANIM_OBJ_07
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_04, BATTLEANIMFUNC_1B, PAL_BATTLE_GRAY, $01
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_04, BATTLEANIMFUNC_1B, PAL_BATTLE_OB_GRAY, $01
 
 ; ANIM_OBJ_08
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $01
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01
 
 ; ANIM_OBJ_09
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_06, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $01
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_06, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01
 
 ; ANIM_OBJ_0A
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_07, BATTLEANIMFUNC_09, PAL_BATTLE_GRAY, $01
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_07, BATTLEANIMFUNC_09, PAL_BATTLE_OB_GRAY, $01
 
 ; ANIM_OBJ_0B
-	battleanimobj RELATIVE_X, $aa, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_10, PAL_BATTLE_RED, $03
+	battleanimobj RELATIVE_X, $aa, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_10, PAL_BATTLE_OB_RED, $03
 
 ; ANIM_OBJ_0C
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0E, BATTLEANIMFUNC_04, PAL_BATTLE_RED, $03
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0E, BATTLEANIMFUNC_04, PAL_BATTLE_OB_RED, $03
 
 ; ANIM_OBJ_0D
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_03, PAL_BATTLE_RED, $03
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_03, PAL_BATTLE_OB_RED, $03
 
 ; ANIM_OBJ_0E
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_08, PAL_BATTLE_RED, $03
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_08, PAL_BATTLE_OB_RED, $03
 
 ; ANIM_OBJ_0F
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_0A, PAL_BATTLE_RED, $03
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_0A, PAL_BATTLE_OB_RED, $03
 
 ; ANIM_OBJ_BURNED
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_03, PAL_BATTLE_RED, $03
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_03, PAL_BATTLE_OB_RED, $03
 
 ; ANIM_OBJ_BLIZZARD
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_12, BATTLEANIMFUNC_08, PAL_BATTLE_BLUE, $0a
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_12, BATTLEANIMFUNC_08, PAL_BATTLE_OB_BLUE, $0a
 
 ; ANIM_OBJ_12
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_13, BATTLEANIMFUNC_00, PAL_BATTLE_BLUE, $0a
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_13, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $0a
 
 ; ANIM_OBJ_ICE_BEAM
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_14, BATTLEANIMFUNC_01, PAL_BATTLE_BLUE, $0a
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_14, BATTLEANIMFUNC_01, PAL_BATTLE_OB_BLUE, $0a
 
 ; ANIM_OBJ_RAZOR_LEAF
-	battleanimobj RELATIVE_X | X_FLIP, $78, BATTLEANIMFRAMESET_16, BATTLEANIMFUNC_RAZOR_LEAF, PAL_BATTLE_GREEN, $06
+	battleanimobj RELATIVE_X | X_FLIP, $78, BATTLEANIMFRAMESET_16, BATTLEANIMFUNC_RAZOR_LEAF, PAL_BATTLE_OB_GREEN, $06
 
 ; ANIM_OBJ_POKE_BALL
-	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_12, PAL_BATTLE_RED, $0b
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_12, PAL_BATTLE_OB_RED, $0b
 
 ; ANIM_OBJ_POKE_BALL_BLOCKED
-	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_13, PAL_BATTLE_RED, $0b
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_13, PAL_BATTLE_OB_RED, $0b
 
 ; ANIM_OBJ_17
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, PAL_BATTLE_RED, $08
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, PAL_BATTLE_OB_RED, $08
 
 ; ANIM_OBJ_18
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, PAL_BATTLE_RED, $08
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, PAL_BATTLE_OB_RED, $08
 
 ; ANIM_OBJ_19
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_1D, BATTLEANIMFUNC_06, PAL_BATTLE_GRAY, $0c
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_1D, BATTLEANIMFUNC_06, PAL_BATTLE_OB_GRAY, $0c
 
 ; ANIM_OBJ_1A
-	battleanimobj RELATIVE_X, $b4, BATTLEANIMFRAMESET_1F, BATTLEANIMFUNC_38, PAL_BATTLE_GRAY, $0c
+	battleanimobj RELATIVE_X, $b4, BATTLEANIMFRAMESET_1F, BATTLEANIMFUNC_38, PAL_BATTLE_OB_GRAY, $0c
 
 ; ANIM_OBJ_1B
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $07
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $07
 
 ; ANIM_OBJ_BALL_POOF
-	battleanimobj RELATIVE_X, $a0, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $07
+	battleanimobj RELATIVE_X, $a0, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $07
 
 ; ANIM_OBJ_1D
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_07, PAL_BATTLE_BROWN, $09
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_07, PAL_BATTLE_OB_BROWN, $09
 
 ; ANIM_OBJ_1E
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_1A, BATTLEANIMFUNC_07, PAL_BATTLE_BROWN, $09
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_1A, BATTLEANIMFUNC_07, PAL_BATTLE_OB_BROWN, $09
 
 ; ANIM_OBJ_1F
-	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_1B, BATTLEANIMFUNC_36, PAL_BATTLE_BROWN, $09
+	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_1B, BATTLEANIMFUNC_36, PAL_BATTLE_OB_BROWN, $09
 
 ; ANIM_OBJ_20
-	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_84, BATTLEANIMFUNC_36, PAL_BATTLE_BLUE, $21
+	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_84, BATTLEANIMFUNC_36, PAL_BATTLE_OB_BLUE, $21
 
 ; ANIM_OBJ_BUBBLE
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_0C, PAL_BATTLE_BLUE, $0d
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_0C, PAL_BATTLE_OB_BLUE, $0d
 
 ; ANIM_OBJ_22
-	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_23, BATTLEANIMFUNC_0D, PAL_BATTLE_BLUE, $0d
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_23, BATTLEANIMFUNC_0D, PAL_BATTLE_OB_BLUE, $0d
 
 ; ANIM_OBJ_23
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_0E, PAL_BATTLE_GRAY, $0e
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_0E, PAL_BATTLE_OB_GRAY, $0e
 
 ; ANIM_OBJ_24
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLEANIMFRAMESET_27, BATTLEANIMFUNC_0F, PAL_BATTLE_BLUE, $04
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLEANIMFRAMESET_27, BATTLEANIMFUNC_0F, PAL_BATTLE_OB_BLUE, $04
 
 ; ANIM_OBJ_25
-	battleanimobj RELATIVE_X, $b4, BATTLEANIMFRAMESET_2A, BATTLEANIMFUNC_00, PAL_BATTLE_BLUE, $04
+	battleanimobj RELATIVE_X, $b4, BATTLEANIMFRAMESET_2A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $04
 
 ; ANIM_OBJ_26
-	battleanimobj RELATIVE_X, $40, BATTLEANIMFRAMESET_2B, BATTLEANIMFUNC_11, PAL_BATTLE_GREEN, $0f
+	battleanimobj RELATIVE_X, $40, BATTLEANIMFRAMESET_2B, BATTLEANIMFUNC_11, PAL_BATTLE_OB_GREEN, $0f
 
 ; ANIM_OBJ_27
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_2C, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $10
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_2C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $10
 
 ; ANIM_OBJ_28
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, PAL_BATTLE_YELLOW, $10
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, PAL_BATTLE_OB_YELLOW, $10
 
 ; ANIM_OBJ_ICE_BUILDUP
-	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_2E, BATTLEANIMFUNC_00, PAL_BATTLE_BLUE, $0a
+	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_2E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $0a
 
 ; ANIM_OBJ_FROZEN
-	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_2F, BATTLEANIMFUNC_00, PAL_BATTLE_BLUE, $0a
+	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_2F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $0a
 
 ; ANIM_OBJ_MASTER_BALL_SPARKLE
-	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_14, PAL_BATTLE_BROWN, $11
+	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_14, PAL_BATTLE_OB_BROWN, $11
 
 ; ANIM_OBJ_2C
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_14, PAL_BATTLE_YELLOW, $0d
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_14, PAL_BATTLE_OB_YELLOW, $0d
 
 ; ANIM_OBJ_2D
-	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_31, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $05
+	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_31, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05
 
 ; ANIM_OBJ_2E
-	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_32, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $05
+	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_32, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05
 
 ; ANIM_OBJ_2F
-	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_33, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $05
+	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_33, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05
 
 ; ANIM_OBJ_30
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_15, PAL_BATTLE_YELLOW, $05
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_15, PAL_BATTLE_OB_YELLOW, $05
 
 ; ANIM_OBJ_31
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_36, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $05
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_36, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05
 
 ; ANIM_OBJ_LIGHTNING_BOLT
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_37, BATTLEANIMFUNC_03, PAL_BATTLE_GRAY, $08
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_37, BATTLEANIMFUNC_03, PAL_BATTLE_OB_GRAY, $08
 
 ; ANIM_OBJ_33
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_38, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $05
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_38, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05
 
 ; ANIM_OBJ_34
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_39, BATTLEANIMFUNC_03, PAL_BATTLE_GRAY, $08
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_39, BATTLEANIMFUNC_03, PAL_BATTLE_OB_GRAY, $08
 
 ; ANIM_OBJ_35
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_3A, BATTLEANIMFUNC_16, PAL_BATTLE_GRAY, $02
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_3A, BATTLEANIMFUNC_16, PAL_BATTLE_OB_GRAY, $02
 
 ; ANIM_OBJ_36
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_3C, BATTLEANIMFUNC_17, PAL_BATTLE_GRAY, $02
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_3C, BATTLEANIMFUNC_17, PAL_BATTLE_OB_GRAY, $02
 
 ; ANIM_OBJ_37
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_3E, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $02
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_3E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02
 
 ; ANIM_OBJ_38
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_3F, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $02
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_3F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02
 
 ; ANIM_OBJ_39
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_40, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $02
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_40, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02
 
 ; ANIM_OBJ_3A
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_41, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $02
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_41, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02
 
 ; ANIM_OBJ_3B
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_42, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $02
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_42, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02
 
 ; ANIM_OBJ_3C
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_18, PAL_BATTLE_GREEN, $12
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_18, PAL_BATTLE_OB_GREEN, $12
 
 ; ANIM_OBJ_3D
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_44, BATTLEANIMFUNC_00, PAL_BATTLE_GREEN, $12
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_44, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GREEN, $12
 
 ; ANIM_OBJ_GUST
-	battleanimobj RELATIVE_X | X_FLIP, $b8, BATTLEANIMFRAMESET_45, BATTLEANIMFUNC_19, PAL_BATTLE_GRAY, $13
+	battleanimobj RELATIVE_X | X_FLIP, $b8, BATTLEANIMFRAMESET_45, BATTLEANIMFUNC_19, PAL_BATTLE_OB_GRAY, $13
 
 ; ANIM_OBJ_3F
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_46, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $14
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_46, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $14
 
 ; ANIM_OBJ_40
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_47, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $14
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_47, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $14
 
 ; ANIM_OBJ_41
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_48, BATTLEANIMFUNC_1A, PAL_BATTLE_GRAY, $14
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_48, BATTLEANIMFUNC_1A, PAL_BATTLE_OB_GRAY, $14
 
 ; ANIM_OBJ_42
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_49, BATTLEANIMFUNC_1A, PAL_BATTLE_GRAY, $14
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_49, BATTLEANIMFUNC_1A, PAL_BATTLE_OB_GRAY, $14
 
 ; ANIM_OBJ_43
-	battleanimobj RELATIVE_X | X_FLIP, $98, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_01, PAL_BATTLE_GRAY, $14
+	battleanimobj RELATIVE_X | X_FLIP, $98, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, $14
 
 ; ANIM_OBJ_44
-	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_4B, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $11
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_4B, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $11
 
 ; ANIM_OBJ_ABSORB
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_4C, BATTLEANIMFUNC_1C, PAL_BATTLE_GREEN, $12
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_4C, BATTLEANIMFUNC_1C, PAL_BATTLE_OB_GREEN, $12
 
 ; ANIM_OBJ_46
-	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_4D, BATTLEANIMFUNC_1D, PAL_BATTLE_GRAY, $15
+	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_4D, BATTLEANIMFUNC_1D, PAL_BATTLE_OB_GRAY, $15
 
 ; ANIM_OBJ_47
-	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_51, BATTLEANIMFUNC_1E, PAL_BATTLE_YELLOW, $11
+	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_51, BATTLEANIMFUNC_1E, PAL_BATTLE_OB_YELLOW, $11
 
 ; ANIM_OBJ_48
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_52, BATTLEANIMFUNC_1F, PAL_BATTLE_GREEN, $16
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_52, BATTLEANIMFUNC_1F, PAL_BATTLE_OB_GREEN, $16
 
 ; ANIM_OBJ_49
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_54, BATTLEANIMFUNC_1F, PAL_BATTLE_GREEN, $16
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_54, BATTLEANIMFUNC_1F, PAL_BATTLE_OB_GREEN, $16
 
 ; ANIM_OBJ_LEECH_SEED
-	battleanimobj RELATIVE_X | X_FLIP, $68, BATTLEANIMFRAMESET_56, BATTLEANIMFUNC_LEECH_SEED, PAL_BATTLE_GREEN, $06
+	battleanimobj RELATIVE_X | X_FLIP, $68, BATTLEANIMFRAMESET_56, BATTLEANIMFUNC_LEECH_SEED, PAL_BATTLE_OB_GREEN, $06
 
 ; ANIM_OBJ_4B
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_59, BATTLEANIMFUNC_21, PAL_BATTLE_GRAY, $0e
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_59, BATTLEANIMFUNC_21, PAL_BATTLE_OB_GRAY, $0e
 
 ; ANIM_OBJ_4C
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_5C, BATTLEANIMFUNC_02, PAL_BATTLE_GRAY, $17
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_5C, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $17
 
 ; ANIM_OBJ_4D
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_5D, BATTLEANIMFUNC_22, PAL_BATTLE_YELLOW, $11
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_5D, BATTLEANIMFUNC_22, PAL_BATTLE_OB_YELLOW, $11
 
 ; ANIM_OBJ_4E
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $88, BATTLEANIMFRAMESET_5F, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $10
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $88, BATTLEANIMFRAMESET_5F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $10
 
 ; ANIM_OBJ_4F
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $88, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, PAL_BATTLE_YELLOW, $10
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $88, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, PAL_BATTLE_OB_YELLOW, $10
 
 ; ANIM_OBJ_50
-	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $18
+	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $18
 
 ; ANIM_OBJ_51
-	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $18
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $18
 
 ; ANIM_OBJ_CHICK
-	battleanimobj RELATIVE_X | X_FLIP, $50, BATTLEANIMFRAMESET_61, BATTLEANIMFUNC_23, PAL_BATTLE_YELLOW, $19
+	battleanimobj RELATIVE_X | X_FLIP, $50, BATTLEANIMFRAMESET_61, BATTLEANIMFUNC_23, PAL_BATTLE_OB_YELLOW, $19
 
 ; ANIM_OBJ_53
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_63, BATTLEANIMFUNC_24, PAL_BATTLE_GRAY, $19
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_63, BATTLEANIMFUNC_24, PAL_BATTLE_OB_GRAY, $19
 
 ; ANIM_OBJ_54
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_66, BATTLEANIMFUNC_25, PAL_BATTLE_GRAY, $19
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_66, BATTLEANIMFUNC_25, PAL_BATTLE_OB_GRAY, $19
 
 ; ANIM_OBJ_SKULL
-	battleanimobj RELATIVE_X, $50, BATTLEANIMFRAMESET_1C, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $0c
+	battleanimobj RELATIVE_X, $50, BATTLEANIMFRAMESET_1C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $0c
 
 ; ANIM_OBJ_56
-	battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_67, BATTLEANIMFUNC_26, PAL_BATTLE_BROWN, $1a
+	battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_67, BATTLEANIMFUNC_26, PAL_BATTLE_OB_BROWN, $1a
 
 ; ANIM_OBJ_57
-	battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_68, BATTLEANIMFUNC_00, PAL_BATTLE_BROWN, $1a
+	battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_68, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BROWN, $1a
 
 ; ANIM_OBJ_58
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_69, BATTLEANIMFUNC_01, PAL_BATTLE_GRAY, $1a
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_69, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, $1a
 
 ; ANIM_OBJ_PARALYZED
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_6D, BATTLEANIMFUNC_28, PAL_BATTLE_YELLOW, $19
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_6D, BATTLEANIMFUNC_28, PAL_BATTLE_OB_YELLOW, $19
 
 ; ANIM_OBJ_5A
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_6A, BATTLEANIMFUNC_27, PAL_BATTLE_GRAY, $1b
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_6A, BATTLEANIMFUNC_27, PAL_BATTLE_OB_GRAY, $1b
 
 ; ANIM_OBJ_HAZE
-	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_GRAY, $1c
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1c
 
 ; ANIM_OBJ_MIST
-	battleanimobj RELATIVE_X | X_FLIP, $48, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_GRAY, $1c
+	battleanimobj RELATIVE_X | X_FLIP, $48, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1c
 
 ; ANIM_OBJ_SMOG
-	battleanimobj RELATIVE_X | X_FLIP, $48, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_GRAY, $1c
+	battleanimobj RELATIVE_X | X_FLIP, $48, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1c
 
 ; ANIM_OBJ_POISON_GAS
-	battleanimobj RELATIVE_X | X_FLIP, $78, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_POISON_GAS, PAL_BATTLE_GRAY, $1c
+	battleanimobj RELATIVE_X | X_FLIP, $78, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_POISON_GAS, PAL_BATTLE_OB_GRAY, $1c
 
 ; ANIM_OBJ_HORN
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_71, BATTLEANIMFUNC_HORN, PAL_BATTLE_GRAY, $1d
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_71, BATTLEANIMFUNC_HORN, PAL_BATTLE_OB_GRAY, $1d
 
 ; ANIM_OBJ_60
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_72, BATTLEANIMFUNC_2C, PAL_BATTLE_GRAY, $1d
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_72, BATTLEANIMFUNC_2C, PAL_BATTLE_OB_GRAY, $1d
 
 ; ANIM_OBJ_61
-	battleanimobj RELATIVE_X, $48, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_2D, PAL_BATTLE_RED, $1e
+	battleanimobj RELATIVE_X, $48, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_2D, PAL_BATTLE_OB_RED, $1e
 
 ; ANIM_OBJ_62
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_06, PAL_BATTLE_GRAY, $15
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_06, PAL_BATTLE_OB_GRAY, $15
 
 ; ANIM_OBJ_63
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_75, BATTLEANIMFUNC_2E, PAL_BATTLE_BROWN, $19
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_75, BATTLEANIMFUNC_2E, PAL_BATTLE_OB_BROWN, $19
 
 ; ANIM_OBJ_64
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_02, PAL_BATTLE_GRAY, $14
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $14
 
 ; ANIM_OBJ_65
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_2F, PAL_BATTLE_GRAY, $11
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_GRAY, $11
 
 ; ANIM_OBJ_66
-	battleanimobj RELATIVE_X, $78, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_POISON_GAS, PAL_BATTLE_RED, $23
+	battleanimobj RELATIVE_X, $78, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_POISON_GAS, PAL_BATTLE_OB_RED, $23
 
 ; ANIM_OBJ_67
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_30, PAL_BATTLE_GRAY, $1f
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_30, PAL_BATTLE_OB_GRAY, $1f
 
 ; ANIM_OBJ_68
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_02, PAL_BATTLE_GRAY, $1f
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $1f
 
 ; ANIM_OBJ_69
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $1f
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f
 
 ; ANIM_OBJ_6A
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_08, PAL_BATTLE_YELLOW, $23
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_08, PAL_BATTLE_OB_YELLOW, $23
 
 ; ANIM_OBJ_6B
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_79, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $1f
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_79, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f
 
 ; ANIM_OBJ_6C
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, PAL_BATTLE_YELLOW, $11
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, PAL_BATTLE_OB_YELLOW, $11
 
 ; ANIM_OBJ_6D
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, PAL_BATTLE_YELLOW, $11
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, PAL_BATTLE_OB_YELLOW, $11
 
 ; ANIM_OBJ_SKY_ATTACK_FEAROW
-	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_7B, BATTLEANIMFUNC_32, PAL_BATTLE_GRAY, $20
+	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_7B, BATTLEANIMFUNC_32, PAL_BATTLE_OB_GRAY, $20
 
 ; ANIM_OBJ_LICK
-	battleanimobj RELATIVE_X | X_FLIP, $98, BATTLEANIMFRAMESET_7C, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $04
+	battleanimobj RELATIVE_X | X_FLIP, $98, BATTLEANIMFRAMESET_7C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $04
 
 ; ANIM_OBJ_WITHDRAW
-	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_7D, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $18
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_7D, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $18
 
 ; ANIM_OBJ_71
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_2F, PAL_BATTLE_BLUE, $0d
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_BLUE, $0d
 
 ; ANIM_OBJ_72
-	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_7E, BATTLEANIMFUNC_33, PAL_BATTLE_YELLOW, $12
+	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_7E, BATTLEANIMFUNC_33, PAL_BATTLE_OB_YELLOW, $12
 
 ; ANIM_OBJ_73
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_2F, PAL_BATTLE_GRAY, $08
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_GRAY, $08
 
 ; ANIM_OBJ_74
-	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_34, PAL_BATTLE_GRAY, $1c
+	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_34, PAL_BATTLE_OB_GRAY, $1c
 
 ; ANIM_OBJ_75
-	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_35, PAL_BATTLE_GRAY, $15
+	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_35, PAL_BATTLE_OB_GRAY, $15
 
 ; ANIM_OBJ_76
-	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_80, BATTLEANIMFUNC_33, PAL_BATTLE_GRAY, $14
+	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_80, BATTLEANIMFUNC_33, PAL_BATTLE_OB_GRAY, $14
 
 ; ANIM_OBJ_77
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_81, BATTLEANIMFUNC_37, PAL_BATTLE_GRAY, $11
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_81, BATTLEANIMFUNC_37, PAL_BATTLE_OB_GRAY, $11
 
 ; ANIM_OBJ_78
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_85, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $22
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_85, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $22
 
 ; ANIM_OBJ_79
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_86, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $22
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_86, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $22
 
 ; ANIM_OBJ_7A
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_87, BATTLEANIMFUNC_39, PAL_BATTLE_GRAY, $1f
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_87, BATTLEANIMFUNC_39, PAL_BATTLE_OB_GRAY, $1f
 
 ; ANIM_OBJ_7B
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_3A, PAL_BATTLE_YELLOW, $11
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_3A, PAL_BATTLE_OB_YELLOW, $11
 
 ; ANIM_OBJ_7C
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $05
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05
 
 ; ANIM_OBJ_7D
-	battleanimobj RELATIVE_X | X_FLIP | BEHIND_BG, $88, BATTLEANIMFRAMESET_88, BATTLEANIMFUNC_3B, PAL_BATTLE_BLUE, $13
+	battleanimobj RELATIVE_X | X_FLIP | BEHIND_BG, $88, BATTLEANIMFRAMESET_88, BATTLEANIMFUNC_3B, PAL_BATTLE_OB_BLUE, $13
 
 ; ANIM_OBJ_HEART
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_25, PAL_BATTLE_RED, $23
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_25, PAL_BATTLE_OB_RED, $23
 
 ; ANIM_OBJ_7F
-	battleanimobj RELATIVE_X, $98, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_34, PAL_BATTLE_RED, $03
+	battleanimobj RELATIVE_X, $98, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_34, PAL_BATTLE_OB_RED, $03
 
 ; ANIM_OBJ_80
-	battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_3C, PAL_BATTLE_RED, $03
+	battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_3C, PAL_BATTLE_OB_RED, $03
 
 ; ANIM_OBJ_COTTON_SPORE
-	battleanimobj RELATIVE_X | X_FLIP, $68, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_GRAY, $1f
+	battleanimobj RELATIVE_X | X_FLIP, $68, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1f
 
 ; ANIM_OBJ_82
-	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_8A, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $1f
+	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_8A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f
 
 ; ANIM_OBJ_83
-	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_8C, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $1f
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_8C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f
 
 ; ANIM_OBJ_84
-	battleanimobj RELATIVE_X | X_FLIP, $50, BATTLEANIMFRAMESET_8D, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $1f
+	battleanimobj RELATIVE_X | X_FLIP, $50, BATTLEANIMFRAMESET_8D, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $1f
 
 ; ANIM_OBJ_85
-	battleanimobj RELATIVE_X, $40, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_40, PAL_BATTLE_GRAY, $0e
+	battleanimobj RELATIVE_X, $40, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_40, PAL_BATTLE_OB_GRAY, $0e
 
 ; ANIM_OBJ_86
-	battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_8E, BATTLEANIMFUNC_41, PAL_BATTLE_RED, $1f
+	battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_8E, BATTLEANIMFUNC_41, PAL_BATTLE_OB_RED, $1f
 
 ; ANIM_OBJ_87
-	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_8F, BATTLEANIMFUNC_3E, PAL_BATTLE_GRAY, $1f
+	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_8F, BATTLEANIMFUNC_3E, PAL_BATTLE_OB_GRAY, $1f
 
 ; ANIM_OBJ_88
-	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_93, BATTLEANIMFUNC_3E, PAL_BATTLE_GRAY, $1f
+	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_93, BATTLEANIMFUNC_3E, PAL_BATTLE_OB_GRAY, $1f
 
 ; ANIM_OBJ_89
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_97, BATTLEANIMFUNC_3D, PAL_BATTLE_GRAY, $1f
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_97, BATTLEANIMFUNC_3D, PAL_BATTLE_OB_GRAY, $1f
 
 ; ANIM_OBJ_8A
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_3D, PAL_BATTLE_YELLOW, $23
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_3D, PAL_BATTLE_OB_YELLOW, $23
 
 ; ANIM_OBJ_8B
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_2E, PAL_BATTLE_GRAY, $19
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_2E, PAL_BATTLE_OB_GRAY, $19
 
 ; ANIM_OBJ_8C
-	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_02, PAL_BATTLE_GRAY, $15
+	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $15
 
 ; ANIM_OBJ_8D
-	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_35, PAL_BATTLE_RED, $19
+	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_35, PAL_BATTLE_OB_RED, $19
 
 ; ANIM_OBJ_SPIKES
-	battleanimobj RELATIVE_X | X_FLIP, $70, BATTLEANIMFRAMESET_8B, BATTLEANIMFUNC_3F, PAL_BATTLE_GRAY, $1f
+	battleanimobj RELATIVE_X | X_FLIP, $70, BATTLEANIMFRAMESET_8B, BATTLEANIMFUNC_3F, PAL_BATTLE_OB_GRAY, $1f
 
 ; ANIM_OBJ_8F
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_15, BATTLEANIMFUNC_08, PAL_BATTLE_GRAY, $0a
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_15, BATTLEANIMFUNC_08, PAL_BATTLE_OB_GRAY, $0a
 
 ; ANIM_OBJ_90
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_02, PAL_BATTLE_RED, $03
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_02, PAL_BATTLE_OB_RED, $03
 
 ; ANIM_OBJ_91
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_42, PAL_BATTLE_GRAY, $08
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_42, PAL_BATTLE_OB_GRAY, $08
 
 ; ANIM_OBJ_92
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_9A, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $1b
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_9A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1b
 
 ; ANIM_OBJ_93
-	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_9B, BATTLEANIMFUNC_35, PAL_BATTLE_RED, $23
+	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_9B, BATTLEANIMFUNC_35, PAL_BATTLE_OB_RED, $23
 
 ; ANIM_OBJ_94
-	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_23, PAL_BATTLE_GRAY, $25
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_23, PAL_BATTLE_OB_GRAY, $25
 
 ; ANIM_OBJ_95
-	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9D, BATTLEANIMFUNC_25, PAL_BATTLE_GRAY, $25
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9D, BATTLEANIMFUNC_25, PAL_BATTLE_OB_GRAY, $25
 
 ; ANIM_OBJ_96
-	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $25
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $25
 
 ; ANIM_OBJ_97
-	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9E, BATTLEANIMFUNC_00, PAL_BATTLE_BLUE, $25
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $25
 
 ; ANIM_OBJ_98
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLEANIMFRAMESET_9F, BATTLEANIMFUNC_3A, PAL_BATTLE_GREEN, $23
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLEANIMFRAMESET_9F, BATTLEANIMFUNC_3A, PAL_BATTLE_OB_GREEN, $23
 
 ; ANIM_OBJ_99
-	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_A0, BATTLEANIMFUNC_16, PAL_BATTLE_GRAY, $23
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_A0, BATTLEANIMFUNC_16, PAL_BATTLE_OB_GRAY, $23
 
 ; ANIM_OBJ_9A
-	battleanimobj RELATIVE_X | X_FLIP, $70, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_43, PAL_BATTLE_YELLOW, $23
+	battleanimobj RELATIVE_X | X_FLIP, $70, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_43, PAL_BATTLE_OB_YELLOW, $23
 
 ; ANIM_OBJ_9B
-	battleanimobj RELATIVE_X | X_FLIP, $c0, BATTLEANIMFRAMESET_A2, BATTLEANIMFUNC_01, PAL_BATTLE_GRAY, $25
+	battleanimobj RELATIVE_X | X_FLIP, $c0, BATTLEANIMFRAMESET_A2, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, $25
 
 ; ANIM_OBJ_9C
-	battleanimobj RELATIVE_X | X_FLIP, $40, BATTLEANIMFRAMESET_A3, BATTLEANIMFUNC_44, PAL_BATTLE_YELLOW, $24
+	battleanimobj RELATIVE_X | X_FLIP, $40, BATTLEANIMFRAMESET_A3, BATTLEANIMFUNC_44, PAL_BATTLE_OB_YELLOW, $24
 
 ; ANIM_OBJ_9D
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_A4, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $24
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_A4, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $24
 
 ; ANIM_OBJ_9E
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_A5, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $24
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_A5, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $24
 
 ; ANIM_OBJ_9F
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_45, PAL_BATTLE_RED, $12
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_45, PAL_BATTLE_OB_RED, $12
 
 ; ANIM_OBJ_A0
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_A6, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $02
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_A6, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02
 
 ; ANIM_OBJ_A1
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_A7, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $02
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_A7, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02
 
 ; ANIM_OBJ_A2
-	battleanimobj RELATIVE_X | X_FLIP, $00, BATTLEANIMFRAMESET_B4, BATTLEANIMFUNC_4A, PAL_BATTLE_BROWN, $0f
+	battleanimobj RELATIVE_X | X_FLIP, $00, BATTLEANIMFRAMESET_B4, BATTLEANIMFUNC_4A, PAL_BATTLE_OB_BROWN, $0f
 
 ; ANIM_OBJ_A3
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_A8, BATTLEANIMFUNC_02, PAL_BATTLE_YELLOW, $05
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_A8, BATTLEANIMFUNC_02, PAL_BATTLE_OB_YELLOW, $05
 
 ; ANIM_OBJ_A4
-	battleanimobj RELATIVE_X | X_FLIP, $40, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_11, PAL_BATTLE_GRAY, $25
+	battleanimobj RELATIVE_X | X_FLIP, $40, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_11, PAL_BATTLE_OB_GRAY, $25
 
 ; ANIM_OBJ_A5
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_A9, BATTLEANIMFUNC_46, PAL_BATTLE_GRAY, $23
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_A9, BATTLEANIMFUNC_46, PAL_BATTLE_OB_GRAY, $23
 
 ; ANIM_OBJ_PERISH_SONG
-	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_47, PAL_BATTLE_GRAY, $0e
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_47, PAL_BATTLE_OB_GRAY, $0e
 
 ; ANIM_OBJ_A7
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_AA, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $24
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_AA, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $24
 
 ; ANIM_OBJ_A8
-	battleanimobj RELATIVE_X | X_FLIP, $b8, BATTLEANIMFRAMESET_AB, BATTLEANIMFUNC_48, PAL_BATTLE_GRAY, $13
+	battleanimobj RELATIVE_X | X_FLIP, $b8, BATTLEANIMFRAMESET_AB, BATTLEANIMFUNC_48, PAL_BATTLE_OB_GRAY, $13
 
 ; ANIM_OBJ_A9
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_AC, BATTLEANIMFUNC_44, PAL_BATTLE_GRAY, $13
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_AC, BATTLEANIMFUNC_44, PAL_BATTLE_OB_GRAY, $13
 
 ; ANIM_OBJ_AA
-	battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $01
+	battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01
 
 ; ANIM_OBJ_AB
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_43, PAL_BATTLE_GRAY, $0e
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_43, PAL_BATTLE_OB_GRAY, $0e
 
 ; ANIM_OBJ_AC
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_AD, BATTLEANIMFUNC_00, PAL_BATTLE_BLUE, $17
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_AD, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $17
 
 ; ANIM_OBJ_AD
-	battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_AE, BATTLEANIMFUNC_49, PAL_BATTLE_GRAY, $01
+	battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_AE, BATTLEANIMFUNC_49, PAL_BATTLE_OB_GRAY, $01
 
 ; ANIM_OBJ_AE
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_AF, BATTLEANIMFUNC_01, PAL_BATTLE_YELLOW, $11
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_AF, BATTLEANIMFUNC_01, PAL_BATTLE_OB_YELLOW, $11
 
 ; ANIM_OBJ_AF
-	battleanimobj RELATIVE_X | X_FLIP, $00, BATTLEANIMFRAMESET_B0, BATTLEANIMFUNC_4A, PAL_BATTLE_GRAY, $04
+	battleanimobj RELATIVE_X | X_FLIP, $00, BATTLEANIMFRAMESET_B0, BATTLEANIMFUNC_4A, PAL_BATTLE_OB_GRAY, $04
 
 ; ANIM_OBJ_B0
-	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_4B, PAL_BATTLE_RED, $1c
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_4B, PAL_BATTLE_OB_RED, $1c
 
 ; ANIM_OBJ_B1
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_B1, BATTLEANIMFUNC_4C, PAL_BATTLE_GRAY, $19
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_B1, BATTLEANIMFUNC_4C, PAL_BATTLE_OB_GRAY, $19
 
 ; ANIM_OBJ_B2
-	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4D, PAL_BATTLE_BROWN, $09
+	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4D, PAL_BATTLE_OB_BROWN, $09
 
 ; ANIM_OBJ_B3
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_B3, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $27
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_B3, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $27
 
 ; ANIM_OBJ_B4
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_04, PAL_BATTLE_BLUE, $15
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_04, PAL_BATTLE_OB_BLUE, $15
 
 ; ANIM_OBJ_B5
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4E, PAL_BATTLE_BROWN, $09
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4E, PAL_BATTLE_OB_BROWN, $09
 
 ; ANIM_OBJ_FLOWER
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_08, PAL_BATTLE_RED, $1e
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_08, PAL_BATTLE_OB_RED, $1e
 
 ; ANIM_OBJ_COTTON
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_4F, PAL_BATTLE_RED, $1f
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_4F, PAL_BATTLE_OB_RED, $1f
 
 ; ANIM_OBJ_PLAYERFEETFOLLOW
-	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B5, BATTLEANIMFUNC_00, PAL_BATTLE_ENEMY, $28
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B5, BATTLEANIMFUNC_00, PAL_BATTLE_OB_ENEMY, $28
 
 ; ANIM_OBJ_ENEMYFEETFOLLOW
-	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B6, BATTLEANIMFUNC_00, PAL_BATTLE_PLAYER, $29
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B6, BATTLEANIMFUNC_00, PAL_BATTLE_OB_PLAYER, $29
 
 ; ANIM_OBJ_BA
-	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B7, BATTLEANIMFUNC_00, PAL_BATTLE_ENEMY, $28
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B7, BATTLEANIMFUNC_00, PAL_BATTLE_OB_ENEMY, $28
 
 ; ANIM_OBJ_BB
-	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B8, BATTLEANIMFUNC_00, PAL_BATTLE_PLAYER, $29
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B8, BATTLEANIMFUNC_00, PAL_BATTLE_OB_PLAYER, $29
 
 ; ccfbe
--- a/battle/objects/functions.asm
+++ b/battle/objects/functions.asm
@@ -424,7 +424,7 @@
 	ret
 
 GetBallAnimPal: ; cd249 (33:5249)
-	ld hl, .balls
+	ld hl, BallColors
 	ld a, [rSVBK]
 	push af
 	ld a, $1
@@ -448,22 +448,10 @@
 	add hl, bc
 	ld [hl], a
 	ret
-
 ; cd26c (33:526c)
-.balls
-	db MASTER_BALL, PAL_BATTLE_GREEN
-	db ULTRA_BALL,  PAL_BATTLE_YELLOW
-	db GREAT_BALL,  PAL_BATTLE_BLUE
-	db POKE_BALL,   PAL_BATTLE_RED
-	db HEAVY_BALL,  PAL_BATTLE_GRAY
-	db LEVEL_BALL,  PAL_BATTLE_BROWN
-	db LURE_BALL,   PAL_BATTLE_BLUE
-	db FAST_BALL,   PAL_BATTLE_BLUE
-	db FRIEND_BALL, PAL_BATTLE_YELLOW
-	db MOON_BALL,   PAL_BATTLE_GRAY
-	db LOVE_BALL,   PAL_BATTLE_RED
-	db -1,          PAL_BATTLE_GRAY
-; cd284
+
+INCLUDE "data/ball_colors.asm"
+
 BattleAnimFunction_10: ; cd284 (33:5284)
 	call BattleAnim_AnonJumptable
 .anon_dw
--- a/constants.asm
+++ b/constants.asm
@@ -7,7 +7,9 @@
 INCLUDE "constants/pokemon_constants.asm"
 INCLUDE "constants/type_constants.asm"
 INCLUDE "constants/move_constants.asm"
+INCLUDE "constants/effect_command_constants.asm"
 INCLUDE "constants/battle_constants.asm"
+INCLUDE "constants/map_dimension_constants.asm"
 INCLUDE "constants/map_constants.asm"
 INCLUDE "constants/map_setup_constants.asm"
 INCLUDE "constants/landmark_constants.asm"
@@ -21,14 +23,17 @@
 INCLUDE "constants/animation_constants.asm"
 INCLUDE "constants/phone_constants.asm"
 INCLUDE "constants/gfx_constants.asm"
+INCLUDE "constants/input_constants.asm"
 INCLUDE "constants/pokemon_data_constants.asm"
+INCLUDE "constants/serial_constants.asm"
 INCLUDE "constants/mobile_constants.asm"
 INCLUDE "constants/misc_constants.asm"
 INCLUDE "constants/std_constants.asm"
 INCLUDE "constants/deco_constants.asm"
 INCLUDE "constants/radio_constants.asm"
+INCLUDE "constants/npctrade_constants.asm"
 INCLUDE "constants/sprite_constants.asm"
-INCLUDE "constants/tilemap_constants.asm"
+INCLUDE "constants/tileset_constants.asm"
 INCLUDE "constants/cgb_constants.asm"
 INCLUDE "constants/battle_tower_constants.asm"
 INCLUDE "constants/cry_constants.asm"
--- a/constants/animation_constants.asm
+++ b/constants/animation_constants.asm
@@ -824,13 +824,24 @@
 	const BG_EFFECT_STRUCT_BATTLE_TURN
 	const BG_EFFECT_STRUCT_03
 
+; battle palettes
+	const_def
+	const PAL_BATTLE_BG_PLAYER    ; 0
+	const PAL_BATTLE_BG_ENEMY     ; 1
+	const PAL_BATTLE_BG_ENEMY_HP  ; 2
+	const PAL_BATTLE_BG_PLAYER_HP ; 3
+	const PAL_BATTLE_BG_EXP       ; 4
+	const PAL_BATTLE_BG_5         ; 5
+	const PAL_BATTLE_BG_6         ; 6
+	const PAL_BATTLE_BG_TEXT      ; 7
+
 ; animation object palettes
 	const_def
-	const PAL_BATTLE_ENEMY  ; 0
-	const PAL_BATTLE_PLAYER ; 1
-	const PAL_BATTLE_GRAY   ; 2
-	const PAL_BATTLE_YELLOW ; 3
-	const PAL_BATTLE_RED    ; 4
-	const PAL_BATTLE_GREEN  ; 5
-	const PAL_BATTLE_BLUE   ; 6
-	const PAL_BATTLE_BROWN  ; 7
+	const PAL_BATTLE_OB_ENEMY  ; 0
+	const PAL_BATTLE_OB_PLAYER ; 1
+	const PAL_BATTLE_OB_GRAY   ; 2
+	const PAL_BATTLE_OB_YELLOW ; 3
+	const PAL_BATTLE_OB_RED    ; 4
+	const PAL_BATTLE_OB_GREEN  ; 5
+	const PAL_BATTLE_OB_BLUE   ; 6
+	const PAL_BATTLE_OB_BROWN  ; 7
--- a/constants/audio_constants.asm
+++ b/constants/audio_constants.asm
@@ -1,4 +1,5 @@
 ; pitch
+; FrequencyTable indexes (see data/audio/notes.asm)
 	const_def
 	const __ ; 0
 	const C_ ; 1
--- a/constants/deco_constants.asm
+++ b/constants/deco_constants.asm
@@ -59,7 +59,7 @@
 	enum DECOFLAG_\1
 endm
 
-; decorations
+; decorations (see data/decoration_attribute.asm)
 const_value = 1
 __enum__ = 0
 	const BEDS
--- /dev/null
+++ b/constants/effect_command_constants.asm
@@ -1,0 +1,187 @@
+; BattleCommandPointers indexes (see battle/effect_commands.asm)
+
+command: macro
+	enum \1_command
+\1 equs "db \1_command"
+endm
+
+	enum_start 1
+	command checkturn               ; 01
+	command checkobedience          ; 02
+	command usedmovetext            ; 03
+	command doturn                  ; 04
+	command critical                ; 05
+	command damagestats             ; 06
+	command stab                    ; 07
+	command damagevariation         ; 08
+	command checkhit                ; 09
+	command lowersub                ; 0a
+	command hittargetnosub          ; 0b
+	command raisesub                ; 0c
+	command failuretext             ; 0d
+	command checkfaint              ; 0e
+	command criticaltext            ; 0f
+	command supereffectivetext      ; 10
+	command checkdestinybond        ; 11
+	command buildopponentrage       ; 12
+	command poisontarget            ; 13
+	command sleeptarget             ; 14
+	command draintarget             ; 15
+	command eatdream                ; 16
+	command burntarget              ; 17
+	command freezetarget            ; 18
+	command paralyzetarget          ; 19
+	command selfdestruct            ; 1a
+	command mirrormove              ; 1b
+	command statup                  ; 1c
+	command statdown                ; 1d
+	command payday                  ; 1e
+	command conversion              ; 1f
+	command resetstats              ; 20
+	command storeenergy             ; 21
+	command unleashenergy           ; 22
+	command forceswitch             ; 23
+	command endloop                 ; 24
+	command flinchtarget            ; 25
+	command ohko                    ; 26
+	command recoil                  ; 27
+	command mist                    ; 28
+	command focusenergy             ; 29
+	command confuse                 ; 2a
+	command confusetarget           ; 2b
+	command heal                    ; 2c
+	command transform               ; 2d
+	command screen                  ; 2e
+	command poison                  ; 2f
+	command paralyze                ; 30
+	command substitute              ; 31
+	command rechargenextturn        ; 32
+	command mimic                   ; 33
+	command metronome               ; 34
+	command leechseed               ; 35
+	command splash                  ; 36
+	command disable                 ; 37
+	command cleartext               ; 38
+	command charge                  ; 39
+	command checkcharge             ; 3a
+	command traptarget              ; 3b
+	command effect0x3c              ; 3c
+	command rampage                 ; 3d
+	command checkrampage            ; 3e
+	command constantdamage          ; 3f
+	command counter                 ; 40
+	command encore                  ; 41
+	command painsplit               ; 42
+	command snore                   ; 43
+	command conversion2             ; 44
+	command lockon                  ; 45
+	command sketch                  ; 46
+	command defrostopponent         ; 47
+	command sleeptalk               ; 48
+	command destinybond             ; 49
+	command spite                   ; 4a
+	command falseswipe              ; 4b
+	command healbell                ; 4c
+	command kingsrock               ; 4d
+	command triplekick              ; 4e
+	command kickcounter             ; 4f
+	command thief                   ; 50
+	command arenatrap               ; 51
+	command nightmare               ; 52
+	command defrost                 ; 53
+	command curse                   ; 54
+	command protect                 ; 55
+	command spikes                  ; 56
+	command foresight               ; 57
+	command perishsong              ; 58
+	command startsandstorm          ; 59
+	command endure                  ; 5a
+	command checkcurl               ; 5b
+	command rolloutpower            ; 5c
+	command effect0x5d              ; 5d
+	command furycutter              ; 5e
+	command attract                 ; 5f
+	command happinesspower          ; 60
+	command present                 ; 61
+	command damagecalc              ; 62
+	command frustrationpower        ; 63
+	command safeguard               ; 64
+	command checksafeguard          ; 65
+	command getmagnitude            ; 66
+	command batonpass               ; 67
+	command pursuit                 ; 68
+	command clearhazards            ; 69
+	command healmorn                ; 6a
+	command healday                 ; 6b
+	command healnite                ; 6c
+	command hiddenpower             ; 6d
+	command startrain               ; 6e
+	command startsun                ; 6f
+	command attackup                ; 70
+	command defenseup               ; 71
+	command speedup                 ; 72
+	command specialattackup         ; 73
+	command specialdefenseup        ; 74
+	command accuracyup              ; 75
+	command evasionup               ; 76
+	command attackup2               ; 77
+	command defenseup2              ; 78
+	command speedup2                ; 79
+	command specialattackup2        ; 7a
+	command specialdefenseup2       ; 7b
+	command accuracyup2             ; 7c
+	command evasionup2              ; 7d
+	command attackdown              ; 7e
+	command defensedown             ; 7f
+	command speeddown               ; 80
+	command specialattackdown       ; 81
+	command specialdefensedown      ; 82
+	command accuracydown            ; 83
+	command evasiondown             ; 84
+	command attackdown2             ; 85
+	command defensedown2            ; 86
+	command speeddown2              ; 87
+	command specialattackdown2      ; 88
+	command specialdefensedown2     ; 89
+	command accuracydown2           ; 8a
+	command evasiondown2            ; 8b
+	command statupmessage           ; 8c
+	command statdownmessage         ; 8d
+	command statupfailtext          ; 8e
+	command statdownfailtext        ; 8f
+	command effectchance            ; 90
+	command statdownanim            ; 91
+	command statupanim              ; 92
+	command switchturn              ; 93
+	command fakeout                 ; 94
+	command bellydrum               ; 95
+	command psychup                 ; 96
+	command rage                    ; 97
+	command doubleflyingdamage      ; 98
+	command doubleundergrounddamage ; 99
+	command mirrorcoat              ; 9a
+	command checkfuturesight        ; 9b
+	command futuresight             ; 9c
+	command doubleminimizedamage    ; 9d
+	command skipsuncharge           ; 9e
+	command thunderaccuracy         ; 9f
+	command teleport                ; a0
+	command beatup                  ; a1
+	command ragedamage              ; a2
+	command resettypematchup        ; a3
+	command allstatsup              ; a4
+	command effect0xa5              ; a5
+	command raisesubnoanim          ; a6
+	command lowersubnoanim          ; a7
+	command effect0xa8              ; a8
+	command clearmissdamage         ; a9
+	command movedelay               ; aa
+	command hittarget               ; ab
+	command tristatuschance         ; ac
+	command supereffectivelooptext  ; ad
+	command startloop               ; ae
+	command curl                    ; af
+
+	enum_start -1, -1
+	command endmove
+	command endturn
--- a/constants/engine_flags.asm
+++ b/constants/engine_flags.asm
@@ -6,11 +6,11 @@
 	const ENGINE_PHONE_CARD
 	const ENGINE_EXPN_CARD
 	const ENGINE_POKEGEAR
-; wDaycareMan
-	const ENGINE_DAYCARE_MAN_HAS_EGG
-	const ENGINE_DAYCARE_MAN_HAS_MON
-; wDaycareLady
-	const ENGINE_DAYCARE_LADY_HAS_MON
+; wDayCareMan
+	const ENGINE_DAY_CARE_MAN_HAS_EGG
+	const ENGINE_DAY_CARE_MAN_HAS_MON
+; wDayCareLady
+	const ENGINE_DAY_CARE_LADY_HAS_MON
 ; wMomSavingMoney
 	const ENGINE_MOM_SAVING_MONEY
 	const ENGINE_DST
--- a/constants/event_flags.asm
+++ b/constants/event_flags.asm
@@ -1836,10 +1836,10 @@
 	const EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_3
 	const EVENT_BLACKTHORN_CITY_SUPER_NERD_BLOCKS_GYM
 	const EVENT_BLACKTHORN_CITY_SUPER_NERD_DOES_NOT_BLOCK_GYM
-	const EVENT_DAYCARE_MAN_IN_DAYCARE
-	const EVENT_DAYCARE_MAN_ON_ROUTE_34
-	const EVENT_DAYCARE_MON_1
-	const EVENT_DAYCARE_MON_2
+	const EVENT_DAY_CARE_MAN_IN_DAY_CARE
+	const EVENT_DAY_CARE_MAN_ON_ROUTE_34
+	const EVENT_DAY_CARE_MON_1
+	const EVENT_DAY_CARE_MON_2
 	const EVENT_ILEX_FOREST_FARFETCHD
 	const EVENT_ROUTE_34_ILEX_FOREST_GATE_TEACHER_BEHIND_COUNTER
 	const EVENT_ROUTE_34_ILEX_FOREST_GATE_LASS
--- a/constants/gfx_constants.asm
+++ b/constants/gfx_constants.asm
@@ -1,3 +1,21 @@
-LEN_2BPP_TILE EQU 16
-LEN_1BPP_TILE EQU 8
-TILES_PER_FRAME EQU 6
+LEN_1BPP_TILE EQU 8 ; bytes
+LEN_2BPP_TILE EQU 16 ; bytes
+
+TILE_WIDTH EQU 8 ; pixels
+
+NUM_PAL_COLORS EQU 4
+
+SCREEN_WIDTH EQU 20 ; tiles
+SCREEN_HEIGHT EQU 18 ; tiles
+SCREEN_WIDTH_PX EQU SCREEN_WIDTH * TILE_WIDTH ; pixels
+SCREEN_HEIGHT_PX EQU SCREEN_HEIGHT * TILE_WIDTH ; pixels
+
+BG_MAP_WIDTH  EQU 32 ; tiles
+BG_MAP_HEIGHT EQU 32 ; tiles
+WMISC_WIDTH   EQU 6 * 4
+WMISC_HEIGHT  EQU 5 * 4
+
+HP_BAR_LENGTH EQU 6 ; tiles
+HP_BAR_LENGTH_PX EQU HP_BAR_LENGTH * TILE_WIDTH ; pixels
+EXP_BAR_LENGTH EQU 8 ; tiles
+EXP_BAR_LENGTH_PX EQU EXP_BAR_LENGTH * TILE_WIDTH ; pixels
--- /dev/null
+++ b/constants/input_constants.asm
@@ -1,0 +1,26 @@
+; joypad buttons
+	const_def
+	const A_BUTTON_F ; 0
+	const B_BUTTON_F ; 1
+	const SELECT_F   ; 2
+	const START_F    ; 3
+	const D_RIGHT_F  ; 4
+	const D_LEFT_F   ; 5
+	const D_UP_F     ; 6
+	const D_DOWN_F   ; 7
+
+NO_INPUT   EQU %00000000
+A_BUTTON   EQU 1 << A_BUTTON_F
+B_BUTTON   EQU 1 << B_BUTTON_F
+SELECT     EQU 1 << SELECT_F
+START      EQU 1 << START_F
+D_RIGHT    EQU 1 << D_RIGHT_F
+D_LEFT     EQU 1 << D_LEFT_F
+D_UP       EQU 1 << D_UP_F
+D_DOWN     EQU 1 << D_DOWN_F
+
+BUTTONS    EQU A_BUTTON | B_BUTTON | SELECT | START
+D_PAD      EQU D_RIGHT | D_LEFT | D_UP | D_DOWN
+
+R_DPAD     EQU %00100000
+R_BUTTONS  EQU %00010000
--- a/constants/item_constants.asm
+++ b/constants/item_constants.asm
@@ -197,6 +197,7 @@
 	const MIRAGE_MAIL  ; $BD
 	const ITEM_BE      ; $BE
 
+; see data/tmhm_moves.asm for moves
 	add_tm DYNAMICPUNCH ; $BF
 	add_tm HEADBUTT     ; $C0
 	add_tm CURSE        ; $C1
--- a/constants/landmark_constants.asm
+++ b/constants/landmark_constants.asm
@@ -1,4 +1,4 @@
-; Landmarks indexes (see engine/landmarks.asm)
+; Landmarks indexes (see data/landmarks.asm)
 	const_def
 
 ; Johto landmarks
--- a/constants/map_constants.asm
+++ b/constants/map_constants.asm
@@ -1,484 +1,8 @@
 GROUP_N_A  EQU -1
 MAP_N_A    EQU -1
-
 GROUP_NONE EQU 0
 MAP_NONE   EQU 0
 
-; map group ids
-; `newgroup` indexes are for:
-; - MapGroupPointers (see maps/map_headers.asm)
-; - OutdoorSprites (see engine/overworld.asm)
-; - MapGroupRoofs (see tilesets/roofs.asm)
-; `mapgroup` indexes are for the sub-tables of MapGroupPointers (see maps/map_headers.asm)
-	const_def
-
-	newgroup                                                    ;  1
-
-	mapgroup OLIVINE_POKECENTER_1F,                       4,  5 ;  1
-	mapgroup OLIVINE_GYM,                                 8,  5 ;  2
-	mapgroup OLIVINE_TIMS_HOUSE,                          4,  4 ;  3
-	mapgroup OLIVINE_HOUSE_BETA,                          4,  4 ;  4
-	mapgroup OLIVINE_PUNISHMENT_SPEECH_HOUSE,             4,  4 ;  5
-	mapgroup OLIVINE_GOOD_ROD_HOUSE,                      4,  4 ;  6
-	mapgroup OLIVINE_CAFE,                                4,  4 ;  7
-	mapgroup OLIVINE_MART,                                4,  6 ;  8
-	mapgroup ROUTE_38_ECRUTEAK_GATE,                      4,  5 ;  9
-	mapgroup ROUTE_39_BARN,                               4,  4 ; 10
-	mapgroup ROUTE_39_FARMHOUSE,                          4,  4 ; 11
-	mapgroup ROUTE_38,                                    9, 20 ; 12
-	mapgroup ROUTE_39,                                   18, 10 ; 13
-	mapgroup OLIVINE_CITY,                               18, 20 ; 14
-
-	newgroup                                                    ;  2
-
-	mapgroup MAHOGANY_RED_GYARADOS_SPEECH_HOUSE,          4,  4 ;  1
-	mapgroup MAHOGANY_GYM,                                9,  5 ;  2
-	mapgroup MAHOGANY_POKECENTER_1F,                      4,  5 ;  3
-	mapgroup ROUTE_42_ECRUTEAK_GATE,                      4,  5 ;  4
-	mapgroup ROUTE_42,                                    9, 30 ;  5
-	mapgroup ROUTE_44,                                    9, 30 ;  6
-	mapgroup MAHOGANY_TOWN,                               9, 10 ;  7
-
-	newgroup                                                    ;  3
-
-	mapgroup SPROUT_TOWER_1F,                             8, 10 ;  1
-	mapgroup SPROUT_TOWER_2F,                             8, 10 ;  2
-	mapgroup SPROUT_TOWER_3F,                             8, 10 ;  3
-	mapgroup TIN_TOWER_1F,                                9, 10 ;  4
-	mapgroup TIN_TOWER_2F,                                9, 10 ;  5
-	mapgroup TIN_TOWER_3F,                                9, 10 ;  6
-	mapgroup TIN_TOWER_4F,                                9, 10 ;  7
-	mapgroup TIN_TOWER_5F,                                9, 10 ;  8
-	mapgroup TIN_TOWER_6F,                                9, 10 ;  9
-	mapgroup TIN_TOWER_7F,                                9, 10 ; 10
-	mapgroup TIN_TOWER_8F,                                9, 10 ; 11
-	mapgroup TIN_TOWER_9F,                                9, 10 ; 12
-	mapgroup BURNED_TOWER_1F,                             9, 10 ; 13
-	mapgroup BURNED_TOWER_B1F,                            9, 10 ; 14
-	mapgroup NATIONAL_PARK,                              27, 20 ; 15
-	mapgroup NATIONAL_PARK_BUG_CONTEST,                  27, 20 ; 16
-	mapgroup RADIO_TOWER_1F,                              4,  9 ; 17
-	mapgroup RADIO_TOWER_2F,                              4,  9 ; 18
-	mapgroup RADIO_TOWER_3F,                              4,  9 ; 19
-	mapgroup RADIO_TOWER_4F,                              4,  9 ; 20
-	mapgroup RADIO_TOWER_5F,                              4,  9 ; 21
-	mapgroup RUINS_OF_ALPH_OUTSIDE,                      18, 10 ; 22
-	mapgroup RUINS_OF_ALPH_HO_OH_CHAMBER,                 5,  4 ; 23
-	mapgroup RUINS_OF_ALPH_KABUTO_CHAMBER,                5,  4 ; 24
-	mapgroup RUINS_OF_ALPH_OMANYTE_CHAMBER,               5,  4 ; 25
-	mapgroup RUINS_OF_ALPH_AERODACTYL_CHAMBER,            5,  4 ; 26
-	mapgroup RUINS_OF_ALPH_INNER_CHAMBER,                14, 10 ; 27
-	mapgroup RUINS_OF_ALPH_RESEARCH_CENTER,               4,  4 ; 28
-	mapgroup RUINS_OF_ALPH_HO_OH_ITEM_ROOM,               5,  4 ; 29
-	mapgroup RUINS_OF_ALPH_KABUTO_ITEM_ROOM,              5,  4 ; 30
-	mapgroup RUINS_OF_ALPH_OMANYTE_ITEM_ROOM,             5,  4 ; 31
-	mapgroup RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM,          5,  4 ; 32
-	mapgroup RUINS_OF_ALPH_HO_OH_WORD_ROOM,              12, 10 ; 33
-	mapgroup RUINS_OF_ALPH_KABUTO_WORD_ROOM,              7, 10 ; 34
-	mapgroup RUINS_OF_ALPH_OMANYTE_WORD_ROOM,             8, 10 ; 35
-	mapgroup RUINS_OF_ALPH_AERODACTYL_WORD_ROOM,          7, 10 ; 36
-	mapgroup UNION_CAVE_1F,                              18, 10 ; 37
-	mapgroup UNION_CAVE_B1F,                             18, 10 ; 38
-	mapgroup UNION_CAVE_B2F,                             18, 10 ; 39
-	mapgroup SLOWPOKE_WELL_B1F,                           9, 10 ; 40
-	mapgroup SLOWPOKE_WELL_B2F,                           9, 10 ; 41
-	mapgroup OLIVINE_LIGHTHOUSE_1F,                       9, 10 ; 42
-	mapgroup OLIVINE_LIGHTHOUSE_2F,                       9, 10 ; 43
-	mapgroup OLIVINE_LIGHTHOUSE_3F,                       9, 10 ; 44
-	mapgroup OLIVINE_LIGHTHOUSE_4F,                       9, 10 ; 45
-	mapgroup OLIVINE_LIGHTHOUSE_5F,                       9, 10 ; 46
-	mapgroup OLIVINE_LIGHTHOUSE_6F,                       9, 10 ; 47
-	mapgroup MAHOGANY_MART_1F,                            4,  4 ; 48
-	mapgroup TEAM_ROCKET_BASE_B1F,                        9, 15 ; 49
-	mapgroup TEAM_ROCKET_BASE_B2F,                        9, 15 ; 50
-	mapgroup TEAM_ROCKET_BASE_B3F,                        9, 15 ; 51
-	mapgroup ILEX_FOREST,                                27, 15 ; 52
-	mapgroup WAREHOUSE_ENTRANCE,                         18, 15 ; 53
-	mapgroup UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES,     18, 15 ; 54
-	mapgroup GOLDENROD_DEPT_STORE_B1F,                    9, 10 ; 55
-	mapgroup UNDERGROUND_WAREHOUSE,                       9, 10 ; 56
-	mapgroup MOUNT_MORTAR_1F_OUTSIDE,                    18, 20 ; 57
-	mapgroup MOUNT_MORTAR_1F_INSIDE,                     27, 20 ; 58
-	mapgroup MOUNT_MORTAR_2F_INSIDE,                     18, 20 ; 59
-	mapgroup MOUNT_MORTAR_B1F,                           18, 20 ; 60
-	mapgroup ICE_PATH_1F,                                18, 20 ; 61
-	mapgroup ICE_PATH_B1F,                               18, 10 ; 62
-	mapgroup ICE_PATH_B2F_MAHOGANY_SIDE,                  9, 10 ; 63
-	mapgroup ICE_PATH_B2F_BLACKTHORN_SIDE,                9,  5 ; 64
-	mapgroup ICE_PATH_B3F,                                9, 10 ; 65
-	mapgroup WHIRL_ISLAND_NW,                             9,  5 ; 66
-	mapgroup WHIRL_ISLAND_NE,                             9, 10 ; 67
-	mapgroup WHIRL_ISLAND_SW,                             9, 10 ; 68
-	mapgroup WHIRL_ISLAND_CAVE,                           9,  5 ; 69
-	mapgroup WHIRL_ISLAND_SE,                             9,  5 ; 70
-	mapgroup WHIRL_ISLAND_B1F,                           18, 20 ; 71
-	mapgroup WHIRL_ISLAND_B2F,                           18, 10 ; 72
-	mapgroup WHIRL_ISLAND_LUGIA_CHAMBER,                  9, 10 ; 73
-	mapgroup SILVER_CAVE_ROOM_1,                         18, 10 ; 74
-	mapgroup SILVER_CAVE_ROOM_2,                         18, 15 ; 75
-	mapgroup SILVER_CAVE_ROOM_3,                         18, 10 ; 76
-	mapgroup SILVER_CAVE_ITEM_ROOMS,                      9, 10 ; 77
-	mapgroup DARK_CAVE_VIOLET_ENTRANCE,                  18, 20 ; 78
-	mapgroup DARK_CAVE_BLACKTHORN_ENTRANCE,              18, 15 ; 79
-	mapgroup DRAGONS_DEN_1F,                              9,  5 ; 80
-	mapgroup DRAGONS_DEN_B1F,                            18, 20 ; 81
-	mapgroup DRAGON_SHRINE,                               5,  5 ; 82
-	mapgroup TOHJO_FALLS,                                 9, 15 ; 83
-	mapgroup DIGLETTS_CAVE,                              18, 10 ; 84
-	mapgroup MOUNT_MOON,                                  9, 15 ; 85
-	mapgroup UNDERGROUND,                                14,  3 ; 86
-	mapgroup ROCK_TUNNEL_1F,                             18, 15 ; 87
-	mapgroup ROCK_TUNNEL_B1F,                            18, 15 ; 88
-	mapgroup SAFARI_ZONE_FUCHSIA_GATE_BETA,               4,  5 ; 89
-	mapgroup SAFARI_ZONE_BETA,                           18, 10 ; 90
-	mapgroup VICTORY_ROAD,                               36, 10 ; 91
-
-	newgroup                                                    ;  4
-
-	mapgroup ECRUTEAK_HOUSE,                              9, 10 ;  1
-	mapgroup WISE_TRIOS_ROOM,                             4,  4 ;  2
-	mapgroup ECRUTEAK_POKECENTER_1F,                      4,  5 ;  3
-	mapgroup ECRUTEAK_LUGIA_SPEECH_HOUSE,                 4,  4 ;  4
-	mapgroup DANCE_THEATRE,                               7,  6 ;  5
-	mapgroup ECRUTEAK_MART,                               4,  6 ;  6
-	mapgroup ECRUTEAK_GYM,                                9,  5 ;  7
-	mapgroup ECRUTEAK_ITEMFINDER_HOUSE,                   4,  4 ;  8
-	mapgroup ECRUTEAK_CITY,                              18, 20 ;  9
-
-	newgroup                                                    ;  5
-
-	mapgroup BLACKTHORN_GYM_1F,                           9,  5 ;  1
-	mapgroup BLACKTHORN_GYM_2F,                           9,  5 ;  2
-	mapgroup BLACKTHORN_DRAGON_SPEECH_HOUSE,              4,  4 ;  3
-	mapgroup BLACKTHORN_EMYS_HOUSE,                       4,  4 ;  4
-	mapgroup BLACKTHORN_MART,                             4,  6 ;  5
-	mapgroup BLACKTHORN_POKECENTER_1F,                    4,  5 ;  6
-	mapgroup MOVE_DELETERS_HOUSE,                         4,  4 ;  7
-	mapgroup ROUTE_45,                                   45, 10 ;  8
-	mapgroup ROUTE_46,                                   18, 10 ;  9
-	mapgroup BLACKTHORN_CITY,                            18, 20 ; 10
-
-	newgroup                                                    ;  6
-
-	mapgroup CINNABAR_POKECENTER_1F,                      4,  5 ;  1
-	mapgroup CINNABAR_POKECENTER_2F_BETA,                 4,  8 ;  2
-	mapgroup ROUTE_19___FUCHSIA_GATE,                     4,  5 ;  3
-	mapgroup SEAFOAM_GYM,                                 4,  5 ;  4
-	mapgroup ROUTE_19,                                   18, 10 ;  5
-	mapgroup ROUTE_20,                                    9, 30 ;  6
-	mapgroup ROUTE_21,                                   18, 10 ;  7
-	mapgroup CINNABAR_ISLAND,                             9, 10 ;  8
-
-	newgroup                                                    ;  7
-
-	mapgroup CERULEAN_GYM_BADGE_SPEECH_HOUSE,             4,  4 ;  1
-	mapgroup CERULEAN_POLICE_STATION,                     4,  4 ;  2
-	mapgroup CERULEAN_TRADE_SPEECH_HOUSE,                 4,  4 ;  3
-	mapgroup CERULEAN_POKECENTER_1F,                      4,  5 ;  4
-	mapgroup CERULEAN_POKECENTER_2F_BETA,                 4,  8 ;  5
-	mapgroup CERULEAN_GYM,                                8,  5 ;  6
-	mapgroup CERULEAN_MART,                               4,  6 ;  7
-	mapgroup ROUTE_10_POKECENTER_1F,                      4,  5 ;  8
-	mapgroup ROUTE_10_POKECENTER_2F_BETA,                 4,  8 ;  9
-	mapgroup POWER_PLANT,                                 9, 10 ; 10
-	mapgroup BILLS_HOUSE,                                 4,  4 ; 11
-	mapgroup ROUTE_4,                                     9, 20 ; 12
-	mapgroup ROUTE_9,                                     9, 30 ; 13
-	mapgroup ROUTE_10_NORTH,                              9, 10 ; 14
-	mapgroup ROUTE_24,                                    9, 10 ; 15
-	mapgroup ROUTE_25,                                    9, 30 ; 16
-	mapgroup CERULEAN_CITY,                              18, 20 ; 17
-
-	newgroup                                                    ;  8
-
-	mapgroup AZALEA_POKECENTER_1F,                        4,  5 ;  1
-	mapgroup CHARCOAL_KILN,                               4,  4 ;  2
-	mapgroup AZALEA_MART,                                 4,  6 ;  3
-	mapgroup KURTS_HOUSE,                                 4,  8 ;  4
-	mapgroup AZALEA_GYM,                                  8,  5 ;  5
-	mapgroup ROUTE_33,                                    9, 10 ;  6
-	mapgroup AZALEA_TOWN,                                 9, 20 ;  7
-
-	newgroup                                                    ;  9
-
-	mapgroup LAKE_OF_RAGE_HIDDEN_POWER_HOUSE,             4,  4 ;  1
-	mapgroup LAKE_OF_RAGE_MAGIKARP_HOUSE,                 4,  4 ;  2
-	mapgroup ROUTE_43_MAHOGANY_GATE,                      4,  5 ;  3
-	mapgroup ROUTE_43_GATE,                               4,  5 ;  4
-	mapgroup ROUTE_43,                                   27, 10 ;  5
-	mapgroup LAKE_OF_RAGE,                               18, 20 ;  6
-
-	newgroup                                                    ; 10
-
-	mapgroup ROUTE_32,                                   45, 10 ;  1
-	mapgroup ROUTE_35,                                   18, 10 ;  2
-	mapgroup ROUTE_36,                                    9, 30 ;  3
-	mapgroup ROUTE_37,                                    9, 10 ;  4
-	mapgroup VIOLET_CITY,                                18, 20 ;  5
-	mapgroup VIOLET_MART,                                 4,  6 ;  6
-	mapgroup VIOLET_GYM,                                  8,  5 ;  7
-	mapgroup EARLS_POKEMON_ACADEMY,                       8,  4 ;  8
-	mapgroup VIOLET_NICKNAME_SPEECH_HOUSE,                4,  4 ;  9
-	mapgroup VIOLET_POKECENTER_1F,                        4,  5 ; 10
-	mapgroup VIOLET_ONIX_TRADE_HOUSE,                     4,  4 ; 11
-	mapgroup ROUTE_32_RUINS_OF_ALPH_GATE,                 4,  5 ; 12
-	mapgroup ROUTE_32_POKECENTER_1F,                      4,  5 ; 13
-	mapgroup ROUTE_35_GOLDENROD_GATE,                     4,  5 ; 14
-	mapgroup ROUTE_35_NATIONAL_PARK_GATE,                 4,  4 ; 15
-	mapgroup ROUTE_36_RUINS_OF_ALPH_GATE,                 4,  5 ; 16
-	mapgroup ROUTE_36_NATIONAL_PARK_GATE,                 4,  5 ; 17
-
-	newgroup                                                    ; 11
-
-	mapgroup ROUTE_34,                                   27, 10 ;  1
-	mapgroup GOLDENROD_CITY,                             18, 20 ;  2
-	mapgroup GOLDENROD_GYM,                               9, 10 ;  3
-	mapgroup GOLDENROD_BIKE_SHOP,                         4,  4 ;  4
-	mapgroup GOLDENROD_HAPPINESS_RATER,                   4,  4 ;  5
-	mapgroup GOLDENROD_BILLS_HOUSE,                       4,  4 ;  6
-	mapgroup GOLDENROD_MAGNET_TRAIN_STATION,              9, 10 ;  7
-	mapgroup GOLDENROD_FLOWER_SHOP,                       4,  4 ;  8
-	mapgroup GOLDENROD_PP_SPEECH_HOUSE,                   4,  4 ;  9
-	mapgroup GOLDENROD_NAME_RATER,                        4,  4 ; 10
-	mapgroup GOLDENROD_DEPT_STORE_1F,                     4,  8 ; 11
-	mapgroup GOLDENROD_DEPT_STORE_2F,                     4,  8 ; 12
-	mapgroup GOLDENROD_DEPT_STORE_3F,                     4,  8 ; 13
-	mapgroup GOLDENROD_DEPT_STORE_4F,                     4,  8 ; 14
-	mapgroup GOLDENROD_DEPT_STORE_5F,                     4,  8 ; 15
-	mapgroup GOLDENROD_DEPT_STORE_6F,                     4,  8 ; 16
-	mapgroup GOLDENROD_DEPT_STORE_ELEVATOR,               2,  2 ; 17
-	mapgroup GOLDENROD_DEPT_STORE_ROOF,                   4,  8 ; 18
-	mapgroup GOLDENROD_GAME_CORNER,                       7, 10 ; 19
-	mapgroup GOLDENROD_POKECENTER_1F,                     4,  5 ; 20
-	mapgroup GOLDENROD_POKECOM_CENTER_2F_MOBILE,         16, 16 ; 21
-	mapgroup ILEX_FOREST_AZALEA_GATE,                     4,  5 ; 22
-	mapgroup ROUTE_34_ILEX_FOREST_GATE,                   4,  5 ; 23
-	mapgroup DAYCARE,                                     4,  5 ; 24
-
-	newgroup                                                    ; 12
-
-	mapgroup ROUTE_6,                                     9, 10 ;  1
-	mapgroup ROUTE_11,                                    9, 20 ;  2
-	mapgroup VERMILION_CITY,                             18, 20 ;  3
-	mapgroup VERMILION_HOUSE_FISHING_SPEECH_HOUSE,        4,  4 ;  4
-	mapgroup VERMILION_POKECENTER_1F,                     4,  5 ;  5
-	mapgroup VERMILION_POKECENTER_2F_BETA,                4,  8 ;  6
-	mapgroup POKEMON_FAN_CLUB,                            4,  5 ;  7
-	mapgroup VERMILION_MAGNET_TRAIN_SPEECH_HOUSE,         4,  4 ;  8
-	mapgroup VERMILION_MART,                              4,  6 ;  9
-	mapgroup VERMILION_HOUSE_DIGLETTS_CAVE_SPEECH_HOUSE,  4,  4 ; 10
-	mapgroup VERMILION_GYM,                               9,  5 ; 11
-	mapgroup ROUTE_6_SAFFRON_GATE,                        4,  5 ; 12
-	mapgroup ROUTE_6_UNDERGROUND_ENTRANCE,                4,  4 ; 13
-
-	newgroup                                                    ; 13
-
-	mapgroup ROUTE_1,                                    18, 10 ;  1
-	mapgroup PALLET_TOWN,                                 9, 10 ;  2
-	mapgroup REDS_HOUSE_1F,                               4,  4 ;  3
-	mapgroup REDS_HOUSE_2F,                               4,  4 ;  4
-	mapgroup BLUES_HOUSE,                                 4,  4 ;  5
-	mapgroup OAKS_LAB,                                    6,  5 ;  6
-
-	newgroup                                                    ; 14
-
-	mapgroup ROUTE_3,                                     9, 30 ;  1
-	mapgroup PEWTER_CITY,                                18, 20 ;  2
-	mapgroup PEWTER_NIDORAN_SPEECH_HOUSE,                 4,  4 ;  3
-	mapgroup PEWTER_GYM,                                  7,  5 ;  4
-	mapgroup PEWTER_MART,                                 4,  6 ;  5
-	mapgroup PEWTER_POKECENTER_1F,                        4,  5 ;  6
-	mapgroup PEWTER_POKECENTER_2F_BETA,                   4,  8 ;  7
-	mapgroup PEWTER_SNOOZE_SPEECH_HOUSE,                  4,  4 ;  8
-
-	newgroup                                                    ; 15
-
-	mapgroup OLIVINE_PORT,                               18, 10 ;  1
-	mapgroup VERMILION_PORT,                             18, 10 ;  2
-	mapgroup FAST_SHIP_1F,                                9, 16 ;  3
-	mapgroup FAST_SHIP_CABINS_NNW_NNE_NE,                16,  4 ;  4
-	mapgroup FAST_SHIP_CABINS_SW_SSW_NW,                 16,  4 ;  5
-	mapgroup FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN,     17,  5 ;  6
-	mapgroup FAST_SHIP_B1F,                               8, 16 ;  7
-	mapgroup OLIVINE_PORT_PASSAGE,                        9, 10 ;  8
-	mapgroup VERMILION_PORT_PASSAGE,                      9, 10 ;  9
-	mapgroup MOUNT_MOON_SQUARE,                           9, 15 ; 10
-	mapgroup MOUNT_MOON_GIFT_SHOP,                        4,  4 ; 11
-	mapgroup TIN_TOWER_ROOF,                              9, 10 ; 12
-
-	newgroup                                                    ; 16
-
-	mapgroup ROUTE_23,                                    9, 10 ;  1
-	mapgroup INDIGO_PLATEAU_POKECENTER_1F,                7,  9 ;  2
-	mapgroup WILLS_ROOM,                                  9,  5 ;  3
-	mapgroup KOGAS_ROOM,                                  9,  5 ;  4
-	mapgroup BRUNOS_ROOM,                                 9,  5 ;  5
-	mapgroup KARENS_ROOM,                                 9,  5 ;  6
-	mapgroup LANCES_ROOM,                                12,  5 ;  7
-	mapgroup HALL_OF_FAME,                                7,  5 ;  8
-
-	newgroup                                                    ; 17
-
-	mapgroup ROUTE_13,                                    9, 30 ;  1
-	mapgroup ROUTE_14,                                   18, 10 ;  2
-	mapgroup ROUTE_15,                                    9, 20 ;  3
-	mapgroup ROUTE_18,                                    9, 10 ;  4
-	mapgroup FUCHSIA_CITY,                               18, 20 ;  5
-	mapgroup FUCHSIA_MART,                                4,  6 ;  6
-	mapgroup SAFARI_ZONE_MAIN_OFFICE,                     4,  4 ;  7
-	mapgroup FUCHSIA_GYM,                                 9,  5 ;  8
-	mapgroup FUCHSIA_BILL_SPEECH_HOUSE,                   4,  4 ;  9
-	mapgroup FUCHSIA_POKECENTER_1F,                       4,  5 ; 10
-	mapgroup FUCHSIA_POKECENTER_2F_BETA,                  4,  8 ; 11
-	mapgroup SAFARI_ZONE_WARDENS_HOME,                    4,  5 ; 12
-	mapgroup ROUTE_15_FUCHSIA_GATE,                       4,  5 ; 13
-
-	newgroup                                                    ; 18
-
-	mapgroup ROUTE_8,                                     9, 20 ;  1
-	mapgroup ROUTE_12,                                   27, 10 ;  2
-	mapgroup ROUTE_10_SOUTH,                              9, 10 ;  3
-	mapgroup LAVENDER_TOWN,                               9, 10 ;  4
-	mapgroup LAVENDER_POKECENTER_1F,                      4,  5 ;  5
-	mapgroup LAVENDER_POKECENTER_2F_BETA,                 4,  8 ;  6
-	mapgroup MR_FUJIS_HOUSE,                              4,  5 ;  7
-	mapgroup LAVENDER_TOWN_SPEECH_HOUSE,                  4,  4 ;  8
-	mapgroup LAVENDER_NAME_RATER,                         4,  4 ;  9
-	mapgroup LAVENDER_MART,                               4,  6 ; 10
-	mapgroup SOUL_HOUSE,                                  4,  5 ; 11
-	mapgroup LAV_RADIO_TOWER_1F,                          4, 10 ; 12
-	mapgroup ROUTE_8_SAFFRON_GATE,                        4,  5 ; 13
-	mapgroup ROUTE_12_SUPER_ROD_HOUSE,                    4,  4 ; 14
-
-	newgroup                                                    ; 19
-
-	mapgroup ROUTE_28,                                    9, 20 ;  1
-	mapgroup SILVER_CAVE_OUTSIDE,                        18, 20 ;  2
-	mapgroup SILVER_CAVE_POKECENTER_1F,                   4,  5 ;  3
-	mapgroup ROUTE_28_FAMOUS_SPEECH_HOUSE,                4,  4 ;  4
-
-	newgroup                                                    ; 20
-
-	mapgroup POKECENTER_2F,                               4,  8 ;  1
-	mapgroup TRADE_CENTER,                                4,  5 ;  2
-	mapgroup COLOSSEUM,                                   4,  5 ;  3
-	mapgroup TIME_CAPSULE,                                4,  5 ;  4
-	mapgroup MOBILE_TRADE_ROOM_MOBILE,                    4,  5 ;  5
-	mapgroup MOBILE_BATTLE_ROOM,                          4,  5 ;  6
-
-	newgroup                                                    ; 21
-
-	mapgroup ROUTE_7,                                     9, 10 ;  1
-	mapgroup ROUTE_16,                                    9, 10 ;  2
-	mapgroup ROUTE_17,                                   45, 10 ;  3
-	mapgroup CELADON_CITY,                               18, 20 ;  4
-	mapgroup CELADON_DEPT_STORE_1F,                       4,  8 ;  5
-	mapgroup CELADON_DEPT_STORE_2F,                       4,  8 ;  6
-	mapgroup CELADON_DEPT_STORE_3F,                       4,  8 ;  7
-	mapgroup CELADON_DEPT_STORE_4F,                       4,  8 ;  8
-	mapgroup CELADON_DEPT_STORE_5F,                       4,  8 ;  9
-	mapgroup CELADON_DEPT_STORE_6F,                       4,  8 ; 10
-	mapgroup CELADON_DEPT_STORE_ELEVATOR,                 2,  2 ; 11
-	mapgroup CELADON_MANSION_1F,                          5,  4 ; 12
-	mapgroup CELADON_MANSION_2F,                          5,  4 ; 13
-	mapgroup CELADON_MANSION_3F,                          5,  4 ; 14
-	mapgroup CELADON_MANSION_ROOF,                        5,  4 ; 15
-	mapgroup CELADON_MANSION_ROOF_HOUSE,                  4,  4 ; 16
-	mapgroup CELADON_POKECENTER_1F,                       4,  5 ; 17
-	mapgroup CELADON_POKECENTER_2F_BETA,                  4,  8 ; 18
-	mapgroup CELADON_GAME_CORNER,                         7, 10 ; 19
-	mapgroup CELADON_GAME_CORNER_PRIZE_ROOM,              3,  3 ; 20
-	mapgroup CELADON_GYM,                                 9,  5 ; 21
-	mapgroup CELADON_CAFE,                                4,  6 ; 22
-	mapgroup ROUTE_16_FUCHSIA_SPEECH_HOUSE,               4,  4 ; 23
-	mapgroup ROUTE_16_GATE,                               4,  5 ; 24
-	mapgroup ROUTE_7_SAFFRON_GATE,                        4,  5 ; 25
-	mapgroup ROUTE_17_18_GATE,                            4,  5 ; 26
-
-	newgroup                                                    ; 22
-
-	mapgroup ROUTE_40,                                   18, 10 ;  1
-	mapgroup ROUTE_41,                                   27, 25 ;  2
-	mapgroup CIANWOOD_CITY,                              27, 15 ;  3
-	mapgroup MANIAS_HOUSE,                                4,  4 ;  4
-	mapgroup CIANWOOD_GYM,                                9,  5 ;  5
-	mapgroup CIANWOOD_POKECENTER_1F,                      4,  5 ;  6
-	mapgroup CIANWOOD_PHARMACY,                           4,  4 ;  7
-	mapgroup CIANWOOD_CITY_PHOTO_STUDIO,                  4,  4 ;  8
-	mapgroup CIANWOOD_LUGIA_SPEECH_HOUSE,                 4,  4 ;  9
-	mapgroup POKE_SEERS_HOUSE,                            4,  4 ; 10
-	mapgroup BATTLE_TOWER_1F,                             5,  8 ; 11
-	mapgroup BATTLE_TOWER_BATTLE_ROOM,                    4,  4 ; 12
-	mapgroup BATTLE_TOWER_ELEVATOR,                       2,  2 ; 13
-	mapgroup BATTLE_TOWER_HALLWAY,                        2, 11 ; 14
-	mapgroup ROUTE_40_BATTLE_TOWER_GATE,                  4,  5 ; 15
-	mapgroup BATTLE_TOWER_OUTSIDE,                       14, 10 ; 16
-
-	newgroup                                                    ; 23
-
-	mapgroup ROUTE_2,                                    27, 10 ;  1
-	mapgroup ROUTE_22,                                    9, 20 ;  2
-	mapgroup VIRIDIAN_CITY,                              18, 20 ;  3
-	mapgroup VIRIDIAN_GYM,                                9,  5 ;  4
-	mapgroup VIRIDIAN_NICKNAME_SPEECH_HOUSE,              4,  4 ;  5
-	mapgroup TRAINER_HOUSE_1F,                            7,  5 ;  6
-	mapgroup TRAINER_HOUSE_B1F,                           8,  5 ;  7
-	mapgroup VIRIDIAN_MART,                               4,  6 ;  8
-	mapgroup VIRIDIAN_POKECENTER_1F,                      4,  5 ;  9
-	mapgroup VIRIDIAN_POKECENTER_2F_BETA,                 4,  8 ; 10
-	mapgroup ROUTE_2_NUGGET_SPEECH_HOUSE,                 4,  4 ; 11
-	mapgroup ROUTE_2_GATE,                                4,  5 ; 12
-	mapgroup VICTORY_ROAD_GATE,                           9, 10 ; 13
-
-	newgroup                                                    ; 24
-
-	mapgroup ROUTE_26,                                   54, 10 ;  1
-	mapgroup ROUTE_27,                                    9, 40 ;  2
-	mapgroup ROUTE_29,                                    9, 30 ;  3
-	mapgroup NEW_BARK_TOWN,                               9, 10 ;  4
-	mapgroup ELMS_LAB,                                    6,  5 ;  5
-	mapgroup KRISS_HOUSE_1F,                              4,  5 ;  6
-	mapgroup KRISS_HOUSE_2F,                              3,  4 ;  7
-	mapgroup KRISS_NEIGHBORS_HOUSE,                       4,  4 ;  8
-	mapgroup ELMS_HOUSE,                                  4,  4 ;  9
-	mapgroup ROUTE_26_HEAL_SPEECH_HOUSE,                  4,  4 ; 10
-	mapgroup ROUTE_26_DAY_OF_WEEK_SIBLINGS_HOUSE,         4,  4 ; 11
-	mapgroup ROUTE_27_SANDSTORM_HOUSE,                    4,  4 ; 12
-	mapgroup ROUTE_29_46_GATE,                            4,  5 ; 13
-
-	newgroup                                                    ; 25
-
-	mapgroup ROUTE_5,                                     9, 10 ;  1
-	mapgroup SAFFRON_CITY,                               18, 20 ;  2
-	mapgroup FIGHTING_DOJO,                               6,  5 ;  3
-	mapgroup SAFFRON_GYM,                                 9, 10 ;  4
-	mapgroup SAFFRON_MART,                                4,  6 ;  5
-	mapgroup SAFFRON_POKECENTER_1F,                       4,  5 ;  6
-	mapgroup SAFFRON_POKECENTER_2F_BETA,                  4,  8 ;  7
-	mapgroup MR_PSYCHICS_HOUSE,                           4,  4 ;  8
-	mapgroup SAFFRON_TRAIN_STATION,                       9, 10 ;  9
-	mapgroup SILPH_CO_1F,                                 4,  8 ; 10
-	mapgroup COPYCATS_HOUSE_1F,                           4,  4 ; 11
-	mapgroup COPYCATS_HOUSE_2F,                           3,  5 ; 12
-	mapgroup ROUTE_5_UNDERGROUND_ENTRANCE,                4,  4 ; 13
-	mapgroup ROUTE_5_SAFFRON_CITY_GATE,                   4,  5 ; 14
-	mapgroup ROUTE_5_CLEANSE_TAG_SPEECH_HOUSE,            4,  4 ; 15
-
-	newgroup                                                    ; 26
-
-	mapgroup ROUTE_30,                                   27, 10 ;  1
-	mapgroup ROUTE_31,                                    9, 20 ;  2
-	mapgroup CHERRYGROVE_CITY,                            9, 20 ;  3
-	mapgroup CHERRYGROVE_MART,                            4,  6 ;  4
-	mapgroup CHERRYGROVE_POKECENTER_1F,                   4,  5 ;  5
-	mapgroup CHERRYGROVE_GYM_SPEECH_HOUSE,                4,  4 ;  6
-	mapgroup GUIDE_GENTS_HOUSE,                           4,  4 ;  7
-	mapgroup CHERRYGROVE_EVOLUTION_SPEECH_HOUSE,          4,  4 ;  8
-	mapgroup ROUTE_30_BERRY_SPEECH_HOUSE,                 4,  4 ;  9
-	mapgroup MR_POKEMONS_HOUSE,                           4,  4 ; 10
-	mapgroup ROUTE_31_VIOLET_GATE,                        4,  5 ; 11
-
-
 ; map permissions (wPermission)
 const_value SET 1
 	const TOWN
@@ -603,7 +127,7 @@
 EMOTE_OBJECT EQU 7
 
 
-; SpawnPoints indexes (see engine/spawn_points.asm)
+; SpawnPoints indexes (see data/spawn_points.asm)
 const_value = -1
 	const SPAWN_N_A
 	const SPAWN_HOME
@@ -679,7 +203,7 @@
 	const EMOTE_GRASS_RUSTLE ; 11
 EMOTE_MEM EQU -1
 
-; FruitTreeItems indexes (see engine/fruit_trees.asm)
+; FruitTreeItems indexes (see data/fruit_tree_items.asm)
 const_value SET 1
 	const FRUITTREE_ROUTE_29      ; 01
 	const FRUITTREE_ROUTE_30_1    ; 02
@@ -716,22 +240,22 @@
 ; elevator floors
 ; used by `elevfloor`
 	const_def
-	const _B4F
-	const _B3F
-	const _B2F
-	const _B1F
-	const _1F
-	const _2F
-	const _3F
-	const _4F
-	const _5F
-	const _6F
-	const _7F
-	const _8F
-	const _9F
-	const _10F
-	const _11F
-	const _ROOF
+	const FLOOR_B4F
+	const FLOOR_B3F
+	const FLOOR_B2F
+	const FLOOR_B1F
+	const FLOOR_1F
+	const FLOOR_2F
+	const FLOOR_3F
+	const FLOOR_4F
+	const FLOOR_5F
+	const FLOOR_6F
+	const FLOOR_7F
+	const FLOOR_8F
+	const FLOOR_9F
+	const FLOOR_10F
+	const FLOOR_11F
+	const FLOOR_ROOF
 
 ; command queue members
 CMDQUEUE_TYPE  EQU 0
--- /dev/null
+++ b/constants/map_dimension_constants.asm
@@ -1,0 +1,473 @@
+; map group ids
+; `newgroup` indexes are for:
+; - MapGroupPointers (see maps/map_headers.asm)
+; - OutdoorSprites (see data/outdoor_sprites.asm)
+; - MapGroupRoofs (see data/mapgroup_roofs.asm)
+; `mapgroup` indexes are for the sub-tables of MapGroupPointers (see maps/map_headers.asm)
+	const_def
+
+	newgroup                                                    ;  1
+
+	mapgroup OLIVINE_POKECENTER_1F,                       4,  5 ;  1
+	mapgroup OLIVINE_GYM,                                 8,  5 ;  2
+	mapgroup OLIVINE_TIMS_HOUSE,                          4,  4 ;  3
+	mapgroup OLIVINE_HOUSE_BETA,                          4,  4 ;  4
+	mapgroup OLIVINE_PUNISHMENT_SPEECH_HOUSE,             4,  4 ;  5
+	mapgroup OLIVINE_GOOD_ROD_HOUSE,                      4,  4 ;  6
+	mapgroup OLIVINE_CAFE,                                4,  4 ;  7
+	mapgroup OLIVINE_MART,                                4,  6 ;  8
+	mapgroup ROUTE_38_ECRUTEAK_GATE,                      4,  5 ;  9
+	mapgroup ROUTE_39_BARN,                               4,  4 ; 10
+	mapgroup ROUTE_39_FARMHOUSE,                          4,  4 ; 11
+	mapgroup ROUTE_38,                                    9, 20 ; 12
+	mapgroup ROUTE_39,                                   18, 10 ; 13
+	mapgroup OLIVINE_CITY,                               18, 20 ; 14
+
+	newgroup                                                    ;  2
+
+	mapgroup MAHOGANY_RED_GYARADOS_SPEECH_HOUSE,          4,  4 ;  1
+	mapgroup MAHOGANY_GYM,                                9,  5 ;  2
+	mapgroup MAHOGANY_POKECENTER_1F,                      4,  5 ;  3
+	mapgroup ROUTE_42_ECRUTEAK_GATE,                      4,  5 ;  4
+	mapgroup ROUTE_42,                                    9, 30 ;  5
+	mapgroup ROUTE_44,                                    9, 30 ;  6
+	mapgroup MAHOGANY_TOWN,                               9, 10 ;  7
+
+	newgroup                                                    ;  3
+
+	mapgroup SPROUT_TOWER_1F,                             8, 10 ;  1
+	mapgroup SPROUT_TOWER_2F,                             8, 10 ;  2
+	mapgroup SPROUT_TOWER_3F,                             8, 10 ;  3
+	mapgroup TIN_TOWER_1F,                                9, 10 ;  4
+	mapgroup TIN_TOWER_2F,                                9, 10 ;  5
+	mapgroup TIN_TOWER_3F,                                9, 10 ;  6
+	mapgroup TIN_TOWER_4F,                                9, 10 ;  7
+	mapgroup TIN_TOWER_5F,                                9, 10 ;  8
+	mapgroup TIN_TOWER_6F,                                9, 10 ;  9
+	mapgroup TIN_TOWER_7F,                                9, 10 ; 10
+	mapgroup TIN_TOWER_8F,                                9, 10 ; 11
+	mapgroup TIN_TOWER_9F,                                9, 10 ; 12
+	mapgroup BURNED_TOWER_1F,                             9, 10 ; 13
+	mapgroup BURNED_TOWER_B1F,                            9, 10 ; 14
+	mapgroup NATIONAL_PARK,                              27, 20 ; 15
+	mapgroup NATIONAL_PARK_BUG_CONTEST,                  27, 20 ; 16
+	mapgroup RADIO_TOWER_1F,                              4,  9 ; 17
+	mapgroup RADIO_TOWER_2F,                              4,  9 ; 18
+	mapgroup RADIO_TOWER_3F,                              4,  9 ; 19
+	mapgroup RADIO_TOWER_4F,                              4,  9 ; 20
+	mapgroup RADIO_TOWER_5F,                              4,  9 ; 21
+	mapgroup RUINS_OF_ALPH_OUTSIDE,                      18, 10 ; 22
+	mapgroup RUINS_OF_ALPH_HO_OH_CHAMBER,                 5,  4 ; 23
+	mapgroup RUINS_OF_ALPH_KABUTO_CHAMBER,                5,  4 ; 24
+	mapgroup RUINS_OF_ALPH_OMANYTE_CHAMBER,               5,  4 ; 25
+	mapgroup RUINS_OF_ALPH_AERODACTYL_CHAMBER,            5,  4 ; 26
+	mapgroup RUINS_OF_ALPH_INNER_CHAMBER,                14, 10 ; 27
+	mapgroup RUINS_OF_ALPH_RESEARCH_CENTER,               4,  4 ; 28
+	mapgroup RUINS_OF_ALPH_HO_OH_ITEM_ROOM,               5,  4 ; 29
+	mapgroup RUINS_OF_ALPH_KABUTO_ITEM_ROOM,              5,  4 ; 30
+	mapgroup RUINS_OF_ALPH_OMANYTE_ITEM_ROOM,             5,  4 ; 31
+	mapgroup RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM,          5,  4 ; 32
+	mapgroup RUINS_OF_ALPH_HO_OH_WORD_ROOM,              12, 10 ; 33
+	mapgroup RUINS_OF_ALPH_KABUTO_WORD_ROOM,              7, 10 ; 34
+	mapgroup RUINS_OF_ALPH_OMANYTE_WORD_ROOM,             8, 10 ; 35
+	mapgroup RUINS_OF_ALPH_AERODACTYL_WORD_ROOM,          7, 10 ; 36
+	mapgroup UNION_CAVE_1F,                              18, 10 ; 37
+	mapgroup UNION_CAVE_B1F,                             18, 10 ; 38
+	mapgroup UNION_CAVE_B2F,                             18, 10 ; 39
+	mapgroup SLOWPOKE_WELL_B1F,                           9, 10 ; 40
+	mapgroup SLOWPOKE_WELL_B2F,                           9, 10 ; 41
+	mapgroup OLIVINE_LIGHTHOUSE_1F,                       9, 10 ; 42
+	mapgroup OLIVINE_LIGHTHOUSE_2F,                       9, 10 ; 43
+	mapgroup OLIVINE_LIGHTHOUSE_3F,                       9, 10 ; 44
+	mapgroup OLIVINE_LIGHTHOUSE_4F,                       9, 10 ; 45
+	mapgroup OLIVINE_LIGHTHOUSE_5F,                       9, 10 ; 46
+	mapgroup OLIVINE_LIGHTHOUSE_6F,                       9, 10 ; 47
+	mapgroup MAHOGANY_MART_1F,                            4,  4 ; 48
+	mapgroup TEAM_ROCKET_BASE_B1F,                        9, 15 ; 49
+	mapgroup TEAM_ROCKET_BASE_B2F,                        9, 15 ; 50
+	mapgroup TEAM_ROCKET_BASE_B3F,                        9, 15 ; 51
+	mapgroup ILEX_FOREST,                                27, 15 ; 52
+	mapgroup WAREHOUSE_ENTRANCE,                         18, 15 ; 53
+	mapgroup UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES,     18, 15 ; 54
+	mapgroup GOLDENROD_DEPT_STORE_B1F,                    9, 10 ; 55
+	mapgroup UNDERGROUND_WAREHOUSE,                       9, 10 ; 56
+	mapgroup MOUNT_MORTAR_1F_OUTSIDE,                    18, 20 ; 57
+	mapgroup MOUNT_MORTAR_1F_INSIDE,                     27, 20 ; 58
+	mapgroup MOUNT_MORTAR_2F_INSIDE,                     18, 20 ; 59
+	mapgroup MOUNT_MORTAR_B1F,                           18, 20 ; 60
+	mapgroup ICE_PATH_1F,                                18, 20 ; 61
+	mapgroup ICE_PATH_B1F,                               18, 10 ; 62
+	mapgroup ICE_PATH_B2F_MAHOGANY_SIDE,                  9, 10 ; 63
+	mapgroup ICE_PATH_B2F_BLACKTHORN_SIDE,                9,  5 ; 64
+	mapgroup ICE_PATH_B3F,                                9, 10 ; 65
+	mapgroup WHIRL_ISLAND_NW,                             9,  5 ; 66
+	mapgroup WHIRL_ISLAND_NE,                             9, 10 ; 67
+	mapgroup WHIRL_ISLAND_SW,                             9, 10 ; 68
+	mapgroup WHIRL_ISLAND_CAVE,                           9,  5 ; 69
+	mapgroup WHIRL_ISLAND_SE,                             9,  5 ; 70
+	mapgroup WHIRL_ISLAND_B1F,                           18, 20 ; 71
+	mapgroup WHIRL_ISLAND_B2F,                           18, 10 ; 72
+	mapgroup WHIRL_ISLAND_LUGIA_CHAMBER,                  9, 10 ; 73
+	mapgroup SILVER_CAVE_ROOM_1,                         18, 10 ; 74
+	mapgroup SILVER_CAVE_ROOM_2,                         18, 15 ; 75
+	mapgroup SILVER_CAVE_ROOM_3,                         18, 10 ; 76
+	mapgroup SILVER_CAVE_ITEM_ROOMS,                      9, 10 ; 77
+	mapgroup DARK_CAVE_VIOLET_ENTRANCE,                  18, 20 ; 78
+	mapgroup DARK_CAVE_BLACKTHORN_ENTRANCE,              18, 15 ; 79
+	mapgroup DRAGONS_DEN_1F,                              9,  5 ; 80
+	mapgroup DRAGONS_DEN_B1F,                            18, 20 ; 81
+	mapgroup DRAGON_SHRINE,                               5,  5 ; 82
+	mapgroup TOHJO_FALLS,                                 9, 15 ; 83
+	mapgroup DIGLETTS_CAVE,                              18, 10 ; 84
+	mapgroup MOUNT_MOON,                                  9, 15 ; 85
+	mapgroup UNDERGROUND,                                14,  3 ; 86
+	mapgroup ROCK_TUNNEL_1F,                             18, 15 ; 87
+	mapgroup ROCK_TUNNEL_B1F,                            18, 15 ; 88
+	mapgroup SAFARI_ZONE_FUCHSIA_GATE_BETA,               4,  5 ; 89
+	mapgroup SAFARI_ZONE_BETA,                           18, 10 ; 90
+	mapgroup VICTORY_ROAD,                               36, 10 ; 91
+
+	newgroup                                                    ;  4
+
+	mapgroup ECRUTEAK_HOUSE,                              9, 10 ;  1
+	mapgroup WISE_TRIOS_ROOM,                             4,  4 ;  2
+	mapgroup ECRUTEAK_POKECENTER_1F,                      4,  5 ;  3
+	mapgroup ECRUTEAK_LUGIA_SPEECH_HOUSE,                 4,  4 ;  4
+	mapgroup DANCE_THEATRE,                               7,  6 ;  5
+	mapgroup ECRUTEAK_MART,                               4,  6 ;  6
+	mapgroup ECRUTEAK_GYM,                                9,  5 ;  7
+	mapgroup ECRUTEAK_ITEMFINDER_HOUSE,                   4,  4 ;  8
+	mapgroup ECRUTEAK_CITY,                              18, 20 ;  9
+
+	newgroup                                                    ;  5
+
+	mapgroup BLACKTHORN_GYM_1F,                           9,  5 ;  1
+	mapgroup BLACKTHORN_GYM_2F,                           9,  5 ;  2
+	mapgroup BLACKTHORN_DRAGON_SPEECH_HOUSE,              4,  4 ;  3
+	mapgroup BLACKTHORN_EMYS_HOUSE,                       4,  4 ;  4
+	mapgroup BLACKTHORN_MART,                             4,  6 ;  5
+	mapgroup BLACKTHORN_POKECENTER_1F,                    4,  5 ;  6
+	mapgroup MOVE_DELETERS_HOUSE,                         4,  4 ;  7
+	mapgroup ROUTE_45,                                   45, 10 ;  8
+	mapgroup ROUTE_46,                                   18, 10 ;  9
+	mapgroup BLACKTHORN_CITY,                            18, 20 ; 10
+
+	newgroup                                                    ;  6
+
+	mapgroup CINNABAR_POKECENTER_1F,                      4,  5 ;  1
+	mapgroup CINNABAR_POKECENTER_2F_BETA,                 4,  8 ;  2
+	mapgroup ROUTE_19___FUCHSIA_GATE,                     4,  5 ;  3
+	mapgroup SEAFOAM_GYM,                                 4,  5 ;  4
+	mapgroup ROUTE_19,                                   18, 10 ;  5
+	mapgroup ROUTE_20,                                    9, 30 ;  6
+	mapgroup ROUTE_21,                                   18, 10 ;  7
+	mapgroup CINNABAR_ISLAND,                             9, 10 ;  8
+
+	newgroup                                                    ;  7
+
+	mapgroup CERULEAN_GYM_BADGE_SPEECH_HOUSE,             4,  4 ;  1
+	mapgroup CERULEAN_POLICE_STATION,                     4,  4 ;  2
+	mapgroup CERULEAN_TRADE_SPEECH_HOUSE,                 4,  4 ;  3
+	mapgroup CERULEAN_POKECENTER_1F,                      4,  5 ;  4
+	mapgroup CERULEAN_POKECENTER_2F_BETA,                 4,  8 ;  5
+	mapgroup CERULEAN_GYM,                                8,  5 ;  6
+	mapgroup CERULEAN_MART,                               4,  6 ;  7
+	mapgroup ROUTE_10_POKECENTER_1F,                      4,  5 ;  8
+	mapgroup ROUTE_10_POKECENTER_2F_BETA,                 4,  8 ;  9
+	mapgroup POWER_PLANT,                                 9, 10 ; 10
+	mapgroup BILLS_HOUSE,                                 4,  4 ; 11
+	mapgroup ROUTE_4,                                     9, 20 ; 12
+	mapgroup ROUTE_9,                                     9, 30 ; 13
+	mapgroup ROUTE_10_NORTH,                              9, 10 ; 14
+	mapgroup ROUTE_24,                                    9, 10 ; 15
+	mapgroup ROUTE_25,                                    9, 30 ; 16
+	mapgroup CERULEAN_CITY,                              18, 20 ; 17
+
+	newgroup                                                    ;  8
+
+	mapgroup AZALEA_POKECENTER_1F,                        4,  5 ;  1
+	mapgroup CHARCOAL_KILN,                               4,  4 ;  2
+	mapgroup AZALEA_MART,                                 4,  6 ;  3
+	mapgroup KURTS_HOUSE,                                 4,  8 ;  4
+	mapgroup AZALEA_GYM,                                  8,  5 ;  5
+	mapgroup ROUTE_33,                                    9, 10 ;  6
+	mapgroup AZALEA_TOWN,                                 9, 20 ;  7
+
+	newgroup                                                    ;  9
+
+	mapgroup LAKE_OF_RAGE_HIDDEN_POWER_HOUSE,             4,  4 ;  1
+	mapgroup LAKE_OF_RAGE_MAGIKARP_HOUSE,                 4,  4 ;  2
+	mapgroup ROUTE_43_MAHOGANY_GATE,                      4,  5 ;  3
+	mapgroup ROUTE_43_GATE,                               4,  5 ;  4
+	mapgroup ROUTE_43,                                   27, 10 ;  5
+	mapgroup LAKE_OF_RAGE,                               18, 20 ;  6
+
+	newgroup                                                    ; 10
+
+	mapgroup ROUTE_32,                                   45, 10 ;  1
+	mapgroup ROUTE_35,                                   18, 10 ;  2
+	mapgroup ROUTE_36,                                    9, 30 ;  3
+	mapgroup ROUTE_37,                                    9, 10 ;  4
+	mapgroup VIOLET_CITY,                                18, 20 ;  5
+	mapgroup VIOLET_MART,                                 4,  6 ;  6
+	mapgroup VIOLET_GYM,                                  8,  5 ;  7
+	mapgroup EARLS_POKEMON_ACADEMY,                       8,  4 ;  8
+	mapgroup VIOLET_NICKNAME_SPEECH_HOUSE,                4,  4 ;  9
+	mapgroup VIOLET_POKECENTER_1F,                        4,  5 ; 10
+	mapgroup VIOLET_ONIX_TRADE_HOUSE,                     4,  4 ; 11
+	mapgroup ROUTE_32_RUINS_OF_ALPH_GATE,                 4,  5 ; 12
+	mapgroup ROUTE_32_POKECENTER_1F,                      4,  5 ; 13
+	mapgroup ROUTE_35_GOLDENROD_GATE,                     4,  5 ; 14
+	mapgroup ROUTE_35_NATIONAL_PARK_GATE,                 4,  4 ; 15
+	mapgroup ROUTE_36_RUINS_OF_ALPH_GATE,                 4,  5 ; 16
+	mapgroup ROUTE_36_NATIONAL_PARK_GATE,                 4,  5 ; 17
+
+	newgroup                                                    ; 11
+
+	mapgroup ROUTE_34,                                   27, 10 ;  1
+	mapgroup GOLDENROD_CITY,                             18, 20 ;  2
+	mapgroup GOLDENROD_GYM,                               9, 10 ;  3
+	mapgroup GOLDENROD_BIKE_SHOP,                         4,  4 ;  4
+	mapgroup GOLDENROD_HAPPINESS_RATER,                   4,  4 ;  5
+	mapgroup GOLDENROD_BILLS_HOUSE,                       4,  4 ;  6
+	mapgroup GOLDENROD_MAGNET_TRAIN_STATION,              9, 10 ;  7
+	mapgroup GOLDENROD_FLOWER_SHOP,                       4,  4 ;  8
+	mapgroup GOLDENROD_PP_SPEECH_HOUSE,                   4,  4 ;  9
+	mapgroup GOLDENROD_NAME_RATER,                        4,  4 ; 10
+	mapgroup GOLDENROD_DEPT_STORE_1F,                     4,  8 ; 11
+	mapgroup GOLDENROD_DEPT_STORE_2F,                     4,  8 ; 12
+	mapgroup GOLDENROD_DEPT_STORE_3F,                     4,  8 ; 13
+	mapgroup GOLDENROD_DEPT_STORE_4F,                     4,  8 ; 14
+	mapgroup GOLDENROD_DEPT_STORE_5F,                     4,  8 ; 15
+	mapgroup GOLDENROD_DEPT_STORE_6F,                     4,  8 ; 16
+	mapgroup GOLDENROD_DEPT_STORE_ELEVATOR,               2,  2 ; 17
+	mapgroup GOLDENROD_DEPT_STORE_ROOF,                   4,  8 ; 18
+	mapgroup GOLDENROD_GAME_CORNER,                       7, 10 ; 19
+	mapgroup GOLDENROD_POKECENTER_1F,                     4,  5 ; 20
+	mapgroup GOLDENROD_POKECOM_CENTER_2F_MOBILE,         16, 16 ; 21
+	mapgroup ILEX_FOREST_AZALEA_GATE,                     4,  5 ; 22
+	mapgroup ROUTE_34_ILEX_FOREST_GATE,                   4,  5 ; 23
+	mapgroup DAY_CARE,                                    4,  5 ; 24
+
+	newgroup                                                    ; 12
+
+	mapgroup ROUTE_6,                                     9, 10 ;  1
+	mapgroup ROUTE_11,                                    9, 20 ;  2
+	mapgroup VERMILION_CITY,                             18, 20 ;  3
+	mapgroup VERMILION_HOUSE_FISHING_SPEECH_HOUSE,        4,  4 ;  4
+	mapgroup VERMILION_POKECENTER_1F,                     4,  5 ;  5
+	mapgroup VERMILION_POKECENTER_2F_BETA,                4,  8 ;  6
+	mapgroup POKEMON_FAN_CLUB,                            4,  5 ;  7
+	mapgroup VERMILION_MAGNET_TRAIN_SPEECH_HOUSE,         4,  4 ;  8
+	mapgroup VERMILION_MART,                              4,  6 ;  9
+	mapgroup VERMILION_HOUSE_DIGLETTS_CAVE_SPEECH_HOUSE,  4,  4 ; 10
+	mapgroup VERMILION_GYM,                               9,  5 ; 11
+	mapgroup ROUTE_6_SAFFRON_GATE,                        4,  5 ; 12
+	mapgroup ROUTE_6_UNDERGROUND_ENTRANCE,                4,  4 ; 13
+
+	newgroup                                                    ; 13
+
+	mapgroup ROUTE_1,                                    18, 10 ;  1
+	mapgroup PALLET_TOWN,                                 9, 10 ;  2
+	mapgroup REDS_HOUSE_1F,                               4,  4 ;  3
+	mapgroup REDS_HOUSE_2F,                               4,  4 ;  4
+	mapgroup BLUES_HOUSE,                                 4,  4 ;  5
+	mapgroup OAKS_LAB,                                    6,  5 ;  6
+
+	newgroup                                                    ; 14
+
+	mapgroup ROUTE_3,                                     9, 30 ;  1
+	mapgroup PEWTER_CITY,                                18, 20 ;  2
+	mapgroup PEWTER_NIDORAN_SPEECH_HOUSE,                 4,  4 ;  3
+	mapgroup PEWTER_GYM,                                  7,  5 ;  4
+	mapgroup PEWTER_MART,                                 4,  6 ;  5
+	mapgroup PEWTER_POKECENTER_1F,                        4,  5 ;  6
+	mapgroup PEWTER_POKECENTER_2F_BETA,                   4,  8 ;  7
+	mapgroup PEWTER_SNOOZE_SPEECH_HOUSE,                  4,  4 ;  8
+
+	newgroup                                                    ; 15
+
+	mapgroup OLIVINE_PORT,                               18, 10 ;  1
+	mapgroup VERMILION_PORT,                             18, 10 ;  2
+	mapgroup FAST_SHIP_1F,                                9, 16 ;  3
+	mapgroup FAST_SHIP_CABINS_NNW_NNE_NE,                16,  4 ;  4
+	mapgroup FAST_SHIP_CABINS_SW_SSW_NW,                 16,  4 ;  5
+	mapgroup FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN,     17,  5 ;  6
+	mapgroup FAST_SHIP_B1F,                               8, 16 ;  7
+	mapgroup OLIVINE_PORT_PASSAGE,                        9, 10 ;  8
+	mapgroup VERMILION_PORT_PASSAGE,                      9, 10 ;  9
+	mapgroup MOUNT_MOON_SQUARE,                           9, 15 ; 10
+	mapgroup MOUNT_MOON_GIFT_SHOP,                        4,  4 ; 11
+	mapgroup TIN_TOWER_ROOF,                              9, 10 ; 12
+
+	newgroup                                                    ; 16
+
+	mapgroup ROUTE_23,                                    9, 10 ;  1
+	mapgroup INDIGO_PLATEAU_POKECENTER_1F,                7,  9 ;  2
+	mapgroup WILLS_ROOM,                                  9,  5 ;  3
+	mapgroup KOGAS_ROOM,                                  9,  5 ;  4
+	mapgroup BRUNOS_ROOM,                                 9,  5 ;  5
+	mapgroup KARENS_ROOM,                                 9,  5 ;  6
+	mapgroup LANCES_ROOM,                                12,  5 ;  7
+	mapgroup HALL_OF_FAME,                                7,  5 ;  8
+
+	newgroup                                                    ; 17
+
+	mapgroup ROUTE_13,                                    9, 30 ;  1
+	mapgroup ROUTE_14,                                   18, 10 ;  2
+	mapgroup ROUTE_15,                                    9, 20 ;  3
+	mapgroup ROUTE_18,                                    9, 10 ;  4
+	mapgroup FUCHSIA_CITY,                               18, 20 ;  5
+	mapgroup FUCHSIA_MART,                                4,  6 ;  6
+	mapgroup SAFARI_ZONE_MAIN_OFFICE,                     4,  4 ;  7
+	mapgroup FUCHSIA_GYM,                                 9,  5 ;  8
+	mapgroup FUCHSIA_BILL_SPEECH_HOUSE,                   4,  4 ;  9
+	mapgroup FUCHSIA_POKECENTER_1F,                       4,  5 ; 10
+	mapgroup FUCHSIA_POKECENTER_2F_BETA,                  4,  8 ; 11
+	mapgroup SAFARI_ZONE_WARDENS_HOME,                    4,  5 ; 12
+	mapgroup ROUTE_15_FUCHSIA_GATE,                       4,  5 ; 13
+
+	newgroup                                                    ; 18
+
+	mapgroup ROUTE_8,                                     9, 20 ;  1
+	mapgroup ROUTE_12,                                   27, 10 ;  2
+	mapgroup ROUTE_10_SOUTH,                              9, 10 ;  3
+	mapgroup LAVENDER_TOWN,                               9, 10 ;  4
+	mapgroup LAVENDER_POKECENTER_1F,                      4,  5 ;  5
+	mapgroup LAVENDER_POKECENTER_2F_BETA,                 4,  8 ;  6
+	mapgroup MR_FUJIS_HOUSE,                              4,  5 ;  7
+	mapgroup LAVENDER_TOWN_SPEECH_HOUSE,                  4,  4 ;  8
+	mapgroup LAVENDER_NAME_RATER,                         4,  4 ;  9
+	mapgroup LAVENDER_MART,                               4,  6 ; 10
+	mapgroup SOUL_HOUSE,                                  4,  5 ; 11
+	mapgroup LAV_RADIO_TOWER_1F,                          4, 10 ; 12
+	mapgroup ROUTE_8_SAFFRON_GATE,                        4,  5 ; 13
+	mapgroup ROUTE_12_SUPER_ROD_HOUSE,                    4,  4 ; 14
+
+	newgroup                                                    ; 19
+
+	mapgroup ROUTE_28,                                    9, 20 ;  1
+	mapgroup SILVER_CAVE_OUTSIDE,                        18, 20 ;  2
+	mapgroup SILVER_CAVE_POKECENTER_1F,                   4,  5 ;  3
+	mapgroup ROUTE_28_FAMOUS_SPEECH_HOUSE,                4,  4 ;  4
+
+	newgroup                                                    ; 20
+
+	mapgroup POKECENTER_2F,                               4,  8 ;  1
+	mapgroup TRADE_CENTER,                                4,  5 ;  2
+	mapgroup COLOSSEUM,                                   4,  5 ;  3
+	mapgroup TIME_CAPSULE,                                4,  5 ;  4
+	mapgroup MOBILE_TRADE_ROOM_MOBILE,                    4,  5 ;  5
+	mapgroup MOBILE_BATTLE_ROOM,                          4,  5 ;  6
+
+	newgroup                                                    ; 21
+
+	mapgroup ROUTE_7,                                     9, 10 ;  1
+	mapgroup ROUTE_16,                                    9, 10 ;  2
+	mapgroup ROUTE_17,                                   45, 10 ;  3
+	mapgroup CELADON_CITY,                               18, 20 ;  4
+	mapgroup CELADON_DEPT_STORE_1F,                       4,  8 ;  5
+	mapgroup CELADON_DEPT_STORE_2F,                       4,  8 ;  6
+	mapgroup CELADON_DEPT_STORE_3F,                       4,  8 ;  7
+	mapgroup CELADON_DEPT_STORE_4F,                       4,  8 ;  8
+	mapgroup CELADON_DEPT_STORE_5F,                       4,  8 ;  9
+	mapgroup CELADON_DEPT_STORE_6F,                       4,  8 ; 10
+	mapgroup CELADON_DEPT_STORE_ELEVATOR,                 2,  2 ; 11
+	mapgroup CELADON_MANSION_1F,                          5,  4 ; 12
+	mapgroup CELADON_MANSION_2F,                          5,  4 ; 13
+	mapgroup CELADON_MANSION_3F,                          5,  4 ; 14
+	mapgroup CELADON_MANSION_ROOF,                        5,  4 ; 15
+	mapgroup CELADON_MANSION_ROOF_HOUSE,                  4,  4 ; 16
+	mapgroup CELADON_POKECENTER_1F,                       4,  5 ; 17
+	mapgroup CELADON_POKECENTER_2F_BETA,                  4,  8 ; 18
+	mapgroup CELADON_GAME_CORNER,                         7, 10 ; 19
+	mapgroup CELADON_GAME_CORNER_PRIZE_ROOM,              3,  3 ; 20
+	mapgroup CELADON_GYM,                                 9,  5 ; 21
+	mapgroup CELADON_CAFE,                                4,  6 ; 22
+	mapgroup ROUTE_16_FUCHSIA_SPEECH_HOUSE,               4,  4 ; 23
+	mapgroup ROUTE_16_GATE,                               4,  5 ; 24
+	mapgroup ROUTE_7_SAFFRON_GATE,                        4,  5 ; 25
+	mapgroup ROUTE_17_18_GATE,                            4,  5 ; 26
+
+	newgroup                                                    ; 22
+
+	mapgroup ROUTE_40,                                   18, 10 ;  1
+	mapgroup ROUTE_41,                                   27, 25 ;  2
+	mapgroup CIANWOOD_CITY,                              27, 15 ;  3
+	mapgroup MANIAS_HOUSE,                                4,  4 ;  4
+	mapgroup CIANWOOD_GYM,                                9,  5 ;  5
+	mapgroup CIANWOOD_POKECENTER_1F,                      4,  5 ;  6
+	mapgroup CIANWOOD_PHARMACY,                           4,  4 ;  7
+	mapgroup CIANWOOD_CITY_PHOTO_STUDIO,                  4,  4 ;  8
+	mapgroup CIANWOOD_LUGIA_SPEECH_HOUSE,                 4,  4 ;  9
+	mapgroup POKE_SEERS_HOUSE,                            4,  4 ; 10
+	mapgroup BATTLE_TOWER_1F,                             5,  8 ; 11
+	mapgroup BATTLE_TOWER_BATTLE_ROOM,                    4,  4 ; 12
+	mapgroup BATTLE_TOWER_ELEVATOR,                       2,  2 ; 13
+	mapgroup BATTLE_TOWER_HALLWAY,                        2, 11 ; 14
+	mapgroup ROUTE_40_BATTLE_TOWER_GATE,                  4,  5 ; 15
+	mapgroup BATTLE_TOWER_OUTSIDE,                       14, 10 ; 16
+
+	newgroup                                                    ; 23
+
+	mapgroup ROUTE_2,                                    27, 10 ;  1
+	mapgroup ROUTE_22,                                    9, 20 ;  2
+	mapgroup VIRIDIAN_CITY,                              18, 20 ;  3
+	mapgroup VIRIDIAN_GYM,                                9,  5 ;  4
+	mapgroup VIRIDIAN_NICKNAME_SPEECH_HOUSE,              4,  4 ;  5
+	mapgroup TRAINER_HOUSE_1F,                            7,  5 ;  6
+	mapgroup TRAINER_HOUSE_B1F,                           8,  5 ;  7
+	mapgroup VIRIDIAN_MART,                               4,  6 ;  8
+	mapgroup VIRIDIAN_POKECENTER_1F,                      4,  5 ;  9
+	mapgroup VIRIDIAN_POKECENTER_2F_BETA,                 4,  8 ; 10
+	mapgroup ROUTE_2_NUGGET_SPEECH_HOUSE,                 4,  4 ; 11
+	mapgroup ROUTE_2_GATE,                                4,  5 ; 12
+	mapgroup VICTORY_ROAD_GATE,                           9, 10 ; 13
+
+	newgroup                                                    ; 24
+
+	mapgroup ROUTE_26,                                   54, 10 ;  1
+	mapgroup ROUTE_27,                                    9, 40 ;  2
+	mapgroup ROUTE_29,                                    9, 30 ;  3
+	mapgroup NEW_BARK_TOWN,                               9, 10 ;  4
+	mapgroup ELMS_LAB,                                    6,  5 ;  5
+	mapgroup KRISS_HOUSE_1F,                              4,  5 ;  6
+	mapgroup KRISS_HOUSE_2F,                              3,  4 ;  7
+	mapgroup KRISS_NEIGHBORS_HOUSE,                       4,  4 ;  8
+	mapgroup ELMS_HOUSE,                                  4,  4 ;  9
+	mapgroup ROUTE_26_HEAL_SPEECH_HOUSE,                  4,  4 ; 10
+	mapgroup ROUTE_26_DAY_OF_WEEK_SIBLINGS_HOUSE,         4,  4 ; 11
+	mapgroup ROUTE_27_SANDSTORM_HOUSE,                    4,  4 ; 12
+	mapgroup ROUTE_29_46_GATE,                            4,  5 ; 13
+
+	newgroup                                                    ; 25
+
+	mapgroup ROUTE_5,                                     9, 10 ;  1
+	mapgroup SAFFRON_CITY,                               18, 20 ;  2
+	mapgroup FIGHTING_DOJO,                               6,  5 ;  3
+	mapgroup SAFFRON_GYM,                                 9, 10 ;  4
+	mapgroup SAFFRON_MART,                                4,  6 ;  5
+	mapgroup SAFFRON_POKECENTER_1F,                       4,  5 ;  6
+	mapgroup SAFFRON_POKECENTER_2F_BETA,                  4,  8 ;  7
+	mapgroup MR_PSYCHICS_HOUSE,                           4,  4 ;  8
+	mapgroup SAFFRON_TRAIN_STATION,                       9, 10 ;  9
+	mapgroup SILPH_CO_1F,                                 4,  8 ; 10
+	mapgroup COPYCATS_HOUSE_1F,                           4,  4 ; 11
+	mapgroup COPYCATS_HOUSE_2F,                           3,  5 ; 12
+	mapgroup ROUTE_5_UNDERGROUND_ENTRANCE,                4,  4 ; 13
+	mapgroup ROUTE_5_SAFFRON_CITY_GATE,                   4,  5 ; 14
+	mapgroup ROUTE_5_CLEANSE_TAG_SPEECH_HOUSE,            4,  4 ; 15
+
+	newgroup                                                    ; 26
+
+	mapgroup ROUTE_30,                                   27, 10 ;  1
+	mapgroup ROUTE_31,                                    9, 20 ;  2
+	mapgroup CHERRYGROVE_CITY,                            9, 20 ;  3
+	mapgroup CHERRYGROVE_MART,                            4,  6 ;  4
+	mapgroup CHERRYGROVE_POKECENTER_1F,                   4,  5 ;  5
+	mapgroup CHERRYGROVE_GYM_SPEECH_HOUSE,                4,  4 ;  6
+	mapgroup GUIDE_GENTS_HOUSE,                           4,  4 ;  7
+	mapgroup CHERRYGROVE_EVOLUTION_SPEECH_HOUSE,          4,  4 ;  8
+	mapgroup ROUTE_30_BERRY_SPEECH_HOUSE,                 4,  4 ;  9
+	mapgroup MR_POKEMONS_HOUSE,                           4,  4 ; 10
+	mapgroup ROUTE_31_VIOLET_GATE,                        4,  5 ; 11
--- a/constants/misc_constants.asm
+++ b/constants/misc_constants.asm
@@ -25,6 +25,7 @@
 MOVE_NAME_LENGTH   EQU 13
 ITEM_NAME_LENGTH   EQU 13
 TRAINER_CLASS_NAME_LENGTH EQU 13
+NAME_LENGTH_JAPANESE EQU 6
 
 ; GetName types (see home.asm)
 PKMN_NAME     EQU 1
@@ -37,71 +38,12 @@
 ; broken ptr  EQU 8
 
 
-; boxes
-MONS_PER_BOX EQU 20
-NUM_BOXES    EQU 14
-
-; hall of fame
-HOF_MON_LENGTH = 1 + 2 + 2 + 1 + (PKMN_NAME_LENGTH +- 1) ; species, id, dvs, level, nick
-HOF_LENGTH = 1 + HOF_MON_LENGTH * PARTY_LENGTH + 1 ; win count, party, terminator
-NUM_HOF_TEAMS = 30
-
-
-; joypad
-
-	const_def
-	const A_BUTTON_F
-	const B_BUTTON_F
-	const SELECT_F
-	const START_F
-	const D_RIGHT_F
-	const D_LEFT_F
-	const D_UP_F
-	const D_DOWN_F
-
-NO_INPUT   EQU %00000000
-A_BUTTON   EQU 1 << A_BUTTON_F
-B_BUTTON   EQU 1 << B_BUTTON_F
-SELECT     EQU 1 << SELECT_F
-START      EQU 1 << START_F
-D_RIGHT    EQU 1 << D_RIGHT_F
-D_LEFT     EQU 1 << D_LEFT_F
-D_UP       EQU 1 << D_UP_F
-D_DOWN     EQU 1 << D_DOWN_F
-
-BUTTONS    EQU A_BUTTON | B_BUTTON | SELECT | START
-D_PAD      EQU D_RIGHT | D_LEFT | D_UP | D_DOWN
-
-R_DPAD     EQU %00100000
-R_BUTTONS  EQU %00010000
-
-
-; screen
-
-HP_BAR_LENGTH EQU 6
-HP_BAR_LENGTH_PX EQU HP_BAR_LENGTH * 8
-EXP_BAR_LENGTH EQU 8
-EXP_BAR_LENGTH_PX EQU EXP_BAR_LENGTH * 8
-
-SCREEN_WIDTH EQU 20
-SCREEN_HEIGHT EQU 18
-SCREEN_WIDTH_PX EQU SCREEN_WIDTH * 8
-SCREEN_HEIGHT_PX EQU SCREEN_HEIGHT * 8
-
-BG_MAP_WIDTH  EQU 32
-BG_MAP_HEIGHT EQU 32
-WMISC_WIDTH   EQU 6 * 4
-WMISC_HEIGHT  EQU 5 * 4
-
-TILE_WIDTH EQU 8
-
-
 ; printing text
+const_value set 5
+	const PRINTNUM_MONEY_F        ; 5
+	const PRINTNUM_RIGHTALIGN_F   ; 6
+	const PRINTNUM_LEADINGZEROS_F ; 7
 
-PRINTNUM_MONEY_F        EQU 5
-PRINTNUM_RIGHTALIGN_F   EQU 6
-PRINTNUM_LEADINGZEROS_F EQU 7
-
 PRINTNUM_MONEY          EQU 1 << PRINTNUM_MONEY_F
 PRINTNUM_RIGHTALIGN     EQU 1 << PRINTNUM_RIGHTALIGN_F
 PRINTNUM_LEADINGZEROS   EQU 1 << PRINTNUM_LEADINGZEROS_F
@@ -119,7 +61,34 @@
 	const STEP_WALK_IN_PLACE ; 7
 
 
-; ChangeHappiness arguments (see event/happiness_egg.asm)
+HMENURETURN_SCRIPT EQU %10000000
+HMENURETURN_ASM    EQU %11111111
+
+
+; time of day boundaries
+MORN_HOUR EQU 4  ; 4 AM
+DAY_HOUR  EQU 10 ; 10 AM
+NITE_HOUR EQU 18 ; 6 PM
+NOON_HOUR EQU 12 ; 12 PM
+MAX_HOUR  EQU 24 ; 12 AM
+
+
+; boxes
+MONS_PER_BOX EQU 20
+NUM_BOXES    EQU 14
+
+; hall of fame
+HOF_MON_LENGTH = 1 + 2 + 2 + 1 + (PKMN_NAME_LENGTH +- 1) ; species, id, dvs, level, nick
+HOF_LENGTH = 1 + HOF_MON_LENGTH * PARTY_LENGTH + 1 ; win count, party, terminator
+NUM_HOF_TEAMS = 30
+
+
+; significant money values
+START_MONEY EQU 3000
+MOM_MONEY   EQU 2300
+
+
+; ChangeHappiness arguments (see data/happiness_changes.asm)
 const_value = 1
 	const HAPPINESS_GAINLEVEL         ; 01
 	const HAPPINESS_USEDITEM          ; 02
@@ -140,19 +109,3 @@
 	const HAPPINESS_REVIVALHERB       ; 11
 	const HAPPINESS_MASSAGE           ; 12
 	const HAPPINESS_GAINLEVELATHOME   ; 13
-
-
-	const_def
-	const LINK_NULL        ; 0
-	const LINK_TIMECAPSULE ; 1
-	const LINK_TRADECENTER ; 2
-	const LINK_COLOSSEUM   ; 3
-	const LINK_MOBILE      ; 4
-
-SERIAL_TIMECAPSULE EQU $60
-SERIAL_TRADECENTER EQU $70
-SERIAL_BATTLE      EQU $80
-
-
-HMENURETURN_SCRIPT EQU %10000000
-HMENURETURN_ASM    EQU %11111111
--- a/constants/music_constants.asm
+++ b/constants/music_constants.asm
@@ -110,5 +110,7 @@
 
 ; GetMapHeaderMusic picks music for this value (see home/map.asm)
 MUSIC_MAHOGANY_MART EQU $64
+
 ; GetMapHeaderMusic picks music for this bit flag
-RADIO_TOWER_MUSIC EQU 7
+RADIO_TOWER_MUSIC_F EQU 7
+RADIO_TOWER_MUSIC EQU 1 << RADIO_TOWER_MUSIC_F
--- /dev/null
+++ b/constants/npctrade_constants.asm
@@ -1,0 +1,21 @@
+; npctrade struct members (see data/npc_trades.asm)
+TRADE_DIALOG  EQU 0
+TRADE_GIVEMON EQU 1
+TRADE_GETMON  EQU 2
+TRADE_NICK    EQU 3
+TRADE_DVS     EQU 14
+TRADE_ITEM    EQU 16
+TRADE_OT_ID   EQU 17
+TRADE_OT_NAME EQU 19
+TRADE_GENDER  EQU 30
+TRADE_PADDING EQU 31
+
+; NPCTrades indexes (see data/npc_trades.asm)
+	const_def
+	const NPCTRADE_MIKE   ; 0
+	const NPCTRADE_KYLE   ; 1
+	const NPCTRADE_TIM    ; 2
+	const NPCTRADE_EMY    ; 3
+	const NPCTRADE_CHRIS  ; 4
+	const NPCTRADE_KIM    ; 5
+	const NPCTRADE_FOREST ; 6
--- a/constants/phone_constants.asm
+++ b/constants/phone_constants.asm
@@ -1,4 +1,4 @@
-; PhoneContacts indexes (see engine/phone.asm)
+; PhoneContacts indexes (see data/phone_contacts.asm)
 	const_def
 	const PHONE_00
 	const PHONE_MOM
@@ -39,7 +39,7 @@
 	const PHONE_PICNICKER_ERIN
 	const PHONE_BUENA
 
-; SpecialPhoneCallList indexes (see engine/phone.asm)
+; SpecialPhoneCallList indexes (see data/phone_special.asm)
 	const_def
 	const SPECIALCALL_NONE
 	const SPECIALCALL_POKERUS
--- a/constants/pokemon_constants.asm
+++ b/constants/pokemon_constants.asm
@@ -14,7 +14,7 @@
 ; - PicPointers (see gfx/pics/pic_pointers.asm)
 ; - AlphabeticalPokedexOrder (see data/pokedex/order_alpha.asm)
 ; - NewPokedexOrder (see data/pokedex/order_new.asm)
-; - MonMenuIcons (see menu/mon_icons.asm)
+; - MonMenuIcons (see data/mon_menu_icons.asm)
 ; - Pokered_MonIndices (see engine/time_capsule/conversion.asm)
 ; - SortedPokemon (see misc/fixed_words.asm)
 const_value set 1
@@ -273,75 +273,6 @@
 	const MON_FC     ; fc
 	const EGG        ; fd
 	const MON_FE     ; fe
-
-; party_struct members (see macros/wram.asm)
-MON_SPECIES              EQUS "(PartyMon1Species - PartyMon1)"
-MON_ITEM                 EQUS "(PartyMon1Item - PartyMon1)"
-MON_MOVES                EQUS "(PartyMon1Moves - PartyMon1)"
-MON_ID                   EQUS "(PartyMon1ID - PartyMon1)"
-MON_EXP                  EQUS "(PartyMon1Exp - PartyMon1)"
-MON_STAT_EXP             EQUS "(PartyMon1StatExp - PartyMon1)"
-MON_HP_EXP               EQUS "(PartyMon1HPExp - PartyMon1)"
-MON_ATK_EXP              EQUS "(PartyMon1AtkExp - PartyMon1)"
-MON_DEF_EXP              EQUS "(PartyMon1DefExp - PartyMon1)"
-MON_SPD_EXP              EQUS "(PartyMon1SpdExp - PartyMon1)"
-MON_SPC_EXP              EQUS "(PartyMon1SpcExp - PartyMon1)"
-MON_DVS                  EQUS "(PartyMon1DVs - PartyMon1)"
-MON_PP                   EQUS "(PartyMon1PP - PartyMon1)"
-MON_HAPPINESS            EQUS "(PartyMon1Happiness - PartyMon1)"
-MON_PKRUS                EQUS "(PartyMon1PokerusStatus - PartyMon1)"
-MON_CAUGHTDATA           EQUS "(PartyMon1CaughtData - PartyMon1)"
-MON_CAUGHTLEVEL          EQUS "(PartyMon1CaughtLevel - PartyMon1)"
-MON_CAUGHTTIME           EQUS "(PartyMon1CaughtTime - PartyMon1)"
-MON_CAUGHTGENDER         EQUS "(PartyMon1CaughtGender - PartyMon1)"
-MON_CAUGHTLOCATION       EQUS "(PartyMon1CaughtLocation - PartyMon1)"
-MON_LEVEL                EQUS "(PartyMon1Level - PartyMon1)"
-MON_STATUS               EQUS "(PartyMon1Status - PartyMon1)"
-MON_HP                   EQUS "(PartyMon1HP - PartyMon1)"
-MON_MAXHP                EQUS "(PartyMon1MaxHP - PartyMon1)"
-MON_ATK                  EQUS "(PartyMon1Attack - PartyMon1)"
-MON_DEF                  EQUS "(PartyMon1Defense - PartyMon1)"
-MON_SPD                  EQUS "(PartyMon1Speed - PartyMon1)"
-MON_SAT                  EQUS "(PartyMon1SpclAtk - PartyMon1)"
-MON_SDF                  EQUS "(PartyMon1SpclDef - PartyMon1)"
-BOXMON_STRUCT_LENGTH     EQUS "(PartyMon1End - PartyMon1)"
-PARTYMON_STRUCT_LENGTH   EQUS "(PartyMon1StatsEnd - PartyMon1)"
-REDMON_STRUCT_LENGTH EQU 44
-
-; MonMenuOptions indexes (see engine/mon_menu.asm)
-const_value SET 1
-; moves
-	const MONMENU_CUT        ; 1
-	const MONMENU_FLY        ; 2
-	const MONMENU_SURF       ; 3
-	const MONMENU_STRENGTH   ; 4
-	const MONMENU_WATERFALL  ; 5
-	const MONMENU_FLASH      ; 6
-	const MONMENU_WHIRLPOOL  ; 7
-	const MONMENU_DIG        ; 8
-	const MONMENU_TELEPORT   ; 9
-	const MONMENU_SOFTBOILED ; 10
-	const MONMENU_HEADBUTT   ; 11
-	const MONMENU_ROCKSMASH  ; 12
-	const MONMENU_MILKDRINK  ; 13
-	const MONMENU_SWEETSCENT ; 14
-; options
-	const MONMENU_STATS      ; 15
-	const MONMENU_SWITCH     ; 16
-	const MONMENU_ITEM       ; 17
-	const MONMENU_CANCEL     ; 18
-	const MONMENU_MOVE       ; 19
-	const MONMENU_MAIL       ; 20
-	const MONMENU_ERROR      ; 21
-
-; MonMenuOptions types
-MONMENU_FIELD_MOVE EQU 0
-MONMENU_MENUOPTION EQU 1
-
-NUM_MONMENU_ITEMS EQU 8
-
-; maximum number of party pokemon
-PARTY_LENGTH EQU 6
 
 ; number of Unown forms
 NUM_UNOWN EQU 26
--- a/constants/pokemon_data_constants.asm
+++ b/constants/pokemon_data_constants.asm
@@ -1,3 +1,30 @@
+; base data struct members (see data/base_stats/*.asm)
+BASE_DEX_NO      EQUS "(BaseDexNo - CurBaseData)"
+BASE_STATS       EQUS "(BaseStats - CurBaseData)"
+BASE_HP          EQUS "(BaseHP - CurBaseData)"
+BASE_ATK         EQUS "(BaseAttack - CurBaseData)"
+BASE_SPD         EQUS "(BaseSpeed - CurBaseData)"
+BASE_SAT         EQUS "(BaseSpecialAttack - CurBaseData)"
+BASE_SDF         EQUS "(BaseSpecialDefense - CurBaseData)"
+BASE_TYPES       EQUS "(BaseType - CurBaseData)"
+BASE_TYPE_1      EQUS "(BaseType1 - CurBaseData)"
+BASE_TYPE_2      EQUS "(BaseType2 - CurBaseData)"
+BASE_CATCH_RATE  EQUS "(BaseCatchRate - CurBaseData)"
+BASE_EXP         EQUS "(BaseExp - CurBaseData)"
+BASE_ITEMS       EQUS "(BaseItems - CurBaseData)"
+BASE_ITEM_1      EQUS "(BaseItem1 - CurBaseData)"
+BASE_ITEM_2      EQUS "(BaseItem2 - CurBaseData)"
+BASE_GENDER      EQUS "(BaseGender - CurBaseData)"
+BASE_UNKNOWN_1   EQUS "(BaseUnknown1 - CurBaseData)"
+BASE_EGG_STEPS   EQUS "(BaseEggSteps - CurBaseData)"
+BASE_UNKNOWN_2   EQUS "(BaseUnknown2 - CurBaseData)"
+BASE_PIC_SIZE    EQUS "(BasePicSize - CurBaseData)"
+BASE_PADDING     EQUS "(BasePadding - CurBaseData)"
+BASE_GROWTH_RATE EQUS "(BaseGrowthRate - CurBaseData)"
+BASE_EGG_GROUPS  EQUS "(BaseEggGroups - CurBaseData)"
+BASE_TMHM        EQUS "(BaseTMHM - CurBaseData)"
+BASE_DATA_SIZE   EQUS "(CurBaseDataEnd - CurBaseData)"
+
 ; BaseGrowthRate values
 ; GrowthRates indexes (see main.asm)
 	const_def
@@ -27,8 +54,48 @@
 	const NO_EGGS      ; f
 
 
-; IconPointers indexes (see menu/mon_icons.asm)
-const_value SET 1
+; party_struct members (see macros/wram.asm)
+MON_SPECIES            EQUS "(PartyMon1Species - PartyMon1)"
+MON_ITEM               EQUS "(PartyMon1Item - PartyMon1)"
+MON_MOVES              EQUS "(PartyMon1Moves - PartyMon1)"
+MON_ID                 EQUS "(PartyMon1ID - PartyMon1)"
+MON_EXP                EQUS "(PartyMon1Exp - PartyMon1)"
+MON_STAT_EXP           EQUS "(PartyMon1StatExp - PartyMon1)"
+MON_HP_EXP             EQUS "(PartyMon1HPExp - PartyMon1)"
+MON_ATK_EXP            EQUS "(PartyMon1AtkExp - PartyMon1)"
+MON_DEF_EXP            EQUS "(PartyMon1DefExp - PartyMon1)"
+MON_SPD_EXP            EQUS "(PartyMon1SpdExp - PartyMon1)"
+MON_SPC_EXP            EQUS "(PartyMon1SpcExp - PartyMon1)"
+MON_DVS                EQUS "(PartyMon1DVs - PartyMon1)"
+MON_PP                 EQUS "(PartyMon1PP - PartyMon1)"
+MON_HAPPINESS          EQUS "(PartyMon1Happiness - PartyMon1)"
+MON_PKRUS              EQUS "(PartyMon1PokerusStatus - PartyMon1)"
+MON_CAUGHTDATA         EQUS "(PartyMon1CaughtData - PartyMon1)"
+MON_CAUGHTLEVEL        EQUS "(PartyMon1CaughtLevel - PartyMon1)"
+MON_CAUGHTTIME         EQUS "(PartyMon1CaughtTime - PartyMon1)"
+MON_CAUGHTGENDER       EQUS "(PartyMon1CaughtGender - PartyMon1)"
+MON_CAUGHTLOCATION     EQUS "(PartyMon1CaughtLocation - PartyMon1)"
+MON_LEVEL              EQUS "(PartyMon1Level - PartyMon1)"
+MON_STATUS             EQUS "(PartyMon1Status - PartyMon1)"
+MON_HP                 EQUS "(PartyMon1HP - PartyMon1)"
+MON_MAXHP              EQUS "(PartyMon1MaxHP - PartyMon1)"
+MON_ATK                EQUS "(PartyMon1Attack - PartyMon1)"
+MON_DEF                EQUS "(PartyMon1Defense - PartyMon1)"
+MON_SPD                EQUS "(PartyMon1Speed - PartyMon1)"
+MON_SAT                EQUS "(PartyMon1SpclAtk - PartyMon1)"
+MON_SDF                EQUS "(PartyMon1SpclDef - PartyMon1)"
+BOXMON_STRUCT_LENGTH   EQUS "(PartyMon1End - PartyMon1)"
+PARTYMON_STRUCT_LENGTH EQUS "(PartyMon1StatsEnd - PartyMon1)"
+REDMON_STRUCT_LENGTH EQU 44
+
+
+; maximum number of party pokemon
+PARTY_LENGTH EQU 6
+
+
+; IconPointers indexes (see gfx/icon_pointers.asm)
+	const_def
+	const ICON_NULL
 	const ICON_POLIWAG
 	const ICON_JIGGLYPUFF
 	const ICON_DIGLETT
@@ -94,8 +161,12 @@
 BASE_HAPPINESS        EQU 70
 FRIEND_BALL_HAPPINESS EQU 200
 HAPPINESS_TO_EVOLVE   EQU 220
+HAPPINESS_THRESHOLD_1 EQU 100
+HAPPINESS_THRESHOLD_2 EQU 200
 
 
+; wild data
+
 NUM_GRASSMON EQU 7 ; data/wild/*_grass.asm table size
 NUM_WATERMON EQU 3 ; data/wild/*_water.asm table size
 
@@ -110,3 +181,36 @@
 
 FISHSWARM_QWILFISH EQU 1
 FISHSWARM_REMORAID EQU 2
+
+
+; MonMenuOptions indexes (see engine/mon_menu.asm)
+const_value SET 1
+; moves
+	const MONMENU_CUT        ; 1
+	const MONMENU_FLY        ; 2
+	const MONMENU_SURF       ; 3
+	const MONMENU_STRENGTH   ; 4
+	const MONMENU_WATERFALL  ; 5
+	const MONMENU_FLASH      ; 6
+	const MONMENU_WHIRLPOOL  ; 7
+	const MONMENU_DIG        ; 8
+	const MONMENU_TELEPORT   ; 9
+	const MONMENU_SOFTBOILED ; 10
+	const MONMENU_HEADBUTT   ; 11
+	const MONMENU_ROCKSMASH  ; 12
+	const MONMENU_MILKDRINK  ; 13
+	const MONMENU_SWEETSCENT ; 14
+; options
+	const MONMENU_STATS      ; 15
+	const MONMENU_SWITCH     ; 16
+	const MONMENU_ITEM       ; 17
+	const MONMENU_CANCEL     ; 18
+	const MONMENU_MOVE       ; 19
+	const MONMENU_MAIL       ; 20
+	const MONMENU_ERROR      ; 21
+
+; MonMenuOptions types
+MONMENU_FIELD_MOVE EQU 0
+MONMENU_MENUOPTION EQU 1
+
+NUM_MONMENU_ITEMS EQU 8
--- /dev/null
+++ b/constants/serial_constants.asm
@@ -1,0 +1,12 @@
+; link types
+	const_def
+	const LINK_NULL        ; 0
+	const LINK_TIMECAPSULE ; 1
+	const LINK_TRADECENTER ; 2
+	const LINK_COLOSSEUM   ; 3
+	const LINK_MOBILE      ; 4
+
+
+SERIAL_TIMECAPSULE EQU $60
+SERIAL_TRADECENTER EQU $70
+SERIAL_BATTLE      EQU $80
--- a/constants/sfx_constants.asm
+++ b/constants/sfx_constants.asm
@@ -150,8 +150,8 @@
 	const SFX_FANFARE_2                   ; 92
 	const SFX_REGISTER_PHONE_NUMBER       ; 93
 	const SFX_3RD_PLACE                   ; 94
-	const SFX_GET_EGG_FROM_DAYCARE_MAN    ; 95
-	const SFX_GET_EGG_FROM_DAYCARE_LADY   ; 96
+	const SFX_GET_EGG_FROM_DAY_CARE_MAN   ; 95
+	const SFX_GET_EGG_FROM_DAY_CARE_LADY  ; 96
 	const SFX_MOVE_DELETED                ; 97
 	const SFX_2ND_PLACE                   ; 98
 	const SFX_1ST_PLACE                   ; 99
--- a/constants/sprite_constants.asm
+++ b/constants/sprite_constants.asm
@@ -1,5 +1,5 @@
 ; sprite ids
-; SpriteHeaders indexes (see gfx/overworld/sprite_headers.asm)
+; SpriteHeaders indexes (see gfx/sprite_headers.asm)
 	const_def
 	const SPRITE_NONE ; 00
 	const SPRITE_CHRIS ; 01
@@ -105,7 +105,7 @@
 	const SPRITE_RAIKOU ; 65
 	const SPRITE_STANDING_YOUNGSTER ; 66
 
-; SpriteMons indexes (see engine/overworld.asm)
+; SpriteMons indexes (see data/sprite_mons.asm)
 const_value SET $80
 SPRITE_POKEMON EQU const_value
 	const SPRITE_UNOWN ; 80
@@ -146,8 +146,8 @@
 
 ; special GetMonSprite values (see engine/overworld.asm)
 const_value SET $e0
-	const SPRITE_DAYCARE_MON_1 ; e0
-	const SPRITE_DAYCARE_MON_2 ; e1
+	const SPRITE_DAY_CARE_MON_1 ; e0
+	const SPRITE_DAY_CARE_MON_2 ; e1
 
 ; VariableSprites indexes (see wram.asm)
 const_value SET $f0
@@ -166,7 +166,7 @@
 	const SPRITE_COPYCAT ; fb
 	const SPRITE_JANINE_IMPERSONATOR ; fc
 
-; sprite_header struct members (see gfx/overworld/sprite_headers.asm)
+; sprite_header struct members (see gfx/sprite_headers.asm)
 	const_def
 	const SPRITEHEADER_ADDR_LO
 	const SPRITEHEADER_ADDR_HI
@@ -193,6 +193,17 @@
 	const PAL_OW_TREE   ; 6
 	const PAL_OW_ROCK   ; 7
 
+; person_events set bit 3 so as not to use the sprite's default palette
+const_value set (1 << 3)
+	const PAL_NPC_RED    ; 8
+	const PAL_NPC_BLUE   ; 9
+	const PAL_NPC_GREEN  ; a
+	const PAL_NPC_BROWN  ; b
+	const PAL_NPC_PINK   ; c
+	const PAL_NPC_SILVER ; d
+	const PAL_NPC_TREE   ; e
+	const PAL_NPC_ROCK   ; f
+
 ; SpriteMovementData indexes (see data/map_objects.asm)
 	const_def
 	const SPRITEMOVEDATA_00                   ; 00
@@ -315,7 +326,7 @@
 	const PERSON_ACTION_GRASS_SHAKE
 	const PERSON_ACTION_SKYFALL
 
-; Facings indexes (see engine/facings.asm)
+; Facings indexes (see data/facings.asm)
 	const_def
 	const FACING_STEP_DOWN_0
 	const FACING_STEP_DOWN_1
@@ -369,7 +380,7 @@
 	const SPRITEANIMSTRUCT_0E              ; e
 	const SPRITEANIMSTRUCT_0F              ; f
 
-; SpriteAnimFrameData indexes (see data/sprite_engine.asm)
+; SpriteAnimFrameData indexes (see data/sprite_anim_frames.asm)
 	const_def
 	const SPRITE_ANIM_FRAMESET_00
 	const SPRITE_ANIM_FRAMESET_PARTY_MON
@@ -476,7 +487,7 @@
 	const SPRITE_ANIM_SEQ_INTRO_UNOWN_F
 	const SPRITE_ANIM_SEQ_INTRO_SUICUNE_AWAY
 
-; SpriteAnimSeqData indexes (see engine/sprites.asm)
+; SpriteAnimSeqData indexes (see data/sprite_anim_seqs.asm)
 	const_def
 	const SPRITE_ANIM_INDEX_PARTY_MON
 	const SPRITE_ANIM_INDEX_01
@@ -524,7 +535,7 @@
 	const SPRITE_ANIM_INDEX_INTRO_SUICUNE_AWAY
 	const SPRITE_ANIM_INDEX_CELEBI
 
-; SpriteAnimOAMData indexes (see data/sprite_engine.asm)
+; SpriteAnimOAMData indexes (see data/sprite_anim_oam.asm)
 	const_def
 	const SPRITE_ANIM_FRAME_IDX_00
 	const SPRITE_ANIM_FRAME_IDX_01
--- a/constants/tilemap_constants.asm
+++ /dev/null
@@ -1,55 +1,0 @@
-; collision values (see tilesets/collision.asm)
-LANDTILE  EQU $0
-WATERTILE EQU $1
-WALLTILE  EQU $f
-TALK      EQU $10
-
-; Tilesets indexes (see tilesets/tileset_headers.asm)
-const_value SET 1
-	const TILESET_JOHTO_1              ; 01
-	const TILESET_JOHTO_2              ; 02
-	const TILESET_KANTO                ; 03
-	const TILESET_BATTLE_TOWER_OUTSIDE ; 04
-	const TILESET_HOUSE_1              ; 05
-	const TILESET_KRISS_HOUSE          ; 06
-	const TILESET_POKECENTER           ; 07
-	const TILESET_GATE                 ; 08
-	const TILESET_PORT                 ; 09
-	const TILESET_LAB                  ; 0a
-	const TILESET_POWER_PLANT          ; 0b
-	const TILESET_MART                 ; 0c
-	const TILESET_CELADON_MANSION      ; 0d
-	const TILESET_GAME_CORNER          ; 0e
-	const TILESET_GYM_1                ; 0f
-	const TILESET_KURT_HOUSE           ; 10
-	const TILESET_TRAIN_STATION        ; 11
-	const TILESET_OLIVINE_GYM          ; 12
-	const TILESET_LIGHTHOUSE           ; 13
-	const TILESET_KRISS_HOUSE_2F       ; 14
-	const TILESET_POKECOM_CENTER       ; 15
-	const TILESET_BATTLE_TOWER         ; 16
-	const TILESET_SPROUT_TOWER         ; 17
-	const TILESET_CAVE                 ; 18
-	const TILESET_PARK                 ; 19
-	const TILESET_RUINS_OF_ALPH        ; 1a
-	const TILESET_RADIO_TOWER          ; 1b
-	const TILESET_UNDERGROUND          ; 1c
-	const TILESET_ICE_PATH             ; 1d
-	const TILESET_WHIRL_ISLANDS        ; 1e
-	const TILESET_ILEX_FOREST          ; 1f
-	const TILESET_32                   ; 20
-	const TILESET_HO_OH_WORD_ROOM      ; 21
-	const TILESET_KABUTO_WORD_ROOM     ; 22
-	const TILESET_OMANYTE_WORD_ROOM    ; 23
-	const TILESET_AERODACTYL_WORD_ROOM ; 24
-
-; bg palette values (see tilesets/*_palette_map.asm)
-	const_def
-	const PAL_BG_GRAY   ; 0
-	const PAL_BG_RED    ; 1
-	const PAL_BG_GREEN  ; 2
-	const PAL_BG_WATER  ; 3
-	const PAL_BG_YELLOW ; 4
-	const PAL_BG_BROWN  ; 5
-	const PAL_BG_ROOF   ; 6
-	const PAL_BG_TEXT   ; 7
--- /dev/null
+++ b/constants/tileset_constants.asm
@@ -1,0 +1,55 @@
+; collision values (see tilesets/collision.asm)
+LANDTILE  EQU $0
+WATERTILE EQU $1
+WALLTILE  EQU $f
+TALK      EQU $10
+
+; Tilesets indexes (see tilesets/tileset_headers.asm)
+const_value SET 1
+	const TILESET_JOHTO_1              ; 01
+	const TILESET_JOHTO_2              ; 02
+	const TILESET_KANTO                ; 03
+	const TILESET_BATTLE_TOWER_OUTSIDE ; 04
+	const TILESET_HOUSE_1              ; 05
+	const TILESET_PLAYERS_HOUSE        ; 06
+	const TILESET_POKECENTER           ; 07
+	const TILESET_GATE                 ; 08
+	const TILESET_PORT                 ; 09
+	const TILESET_LAB                  ; 0a
+	const TILESET_POWER_PLANT          ; 0b
+	const TILESET_MART                 ; 0c
+	const TILESET_CELADON_MANSION      ; 0d
+	const TILESET_GAME_CORNER          ; 0e
+	const TILESET_GYM_1                ; 0f
+	const TILESET_KURTS_HOUSE          ; 10
+	const TILESET_TRAIN_STATION        ; 11
+	const TILESET_OLIVINE_GYM          ; 12
+	const TILESET_LIGHTHOUSE           ; 13
+	const TILESET_PLAYERS_HOUSE_2F     ; 14
+	const TILESET_POKECOM_CENTER       ; 15
+	const TILESET_BATTLE_TOWER         ; 16
+	const TILESET_SPROUT_TOWER         ; 17
+	const TILESET_CAVE                 ; 18
+	const TILESET_PARK                 ; 19
+	const TILESET_RUINS_OF_ALPH        ; 1a
+	const TILESET_RADIO_TOWER          ; 1b
+	const TILESET_UNDERGROUND          ; 1c
+	const TILESET_ICE_PATH             ; 1d
+	const TILESET_WHIRL_ISLANDS        ; 1e
+	const TILESET_ILEX_FOREST          ; 1f
+	const TILESET_BETA_WORD_ROOM       ; 20
+	const TILESET_HO_OH_WORD_ROOM      ; 21
+	const TILESET_KABUTO_WORD_ROOM     ; 22
+	const TILESET_OMANYTE_WORD_ROOM    ; 23
+	const TILESET_AERODACTYL_WORD_ROOM ; 24
+
+; bg palette values (see tilesets/*_palette_map.asm)
+	const_def
+	const PAL_BG_GRAY   ; 0
+	const PAL_BG_RED    ; 1
+	const PAL_BG_GREEN  ; 2
+	const PAL_BG_WATER  ; 3
+	const PAL_BG_YELLOW ; 4
+	const PAL_BG_BROWN  ; 5
+	const PAL_BG_ROOF   ; 6
+	const PAL_BG_TEXT   ; 7
--- a/constants/trainer_constants.asm
+++ b/constants/trainer_constants.asm
@@ -2,8 +2,8 @@
 ; `trainerclass` indexes are for:
 ; - TrainerClassAttributes (see trainers/attributes.asm)
 ; - TrainerClassDVs (see trainers/dvs.asm)
+; - TrainerEncounterMusic (see trainers/encounter_music.asm)
 ; - TrainerGroups (see trainers/trainer_pointers.asm)
-; - TrainerEncounterMusic (see audio/trainer_encounters.asm)
 ; - BTTrainerClassGenders (see misc/battle_tower_47.asm)
 ; trainer constants are Trainers indexes, for the sub-tables of TrainerGroups (see trainers/trainers.asm)
 	enum_start
--- a/constants/wram_constants.asm
+++ b/constants/wram_constants.asm
@@ -7,27 +7,38 @@
 	const WILDMON    ; 4
 
 ; Options: (bits) ; cfcc
-const_value SET 5
-	const STEREO       ; 5
-	const BATTLE_SHIFT ; 6
-	const BATTLE_SCENE ; 7
+const_value SET 4
+	const NO_TEXT_SCROLL ; 4
+	const STEREO         ; 5
+	const BATTLE_SHIFT   ; 6
+	const BATTLE_SCENE   ; 7
 
-; Options: (bits 0-2 values) ; cfcc
-FAST_TEXT      EQU 0
-MED_TEXT       EQU 1
-SLOW_TEXT      EQU 2
-NO_TEXT_SCROLL EQU 4
+; Options: (bits 0-2)
+TEXT_DELAY_FAST EQU 1
+TEXT_DELAY_MED  EQU 3
+TEXT_DELAY_SLOW EQU 5
 
+; TextBoxFrame: ; cfce
+	const_def
+	const FRAME_1 ; 0
+	const FRAME_2 ; 1
+	const FRAME_3 ; 2
+	const FRAME_4 ; 3
+	const FRAME_5 ; 4
+	const FRAME_6 ; 5
+	const FRAME_7 ; 6
+	const FRAME_8 ; 7
+
 ; Options2:
 	const_def
 	const MENU_ACCOUNT ; 0
 
 ; GBPrinter:
-PRINT_LIGHTEST EQU $00
-PRINT_LIGHTER  EQU $20
-PRINT_NORMAL   EQU $40
-PRINT_DARKER   EQU $60
-PRINT_DARKEST  EQU $7f
+GBPRINTER_LIGHTEST EQU $00
+GBPRINTER_LIGHTER  EQU $20
+GBPRINTER_NORMAL   EQU $40
+GBPRINTER_DARKER   EQU $60
+GBPRINTER_DARKEST  EQU $7f
 
 ; WalkingDirection: ; d043
 const_value SET -1
@@ -37,6 +48,11 @@
 	const LEFT     ; 2
 	const RIGHT    ; 3
 
+DOWN_MASK  EQU 1 << DOWN
+UP_MASK    EQU 1 << UP
+LEFT_MASK  EQU 1 << LEFT
+RIGHT_MASK EQU 1 << RIGHT
+
 ; FacingDirection: ; d044
 FACE_CURRENT EQU 0
 FACE_DOWN  EQU 8
@@ -46,11 +62,16 @@
 
 ; TimeOfDay: ; d269
 	const_def
-	const MORN     ; 0
-	const DAY      ; 1
-	const NITE     ; 2
-	const DARKNESS ; 3
+	const MORN_F     ; 0
+	const DAY_F      ; 1
+	const NITE_F     ; 2
+	const DARKNESS_F ; 3
 
+MORN     EQU 1 << MORN_F
+DAY      EQU 1 << DAY_F
+NITE     EQU 1 << NITE_F
+DARKNESS EQU 1 << DARKNESS_F
+
 ; ScriptFlags: ; d434
 SCRIPT_RUNNING EQU 2
 
@@ -95,13 +116,13 @@
 
 ; After-Champion Spawn
 SPAWN_LANCE EQU 1
-SPAWN_RED EQU 2
+SPAWN_RED   EQU 2
 
 ; wPokemonWithdrawDepositParameter
-PC_WITHDRAW EQU 0
-PC_DEPOSIT EQU 1
-DAYCARE_WITHDRAW EQU 2
-DAYCARE_DEPOSIT EQU 3
+PC_WITHDRAW       EQU 0
+PC_DEPOSIT        EQU 1
+DAY_CARE_WITHDRAW EQU 2
+DAY_CARE_DEPOSIT  EQU 3
 
 ; wCurrentDexMode
 	const_def
--- /dev/null
+++ b/data/audio/notes.asm
@@ -1,0 +1,27 @@
+FrequencyTable: ; e8d80
+	dw 0     ; __
+	dw $f82c ; C_
+	dw $f89d ; C#
+	dw $f907 ; D_
+	dw $f96b ; D#
+	dw $f9ca ; E_
+	dw $fa23 ; F_
+	dw $fa77 ; F#
+	dw $fac7 ; G_
+	dw $fb12 ; G#
+	dw $fb58 ; A_
+	dw $fb9b ; A#
+	dw $fbda ; B_
+	dw $fc16 ; C_
+	dw $fc4e ; C#
+	dw $fc83 ; D_
+	dw $fcb5 ; D#
+	dw $fce5 ; E_
+	dw $fd11 ; F_
+	dw $fd3b ; F#
+	dw $fd63 ; G_
+	dw $fd89 ; G#
+	dw $fdac ; A_
+	dw $fdcd ; A#
+	dw $fded ; B_
+; e8db2
--- /dev/null
+++ b/data/audio/wave_samples.asm
@@ -1,0 +1,14 @@
+WaveSamples: ; e8db2
+	; these are streams of 32 4-bit values used as wavepatterns
+	; nothing interesting here!
+	dn 0, 2, 4, 6, 8, 10, 12, 14, 15, 15, 15, 14, 14, 13, 13, 12, 12, 11, 10, 9, 8, 7, 6, 5, 4, 4, 3, 3, 2, 2, 1, 1
+	dn 0, 2, 4, 6, 8, 10, 12, 14, 14, 15, 15, 15, 15, 14, 14, 14, 13, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 2, 1, 1
+	dn 1, 3, 6, 9, 11, 13, 14, 14, 14, 14, 15, 15, 15, 15, 14, 13, 13, 14, 15, 15, 15, 15, 14, 14, 14, 14, 13, 11, 9, 6, 3, 1
+	dn 0, 2, 4, 6, 8, 10, 12, 13, 14, 15, 15, 14, 13, 14, 15, 15, 14, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
+	dn 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 14, 15, 7, 7, 15, 14, 14, 13, 12, 10, 8, 7, 6, 5, 4, 3, 2, 1, 0
+	dn 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 3, 3, 2, 2, 1, 1, 15, 15, 14, 14, 12, 12, 10, 10, 8, 8, 10, 10, 12, 12, 14, 14
+	dn 0, 2, 4, 6, 8, 10, 12, 14, 12, 11, 10, 9, 8, 7, 6, 5, 15, 15, 15, 14, 14, 13, 13, 12, 4, 4, 3, 3, 2, 2, 1, 1
+	dn 12, 0, 10, 9, 8, 7, 15, 5, 15, 15, 15, 14, 14, 13, 13, 12, 4, 4, 3, 3, 2, 2, 15, 1, 0, 2, 4, 6, 8, 10, 12, 14
+	dn 4, 4, 3, 3, 2, 2, 1, 15, 0, 0, 4, 6, 8, 10, 12, 14, 15, 8, 15, 14, 14, 13, 13, 12, 12, 11, 10, 9, 8, 7, 6, 5
+	dn 1, 1, 0, 0, 0, 0, 0, 8, 0, 0, 1, 3, 5, 7, 9, 10, 11, 4, 11, 10, 10, 9, 9, 8, 8, 7, 6, 5, 4, 3, 2, 1
+; e8e52
--- /dev/null
+++ b/data/ball_colors.asm
@@ -1,0 +1,16 @@
+; colors of balls thrown in battle
+
+BallColors: ; cd26c (33:526c)
+	db MASTER_BALL, PAL_BATTLE_OB_GREEN
+	db ULTRA_BALL,  PAL_BATTLE_OB_YELLOW
+	db GREAT_BALL,  PAL_BATTLE_OB_BLUE
+	db POKE_BALL,   PAL_BATTLE_OB_RED
+	db HEAVY_BALL,  PAL_BATTLE_OB_GRAY
+	db LEVEL_BALL,  PAL_BATTLE_OB_BROWN
+	db LURE_BALL,   PAL_BATTLE_OB_BLUE
+	db FAST_BALL,   PAL_BATTLE_OB_BLUE
+	db FRIEND_BALL, PAL_BATTLE_OB_YELLOW
+	db MOON_BALL,   PAL_BATTLE_OB_GRAY
+	db LOVE_BALL,   PAL_BATTLE_OB_RED
+	db -1,          PAL_BATTLE_OB_GRAY
+; cd284
--- a/data/base_stats.asm
+++ b/data/base_stats.asm
@@ -1,6 +1,5 @@
-BaseData0::
+BaseData::
 INCLUDE "data/base_stats/bulbasaur.asm"
-BaseData1::
 INCLUDE "data/base_stats/ivysaur.asm"
 INCLUDE "data/base_stats/venusaur.asm"
 INCLUDE "data/base_stats/charmander.asm"
--- a/data/battle_tower.asm
+++ b/data/battle_tower.asm
@@ -1,212 +1,3 @@
-Function_LoadOpponentTrainerAndPokemons: ; 1f8000
-	ld a, [rSVBK]
-	push af
-	ld a, BANK(BT_OTTrainer)
-	ld [rSVBK], a
-
-	; Fill BT_OTTrainer with zeros
-	xor a
-	ld hl, BT_OTTrainer
-	ld bc, BT_OTTrainerEnd - BT_OTTrainer
-	call ByteFill
-
-	; Write $ff into the Item-Slots
-	ld a, $ff
-	ld [BT_OTPkmn1Item], a
-	ld [BT_OTPkmn2Item], a
-	ld [BT_OTPkmn3Item], a
-
-	; Set BT_OTTrainer as start address to write the following data to
-	ld de, BT_OTTrainer
-
-	ld a, [hRandomAdd]
-	ld b, a
-.resample ; loop to find a random trainer
-	call Random
-	ld a, [hRandomAdd]
-	add b
-	ld b, a ; b contains the nr of the trainer
-IF DEF(CRYSTAL11)
-	and (1 << 7) - 1
-	cp 70
-ELSE
-	and (1 << 5) - 1
-	cp 21
-ENDC
-	jr nc, .resample
-	ld b, a
-
-	ld a, BANK(sBTTrainers)
-	call GetSRAMBank
-
-	ld c, BATTLETOWER_NROFTRAINERS
-	ld hl, sBTTrainers
-.next_trainer
-	ld a, [hli]
-	cp b
-	jr z, .resample
-	dec c
-	jr nz, .next_trainer ; c <= 7  initialise all 7 trainers?
-
-	ld hl, sBTTrainers
-	ld a, [sNrOfBeatenBattleTowerTrainers]
-	ld c, a
-	ld a, b
-	ld b, 0
-	add hl, bc
-	ld [hl], a
-
-	call CloseSRAM
-
-	push af
-; Copy name (10 bytes) and class (1 byte) of trainer
-	ld hl, BattleTowerTrainers
-	ld bc, NAME_LENGTH
-	call AddNTimes
-	ld bc, NAME_LENGTH
-	call CopyBytes
-
-	call Function_LoadRandomBattleTowerPkmn
-	pop af
-
-	ld hl, BattleTowerTrainerData
-	ld bc, BATTLETOWER_TRAINERDATALENGTH
-	call AddNTimes
-	ld bc, BATTLETOWER_TRAINERDATALENGTH
-.copy_bt_trainer_data_loop
-	ld a, BANK(BattleTowerTrainerData)
-	call GetFarByte
-	ld [de], a
-	inc hl
-	inc de
-	dec bc
-	ld a, b
-	or c
-	jr nz, .copy_bt_trainer_data_loop
-
-	pop af
-	ld [rSVBK], a
-
-	ret
-
-
-Function_LoadRandomBattleTowerPkmn: ; 1f8081
-	ld c, BATTLETOWER_NROFPKMNS
-.loop
-	push bc
-	ld a, BANK(sBTPkmnPrevTrainer1)
-	call GetSRAMBank
-
-.FindARandomBattleTowerPkmn:
-	; From Which LevelGroup are the Pkmn loaded
-	; a = 1..10
-	ld a, [wBTChoiceOfLvlGroup] ; [$d800]
-	dec a
-	ld hl, BattleTowerMons
-	ld bc, BattleTowerMons2 - BattleTowerMons1
-	call AddNTimes
-
-	ld a, [hRandomAdd]
-	ld b, a
-.resample
-	call Random
-	ld a, [hRandomAdd]
-	add b
-	ld b, a
-	and $1f
-	cp BATTLETOWER_NRMONSPERLEVELBRACKET
-	jr nc, .resample
-	; in register 'a' is the chosen Pkmn of the LevelGroup
-
-	; Check if Pkmn was already loaded before
-	; Check current and the 2 previous teams
-	; includes check if item is double at the current team
-	ld bc, PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH
-	call AddNTimes
-	ld a, [hli]
-	ld b, a
-	ld a, [hld]
-	ld c, a
-	ld a, [BT_OTPkmn1]
-	cp b
-	jr z, .FindARandomBattleTowerPkmn
-	ld a, [BT_OTPkmn1Item]
-	cp c
-	jr z, .FindARandomBattleTowerPkmn
-	ld a, [BT_OTPkmn2]
-	cp b
-	jr z, .FindARandomBattleTowerPkmn
-	ld a, [BT_OTPkmn2Item]
-	cp c
-	jr z, .FindARandomBattleTowerPkmn
-	ld a, [BT_OTPkmn3]
-	cp b
-	jr z, .FindARandomBattleTowerPkmn
-	ld a, [BT_OTPkmn3Item]
-	cp c
-	jr z, .FindARandomBattleTowerPkmn
-	ld a, [sBTPkmnPrevTrainer1]
-	cp b
-	jr z, .FindARandomBattleTowerPkmn
-	ld a, [sBTPkmnPrevTrainer2]
-	cp b
-	jr z, .FindARandomBattleTowerPkmn
-	ld a, [sBTPkmnPrevTrainer3]
-	cp b
-	jr z, .FindARandomBattleTowerPkmn
-	ld a, [sBTPkmnPrevPrevTrainer1]
-	cp b
-	jr z, .FindARandomBattleTowerPkmn
-	ld a, [sBTPkmnPrevPrevTrainer2]
-	cp b
-	jr z, .FindARandomBattleTowerPkmn
-	ld a, [sBTPkmnPrevPrevTrainer3]
-	cp b
-	jr z, .FindARandomBattleTowerPkmn
-
-	ld bc, PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH
-	call CopyBytes
-
-	ld a, [wNamedObjectIndexBuffer]
-	push af
-	push de
-	ld hl, - (PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH)
-	add hl, de
-	ld a, [hl]
-	ld [wNamedObjectIndexBuffer], a
-	ld bc, PARTYMON_STRUCT_LENGTH
-	add hl, bc
-	push hl
-	call GetPokemonName
-	ld h, d
-	ld l, e
-	pop de
-	ld bc, PKMN_NAME_LENGTH
-	call CopyBytes
-
-	pop de
-	pop af
-	ld [wNamedObjectIndexBuffer], a
-	pop bc
-	dec c
-	jp nz, .loop
-
-	ld a, [sBTPkmnPrevTrainer1]
-	ld [sBTPkmnPrevPrevTrainer1], a
-	ld a, [sBTPkmnPrevTrainer2]
-	ld [sBTPkmnPrevPrevTrainer2], a
-	ld a, [sBTPkmnPrevTrainer3]
-	ld [sBTPkmnPrevPrevTrainer3], a
-	ld a, [BT_OTPkmn1]
-	ld [sBTPkmnPrevTrainer1], a
-	ld a, [BT_OTPkmn2]
-	ld [sBTPkmnPrevTrainer2], a
-	ld a, [BT_OTPkmn3]
-	ld [sBTPkmnPrevTrainer3], a
-	call CloseSRAM
-	ret
-; 1f814e
-
 BattleTowerTrainers: ; 1f814e
 ; The trainer class is not used in Crystal 1.0 due to a bug.
 ; Instead, the sixth character in the trainer's name is used.
--- /dev/null
+++ b/data/bug_contest_winners.asm
@@ -1,0 +1,74 @@
+BugContestantPointers: ; 13783
+	dw BugContestant_BugCatcherDon ; This reverts back to the player
+	dw BugContestant_BugCatcherDon
+	dw BugContestant_BugCatcherEd
+	dw BugContestant_CooltrainerMNick
+	dw BugContestant_PokefanMWilliam
+	dw BugContestant_BugCatcherBenny
+	dw BugContestant_CamperBarry
+	dw BugContestant_PicnickerCindy
+	dw BugContestant_BugCatcherJosh
+	dw BugContestant_YoungsterSamuel
+	dw BugContestant_SchoolboyKipp
+; 13799
+
+BugContestant_BugCatcherDon:
+	db BUG_CATCHER, DON
+	dbw KAKUNA,     300
+	dbw METAPOD,    285
+	dbw CATERPIE,   226
+
+BugContestant_BugCatcherEd:
+	db BUG_CATCHER, ED
+	dbw BUTTERFREE, 286
+	dbw BUTTERFREE, 251
+	dbw CATERPIE,   237
+
+BugContestant_CooltrainerMNick:
+	db COOLTRAINERM, NICK
+	dbw SCYTHER,    357
+	dbw BUTTERFREE, 349
+	dbw PINSIR,     368
+
+BugContestant_PokefanMWilliam:
+	db POKEFANM, WILLIAM
+	dbw PINSIR,     332
+	dbw BUTTERFREE, 324
+	dbw VENONAT,    321
+
+BugContestant_BugCatcherBenny:
+	db BUG_CATCHER, BUG_CATCHER_BENNY
+	dbw BUTTERFREE, 318
+	dbw WEEDLE,     295
+	dbw CATERPIE,   285
+
+BugContestant_CamperBarry:
+	db CAMPER, BARRY
+	dbw PINSIR,     366
+	dbw VENONAT,    329
+	dbw KAKUNA,     314
+
+BugContestant_PicnickerCindy:
+	db PICNICKER, CINDY
+	dbw BUTTERFREE, 341
+	dbw METAPOD,    301
+	dbw CATERPIE,   264
+
+BugContestant_BugCatcherJosh:
+	db BUG_CATCHER, JOSH
+	dbw SCYTHER,    326
+	dbw BUTTERFREE, 292
+	dbw METAPOD,    282
+
+BugContestant_YoungsterSamuel:
+	db YOUNGSTER, SAMUEL
+	dbw WEEDLE,     270
+	dbw PINSIR,     282
+	dbw CATERPIE,   251
+
+BugContestant_SchoolboyKipp:
+	db SCHOOLBOY, KIPP
+	dbw VENONAT,    267
+	dbw PARAS,      254
+	dbw KAKUNA,     259
+; 13807
--- /dev/null
+++ b/data/decoration_attributes.asm
@@ -1,0 +1,63 @@
+decoration: MACRO
+	; type, name, command, event flag, tile/sprite
+	db \1, \2, \3
+	dw \4
+	db \5
+ENDM
+
+DecorationAttributes: ; 26a4f
+; entries correspond to deco constants
+	decoration DECO_PLANT,   $00,            $0,                EVENT_GAVE_KURT_APRICORNS,       $00
+	decoration DECO_PLANT,   PUT_IT_AWAY,    PUT_AWAY_BED,      EVENT_GAVE_KURT_APRICORNS,       $00
+	decoration DECO_BED,     FEATHERY_BED,   SET_UP_BED,        EVENT_DECO_BED_1,                $1b
+	decoration DECO_BED,     PINK_BED,       SET_UP_BED,        EVENT_DECO_BED_2,                $1c
+	decoration DECO_BED,     POLKADOT_BED,   SET_UP_BED,        EVENT_DECO_BED_3,                $1d
+	decoration DECO_BED,     PIKACHU_BED,    SET_UP_BED,        EVENT_DECO_BED_4,                $1e
+	decoration DECO_PLANT,   PUT_IT_AWAY,    PUT_AWAY_CARPET,   EVENT_GAVE_KURT_APRICORNS,       $00
+	decoration DECO_CARPET,  RED_CARPET,     SET_UP_CARPET,     EVENT_DECO_CARPET_1,             $08
+	decoration DECO_CARPET,  BLUE_CARPET,    SET_UP_CARPET,     EVENT_DECO_CARPET_2,             $0b
+	decoration DECO_CARPET,  YELLOW_CARPET,  SET_UP_CARPET,     EVENT_DECO_CARPET_3,             $0e
+	decoration DECO_CARPET,  GREEN_CARPET,   SET_UP_CARPET,     EVENT_DECO_CARPET_4,             $11
+	decoration DECO_PLANT,   PUT_IT_AWAY,    PUT_AWAY_PLANT,    EVENT_GAVE_KURT_APRICORNS,       $00
+	decoration DECO_PLANT,   MAGNAPLANT,     SET_UP_PLANT,      EVENT_DECO_PLANT_1,              $20
+	decoration DECO_PLANT,   TROPICPLANT,    SET_UP_PLANT,      EVENT_DECO_PLANT_2,              $21
+	decoration DECO_PLANT,   JUMBOPLANT,     SET_UP_PLANT,      EVENT_DECO_PLANT_3,              $22
+	decoration DECO_PLANT,   PUT_IT_AWAY,    PUT_AWAY_POSTER,   EVENT_GAVE_KURT_APRICORNS,       $00
+	decoration DECO_PLANT,   TOWN_MAP_D,     SET_UP_POSTER,     EVENT_DECO_PLANT_4,              $1f
+	decoration DECO_POSTER,  PIKACHU,        SET_UP_POSTER,     EVENT_DECO_POSTER_1,             $23
+	decoration DECO_POSTER,  CLEFAIRY,       SET_UP_POSTER,     EVENT_DECO_POSTER_2,             $24
+	decoration DECO_POSTER,  JIGGLYPUFF,     SET_UP_POSTER,     EVENT_DECO_POSTER_3,             $25
+	decoration DECO_PLANT,   PUT_IT_AWAY,    PUT_AWAY_CONSOLE,  EVENT_GAVE_KURT_APRICORNS,       $00
+	decoration DECO_PLANT,   FAMICOM,        SET_UP_CONSOLE,    EVENT_DECO_FAMICOM,              SPRITE_FAMICOM
+	decoration DECO_PLANT,   SUPER_NES,      SET_UP_CONSOLE,    EVENT_DECO_SNES,                 SPRITE_SNES
+	decoration DECO_PLANT,   NINTENDO_64,    SET_UP_CONSOLE,    EVENT_DECO_N64,                  SPRITE_N64
+	decoration DECO_PLANT,   VIRTUAL_BOY,    SET_UP_CONSOLE,    EVENT_DECO_VIRTUAL_BOY,          SPRITE_VIRTUAL_BOY
+	decoration DECO_PLANT,   PUT_IT_AWAY,    PUT_AWAY_BIG_DOLL, EVENT_GAVE_KURT_APRICORNS,       $00
+	decoration DECO_BIGDOLL, SNORLAX,        SET_UP_BIG_DOLL,   EVENT_DECO_BIG_SNORLAX_DOLL,     SPRITE_BIG_SNORLAX
+	decoration DECO_BIGDOLL, ONIX,           SET_UP_BIG_DOLL,   EVENT_DECO_BIG_ONIX_DOLL,        SPRITE_BIG_ONIX
+	decoration DECO_BIGDOLL, LAPRAS,         SET_UP_BIG_DOLL,   EVENT_DECO_BIG_LAPRAS_DOLL,      SPRITE_BIG_LAPRAS
+	decoration DECO_PLANT,   PUT_IT_AWAY,    PUT_AWAY_DOLL,     EVENT_GAVE_KURT_APRICORNS,       $00
+	decoration DECO_DOLL,    PIKACHU,        SET_UP_DOLL,       EVENT_DECO_PIKACHU_DOLL,         SPRITE_PIKACHU
+	decoration DECO_PLANT,   SURF_PIKA_DOLL, SET_UP_DOLL,       EVENT_DECO_SURFING_PIKACHU_DOLL, SPRITE_SURFING_PIKACHU
+	decoration DECO_DOLL,    CLEFAIRY,       SET_UP_DOLL,       EVENT_DECO_CLEFAIRY_DOLL,        SPRITE_CLEFAIRY
+	decoration DECO_DOLL,    JIGGLYPUFF,     SET_UP_DOLL,       EVENT_DECO_JIGGLYPUFF_DOLL,      SPRITE_JIGGLYPUFF
+	decoration DECO_DOLL,    BULBASAUR,      SET_UP_DOLL,       EVENT_DECO_BULBASAUR_DOLL,       SPRITE_BULBASAUR
+	decoration DECO_DOLL,    CHARMANDER,     SET_UP_DOLL,       EVENT_DECO_CHARMANDER_DOLL,      SPRITE_CHARMANDER
+	decoration DECO_DOLL,    SQUIRTLE,       SET_UP_DOLL,       EVENT_DECO_SQUIRTLE_DOLL,        SPRITE_SQUIRTLE
+	decoration DECO_DOLL,    POLIWAG,        SET_UP_DOLL,       EVENT_DECO_POLIWAG_DOLL,         SPRITE_POLIWAG
+	decoration DECO_DOLL,    DIGLETT,        SET_UP_DOLL,       EVENT_DECO_DIGLETT_DOLL,         SPRITE_DIGLETT
+	decoration DECO_DOLL,    STARYU,         SET_UP_DOLL,       EVENT_DECO_STARMIE_DOLL,         SPRITE_STARMIE
+	decoration DECO_DOLL,    MAGIKARP,       SET_UP_DOLL,       EVENT_DECO_MAGIKARP_DOLL,        SPRITE_MAGIKARP
+	decoration DECO_DOLL,    ODDISH,         SET_UP_DOLL,       EVENT_DECO_ODDISH_DOLL,          SPRITE_ODDISH
+	decoration DECO_DOLL,    GENGAR,         SET_UP_DOLL,       EVENT_DECO_GENGAR_DOLL,          SPRITE_GENGAR
+	decoration DECO_DOLL,    SHELLDER,       SET_UP_DOLL,       EVENT_DECO_SHELLDER_DOLL,        SPRITE_SHELLDER
+	decoration DECO_DOLL,    GRIMER,         SET_UP_DOLL,       EVENT_DECO_GRIMER_DOLL,          SPRITE_GRIMER
+	decoration DECO_DOLL,    VOLTORB,        SET_UP_DOLL,       EVENT_DECO_VOLTORB_DOLL,         SPRITE_VOLTORB
+	decoration DECO_DOLL,    WEEDLE,         SET_UP_DOLL,       EVENT_DECO_WEEDLE_DOLL,          SPRITE_WEEDLE
+	decoration DECO_DOLL,    UNOWN,          SET_UP_DOLL,       EVENT_DECO_UNOWN_DOLL,           SPRITE_UNOWN
+	decoration DECO_DOLL,    GEODUDE,        SET_UP_DOLL,       EVENT_DECO_GEODUDE_DOLL,         SPRITE_GEODUDE
+	decoration DECO_DOLL,    MACHOP,         SET_UP_DOLL,       EVENT_DECO_MACHOP_DOLL,          SPRITE_MACHOP
+	decoration DECO_DOLL,    TENTACOOL,      SET_UP_DOLL,       EVENT_DECO_TENTACOOL_DOLL,       SPRITE_TENTACOOL
+	decoration DECO_PLANT,   GOLD_TROPHY,    SET_UP_DOLL,       EVENT_DECO_GOLD_TROPHY,          SPRITE_GOLD_TROPHY
+	decoration DECO_PLANT,   SILVER_TROPHY,  SET_UP_DOLL,       EVENT_DECO_SILVER_TROPHY,        SPRITE_SILVER_TROPHY
+; 26b8d
--- /dev/null
+++ b/data/default_options.asm
@@ -1,0 +1,18 @@
+DefaultOptions: ; 14f7c
+; Options: med text speed
+	db TEXT_DELAY_MED
+; wSaveFileExists: no
+	db $00
+; TextBoxFrame: frame 1
+	db FRAME_1
+; TextBoxFlags: ??
+	db $01
+; GBPrinter: normal brightness
+	db GBPRINTER_NORMAL
+; Options2: menu account on
+	db $01
+; $cfd2: ??
+	db $00
+; $cfd3: ??
+	db $00
+; 14f84
--- a/data/egg_move_pointers.asm
+++ b/data/egg_move_pointers.asm
@@ -254,3 +254,4 @@
 	dw NoEggMoves
 	dw NoEggMoves
 	dw NoEggMoves
+; 0x23d07
--- /dev/null
+++ b/data/emote_headers.asm
@@ -1,0 +1,22 @@
+emote_header: MACRO
+; graphics pointer, length, starting tile
+	dw \1
+	db \2 tiles, BANK(\1)
+	dw VTiles1 tile \3
+ENDM
+
+EmotesPointers: ; 144d
+; entries correspond to EMOTE_* constants
+	emote_header ShockEmote,     4, $78
+	emote_header QuestionEmote,  4, $78
+	emote_header HappyEmote,     4, $78
+	emote_header SadEmote,       4, $78
+	emote_header HeartEmote,     4, $78
+	emote_header BoltEmote,      4, $78
+	emote_header SleepEmote,     4, $78
+	emote_header FishEmote,      4, $78
+	emote_header JumpShadowGFX,  1, $7c
+	emote_header FishingRodGFX,  2, $7c
+	emote_header BoulderDustGFX, 2, $7e
+	emote_header GrassRustleGFX, 1, $7e
+; 14495
--- /dev/null
+++ b/data/engine_flags.asm
@@ -1,0 +1,206 @@
+engine_flag: MACRO
+	dwb \1, 1 << \2
+ENDM
+
+EngineFlags: ; 80462
+	; location, bit
+	; (all locations are in WRAM bank 1)
+
+	; pokegear
+	engine_flag wPokegearFlags, 1 ; radio card       ; $0
+	engine_flag wPokegearFlags, 0 ; map card
+	engine_flag wPokegearFlags, 2 ; phone card
+	engine_flag wPokegearFlags, 3 ; expn card
+	engine_flag wPokegearFlags, 7 ; on/off
+
+	;   wDayCareMan, 7 ; day-care 1 on
+	engine_flag wDayCareMan, 6 ; egg is ready
+	;   wDayCareMan, 5 ; monster 1 and 2 are compatible
+	engine_flag wDayCareMan, 0 ; monster 1 in day-care
+
+	;   wDayCareLady, 7 = day-care 2 on
+	engine_flag wDayCareLady, 0 ; monster 2 in day-care
+
+	engine_flag wMomSavingMoney, 0 ; mom saving money ; $8
+	engine_flag wMomSavingMoney, 7 ; dst
+
+	engine_flag wUnusedTwoDayTimerOn, 0 ; unused, possibly related to a 2-day timer
+
+	engine_flag StatusFlags, 0 ; pokedex
+	engine_flag StatusFlags, 1 ; unown dex
+	engine_flag StatusFlags, 3 ; pokerus
+	engine_flag StatusFlags, 4 ; rocket signal on ch20
+	engine_flag StatusFlags, 6 ; credits skip
+	engine_flag StatusFlags, 7 ; bug contest on   ; $10
+	engine_flag StatusFlags2, 2 ; bug contest timer
+	engine_flag StatusFlags2, 1 ; safari zone?
+	engine_flag StatusFlags2, 0 ; rockets in radio tower
+	engine_flag StatusFlags2, 4 ; bike shop call enabled (1024 bike steps reqd)
+	engine_flag StatusFlags2, 5 ; give pokerus
+	engine_flag StatusFlags2, 6 ; berry -> berry juice when trading?
+	engine_flag StatusFlags2, 7 ; rockets in mahogany
+
+	engine_flag BikeFlags, 0 ; strength active  ; $18
+	engine_flag BikeFlags, 1 ; always on bike (cant surf)
+	engine_flag BikeFlags, 2 ; downhill (cycling road)
+
+	engine_flag JohtoBadges, 0 ; zephyrbadge
+	engine_flag JohtoBadges, 1 ; hivebadge
+	engine_flag JohtoBadges, 2 ; plainbadge
+	engine_flag JohtoBadges, 3 ; fogbadge
+	engine_flag JohtoBadges, 4 ; mineralbadge
+	engine_flag JohtoBadges, 5 ; stormbadge ; $20
+	engine_flag JohtoBadges, 6 ; glacierbadge
+	engine_flag JohtoBadges, 7 ; risingbadge
+
+	engine_flag KantoBadges, 0 ; boulderbadge
+	engine_flag KantoBadges, 1 ; cascadebadge
+	engine_flag KantoBadges, 2 ; thunderbadge
+	engine_flag KantoBadges, 3 ; rainbowbadge
+	engine_flag KantoBadges, 4 ; soulbadge
+	engine_flag KantoBadges, 5 ; marshbadge ; $28
+	engine_flag KantoBadges, 6 ; volcanobadge
+	engine_flag KantoBadges, 7 ; earthbadge
+
+	; unown sets
+	engine_flag UnlockedUnowns, 0 ; 1
+	engine_flag UnlockedUnowns, 1 ; 2
+	engine_flag UnlockedUnowns, 2 ; 3
+	engine_flag UnlockedUnowns, 3 ; 4
+	engine_flag UnlockedUnowns, 4 ; 5
+	engine_flag UnlockedUnowns, 5 ; 6       ; $30
+	engine_flag UnlockedUnowns, 6 ; 7
+	engine_flag UnlockedUnowns, 7 ; 8
+
+	; fly
+	engine_flag VisitedSpawns, 0     ; your house
+	engine_flag VisitedSpawns, 1     ; viridian pokecenter
+	engine_flag VisitedSpawns, 2     ; pallet
+	engine_flag VisitedSpawns, 3     ; viridian
+	engine_flag VisitedSpawns, 4     ; pewter
+	engine_flag VisitedSpawns, 5     ; cerulean ; $38
+	engine_flag VisitedSpawns, 6     ; rock tunnel
+	engine_flag VisitedSpawns, 7     ; vermilion
+	engine_flag VisitedSpawns + 1, 0 ; lavender
+	engine_flag VisitedSpawns + 1, 1 ; saffron
+	engine_flag VisitedSpawns + 1, 2 ; celadon
+	engine_flag VisitedSpawns + 1, 3 ; fuchsia
+	engine_flag VisitedSpawns + 1, 4 ; cinnabar
+	engine_flag VisitedSpawns + 1, 5 ; indigo plateau ; $40
+	engine_flag VisitedSpawns + 1, 6 ; new bark
+	engine_flag VisitedSpawns + 1, 7 ; cherrygrove
+	engine_flag VisitedSpawns + 2, 0 ; violet
+	                                 ; union cave
+	engine_flag VisitedSpawns + 2, 2 ; azalea
+	engine_flag VisitedSpawns + 2, 3 ; cianwood
+	engine_flag VisitedSpawns + 2, 4 ; goldenrod
+	engine_flag VisitedSpawns + 2, 5 ; olivine
+	engine_flag VisitedSpawns + 2, 6 ; ecruteak  ; $48
+	engine_flag VisitedSpawns + 2, 7 ; mahogany
+	engine_flag VisitedSpawns + 3, 0 ; lake of rage
+	engine_flag VisitedSpawns + 3, 1 ; blackthorn
+	engine_flag VisitedSpawns + 3, 2 ; silver cave
+	                                 ; fast ship
+	engine_flag VisitedSpawns + 3, 4 ; unused
+
+	engine_flag wLuckyNumberShowFlag, 0 ; lucky number show
+	engine_flag StatusFlags2, 3 ; ????
+
+	engine_flag DailyFlags, 0 ; kurt making balls  ; $50
+	engine_flag DailyFlags, 1 ; ????
+	engine_flag DailyFlags, 2 ; special wilddata?
+	engine_flag DailyFlags, 3 ; time capsule (24h wait)
+	engine_flag DailyFlags, 4 ; all fruit trees
+	engine_flag DailyFlags, 5 ; shuckle given
+	engine_flag DailyFlags, 6 ; goldenrod underground merchant closed
+	engine_flag DailyFlags, 7 ; fought in trainer hall today
+
+	engine_flag WeeklyFlags, 0 ; mt moon square clefairy  ; $58
+	engine_flag WeeklyFlags, 1 ; union cave lapras
+	engine_flag WeeklyFlags, 2 ; goldenrod underground haircut used
+	engine_flag WeeklyFlags, 3 ; goldenrod mall happiness event floor05 person07
+	engine_flag WeeklyFlags, 4 ; tea in blues house
+	engine_flag WeeklyFlags, 5 ; indigo plateau rival fight
+	engine_flag WeeklyFlags, 6 ; move tutor
+	engine_flag WeeklyFlags, 7 ; buenas password
+
+	engine_flag SwarmFlags, 0 ; buenas password 2
+	engine_flag SwarmFlags, 1 ; goldenrod dept store sale is on
+
+	engine_flag GameTimerPause, 7 ; $62
+
+	engine_flag PlayerGender, 0 ; player is female
+
+	engine_flag wCelebiEvent, 2 ; have gs ball after kurt examined it
+
+	; rematches
+	engine_flag wDailyRematchFlags, 0 ; jack
+	engine_flag wDailyRematchFlags, 1 ; huey
+	engine_flag wDailyRematchFlags, 2 ; gaven
+	engine_flag wDailyRematchFlags, 3 ; beth  ; $68
+	engine_flag wDailyRematchFlags, 4 ; jose
+	engine_flag wDailyRematchFlags, 5 ; reena
+	engine_flag wDailyRematchFlags, 6 ; joey
+	engine_flag wDailyRematchFlags, 7 ; wade
+	engine_flag wDailyRematchFlags + 1, 0 ; ralph
+	engine_flag wDailyRematchFlags + 1, 1 ; liz
+	engine_flag wDailyRematchFlags + 1, 2 ; anthony
+	engine_flag wDailyRematchFlags + 1, 3 ; todd  ; $70
+	engine_flag wDailyRematchFlags + 1, 4 ; gina
+	engine_flag wDailyRematchFlags + 1, 5 ; arnie
+	engine_flag wDailyRematchFlags + 1, 6 ; alan
+	engine_flag wDailyRematchFlags + 1, 7 ; dana
+	engine_flag wDailyRematchFlags + 2, 0 ; chad
+	engine_flag wDailyRematchFlags + 2, 1 ; tully
+	engine_flag wDailyRematchFlags + 2, 2 ; brent
+	engine_flag wDailyRematchFlags + 2, 3 ; tiffany  ; $78
+	engine_flag wDailyRematchFlags + 2, 4 ; vance
+	engine_flag wDailyRematchFlags + 2, 5 ; wilton
+	engine_flag wDailyRematchFlags + 2, 6 ; parry
+	engine_flag wDailyRematchFlags + 2, 7 ; erin
+
+	engine_flag wDailyPhoneItemFlags, 0 ; beverly has nugget
+	engine_flag wDailyPhoneItemFlags, 1 ; jose has star piece
+	engine_flag wDailyPhoneItemFlags, 2 ; wade has item (see EVENT_WADE_HAS_*** in constants/event_flags.asm)
+	engine_flag wDailyPhoneItemFlags, 3 ; gina has leaf stone  ; $80
+	engine_flag wDailyPhoneItemFlags, 4 ; alan has fire stone
+	engine_flag wDailyPhoneItemFlags, 5 ; liz has thunderstone
+	engine_flag wDailyPhoneItemFlags, 6 ; derek has nugget
+	engine_flag wDailyPhoneItemFlags, 7 ; tully has water stone
+
+	engine_flag wDailyPhoneItemFlags + 1, 0 ; tiffany has pink bow
+	engine_flag wDailyPhoneItemFlags + 1, 1 ; wilton has item (see EVENT_WILTON_HAS_*** in constants/event_flags.asm)
+
+	engine_flag wDailyPhoneTimeOfDayFlags, 0
+	engine_flag wDailyPhoneTimeOfDayFlags, 1  ; $88
+	engine_flag wDailyPhoneTimeOfDayFlags, 2
+	engine_flag wDailyPhoneTimeOfDayFlags, 3
+	engine_flag wDailyPhoneTimeOfDayFlags, 4
+	engine_flag wDailyPhoneTimeOfDayFlags, 5
+	engine_flag wDailyPhoneTimeOfDayFlags, 6
+	engine_flag wDailyPhoneTimeOfDayFlags, 7
+
+	engine_flag wDailyPhoneTimeOfDayFlags + 1, 0
+	engine_flag wDailyPhoneTimeOfDayFlags + 1, 1  ; $90
+	engine_flag wDailyPhoneTimeOfDayFlags + 1, 2
+	engine_flag wDailyPhoneTimeOfDayFlags + 1, 3
+	engine_flag wDailyPhoneTimeOfDayFlags + 1, 4
+	engine_flag wDailyPhoneTimeOfDayFlags + 1, 5
+	engine_flag wDailyPhoneTimeOfDayFlags + 1, 6
+	engine_flag wDailyPhoneTimeOfDayFlags + 1, 7
+
+	engine_flag wDailyPhoneTimeOfDayFlags + 2, 0
+	engine_flag wDailyPhoneTimeOfDayFlags + 2, 1  ; $98
+	engine_flag wDailyPhoneTimeOfDayFlags + 2, 2
+	engine_flag wDailyPhoneTimeOfDayFlags + 2, 3
+	engine_flag wDailyPhoneTimeOfDayFlags + 2, 4
+	engine_flag wDailyPhoneTimeOfDayFlags + 2, 5
+	engine_flag wDailyPhoneTimeOfDayFlags + 2, 6
+	engine_flag wDailyPhoneTimeOfDayFlags + 2, 7
+
+	engine_flag wPlayerSpriteSetupFlags, 2 ; female player has been transformed into male
+
+	engine_flag SwarmFlags, 2 ; dunsparce swarm   ; $a0
+	engine_flag SwarmFlags, 3 ; yanma swarm
+
+; 80648
--- a/data/evos_attacks_pointers.asm
+++ b/data/evos_attacks_pointers.asm
@@ -1,7 +1,5 @@
-; Pointer table for evolutions and attacks.
+; Evolutions and attacks are grouped together since they're both checked at level-up.
 
-; These are grouped together since they're both checked at level-up.
-
 EvosAttacksPointers:: ; 0x425b1
 	dw BulbasaurEvosAttacks
 	dw IvysaurEvosAttacks
@@ -254,3 +252,4 @@
 	dw LugiaEvosAttacks
 	dw HoOhEvosAttacks
 	dw CelebiEvosAttacks
+; 0x427a7
--- /dev/null
+++ b/data/facings.asm
@@ -1,0 +1,264 @@
+Facings: ; 4049
+; entries correspond to FACING_* constants
+	dw FacingStepDown0
+	dw FacingStepDown1
+	dw FacingStepDown2
+	dw FacingStepDown3
+	dw FacingStepUp0
+	dw FacingStepUp1
+	dw FacingStepUp2
+	dw FacingStepUp3
+	dw FacingStepLeft0
+	dw FacingStepLeft1
+	dw FacingStepLeft2
+	dw FacingStepLeft3
+	dw FacingStepRight0
+	dw FacingStepRight1
+	dw FacingStepRight2
+	dw FacingStepRight3
+	dw FacingFishDown
+	dw FacingFishUp
+	dw FacingFishLeft
+	dw FacingFishRight
+	dw FacingEmote
+	dw FacingShadow
+	dw FacingBigDollAsymmetric
+	dw FacingBigDollSymmetric
+	dw FacingWeirdTree0
+	dw FacingWeirdTree1
+	dw FacingWeirdTree2
+	dw FacingWeirdTree3
+	dw FacingBoulderDust1
+	dw FacingBoulderDust2
+	dw FacingGrass1
+	dw FacingGrass2
+FacingsEnd:
+	dw 0
+
+NUM_FACINGS EQU (FacingsEnd - Facings) / 2
+
+
+; Tables used as a reference to transform OAM data.
+
+; Format:
+;	db y, x, attributes, tile index
+
+FacingStepDown0:
+FacingStepDown2:
+FacingWeirdTree0:
+FacingWeirdTree2: ; standing down
+	db 4 ; #
+	db  0,  0, 0, $00
+	db  0,  8, 0, $01
+	db  8,  0, 2, $02
+	db  8,  8, 2, $03
+; 409c
+
+FacingStepDown1: ; walking down 1
+	db 4 ; #
+	db  0,  0, 0, $80
+	db  0,  8, 0, $81
+	db  8,  0, 2, $82
+	db  8,  8, 2, $83
+; 40ad
+
+FacingStepDown3: ; walking down 2
+	db 4 ; #
+	db  0,  8, X_FLIP, $80
+	db  0,  0, X_FLIP, $81
+	db  8,  8, 2 | X_FLIP, $82
+	db  8,  0, 2 | X_FLIP, $83
+; 40be
+
+FacingStepUp0:
+FacingStepUp2: ; standing up
+	db 4 ; #
+	db  0,  0, 0, $04
+	db  0,  8, 0, $05
+	db  8,  0, 2, $06
+	db  8,  8, 2, $07
+; 40cf
+
+FacingStepUp1: ; walking up 1
+	db 4 ; #
+	db  0,  0, 0, $84
+	db  0,  8, 0, $85
+	db  8,  0, 2, $86
+	db  8,  8, 2, $87
+; 40e0
+
+FacingStepUp3: ; walking up 2
+	db 4 ; #
+	db  0,  8, X_FLIP, $84
+	db  0,  0, X_FLIP, $85
+	db  8,  8, 2 | X_FLIP, $86
+	db  8,  0, 2 | X_FLIP, $87
+; 40f1
+
+FacingStepLeft0:
+FacingStepLeft2: ; standing left
+	db 4 ; #
+	db  0,  0, 0, $08
+	db  0,  8, 0, $09
+	db  8,  0, 2, $0a
+	db  8,  8, 2, $0b
+; 4102
+
+FacingStepRight0:
+FacingStepRight2: ; standing right
+	db 4 ; #
+	db  0,  8, X_FLIP, $08
+	db  0,  0, X_FLIP, $09
+	db  8,  8, 2 | X_FLIP, $0a
+	db  8,  0, 2 | X_FLIP, $0b
+; 4113
+
+FacingStepLeft1:
+FacingStepLeft3: ; walking left
+	db 4 ; #
+	db  0,  0, 0, $88
+	db  0,  8, 0, $89
+	db  8,  0, 2, $8a
+	db  8,  8, 2, $8b
+; 4124
+
+FacingStepRight1:
+FacingStepRight3: ; walking right
+	db 4 ; #
+	db  0,  8, X_FLIP, $88
+	db  0,  0, X_FLIP, $89
+	db  8,  8, 2 | X_FLIP, $8a
+	db  8,  0, 2 | X_FLIP, $8b
+; 4135
+
+FacingFishDown: ; fishing down
+	db 5 ; #
+	db  0,  0, 0, $00
+	db  0,  8, 0, $01
+	db  8,  0, 2, $02
+	db  8,  8, 2, $03
+	db 16,  0, 4, $fc
+; 414a
+
+FacingFishUp: ; fishing up
+	db 5 ; #
+	db  0,  0, 0, $04
+	db  0,  8, 0, $05
+	db  8,  0, 2, $06
+	db  8,  8, 2, $07
+	db -8,  0, 4, $fc
+; 415f
+
+FacingFishLeft: ; fishing left
+	db 5 ; #
+	db  0,  0, 0, $08
+	db  0,  8, 0, $09
+	db  8,  0, 2, $0a
+	db  8,  8, 2, $0b
+	db  5, -8, 4 | X_FLIP, $fd
+; 4174
+
+FacingFishRight: ; fishing right
+	db 5 ; #
+	db  0,  8, X_FLIP, $08
+	db  0,  0, X_FLIP, $09
+	db  8,  8, 2 | X_FLIP, $0a
+	db  8,  0, 2 | X_FLIP, $0b
+	db  5, 16, 4, $fd
+; 4189
+
+FacingEmote: ; emote
+	db 4 ; #
+	db  0,  0, 4, $f8
+	db  0,  8, 4, $f9
+	db  8,  0, 4, $fa
+	db  8,  8, 4, $fb
+; 419a
+
+FacingShadow: ; shadow
+	db 2 ; #
+	db  0,  0, 4, $fc
+	db  0,  8, 4 | X_FLIP, $fc
+; 41a3
+
+FacingBigDollSymmetric: ; big snorlax or lapras doll
+	db 16 ; #
+	db  0,  0, 0, $00
+	db  0,  8, 0, $01
+	db  8,  0, 0, $02
+	db  8,  8, 0, $03
+	db 16,  0, 0, $04
+	db 16,  8, 0, $05
+	db 24,  0, 0, $06
+	db 24,  8, 0, $07
+	db  0, 24, X_FLIP, $00
+	db  0, 16, X_FLIP, $01
+	db  8, 24, X_FLIP, $02
+	db  8, 16, X_FLIP, $03
+	db 16, 24, X_FLIP, $04
+	db 16, 16, X_FLIP, $05
+	db 24, 24, X_FLIP, $06
+	db 24, 16, X_FLIP, $07
+; 41e4
+
+FacingWeirdTree1: ; 41e4
+	db 4 ; #
+	db  0,  0, 0, $04
+	db  0,  8, 0, $05
+	db  8,  0, 0, $06
+	db  8,  8, 0, $07
+; 41f5
+
+FacingWeirdTree3: ; 41f5
+	db 4 ; #
+	db  0,  8, X_FLIP, $04
+	db  0,  0, X_FLIP, $05
+	db  8,  8, X_FLIP, $06
+	db  8,  0, X_FLIP, $07
+; 4206
+
+FacingBigDollAsymmetric: ; big doll other than snorlax or lapras
+	db 14 ; #
+	db  0,  0, 0, $00
+	db  0,  8, 0, $01
+	db  8,  0, 0, $04
+	db  8,  8, 0, $05
+	db 16,  8, 0, $07
+	db 24,  8, 0, $0a
+	db  0, 24, 0, $03
+	db  0, 16, 0, $02
+	db  8, 24, X_FLIP, $02
+	db  8, 16, 0, $06
+	db 16, 24, 0, $09
+	db 16, 16, 0, $08
+	db 24, 24, X_FLIP, $04
+	db 24, 16, 0, $0b
+; 423f
+
+FacingBoulderDust1: ; boulder dust 1
+	db 4 ; #
+	db  0,  0, 4, $fe
+	db  0,  8, 4, $fe
+	db  8,  0, 4, $fe
+	db  8,  8, 4, $fe
+; 4250
+
+FacingBoulderDust2: ; boulder dust 2
+	db 4 ; #
+	db  0,  0, 4, $ff
+	db  0,  8, 4, $ff
+	db  8,  0, 4, $ff
+	db  8,  8, 4, $ff
+; 4261
+
+FacingGrass1: ; 4261
+	db 2 ; #
+	db  8,  0, 4, $fe
+	db  8,  8, 4 | X_FLIP, $fe
+; 426a
+
+FacingGrass2: ; 426a
+	db 2 ; #
+	db  9, -1, 4, $fe
+	db  9,  9, 4 | X_FLIP, $fe
+; 4273
--- /dev/null
+++ b/data/field_move_blocks.asm
@@ -1,0 +1,53 @@
+CutTreeBlockPointers: ; c862
+; tileset, block list pointer
+	dbw TILESET_JOHTO_1, .johto1
+	dbw TILESET_JOHTO_2, .johto2
+	dbw TILESET_KANTO, .kanto
+	dbw TILESET_PARK, .park
+	dbw TILESET_ILEX_FOREST, .ilex
+	db -1
+
+.johto1 ; Johto OW
+; facing block, replacement block, animation
+	db $03, $02, $01 ; grass
+	db $5b, $3c, $00 ; tree
+	db $5f, $3d, $00 ; tree
+	db $63, $3f, $00 ; tree
+	db $67, $3e, $00 ; tree
+	db -1
+
+.johto2 ; Goldenrod area
+; facing block, replacement block, animation
+	db $03, $02, $01 ; grass
+	db -1
+
+.kanto ; Kanto OW
+; facing block, replacement block, animation
+	db $0b, $0a, $01 ; grass
+	db $32, $6d, $00 ; tree
+	db $33, $6c, $00 ; tree
+	db $34, $6f, $00 ; tree
+	db $35, $4c, $00 ; tree
+	db $60, $6e, $00 ; tree
+	db -1
+
+.park ; National Park
+; facing block, replacement block, animation
+	db $13, $03, $01 ; grass
+	db $03, $04, $01 ; grass
+	db -1
+
+.ilex ; Ilex Forest
+; facing block, replacement block, animation
+	db $0f, $17, $00
+	db -1
+
+
+WhirlpoolBlockPointers: ; c8a4
+	dbw TILESET_JOHTO_1, .johto
+	db -1
+
+.johto ; c8a8
+; facing block, replacement block, animation
+	db $07, $36, $00
+	db -1
--- /dev/null
+++ b/data/fruit_tree_items.asm
@@ -1,0 +1,33 @@
+FruitTreeItems: ; 44097
+; entries correspond to FRUITTREE_* constants
+	db BERRY        ; ROUTE_29
+	db BERRY        ; ROUTE_30_1
+	db BERRY        ; ROUTE_38
+	db BERRY        ; ROUTE_46_1
+	db PSNCUREBERRY ; ROUTE_30_2
+	db PSNCUREBERRY ; ROUTE_33
+	db BITTER_BERRY ; ROUTE_31
+	db BITTER_BERRY ; ROUTE_43
+	db PRZCUREBERRY ; VIOLET_CITY
+	db PRZCUREBERRY ; ROUTE_46_2
+	db MYSTERYBERRY ; ROUTE_35
+	db MYSTERYBERRY ; ROUTE_45
+	db ICE_BERRY    ; ROUTE_36
+	db ICE_BERRY    ; ROUTE_26
+	db MINT_BERRY   ; ROUTE_39
+	db BURNT_BERRY  ; ROUTE_44
+	db RED_APRICORN ; ROUTE_37_1
+	db BLU_APRICORN ; ROUTE_37_2
+	db BLK_APRICORN ; ROUTE_37_3
+	db WHT_APRICORN ; AZALEA_TOWN
+	db PNK_APRICORN ; ROUTE_42_1
+	db GRN_APRICORN ; ROUTE_42_2
+	db YLW_APRICORN ; ROUTE_42_3
+	db BERRY        ; ROUTE_11
+	db PSNCUREBERRY ; ROUTE_2
+	db BITTER_BERRY ; ROUTE_1
+	db PRZCUREBERRY ; ROUTE_8
+	db ICE_BERRY    ; PEWTER_CITY_1
+	db MINT_BERRY   ; PEWTER_CITY_2
+	db BURNT_BERRY  ; FUCHSIA_CITY
+; 440b5
--- /dev/null
+++ b/data/growth_rates.asm
@@ -1,0 +1,20 @@
+growth_rate: MACRO
+; [1]/[2]*n**3 + [3]*n**2 + [4]*n - [5]
+	dn \1, \2
+	if \3 & $80 ; signed
+		db -\3 | $80
+	else
+		db \3
+	endc
+	db \4, \5
+ENDM
+
+GrowthRates: ; 50efa
+; entries correspond to base growth rate constants (see constants/pokemon_data_constants.asm)
+	growth_rate 1, 1,   0,   0,   0 ; Medium Fast
+	growth_rate 3, 4,  10,   0,  30 ; Slightly Fast
+	growth_rate 3, 4,  20,   0,  70 ; Slightly Slow
+	growth_rate 6, 5, -15, 100, 140 ; Medium Slow
+	growth_rate 4, 5,   0,   0,   0 ; Fast
+	growth_rate 5, 4,   0,   0,   0 ; Slow
+; 50f12
--- /dev/null
+++ b/data/happiness_changes.asm
@@ -1,0 +1,22 @@
+HappinessChanges:
+; entries correspond to HAPPINESS_* constants
+; change if happiness < 100, change if happiness < 200, change otherwise
+	db  +5,  +3,  +2 ; Gained a level
+	db  +5,  +3,  +2 ; Vitamin
+	db  +1,  +1,  +0 ; X Item
+	db  +3,  +2,  +1 ; Battled a Gym Leader
+	db  +1,  +1,  +0 ; Learned a move
+	db  -1,  -1,  -1 ; Lost to an enemy
+	db  -5,  -5, -10 ; Fainted due to poison
+	db  -5,  -5, -10 ; Lost to a much stronger enemy
+	db  +1,  +1,  +1 ; Haircut (Y1)
+	db  +3,  +3,  +1 ; Haircut (Y2)
+	db  +5,  +5,  +2 ; Haircut (Y3)
+	db  +1,  +1,  +1 ; Haircut (O1)
+	db  +3,  +3,  +1 ; Haircut (O2)
+	db +10, +10,  +4 ; Haircut (O3)
+	db  -5,  -5, -10 ; Used Heal Powder or Energypowder (bitter)
+	db -10, -10, -15 ; Used Energy Root (bitter)
+	db -15, -15, -20 ; Used Revival Herb (bitter)
+	db  +3,  +3,  +1 ; Grooming
+	db +10,  +6,  +4 ; Gained a level in the place where it was caught
--- /dev/null
+++ b/data/hm_moves.asm
@@ -1,0 +1,12 @@
+;  HM moves can't be forgotten
+
+HMMoves: ; 34f0
+	db CUT
+	db FLY
+	db SURF
+	db STRENGTH
+	db FLASH
+	db WATERFALL
+	db WHIRLPOOL
+	db -1 ; end
+; 34f8
--- /dev/null
+++ b/data/landmarks.asm
@@ -1,0 +1,208 @@
+landmark: MACRO
+; x, y, name
+	db \1, \2
+	dw \3
+ENDM
+
+Landmarks: ; 0x1ca8c3
+; entries correspond to constants/landmark_constants.asm
+	landmark   0,   0, SpecialMapName
+	landmark 148, 116, NewBarkTownName
+	landmark 136, 116, Route29Name
+	landmark 108, 116, CherrygroveCityName
+	landmark 108,  96, Route30Name
+	landmark 104,  76, Route31Name
+	landmark  92,  76, VioletCityName
+	landmark  93,  74, SproutTowerName
+	landmark  92, 108, Route32Name
+	landmark  84,  92, RuinsOfAlphName
+	landmark  92, 140, UnionCaveName
+	landmark  90, 140, Route33Name
+	landmark  76, 140, AzaleaTownName
+	landmark  78, 138, SlowpokeWellName
+	landmark  60, 136, IlexForestName
+	landmark  60, 128, Route34Name
+	landmark  60, 108, GoldenrodCityName
+	landmark  58, 108, RadioTowerName
+	landmark  60,  92, Route35Name
+	landmark  60,  76, NationalParkName
+	landmark  72,  76, Route36Name
+	landmark  76,  68, Route37Name
+	landmark  76,  60, EcruteakCityName
+	landmark  78,  58, TinTowerName
+	landmark  74,  58, BurnedTowerName
+	landmark  60,  60, Route38Name
+	landmark  44,  64, Route39Name
+	landmark  44,  76, OlivineCityName
+	landmark  46,  78, LighthouseName
+	landmark  36,  72, BattleTowerName
+	landmark  36,  80, Route40Name
+	landmark  36, 108, WhirlIslandsName
+	landmark  36, 116, Route41Name
+	landmark  28, 116, CianwoodCityName
+	landmark 100,  60, Route42Name
+	landmark  92,  60, MtMortarName
+	landmark 116,  60, MahoganyTownName
+	landmark 116,  52, Route43Name
+	landmark 116,  44, LakeOfRageName
+	landmark 128,  60, Route44Name
+	landmark 138,  54, IcePathName
+	landmark 140,  60, BlackthornCityName
+	landmark 140,  52, DragonsDenName
+	landmark 140,  80, Route45Name
+	landmark 120,  88, DarkCaveName
+	landmark 132, 104, Route46Name
+	landmark 156,  84, SilverCaveName
+	landmark  60, 124, PalletTownName
+	landmark  60, 108, Route1Name
+	landmark  60,  92, ViridianCityName
+	landmark  60,  80, Route2Name
+	landmark  60,  68, PewterCityName
+	landmark  72,  68, Route3Name
+	landmark  84,  68, MtMoonName
+	landmark  96,  68, Route4Name
+	landmark 108,  68, CeruleanCityName
+	landmark 108,  60, Route24Name
+	landmark 116,  52, Route25Name
+	landmark 108,  76, Route5Name
+	landmark 116,  92, UndergroundName
+	landmark 108,  92, Route6Name
+	landmark 108, 100, VermilionCityName
+	landmark  96,  76, DiglettsCaveName
+	landmark  96,  84, Route7Name
+	landmark 124,  84, Route8Name
+	landmark 124,  68, Route9Name
+	landmark 140,  68, RockTunnelName
+	landmark 140,  72, Route10Name
+	landmark 140,  76, PowerPlantName
+	landmark 140,  84, LavenderTownName
+	landmark 148,  84, LavRadioTowerName
+	landmark  84,  84, CeladonCityName
+	landmark 108,  84, SaffronCityName
+	landmark 124, 100, Route11Name
+	landmark 140,  96, Route12Name
+	landmark 132, 116, Route13Name
+	landmark 124, 128, Route14Name
+	landmark 112, 132, Route15Name
+	landmark  76,  84, Route16Name
+	landmark  76, 108, Route17Name
+	landmark  88, 132, Route18Name
+	landmark 100, 132, FuchsiaCityName
+	landmark 100, 144, Route19Name
+	landmark  84, 148, Route20Name
+	landmark  76, 148, SeafoamIslandsName
+	landmark  60, 148, CinnabarIslandName
+	landmark  60, 136, Route21Name
+	landmark  44,  84, Route22Name
+	landmark  36,  68, VictoryRoadName
+	landmark  36,  60, Route23Name
+	landmark  36,  52, IndigoPlateauName
+	landmark  36, 108, Route26Name
+	landmark  28, 116, Route27Name
+	landmark  20, 116, TohjoFallsName
+	landmark  28,  84, Route28Name
+	landmark 148, 132, FastShipName
+; 0x1caa43
+
+NewBarkTownName:     db "NEW BARK¯TOWN@"
+CherrygroveCityName: db "CHERRYGROVE¯CITY@"
+VioletCityName:      db "VIOLET CITY@"
+AzaleaTownName:      db "AZALEA TOWN@"
+GoldenrodCityName:   db "GOLDENROD¯CITY@"
+EcruteakCityName:    db "ECRUTEAK¯CITY@"
+OlivineCityName:     db "OLIVINE¯CITY@"
+CianwoodCityName:    db "CIANWOOD¯CITY@"
+MahoganyTownName:    db "MAHOGANY¯TOWN@"
+BlackthornCityName:  db "BLACKTHORN¯CITY@"
+LakeOfRageName:      db "LAKE OF¯RAGE@"
+SilverCaveName:      db "SILVER CAVE@"
+SproutTowerName:     db "SPROUT¯TOWER@"
+RuinsOfAlphName:     db "RUINS¯OF ALPH@"
+UnionCaveName:       db "UNION CAVE@"
+SlowpokeWellName:    db "SLOWPOKE¯WELL@"
+RadioTowerName:      db "RADIO TOWER@"
+PowerPlantName:      db "POWER PLANT@"
+NationalParkName:    db "NATIONAL¯PARK@"
+TinTowerName:        db "TIN TOWER@"
+LighthouseName:      db "LIGHTHOUSE@"
+WhirlIslandsName:    db "WHIRL¯ISLANDS@"
+MtMortarName:        db "MT.MORTAR@"
+DragonsDenName:      db "DRAGON'S¯DEN@"
+IcePathName:         db "ICE PATH@"
+NotApplicableName:   db "N/A@"
+PalletTownName:      db "PALLET TOWN@"
+ViridianCityName:    db "VIRIDIAN¯CITY@"
+PewterCityName:      db "PEWTER CITY@"
+CeruleanCityName:    db "CERULEAN¯CITY@"
+LavenderTownName:    db "LAVENDER¯TOWN@"
+VermilionCityName:   db "VERMILION¯CITY@"
+CeladonCityName:     db "CELADON¯CITY@"
+SaffronCityName:     db "SAFFRON¯CITY@"
+FuchsiaCityName:     db "FUCHSIA¯CITY@"
+CinnabarIslandName:  db "CINNABAR¯ISLAND@"
+IndigoPlateauName:   db "INDIGO¯PLATEAU@"
+VictoryRoadName:     db "VICTORY¯ROAD@"
+MtMoonName:          db "MT.MOON@"
+RockTunnelName:      db "ROCK TUNNEL@"
+LavRadioTowerName:   db "LAV¯RADIO TOWER@"
+SilphCoName:         db "SILPH CO.@"
+SafariZoneName:      db "SAFARI ZONE@"
+SeafoamIslandsName:  db "SEAFOAM¯ISLANDS@"
+PokemonMansionName:  db "#MON¯MANSION@"
+CeruleanCaveName:    db "CERULEAN¯CAVE@"
+Route1Name:          db "ROUTE 1@"
+Route2Name:          db "ROUTE 2@"
+Route3Name:          db "ROUTE 3@"
+Route4Name:          db "ROUTE 4@"
+Route5Name:          db "ROUTE 5@"
+Route6Name:          db "ROUTE 6@"
+Route7Name:          db "ROUTE 7@"
+Route8Name:          db "ROUTE 8@"
+Route9Name:          db "ROUTE 9@"
+Route10Name:         db "ROUTE 10@"
+Route11Name:         db "ROUTE 11@"
+Route12Name:         db "ROUTE 12@"
+Route13Name:         db "ROUTE 13@"
+Route14Name:         db "ROUTE 14@"
+Route15Name:         db "ROUTE 15@"
+Route16Name:         db "ROUTE 16@"
+Route17Name:         db "ROUTE 17@"
+Route18Name:         db "ROUTE 18@"
+Route19Name:         db "ROUTE 19@"
+Route20Name:         db "ROUTE 20@"
+Route21Name:         db "ROUTE 21@"
+Route22Name:         db "ROUTE 22@"
+Route23Name:         db "ROUTE 23@"
+Route24Name:         db "ROUTE 24@"
+Route25Name:         db "ROUTE 25@"
+Route26Name:         db "ROUTE 26@"
+Route27Name:         db "ROUTE 27@"
+Route28Name:         db "ROUTE 28@"
+Route29Name:         db "ROUTE 29@"
+Route30Name:         db "ROUTE 30@"
+Route31Name:         db "ROUTE 31@"
+Route32Name:         db "ROUTE 32@"
+Route33Name:         db "ROUTE 33@"
+Route34Name:         db "ROUTE 34@"
+Route35Name:         db "ROUTE 35@"
+Route36Name:         db "ROUTE 36@"
+Route37Name:         db "ROUTE 37@"
+Route38Name:         db "ROUTE 38@"
+Route39Name:         db "ROUTE 39@"
+Route40Name:         db "ROUTE 40@"
+Route41Name:         db "ROUTE 41@"
+Route42Name:         db "ROUTE 42@"
+Route43Name:         db "ROUTE 43@"
+Route44Name:         db "ROUTE 44@"
+Route45Name:         db "ROUTE 45@"
+Route46Name:         db "ROUTE 46@"
+DarkCaveName:        db "DARK CAVE@"
+IlexForestName:      db "ILEX¯FOREST@"
+BurnedTowerName:     db "BURNED¯TOWER@"
+FastShipName:        db "FAST SHIP@"
+ViridianForestName:  db "VIRIDIAN¯FOREST@"
+DiglettsCaveName:    db "DIGLETT'S¯CAVE@"
+TohjoFallsName:      db "TOHJO FALLS@"
+UndergroundName:     db "UNDERGROUND@"
+BattleTowerName:     db "BATTLE¯TOWER@"
+SpecialMapName:      db "SPECIAL@"
--- /dev/null
+++ b/data/mail_input_chars.asm
@@ -1,0 +1,19 @@
+; see engine/naming_screen.asm
+
+MailEntry_Uppercase: ; 122dd
+	db "A B C D E F G H I J"
+	db "K L M N O P Q R S T"
+	db "U V W X Y Z   , ? !"
+	db "1 2 3 4 5 6 7 8 9 0"
+	db "<PK> <MN> <PO> <KE> é ♂ ♀ ¥ … ×"
+	db "lower  DEL   END   "
+; 1224f
+
+MailEntry_Lowercase: ; 1224f
+	db "a b c d e f g h i j"
+	db "k l m n o p q r s t"
+	db "u v w x y z   . - /"
+	db "'d 'l 'm 'r 's 't 'v & ( )"
+	db "<``> <''> [ ] ' : ;      "
+	db "UPPER  DEL   END   "
+; 122c1
--- a/data/map_objects.asm
+++ b/data/map_objects.asm
@@ -1,10 +1,10 @@
-; entries correspond to SPRITEMOVEDATA_* constants
-
 sprite_movement_data: macro
 	db \1, \2, \3, \4, \5
 	dn \6, 0
 endm
 
+SpriteMovementData:: ; 4273
+; entries correspond to SPRITEMOVEDATA_* constants
 	; function,                                              facing, action,                  flags1, flags2, palette flags
 	sprite_movement_data SPRITEMOVEFN_00,                    DOWN,   PERSON_ACTION_STAND,        $02,    $00,    %0000 ; 00
 	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   PERSON_ACTION_STAND,        $0c,    $00,    %0000 ; 01
@@ -44,3 +44,4 @@
 	sprite_movement_data SPRITEMOVEFN_GRASS,                 DOWN,   PERSON_ACTION_GRASS_SHAKE,  $8e,    $02,    %0000 ; 23
 	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY,        DOWN,   PERSON_ACTION_STAND,        $00,    $00,    %0010 ; 24
 	sprite_movement_data SPRITEMOVEFN_00,                    DOWN,   PERSON_ACTION_STAND,        $00,    $00,    %0000 ; 25
+; 4357
--- /dev/null
+++ b/data/map_triggers.asm
@@ -1,0 +1,89 @@
+trigger_def: MACRO
+; db group, map
+; dw address
+	map \1
+	dw \2
+ENDM
+
+MapTriggers:: ; 4d01e
+	trigger_def POKECENTER_2F,                          wPokecenter2FTrigger
+	trigger_def TRADE_CENTER,                           wTradeCenterTrigger
+	trigger_def COLOSSEUM,                              wColosseumTrigger
+	trigger_def TIME_CAPSULE,                           wTimeCapsuleTrigger
+	trigger_def POWER_PLANT,                            wPowerPlantTrigger
+	trigger_def CERULEAN_GYM,                           wCeruleanGymTrigger
+	trigger_def ROUTE_25,                               wRoute25Trigger
+	trigger_def TRAINER_HOUSE_B1F,                      wTrainerHouseB1FTrigger
+	trigger_def VICTORY_ROAD_GATE,                      wVictoryRoadGateTrigger
+	trigger_def SAFFRON_TRAIN_STATION,                  wSaffronTrainStationTrigger
+	trigger_def ROUTE_16_GATE,                          wRoute16GateTrigger
+	trigger_def ROUTE_17_18_GATE,                       wRoute1718GateTrigger
+	trigger_def INDIGO_PLATEAU_POKECENTER_1F,           wIndigoPlateauPokecenter1FTrigger
+	trigger_def WILLS_ROOM,                             wWillsRoomTrigger
+	trigger_def KOGAS_ROOM,                             wKogasRoomTrigger
+	trigger_def BRUNOS_ROOM,                            wBrunosRoomTrigger
+	trigger_def KARENS_ROOM,                            wKarensRoomTrigger
+	trigger_def LANCES_ROOM,                            wLancesRoomTrigger
+	trigger_def HALL_OF_FAME,                           wHallOfFameTrigger
+	trigger_def ROUTE_27,                               wRoute27Trigger
+	trigger_def NEW_BARK_TOWN,                          wNewBarkTownTrigger
+	trigger_def ELMS_LAB,                               wElmsLabTrigger
+	trigger_def KRISS_HOUSE_1F,                         wKrissHouse1FTrigger
+	trigger_def ROUTE_29,                               wRoute29Trigger
+	trigger_def CHERRYGROVE_CITY,                       wCherrygroveCityTrigger
+	trigger_def MR_POKEMONS_HOUSE,                      wMrPokemonsHouseTrigger
+	trigger_def ROUTE_32,                               wRoute32Trigger
+	trigger_def ROUTE_35_NATIONAL_PARK_GATE,            wRoute35NationalParkGateTrigger
+	trigger_def ROUTE_36,                               wRoute36Trigger
+	trigger_def ROUTE_36_NATIONAL_PARK_GATE,            wRoute36NationalParkGateTrigger
+	trigger_def AZALEA_TOWN,                            wAzaleaTownTrigger
+	trigger_def GOLDENROD_GYM,                          wGoldenrodGymTrigger
+	trigger_def GOLDENROD_MAGNET_TRAIN_STATION,         wGoldenrodMagnetTrainStationTrigger
+	trigger_def GOLDENROD_POKECENTER_1F,                wGoldenrodPokecenter1FTrigger
+	trigger_def OLIVINE_CITY,                           wOlivineCityTrigger
+	trigger_def ROUTE_34,                               wRoute34Trigger
+	trigger_def ROUTE_34_ILEX_FOREST_GATE,              wRoute34IlexForestGateTrigger
+	trigger_def ECRUTEAK_HOUSE,                         wEcruteakHouseTrigger
+	trigger_def WISE_TRIOS_ROOM,                        wWiseTriosRoomTrigger
+	trigger_def ECRUTEAK_POKECENTER_1F,                 wEcruteakPokecenter1FTrigger
+	trigger_def ECRUTEAK_GYM,                           wEcruteakGymTrigger
+	trigger_def MAHOGANY_TOWN,                          wMahoganyTownTrigger
+	trigger_def ROUTE_42,                               wRoute42Trigger
+	trigger_def CIANWOOD_CITY,                          wCianwoodCityTrigger
+	trigger_def BATTLE_TOWER_1F,                        wBattleTower1FTrigger
+	trigger_def BATTLE_TOWER_BATTLE_ROOM,               wBattleTowerBattleRoomTrigger
+	trigger_def BATTLE_TOWER_ELEVATOR,                  wBattleTowerElevatorTrigger
+	trigger_def BATTLE_TOWER_HALLWAY,                   wBattleTowerHallwayTrigger
+	trigger_def BATTLE_TOWER_OUTSIDE,                   wBattleTowerOutsideTrigger
+	trigger_def ROUTE_43_GATE,                          wRoute43GateTrigger
+	trigger_def MOUNT_MOON,                             wMountMoonTrigger
+	trigger_def SPROUT_TOWER_3F,                        wSproutTower3FTrigger
+	trigger_def TIN_TOWER_1F,                           wTinTower1FTrigger
+	trigger_def BURNED_TOWER_1F,                        wBurnedTower1FTrigger
+	trigger_def BURNED_TOWER_B1F,                       wBurnedTowerB1FTrigger
+	trigger_def RADIO_TOWER_5F,                         wRadioTower5FTrigger
+	trigger_def RUINS_OF_ALPH_OUTSIDE,                  wRuinsOfAlphOutsideTrigger
+	trigger_def RUINS_OF_ALPH_RESEARCH_CENTER,          wRuinsOfAlphResearchCenterTrigger
+	trigger_def RUINS_OF_ALPH_HO_OH_CHAMBER,            wRuinsOfAlphHoOhChamberTrigger
+	trigger_def RUINS_OF_ALPH_KABUTO_CHAMBER,           wRuinsOfAlphKabutoChamberTrigger
+	trigger_def RUINS_OF_ALPH_OMANYTE_CHAMBER,          wRuinsOfAlphOmanyteChamberTrigger
+	trigger_def RUINS_OF_ALPH_AERODACTYL_CHAMBER,       wRuinsOfAlphAerodactylChamberTrigger
+	trigger_def RUINS_OF_ALPH_INNER_CHAMBER,            wRuinsOfAlphInnerChamberTrigger
+	trigger_def MAHOGANY_MART_1F,                       wMahoganyMart1FTrigger
+	trigger_def TEAM_ROCKET_BASE_B1F,                   wTeamRocketBaseB1FTrigger
+	trigger_def TEAM_ROCKET_BASE_B2F,                   wTeamRocketBaseB2FTrigger
+	trigger_def TEAM_ROCKET_BASE_B3F,                   wTeamRocketBaseB3FTrigger
+	trigger_def UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES, wUndergroundPathSwitchRoomEntrancesTrigger
+	trigger_def SILVER_CAVE_ROOM_3,                     wSilverCaveRoom3Trigger
+	trigger_def VICTORY_ROAD,                           wVictoryRoadTrigger
+	trigger_def DRAGONS_DEN_B1F,                        wDragonsDenB1FTrigger
+	trigger_def DRAGON_SHRINE,                          wDragonShrineTrigger
+	trigger_def OLIVINE_PORT,                           wOlivinePortTrigger
+	trigger_def VERMILION_PORT,                         wVermilionPortTrigger
+	trigger_def FAST_SHIP_1F,                           wFastShip1FTrigger
+	trigger_def FAST_SHIP_B1F,                          wFastShipB1FTrigger
+	trigger_def MOUNT_MOON_SQUARE,                      wMountMoonSquareTrigger
+	trigger_def MOBILE_TRADE_ROOM_MOBILE,               wMobileTradeRoomMobileTrigger
+	trigger_def MOBILE_BATTLE_ROOM,                     wMobileBattleRoomTrigger
+	db -1
+; 4d15b
--- /dev/null
+++ b/data/mapgroup_roofs.asm
@@ -1,0 +1,31 @@
+; valid roofs: 0, 1, 2, 3, 4, or -1 for none
+
+MapGroupRoofs: ; 1c021i
+	db -1 ; group 0 (unused)
+	db  3 ; group 1 (Olivine)
+	db  2 ; group 2 (Mahogany)
+	db -1 ; group 3
+	db  1 ; group 4 (Ecruteak)
+	db  2 ; group 5 (Blackthorn)
+	db -1 ; group 6
+	db -1 ; group 7
+	db  2 ; group 8 (Azalea)
+	db  2 ; group 9 (Lake of Rage)
+	db  1 ; group 10 (Violet)
+	db  4 ; group 11 (Goldenrod)
+	db -1 ; group 12
+	db -1 ; group 13
+	db -1 ; group 14
+	db -1 ; group 15
+	db -1 ; group 16
+	db -1 ; group 17
+	db -1 ; group 18
+	db  0 ; group 19 (Silver Cave)
+	db -1 ; group 20
+	db -1 ; group 21
+	db  3 ; group 22 (Cianwood)
+	db -1 ; group 23
+	db  0 ; group 24 (New Bark)
+	db -1 ; group 25
+	db  0 ; group 26 (Cherrygrove)
+; 1c03c
--- /dev/null
+++ b/data/mom_phone_items.asm
@@ -1,0 +1,27 @@
+momitem: macro
+; money to trigger, cost, kind, item
+	dt \1
+	dt \2
+	db \3, \4
+ENDM
+
+MomItems_1: ; fd136
+	momitem      0,   600, MOM_ITEM, SUPER_POTION
+	momitem      0,    90, MOM_ITEM, ANTIDOTE
+	momitem      0,   180, MOM_ITEM, POKE_BALL
+	momitem      0,   450, MOM_ITEM, ESCAPE_ROPE
+	momitem      0,   500, MOM_ITEM, GREAT_BALL
+MomItems_1End: ; fd15e
+
+MomItems_2: ; fd15e
+	momitem    900,   600, MOM_ITEM, SUPER_POTION
+	momitem   4000,   270, MOM_ITEM, REPEL
+	momitem   7000,   600, MOM_ITEM, SUPER_POTION
+	momitem  10000,  1800, MOM_DOLL, DECO_CHARMANDER_DOLL
+	momitem  15000,  3000, MOM_ITEM, MOON_STONE
+	momitem  19000,   600, MOM_ITEM, SUPER_POTION
+	momitem  30000,  4800, MOM_DOLL, DECO_CLEFAIRY_DOLL
+	momitem  40000,   900, MOM_ITEM, HYPER_POTION
+	momitem  50000,  8000, MOM_DOLL, DECO_PIKACHU_DOLL
+	momitem 100000, 22800, MOM_DOLL, DECO_BIG_SNORLAX_DOLL
+MomItems_2End: ; fd1ae
--- /dev/null
+++ b/data/mon_menu_icons.asm
@@ -1,0 +1,255 @@
+; party menu icons
+
+MonMenuIcons: ; 8eac4
+	db ICON_BULBASAUR   ; BULBASAUR
+	db ICON_BULBASAUR   ; IVYSAUR
+	db ICON_BULBASAUR   ; VENUSAUR
+	db ICON_CHARMANDER  ; CHARMANDER
+	db ICON_CHARMANDER  ; CHARMELEON
+	db ICON_BIGMON      ; CHARIZARD
+	db ICON_SQUIRTLE    ; SQUIRTLE
+	db ICON_SQUIRTLE    ; WARTORTLE
+	db ICON_SQUIRTLE    ; BLASTOISE
+	db ICON_CATERPILLAR ; CATERPIE
+	db ICON_CATERPILLAR ; METAPOD
+	db ICON_MOTH        ; BUTTERFREE
+	db ICON_CATERPILLAR ; WEEDLE
+	db ICON_CATERPILLAR ; KAKUNA
+	db ICON_BUG         ; BEEDRILL
+	db ICON_BIRD        ; PIDGEY
+	db ICON_BIRD        ; PIDGEOTTO
+	db ICON_BIRD        ; PIDGEOT
+	db ICON_FOX         ; RATTATA
+	db ICON_FOX         ; RATICATE
+	db ICON_BIRD        ; SPEAROW
+	db ICON_BIRD        ; FEAROW
+	db ICON_SERPENT     ; EKANS
+	db ICON_SERPENT     ; ARBOK
+	db ICON_PIKACHU     ; PIKACHU
+	db ICON_PIKACHU     ; RAICHU
+	db ICON_MONSTER     ; SANDSHREW
+	db ICON_MONSTER     ; SANDSLASH
+	db ICON_FOX         ; NIDORAN_F
+	db ICON_FOX         ; NIDORINA
+	db ICON_MONSTER     ; NIDOQUEEN
+	db ICON_FOX         ; NIDORAN_M
+	db ICON_FOX         ; NIDORINO
+	db ICON_MONSTER     ; NIDOKING
+	db ICON_CLEFAIRY    ; CLEFAIRY
+	db ICON_CLEFAIRY    ; CLEFABLE
+	db ICON_FOX         ; VULPIX
+	db ICON_FOX         ; NINETALES
+	db ICON_JIGGLYPUFF  ; JIGGLYPUFF
+	db ICON_JIGGLYPUFF  ; WIGGLYTUFF
+	db ICON_BAT         ; ZUBAT
+	db ICON_BAT         ; GOLBAT
+	db ICON_ODDISH      ; ODDISH
+	db ICON_ODDISH      ; GLOOM
+	db ICON_ODDISH      ; VILEPLUME
+	db ICON_BUG         ; PARAS
+	db ICON_BUG         ; PARASECT
+	db ICON_CATERPILLAR ; VENONAT
+	db ICON_MOTH        ; VENOMOTH
+	db ICON_DIGLETT     ; DIGLETT
+	db ICON_DIGLETT     ; DUGTRIO
+	db ICON_FOX         ; MEOWTH
+	db ICON_FOX         ; PERSIAN
+	db ICON_MONSTER     ; PSYDUCK
+	db ICON_MONSTER     ; GOLDUCK
+	db ICON_FIGHTER     ; MANKEY
+	db ICON_FIGHTER     ; PRIMEAPE
+	db ICON_FOX         ; GROWLITHE
+	db ICON_FOX         ; ARCANINE
+	db ICON_POLIWAG     ; POLIWAG
+	db ICON_POLIWAG     ; POLIWHIRL
+	db ICON_POLIWAG     ; POLIWRATH
+	db ICON_HUMANSHAPE  ; ABRA
+	db ICON_HUMANSHAPE  ; KADABRA
+	db ICON_HUMANSHAPE  ; ALAKAZAM
+	db ICON_FIGHTER     ; MACHOP
+	db ICON_FIGHTER     ; MACHOKE
+	db ICON_FIGHTER     ; MACHAMP
+	db ICON_ODDISH      ; BELLSPROUT
+	db ICON_ODDISH      ; WEEPINBELL
+	db ICON_ODDISH      ; VICTREEBEL
+	db ICON_JELLYFISH   ; TENTACOOL
+	db ICON_JELLYFISH   ; TENTACRUEL
+	db ICON_GEODUDE     ; GEODUDE
+	db ICON_GEODUDE     ; GRAVELER
+	db ICON_GEODUDE     ; GOLEM
+	db ICON_EQUINE      ; PONYTA
+	db ICON_EQUINE      ; RAPIDASH
+	db ICON_SLOWPOKE    ; SLOWPOKE
+	db ICON_SLOWPOKE    ; SLOWBRO
+	db ICON_VOLTORB     ; MAGNEMITE
+	db ICON_VOLTORB     ; MAGNETON
+	db ICON_BIRD        ; FARFETCH_D
+	db ICON_BIRD        ; DODUO
+	db ICON_BIRD        ; DODRIO
+	db ICON_LAPRAS      ; SEEL
+	db ICON_LAPRAS      ; DEWGONG
+	db ICON_BLOB        ; GRIMER
+	db ICON_BLOB        ; MUK
+	db ICON_SHELL       ; SHELLDER
+	db ICON_SHELL       ; CLOYSTER
+	db ICON_GHOST       ; GASTLY
+	db ICON_GHOST       ; HAUNTER
+	db ICON_GHOST       ; GENGAR
+	db ICON_SERPENT     ; ONIX
+	db ICON_HUMANSHAPE  ; DROWZEE
+	db ICON_HUMANSHAPE  ; HYPNO
+	db ICON_SHELL       ; KRABBY
+	db ICON_SHELL       ; KINGLER
+	db ICON_VOLTORB     ; VOLTORB
+	db ICON_VOLTORB     ; ELECTRODE
+	db ICON_ODDISH      ; EXEGGCUTE
+	db ICON_ODDISH      ; EXEGGUTOR
+	db ICON_MONSTER     ; CUBONE
+	db ICON_MONSTER     ; MAROWAK
+	db ICON_FIGHTER     ; HITMONLEE
+	db ICON_FIGHTER     ; HITMONCHAN
+	db ICON_MONSTER     ; LICKITUNG
+	db ICON_BLOB        ; KOFFING
+	db ICON_BLOB        ; WEEZING
+	db ICON_EQUINE      ; RHYHORN
+	db ICON_MONSTER     ; RHYDON
+	db ICON_CLEFAIRY    ; CHANSEY
+	db ICON_ODDISH      ; TANGELA
+	db ICON_MONSTER     ; KANGASKHAN
+	db ICON_FISH        ; HORSEA
+	db ICON_FISH        ; SEADRA
+	db ICON_FISH        ; GOLDEEN
+	db ICON_FISH        ; SEAKING
+	db ICON_STARYU      ; STARYU
+	db ICON_STARYU      ; STARMIE
+	db ICON_HUMANSHAPE  ; MR__MIME
+	db ICON_BUG         ; SCYTHER
+	db ICON_HUMANSHAPE  ; JYNX
+	db ICON_HUMANSHAPE  ; ELECTABUZZ
+	db ICON_HUMANSHAPE  ; MAGMAR
+	db ICON_BUG         ; PINSIR
+	db ICON_EQUINE      ; TAUROS
+	db ICON_FISH        ; MAGIKARP
+	db ICON_GYARADOS    ; GYARADOS
+	db ICON_LAPRAS      ; LAPRAS
+	db ICON_BLOB        ; DITTO
+	db ICON_FOX         ; EEVEE
+	db ICON_FOX         ; VAPOREON
+	db ICON_FOX         ; JOLTEON
+	db ICON_FOX         ; FLAREON
+	db ICON_VOLTORB     ; PORYGON
+	db ICON_SHELL       ; OMANYTE
+	db ICON_SHELL       ; OMASTAR
+	db ICON_SHELL       ; KABUTO
+	db ICON_SHELL       ; KABUTOPS
+	db ICON_BIRD        ; AERODACTYL
+	db ICON_SNORLAX     ; SNORLAX
+	db ICON_BIRD        ; ARTICUNO
+	db ICON_BIRD        ; ZAPDOS
+	db ICON_BIRD        ; MOLTRES
+	db ICON_SERPENT     ; DRATINI
+	db ICON_SERPENT     ; DRAGONAIR
+	db ICON_BIGMON      ; DRAGONITE
+	db ICON_HUMANSHAPE  ; MEWTWO
+	db ICON_HUMANSHAPE  ; MEW
+	db ICON_ODDISH      ; CHIKORITA
+	db ICON_ODDISH      ; BAYLEEF
+	db ICON_ODDISH      ; MEGANIUM
+	db ICON_FOX         ; CYNDAQUIL
+	db ICON_FOX         ; QUILAVA
+	db ICON_FOX         ; TYPHLOSION
+	db ICON_MONSTER     ; TOTODILE
+	db ICON_MONSTER     ; CROCONAW
+	db ICON_MONSTER     ; FERALIGATR
+	db ICON_FOX         ; SENTRET
+	db ICON_FOX         ; FURRET
+	db ICON_BIRD        ; HOOTHOOT
+	db ICON_BIRD        ; NOCTOWL
+	db ICON_BUG         ; LEDYBA
+	db ICON_BUG         ; LEDIAN
+	db ICON_BUG         ; SPINARAK
+	db ICON_BUG         ; ARIADOS
+	db ICON_BAT         ; CROBAT
+	db ICON_FISH        ; CHINCHOU
+	db ICON_FISH        ; LANTURN
+	db ICON_PIKACHU     ; PICHU
+	db ICON_CLEFAIRY    ; CLEFFA
+	db ICON_JIGGLYPUFF  ; IGGLYBUFF
+	db ICON_CLEFAIRY    ; TOGEPI
+	db ICON_BIRD        ; TOGETIC
+	db ICON_BIRD        ; NATU
+	db ICON_BIRD        ; XATU
+	db ICON_FOX         ; MAREEP
+	db ICON_MONSTER     ; FLAAFFY
+	db ICON_MONSTER     ; AMPHAROS
+	db ICON_ODDISH      ; BELLOSSOM
+	db ICON_JIGGLYPUFF  ; MARILL
+	db ICON_JIGGLYPUFF  ; AZUMARILL
+	db ICON_SUDOWOODO   ; SUDOWOODO
+	db ICON_POLIWAG     ; POLITOED
+	db ICON_ODDISH      ; HOPPIP
+	db ICON_ODDISH      ; SKIPLOOM
+	db ICON_ODDISH      ; JUMPLUFF
+	db ICON_MONSTER     ; AIPOM
+	db ICON_ODDISH      ; SUNKERN
+	db ICON_ODDISH      ; SUNFLORA
+	db ICON_BUG         ; YANMA
+	db ICON_MONSTER     ; WOOPER
+	db ICON_MONSTER     ; QUAGSIRE
+	db ICON_FOX         ; ESPEON
+	db ICON_FOX         ; UMBREON
+	db ICON_BIRD        ; MURKROW
+	db ICON_SLOWPOKE    ; SLOWKING
+	db ICON_GHOST       ; MISDREAVUS
+	db ICON_UNOWN       ; UNOWN
+	db ICON_GHOST       ; WOBBUFFET
+	db ICON_EQUINE      ; GIRAFARIG
+	db ICON_BUG         ; PINECO
+	db ICON_BUG         ; FORRETRESS
+	db ICON_SERPENT     ; DUNSPARCE
+	db ICON_BUG         ; GLIGAR
+	db ICON_SERPENT     ; STEELIX
+	db ICON_MONSTER     ; SNUBBULL
+	db ICON_MONSTER     ; GRANBULL
+	db ICON_FISH        ; QWILFISH
+	db ICON_BUG         ; SCIZOR
+	db ICON_BUG         ; SHUCKLE
+	db ICON_BUG         ; HERACROSS
+	db ICON_FOX         ; SNEASEL
+	db ICON_MONSTER     ; TEDDIURSA
+	db ICON_MONSTER     ; URSARING
+	db ICON_BLOB        ; SLUGMA
+	db ICON_BLOB        ; MAGCARGO
+	db ICON_EQUINE      ; SWINUB
+	db ICON_EQUINE      ; PILOSWINE
+	db ICON_SHELL       ; CORSOLA
+	db ICON_FISH        ; REMORAID
+	db ICON_FISH        ; OCTILLERY
+	db ICON_MONSTER     ; DELIBIRD
+	db ICON_FISH        ; MANTINE
+	db ICON_BIRD        ; SKARMORY
+	db ICON_FOX         ; HOUNDOUR
+	db ICON_FOX         ; HOUNDOOM
+	db ICON_BIGMON      ; KINGDRA
+	db ICON_EQUINE      ; PHANPY
+	db ICON_EQUINE      ; DONPHAN
+	db ICON_VOLTORB     ; PORYGON2
+	db ICON_EQUINE      ; STANTLER
+	db ICON_MONSTER     ; SMEARGLE
+	db ICON_FIGHTER     ; TYROGUE
+	db ICON_FIGHTER     ; HITMONTOP
+	db ICON_HUMANSHAPE  ; SMOOCHUM
+	db ICON_HUMANSHAPE  ; ELEKID
+	db ICON_HUMANSHAPE  ; MAGBY
+	db ICON_EQUINE      ; MILTANK
+	db ICON_CLEFAIRY    ; BLISSEY
+	db ICON_FOX         ; RAIKOU
+	db ICON_FOX         ; ENTEI
+	db ICON_FOX         ; SUICUNE
+	db ICON_MONSTER     ; LARVITAR
+	db ICON_MONSTER     ; PUPITAR
+	db ICON_MONSTER     ; TYRANITAR
+	db ICON_LUGIA       ; LUGIA
+	db ICON_HO_OH       ; HO_OH
+	db ICON_HUMANSHAPE  ; CELEBI
+; 8ebbf
--- /dev/null
+++ b/data/mystery_gift/decos.asm
@@ -1,0 +1,40 @@
+MysteryGiftDecos: ; 2c74a
+	db DECOFLAG_PIKACHU_DOLL
+	db DECOFLAG_BULBASAUR_DOLL
+	db DECOFLAG_CHARMANDER_DOLL
+	db DECOFLAG_SQUIRTLE_DOLL
+	db DECOFLAG_POLIWAG_DOLL
+	db DECOFLAG_DIGLETT_DOLL
+	db DECOFLAG_STARMIE_DOLL
+	db DECOFLAG_MAGIKARP_DOLL
+	db DECOFLAG_ODDISH_DOLL
+	db DECOFLAG_GENGAR_DOLL
+	db DECOFLAG_CLEFAIRY_POSTER
+	db DECOFLAG_JIGGLYPUFF_POSTER
+	db DECOFLAG_SNES
+	db DECOFLAG_SHELLDER_DOLL
+	db DECOFLAG_VOLTORB_DOLL
+	db DECOFLAG_WEEDLE_DOLL
+	db DECOFLAG_MAGNAPLANT
+	db DECOFLAG_TROPICPLANT
+	db DECOFLAG_FAMICOM
+	db DECOFLAG_N64
+	db DECOFLAG_SURF_PIKACHU_DOLL
+	db DECOFLAG_JIGGLYPUFF_DOLL
+	db DECOFLAG_PINK_BED
+	db DECOFLAG_POLKADOT_BED
+	db DECOFLAG_RED_CARPET
+	db DECOFLAG_BLUE_CARPET
+	db DECOFLAG_YELLOW_CARPET
+	db DECOFLAG_GREEN_CARPET
+	db DECOFLAG_JUMBOPLANT
+	db DECOFLAG_VIRTUAL_BOY
+	db DECOFLAG_MACHOP_DOLL
+	db DECOFLAG_PIKACHU_POSTER
+	db DECOFLAG_TENTACOOL_DOLL
+	db DECOFLAG_BIG_ONIX_DOLL
+	db DECOFLAG_PIKACHU_BED
+	db DECOFLAG_GRIMER_DOLL
+	db DECOFLAG_UNOWN_DOLL
+MysteryGiftDecosEnd
+; 2c76f
--- /dev/null
+++ b/data/mystery_gift/items.asm
@@ -1,0 +1,40 @@
+MysteryGiftItems: ; 2c725
+	db BERRY
+	db PRZCUREBERRY
+	db MINT_BERRY
+	db ICE_BERRY
+	db BURNT_BERRY
+	db PSNCUREBERRY
+	db GUARD_SPEC
+	db X_DEFEND
+	db X_ATTACK
+	db BITTER_BERRY
+	db DIRE_HIT
+	db X_SPECIAL
+	db X_ACCURACY
+	db EON_MAIL
+	db MORPH_MAIL
+	db MUSIC_MAIL
+	db MIRACLEBERRY
+	db GOLD_BERRY
+	db REVIVE
+	db GREAT_BALL
+	db SUPER_REPEL
+	db MAX_REPEL
+	db ELIXER
+	db ETHER
+	db WATER_STONE
+	db FIRE_STONE
+	db LEAF_STONE
+	db THUNDERSTONE
+	db MAX_ETHER
+	db MAX_ELIXER
+	db MAX_REVIVE
+	db SCOPE_LENS
+	db HP_UP
+	db PP_UP
+	db RARE_CANDY
+	db BLUESKY_MAIL
+	db MIRAGE_MAIL
+MysteryGiftItemsEnd:
+; 2c74a
--- /dev/null
+++ b/data/name_input_chars.asm
@@ -1,0 +1,31 @@
+; see engine/naming_screen.asm
+
+NameInputLower:
+	db "a b c d e f g h i"
+	db "j k l m n o p q r"
+	db "s t u v w x y z  "
+	db "× ( ) : ; [ ] <PK> <MN>"
+	db "UPPER  DEL   END "
+
+BoxNameInputLower:
+	db "a b c d e f g h i"
+	db "j k l m n o p q r"
+	db "s t u v w x y z  "
+	db "é 'd 'l 'm 'r 's 't 'v 0"
+	db "1 2 3 4 5 6 7 8 9"
+	db "UPPER  DEL   END "
+
+NameInputUpper:
+	db "A B C D E F G H I"
+	db "J K L M N O P Q R"
+	db "S T U V W X Y Z  "
+	db "- ? ! / . ,      "
+	db "lower  DEL   END "
+
+BoxNameInputUpper:
+	db "A B C D E F G H I"
+	db "J K L M N O P Q R"
+	db "S T U V W X Y Z  "
+	db "× ( ) : ; [ ] <PK> <MN>"
+	db "- ? ! ♂ ♀ / . , &"
+	db "lower  DEL   END "
--- /dev/null
+++ b/data/npc_trades.asm
@@ -1,0 +1,22 @@
+TRADE_EITHER_GENDER EQU 0
+TRADE_MALE_ONLY     EQU 1
+TRADE_FEMALE_ONLY   EQU 2
+
+npctrade: MACRO
+; dialog set, requested mon, offered mon, nickname, dvs, item, OT ID, OT name, gender requested
+	db \1, \2, \3, \4, \5, \6, \7
+	shift
+	dw \7
+	db \8, \9, 0
+ENDM
+
+NPCTrades: ; fce58
+; entries correspond to NPCTRADE_* constants
+	npctrade 0, ABRA,       MACHOP,     "MUSCLE@@@@@", $37, $66, GOLD_BERRY,   37460, "MIKE@@@@@@@", TRADE_EITHER_GENDER
+	npctrade 0, BELLSPROUT, ONIX,       "ROCKY@@@@@@", $96, $66, BITTER_BERRY, 48926, "KYLE@@@@@@@", TRADE_EITHER_GENDER
+	npctrade 1, KRABBY,     VOLTORB,    "VOLTY@@@@@@", $98, $88, PRZCUREBERRY, 29189, "TIM@@@@@@@@", TRADE_EITHER_GENDER
+	npctrade 3, DRAGONAIR,  DODRIO,     "DORIS@@@@@@", $77, $66, SMOKE_BALL,   00283, "EMY@@@@@@@@", TRADE_FEMALE_ONLY
+	npctrade 2, HAUNTER,    XATU,       "PAUL@@@@@@@", $96, $86, MYSTERYBERRY, 15616, "CHRIS@@@@@@", TRADE_EITHER_GENDER
+	npctrade 3, CHANSEY,    AERODACTYL, "AEROY@@@@@@", $96, $66, GOLD_BERRY,   26491, "KIM@@@@@@@@", TRADE_EITHER_GENDER
+	npctrade 0, DUGTRIO,    MAGNETON,   "MAGGIE@@@@@", $96, $66, METAL_COAT,   50082, "FOREST@@@@@", TRADE_EITHER_GENDER
+; fcf38
--- a/data/odd_eggs.asm
+++ b/data/odd_eggs.asm
@@ -1,106 +1,9 @@
-GiveOddEgg: ; 1fb4b6
-
-	; Figure out which egg to give.
-
-	; Compare a random word to
-	; probabilities out of 0xffff.
-	call Random
-	ld hl, .Probabilities
-	ld c, 0
-	ld b, c
-.loop
-	ld a, [hli]
-	ld e, a
-	ld a, [hli]
-	ld d, a
-
-	; Break on $ffff.
-	ld a, d
-	cp $ffff / $100
-	jr nz, .not_done
-	ld a, e
-	cp $ffff % $100
-	jr z, .done
-.not_done
-
-	; Break when [hRandom] <= de.
-	ld a, [hRandom + 1]
-	cp d
-	jr c, .done
-	jr z, .ok
-	jr .next
-.ok
-	ld a, [hRandom + 0]
-	cp e
-	jr c, .done
-	jr z, .done
-.next
-	inc bc
-	jr .loop
-.done
-
-	ld hl, OddEggs
-	ld a, OddEgg2 - OddEgg1
-	call AddNTimes
-
-	ld de, OddEggSpecies
-	ld bc, PARTYMON_STRUCT_LENGTH + 2 * PKMN_NAME_LENGTH
-	call CopyBytes
-
-	ld a, EGG_TICKET
-	ld [CurItem], a
-	ld a, 1
-	ld [wItemQuantityChangeBuffer], a
-	ld a, -1
-	ld [CurItemQuantity], a
-	ld hl, NumItems
-	call TossItem
-
-	; load species in wcd2a
-	ld a, EGG
-	ld [wMobileMonSpeciesBuffer], a
-
-	; load pointer to (wMobileMonSpeciesBuffer - 1) in wMobileMonSpeciesPointerBuffer
-	ld a, (wMobileMonSpeciesBuffer - 1) % $100
-	ld [wMobileMonSpeciesPointerBuffer], a
-	ld a, (wMobileMonSpeciesBuffer - 1) / $100
-	ld [wMobileMonSpeciesPointerBuffer + 1], a
-	; load pointer to OddEggSpecies in wMobileMonStructurePointerBuffer
-	ld a, OddEggSpecies % $100
-	ld [wMobileMonStructurePointerBuffer], a
-	ld a, OddEggSpecies / $100
-	ld [wMobileMonStructurePointerBuffer + 1], a
-
-	; load Odd Egg Name in wTempOddEggNickname
-	ld hl, .Odd
-	ld de, wTempOddEggNickname
-	ld bc, PKMN_NAME_LENGTH
-	call CopyBytes
-
-	; load pointer to wTempOddEggNickname in wMobileMonOTNamePointerBuffer
-	ld a, wTempOddEggNickname % $100
-	ld [wMobileMonOTNamePointerBuffer], a
-	ld a, wTempOddEggNickname / $100
-	ld [wMobileMonOTNamePointerBuffer + 1], a
-	; load pointer to wOddEggName in wMobileMonNicknamePointerBuffer
-	ld a, wOddEggName % $100
-	ld [wMobileMonNicknamePointerBuffer], a
-	ld a, wOddEggName / $100
-	ld [wMobileMonNicknamePointerBuffer + 1], a
-	callba AddMobileMonToParty
-	ret
-; 1fb546
-
-.Odd:
-	db "ODD@@@@@@@@@"
-
-.Probabilities:
-
-prob: MACRO
+prob: macro
 prob_total = prob_total + (\1)
 	dw prob_total * $ffff / 100
-ENDM
+endm
 
+OddEggProbabilities:
 prob_total = 0
 ; Pichu
 	prob 8
--- /dev/null
+++ b/data/outdoor_sprites.asm
@@ -1,0 +1,696 @@
+; Valid sprite IDs for each map group.
+; Maps with permission ROUTE or TOWN can only use these sprites.
+
+OutdoorSprites: ; 144b8
+	dw Group1Sprites
+	dw Group2Sprites
+	dw Group3Sprites
+	dw Group4Sprites
+	dw Group5Sprites
+	dw Group6Sprites
+	dw Group7Sprites
+	dw Group8Sprites
+	dw Group9Sprites
+	dw Group10Sprites
+	dw Group11Sprites
+	dw Group12Sprites
+	dw Group13Sprites
+	dw Group14Sprites
+	dw Group15Sprites
+	dw Group16Sprites
+	dw Group17Sprites
+	dw Group18Sprites
+	dw Group19Sprites
+	dw Group20Sprites
+	dw Group21Sprites
+	dw Group22Sprites
+	dw Group23Sprites
+	dw Group24Sprites
+	dw Group25Sprites
+	dw Group26Sprites
+; 144ec
+
+
+Group13Sprites: ; 144ec
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_TEACHER
+	db SPRITE_FISHER
+	db SPRITE_YOUNGSTER
+	db SPRITE_BLUE
+	db SPRITE_GRAMPS
+	db SPRITE_BUG_CATCHER
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_SWIMMER_GIRL
+	db SPRITE_SWIMMER_GUY
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 14503
+
+Group23Sprites: ; 14503
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_TEACHER
+	db SPRITE_FISHER
+	db SPRITE_YOUNGSTER
+	db SPRITE_BLUE
+	db SPRITE_GRAMPS
+	db SPRITE_BUG_CATCHER
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_SWIMMER_GIRL
+	db SPRITE_SWIMMER_GUY
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 1451a
+
+Group14Sprites: ; 1451a
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_TEACHER
+	db SPRITE_FISHER
+	db SPRITE_YOUNGSTER
+	db SPRITE_BLUE
+	db SPRITE_GRAMPS
+	db SPRITE_BUG_CATCHER
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_SWIMMER_GIRL
+	db SPRITE_SWIMMER_GUY
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 14531
+
+Group6Sprites: ; 14531
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_TEACHER
+	db SPRITE_FISHER
+	db SPRITE_YOUNGSTER
+	db SPRITE_BLUE
+	db SPRITE_GRAMPS
+	db SPRITE_BUG_CATCHER
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_SWIMMER_GIRL
+	db SPRITE_SWIMMER_GUY
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 14548
+
+Group7Sprites: ; 14548
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_SUPER_NERD
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_FISHER
+	db SPRITE_YOUNGSTER
+	db SPRITE_LASS
+	db SPRITE_POKEFAN_M
+	db SPRITE_ROCKET
+	db SPRITE_MISTY
+	db SPRITE_POKE_BALL
+	db SPRITE_SLOWPOKE
+; 1455f
+
+Group25Sprites: ; 1455f
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_SUPER_NERD
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_FISHER
+	db SPRITE_YOUNGSTER
+	db SPRITE_LASS
+	db SPRITE_POKEFAN_M
+	db SPRITE_ROCKET
+	db SPRITE_MISTY
+	db SPRITE_POKE_BALL
+	db SPRITE_SLOWPOKE
+; 14576
+
+Group21Sprites: ; 14576
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_FISHER
+	db SPRITE_POLIWAG
+	db SPRITE_TEACHER
+	db SPRITE_GRAMPS
+	db SPRITE_YOUNGSTER
+	db SPRITE_LASS
+	db SPRITE_BIKER
+	db SPRITE_SILVER
+	db SPRITE_BLUE
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 1458d
+
+Group18Sprites: ; 1458d
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_POKEFAN_M
+	db SPRITE_MACHOP
+	db SPRITE_GRAMPS
+	db SPRITE_YOUNGSTER
+	db SPRITE_FISHER
+	db SPRITE_TEACHER
+	db SPRITE_SUPER_NERD
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_BIKER
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 145a4
+
+Group12Sprites: ; 145a4
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_POKEFAN_M
+	db SPRITE_MACHOP
+	db SPRITE_GRAMPS
+	db SPRITE_YOUNGSTER
+	db SPRITE_FISHER
+	db SPRITE_TEACHER
+	db SPRITE_SUPER_NERD
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_BIKER
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 145bb
+
+Group17Sprites: ; 145bb
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_POKEFAN_M
+	db SPRITE_MACHOP
+	db SPRITE_GRAMPS
+	db SPRITE_YOUNGSTER
+	db SPRITE_FISHER
+	db SPRITE_TEACHER
+	db SPRITE_SUPER_NERD
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_BIKER
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 145d2
+
+Group16Sprites: ; 145d2
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_POKEFAN_M
+	db SPRITE_BUENA
+	db SPRITE_GRAMPS
+	db SPRITE_YOUNGSTER
+	db SPRITE_FISHER
+	db SPRITE_TEACHER
+	db SPRITE_SUPER_NERD
+	db SPRITE_MACHOP
+	db SPRITE_BIKER
+	db SPRITE_POKE_BALL
+	db SPRITE_BOULDER
+; 145e9
+
+Group24Sprites: ; 145e9
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_SILVER
+	db SPRITE_TEACHER
+	db SPRITE_FISHER
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_YOUNGSTER
+	db SPRITE_MONSTER
+	db SPRITE_GRAMPS
+	db SPRITE_BUG_CATCHER
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 14600
+
+Group26Sprites: ; 14600
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_SILVER
+	db SPRITE_TEACHER
+	db SPRITE_FISHER
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_YOUNGSTER
+	db SPRITE_MONSTER
+	db SPRITE_GRAMPS
+	db SPRITE_BUG_CATCHER
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 14617
+
+Group19Sprites: ; 14617
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_SILVER
+	db SPRITE_TEACHER
+	db SPRITE_FISHER
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_YOUNGSTER
+	db SPRITE_MONSTER
+	db SPRITE_GRAMPS
+	db SPRITE_BUG_CATCHER
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 1462e
+
+Group10Sprites: ; 1462e
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_FISHER
+	db SPRITE_LASS
+	db SPRITE_OFFICER
+	db SPRITE_GRAMPS
+	db SPRITE_YOUNGSTER
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_BUG_CATCHER
+	db SPRITE_SUPER_NERD
+	db SPRITE_WEIRD_TREE
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 14645
+
+Group4Sprites: ; 14645
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_FISHER
+	db SPRITE_LASS
+	db SPRITE_OFFICER
+	db SPRITE_GRAMPS
+	db SPRITE_YOUNGSTER
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_BUG_CATCHER
+	db SPRITE_SUPER_NERD
+	db SPRITE_WEIRD_TREE
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 1465c
+
+Group8Sprites: ; 1465c
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_KURT_OUTSIDE
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_GRAMPS
+	db SPRITE_YOUNGSTER
+	db SPRITE_OFFICER
+	db SPRITE_POKEFAN_M
+	db SPRITE_BLACK_BELT
+	db SPRITE_TEACHER
+	db SPRITE_AZALEA_ROCKET
+	db SPRITE_LASS
+	db SPRITE_SILVER
+	db SPRITE_FRUIT_TREE
+	db SPRITE_SLOWPOKE
+; 14673
+
+Group11Sprites: ; 14673
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_POKE_BALL
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_GRAMPS
+	db SPRITE_YOUNGSTER
+	db SPRITE_OFFICER
+	db SPRITE_POKEFAN_M
+	db SPRITE_DAY_CARE_MON_1
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_ROCKET
+	db SPRITE_LASS
+	db SPRITE_DAY_CARE_MON_2
+	db SPRITE_FRUIT_TREE
+	db SPRITE_SLOWPOKE
+; 1468a
+
+Group22Sprites: ; 1468a
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_STANDING_YOUNGSTER
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_OLIVINE_RIVAL
+	db SPRITE_POKEFAN_M
+	db SPRITE_LASS
+	db SPRITE_BUENA
+	db SPRITE_SWIMMER_GIRL
+	db SPRITE_SAILOR
+	db SPRITE_POKEFAN_F
+	db SPRITE_SUPER_NERD
+	db SPRITE_TAUROS
+	db SPRITE_FRUIT_TREE
+	db SPRITE_ROCK
+; 146a1
+
+Group1Sprites: ; 146a1
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_STANDING_YOUNGSTER
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_OLIVINE_RIVAL
+	db SPRITE_POKEFAN_M
+	db SPRITE_LASS
+	db SPRITE_BUENA
+	db SPRITE_SWIMMER_GIRL
+	db SPRITE_SAILOR
+	db SPRITE_POKEFAN_F
+	db SPRITE_SUPER_NERD
+	db SPRITE_TAUROS
+	db SPRITE_FRUIT_TREE
+	db SPRITE_ROCK
+; 146b8
+
+Group9Sprites: ; 146b8
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_LANCE
+	db SPRITE_GRAMPS
+	db SPRITE_SUPER_NERD
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_FISHER
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_LASS
+	db SPRITE_YOUNGSTER
+	db SPRITE_GYARADOS
+	db SPRITE_FRUIT_TREE
+	db SPRITE_POKE_BALL
+; 146cf
+
+Group2Sprites: ; 146cf
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_GRAMPS
+	db SPRITE_YOUNGSTER
+	db SPRITE_LASS
+	db SPRITE_SUPER_NERD
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_POKEFAN_M
+	db SPRITE_BLACK_BELT
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_FISHER
+	db SPRITE_FRUIT_TREE
+	db SPRITE_POKE_BALL
+; 146e6
+
+Group5Sprites: ; 146e6
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_GRAMPS
+	db SPRITE_YOUNGSTER
+	db SPRITE_LASS
+	db SPRITE_SUPER_NERD
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_POKEFAN_M
+	db SPRITE_BLACK_BELT
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_FISHER
+	db SPRITE_FRUIT_TREE
+	db SPRITE_POKE_BALL
+; 146fd
+
+Group3Sprites: ; 146fd
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_GAMEBOY_KID
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_LASS
+	db SPRITE_POKEFAN_F
+	db SPRITE_TEACHER
+	db SPRITE_YOUNGSTER
+	db SPRITE_GROWLITHE
+	db SPRITE_POKEFAN_M
+	db SPRITE_ROCKER
+	db SPRITE_FISHER
+	db SPRITE_SCIENTIST
+	db SPRITE_POKE_BALL
+	db SPRITE_BOULDER
+; 14714
+
+Group15Sprites: ; 14714
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_SAILOR
+	db SPRITE_FISHING_GURU
+	db SPRITE_GENTLEMAN
+	db SPRITE_SUPER_NERD
+	db SPRITE_HO_OH
+	db SPRITE_TEACHER
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_YOUNGSTER
+	db SPRITE_FAIRY
+	db SPRITE_POKE_BALL
+	db SPRITE_ROCK
+; 1472b
+
+Group20Sprites: ; 1472b
+	db SPRITE_OAK
+	db SPRITE_FISHER
+	db SPRITE_TEACHER
+	db SPRITE_TWIN
+	db SPRITE_POKEFAN_M
+	db SPRITE_GRAMPS
+	db SPRITE_FAIRY
+	db SPRITE_SILVER
+	db SPRITE_FISHING_GURU
+	db SPRITE_POKE_BALL
+	db SPRITE_POKEDEX
+; 14736
--- /dev/null
+++ b/data/phone_contacts.asm
@@ -1,0 +1,51 @@
+phone: macro
+; trainer class, trainer id, map, ?, script 1, ?, script 2
+	db  \1, \2
+	map \3
+	db  \4
+	dba \5
+	db  \6
+	dba \7
+endm
+
+PhoneContacts: ; 9045f
+; entries correspond to PHONE_* constants
+	phone TRAINER_NONE, PHONE_00,              N_A,                       0, UnusedPhoneScript,   0, UnusedPhoneScript
+	phone TRAINER_NONE, PHONECONTACT_MOM,      KRISS_HOUSE_1F,            7, MomPhoneScript,      0, UnusedPhoneScript
+	phone TRAINER_NONE, PHONECONTACT_BIKESHOP, OAKS_LAB,                  0, UnusedPhoneScript,   0, UnusedPhoneScript
+	phone TRAINER_NONE, PHONECONTACT_BILL,     N_A,                       7, BillPhoneScript1,    0, BillPhoneScript2
+	phone TRAINER_NONE, PHONECONTACT_ELM,      ELMS_LAB,                  7, ElmPhoneScript1,     0, ElmPhoneScript2
+	phone SCHOOLBOY,    JACK1,                 NATIONAL_PARK,             7, JackPhoneScript1,    7, JackPhoneScript2
+	phone POKEFANF,     BEVERLY1,              NATIONAL_PARK,             7, BeverlyPhoneScript1, 7, BeverlyPhoneScript2
+	phone SAILOR,       HUEY1,                 OLIVINE_LIGHTHOUSE_2F,     7, HueyPhoneScript1,    7, HueyPhoneScript2
+	phone TRAINER_NONE, PHONE_00,              N_A,                       0, UnusedPhoneScript,   0, UnusedPhoneScript
+	phone TRAINER_NONE, PHONE_00,              N_A,                       0, UnusedPhoneScript,   0, UnusedPhoneScript
+	phone TRAINER_NONE, PHONE_00,              N_A,                       0, UnusedPhoneScript,   0, UnusedPhoneScript
+	phone COOLTRAINERM, GAVEN3,                ROUTE_26,                  7, GavenPhoneScript1,   7, GavenPhoneScript2
+	phone COOLTRAINERF, BETH1,                 ROUTE_26,                  7, BethPhoneScript1,    7, BethPhoneScript2
+	phone BIRD_KEEPER,  JOSE2,                 ROUTE_27,                  7, JosePhoneScript1,    7, JosePhoneScript2
+	phone COOLTRAINERF, REENA1,                ROUTE_27,                  7, ReenaPhoneScript1,   7, ReenaPhoneScript2
+	phone YOUNGSTER,    JOEY1,                 ROUTE_30,                  7, JoeyPhoneScript1,    7, JoeyPhoneScript2
+	phone BUG_CATCHER,  WADE1,                 ROUTE_31,                  7, WadePhoneScript1,    7, WadePhoneScript2
+	phone FISHER,       RALPH1,                ROUTE_32,                  7, RalphPhoneScript1,   7, RalphPhoneScript2
+	phone PICNICKER,    LIZ1,                  ROUTE_32,                  7, LizPhoneScript1,     7, LizPhoneScript2
+	phone HIKER,        ANTHONY2,              ROUTE_33,                  7, AnthonyPhoneScript1, 7, AnthonyPhoneScript2
+	phone CAMPER,       TODD1,                 ROUTE_34,                  7, ToddPhoneScript1,    7, ToddPhoneScript2
+	phone PICNICKER,    GINA1,                 ROUTE_34,                  7, GinaPhoneScript1,    7, GinaPhoneScript2
+	phone JUGGLER,      IRWIN1,                ROUTE_35,                  7, IrwinPhoneScript1,   7, IrwinPhoneScript2
+	phone BUG_CATCHER,  ARNIE1,                ROUTE_35,                  7, ArniePhoneScript1,   7, ArniePhoneScript2
+	phone SCHOOLBOY,    ALAN1,                 ROUTE_36,                  7, AlanPhoneScript1,    7, AlanPhoneScript2
+	phone TRAINER_NONE, PHONE_00,              N_A,                       0, UnusedPhoneScript,   0, UnusedPhoneScript
+	phone LASS,         DANA1,                 ROUTE_38,                  7, DanaPhoneScript1,    7, DanaPhoneScript2
+	phone SCHOOLBOY,    CHAD1,                 ROUTE_38,                  7, ChadPhoneScript1,    7, ChadPhoneScript2
+	phone POKEFANM,     DEREK1,                ROUTE_39,                  7, DerekPhoneScript1,   7, DerekPhoneScript2
+	phone FISHER,       TULLY1,                ROUTE_42,                  7, TullyPhoneScript1,   7, TullyPhoneScript2
+	phone POKEMANIAC,   BRENT1,                ROUTE_43,                  7, BrentPhoneScript1,   7, BrentPhoneScript2
+	phone PICNICKER,    TIFFANY3,              ROUTE_43,                  7, TiffanyPhoneScript1, 7, TiffanyPhoneScript2
+	phone BIRD_KEEPER,  VANCE1,                ROUTE_44,                  7, VancePhoneScript1,   7, VancePhoneScript2
+	phone FISHER,       WILTON1,               ROUTE_44,                  7, WiltonPhoneScript1,  7, WiltonPhoneScript2
+	phone BLACKBELT_T,  KENJI3,                ROUTE_45,                  7, KenjiPhoneScript1,   7, KenjiPhoneScript2
+	phone HIKER,        PARRY1,                ROUTE_45,                  7, ParryPhoneScript1,   7, ParryPhoneScript2
+	phone PICNICKER,    ERIN1,                 ROUTE_46,                  7, ErinPhoneScript1,    7, ErinPhoneScript2
+	phone TRAINER_NONE, PHONECONTACT_BUENA,    GOLDENROD_DEPT_STORE_ROOF, 7, BuenaPhoneScript1,   7, BuenaPhoneScript2
+; 90627
--- /dev/null
+++ b/data/phone_special.asm
@@ -1,0 +1,18 @@
+specialcall: macro
+; condition, contact, script
+	dw \1
+	db \2
+	dba \3
+endm
+
+SpecialPhoneCallList: ; 90627
+; entries correspond to SPECIALCALL_* constants
+	specialcall SpecialCallOnlyWhenOutside, PHONE_ELM, ElmPhoneScript2
+	specialcall SpecialCallOnlyWhenOutside, PHONE_ELM, ElmPhoneScript2
+	specialcall SpecialCallOnlyWhenOutside, PHONE_ELM, ElmPhoneScript2
+	specialcall SpecialCallOnlyWhenOutside, PHONE_ELM, ElmPhoneScript2
+	specialcall SpecialCallWhereverYouAre,  PHONE_ELM, ElmPhoneScript2
+	specialcall SpecialCallWhereverYouAre,  PHONE_OAK, BikeShopPhoneScript
+	specialcall SpecialCallWhereverYouAre,  PHONE_MOM, MomPhoneLectureScript
+	specialcall SpecialCallOnlyWhenOutside, PHONE_ELM, ElmPhoneScript2
+; 90657
--- a/data/pokedex/entries.asm
+++ b/data/pokedex/entries.asm
@@ -4,22 +4,269 @@
 SECTION "Pokedex Entries 001-064", ROMX
 
 PokedexEntries1::
-INCLUDE "data/pokedex/entries_1.asm"
+BulbasaurPokedexEntry::  INCLUDE "data/pokedex/entries/bulbasaur.asm"
+IvysaurPokedexEntry::    INCLUDE "data/pokedex/entries/ivysaur.asm"
+VenusaurPokedexEntry::   INCLUDE "data/pokedex/entries/venusaur.asm"
+CharmanderPokedexEntry:: INCLUDE "data/pokedex/entries/charmander.asm"
+CharmeleonPokedexEntry:: INCLUDE "data/pokedex/entries/charmeleon.asm"
+CharizardPokedexEntry::  INCLUDE "data/pokedex/entries/charizard.asm"
+SquirtlePokedexEntry::   INCLUDE "data/pokedex/entries/squirtle.asm"
+WartortlePokedexEntry::  INCLUDE "data/pokedex/entries/wartortle.asm"
+BlastoisePokedexEntry::  INCLUDE "data/pokedex/entries/blastoise.asm"
+CaterpiePokedexEntry::   INCLUDE "data/pokedex/entries/caterpie.asm"
+MetapodPokedexEntry::    INCLUDE "data/pokedex/entries/metapod.asm"
+ButterfreePokedexEntry:: INCLUDE "data/pokedex/entries/butterfree.asm"
+WeedlePokedexEntry::     INCLUDE "data/pokedex/entries/weedle.asm"
+KakunaPokedexEntry::     INCLUDE "data/pokedex/entries/kakuna.asm"
+BeedrillPokedexEntry::   INCLUDE "data/pokedex/entries/beedrill.asm"
+PidgeyPokedexEntry::     INCLUDE "data/pokedex/entries/pidgey.asm"
+PidgeottoPokedexEntry::  INCLUDE "data/pokedex/entries/pidgeotto.asm"
+PidgeotPokedexEntry::    INCLUDE "data/pokedex/entries/pidgeot.asm"
+RattataPokedexEntry::    INCLUDE "data/pokedex/entries/rattata.asm"
+RaticatePokedexEntry::   INCLUDE "data/pokedex/entries/raticate.asm"
+SpearowPokedexEntry::    INCLUDE "data/pokedex/entries/spearow.asm"
+FearowPokedexEntry::     INCLUDE "data/pokedex/entries/fearow.asm"
+EkansPokedexEntry::      INCLUDE "data/pokedex/entries/ekans.asm"
+ArbokPokedexEntry::      INCLUDE "data/pokedex/entries/arbok.asm"
+PikachuPokedexEntry::    INCLUDE "data/pokedex/entries/pikachu.asm"
+RaichuPokedexEntry::     INCLUDE "data/pokedex/entries/raichu.asm"
+SandshrewPokedexEntry::  INCLUDE "data/pokedex/entries/sandshrew.asm"
+SandslashPokedexEntry::  INCLUDE "data/pokedex/entries/sandslash.asm"
+NidoranFPokedexEntry::   INCLUDE "data/pokedex/entries/nidoran_f.asm"
+NidorinaPokedexEntry::   INCLUDE "data/pokedex/entries/nidorina.asm"
+NidoqueenPokedexEntry::  INCLUDE "data/pokedex/entries/nidoqueen.asm"
+NidoranMPokedexEntry::   INCLUDE "data/pokedex/entries/nidoran_m.asm"
+NidorinoPokedexEntry::   INCLUDE "data/pokedex/entries/nidorino.asm"
+NidokingPokedexEntry::   INCLUDE "data/pokedex/entries/nidoking.asm"
+ClefairyPokedexEntry::   INCLUDE "data/pokedex/entries/clefairy.asm"
+ClefablePokedexEntry::   INCLUDE "data/pokedex/entries/clefable.asm"
+VulpixPokedexEntry::     INCLUDE "data/pokedex/entries/vulpix.asm"
+NinetalesPokedexEntry::  INCLUDE "data/pokedex/entries/ninetales.asm"
+JigglypuffPokedexEntry:: INCLUDE "data/pokedex/entries/jigglypuff.asm"
+WigglytuffPokedexEntry:: INCLUDE "data/pokedex/entries/wigglytuff.asm"
+ZubatPokedexEntry::      INCLUDE "data/pokedex/entries/zubat.asm"
+GolbatPokedexEntry::     INCLUDE "data/pokedex/entries/golbat.asm"
+OddishPokedexEntry::     INCLUDE "data/pokedex/entries/oddish.asm"
+GloomPokedexEntry::      INCLUDE "data/pokedex/entries/gloom.asm"
+VileplumePokedexEntry::  INCLUDE "data/pokedex/entries/vileplume.asm"
+ParasPokedexEntry::      INCLUDE "data/pokedex/entries/paras.asm"
+ParasectPokedexEntry::   INCLUDE "data/pokedex/entries/parasect.asm"
+VenonatPokedexEntry::    INCLUDE "data/pokedex/entries/venonat.asm"
+VenomothPokedexEntry::   INCLUDE "data/pokedex/entries/venomoth.asm"
+DiglettPokedexEntry::    INCLUDE "data/pokedex/entries/diglett.asm"
+DugtrioPokedexEntry::    INCLUDE "data/pokedex/entries/dugtrio.asm"
+MeowthPokedexEntry::     INCLUDE "data/pokedex/entries/meowth.asm"
+PersianPokedexEntry::    INCLUDE "data/pokedex/entries/persian.asm"
+PsyduckPokedexEntry::    INCLUDE "data/pokedex/entries/psyduck.asm"
+GolduckPokedexEntry::    INCLUDE "data/pokedex/entries/golduck.asm"
+MankeyPokedexEntry::     INCLUDE "data/pokedex/entries/mankey.asm"
+PrimeapePokedexEntry::   INCLUDE "data/pokedex/entries/primeape.asm"
+GrowlithePokedexEntry::  INCLUDE "data/pokedex/entries/growlithe.asm"
+ArcaninePokedexEntry::   INCLUDE "data/pokedex/entries/arcanine.asm"
+PoliwagPokedexEntry::    INCLUDE "data/pokedex/entries/poliwag.asm"
+PoliwhirlPokedexEntry::  INCLUDE "data/pokedex/entries/poliwhirl.asm"
+PoliwrathPokedexEntry::  INCLUDE "data/pokedex/entries/poliwrath.asm"
+AbraPokedexEntry::       INCLUDE "data/pokedex/entries/abra.asm"
+KadabraPokedexEntry::    INCLUDE "data/pokedex/entries/kadabra.asm"
 
 
 SECTION "Pokedex Entries 065-128", ROMX
 
 PokedexEntries2::
-INCLUDE "data/pokedex/entries_2.asm"
+AlakazamPokedexEntry::   INCLUDE "data/pokedex/entries/alakazam.asm"
+MachopPokedexEntry::     INCLUDE "data/pokedex/entries/machop.asm"
+MachokePokedexEntry::    INCLUDE "data/pokedex/entries/machoke.asm"
+MachampPokedexEntry::    INCLUDE "data/pokedex/entries/machamp.asm"
+BellsproutPokedexEntry:: INCLUDE "data/pokedex/entries/bellsprout.asm"
+WeepinbellPokedexEntry:: INCLUDE "data/pokedex/entries/weepinbell.asm"
+VictreebelPokedexEntry:: INCLUDE "data/pokedex/entries/victreebel.asm"
+TentacoolPokedexEntry::  INCLUDE "data/pokedex/entries/tentacool.asm"
+TentacruelPokedexEntry:: INCLUDE "data/pokedex/entries/tentacruel.asm"
+GeodudePokedexEntry::    INCLUDE "data/pokedex/entries/geodude.asm"
+GravelerPokedexEntry::   INCLUDE "data/pokedex/entries/graveler.asm"
+GolemPokedexEntry::      INCLUDE "data/pokedex/entries/golem.asm"
+PonytaPokedexEntry::     INCLUDE "data/pokedex/entries/ponyta.asm"
+RapidashPokedexEntry::   INCLUDE "data/pokedex/entries/rapidash.asm"
+SlowpokePokedexEntry::   INCLUDE "data/pokedex/entries/slowpoke.asm"
+SlowbroPokedexEntry::    INCLUDE "data/pokedex/entries/slowbro.asm"
+MagnemitePokedexEntry::  INCLUDE "data/pokedex/entries/magnemite.asm"
+MagnetonPokedexEntry::   INCLUDE "data/pokedex/entries/magneton.asm"
+FarfetchDPokedexEntry::  INCLUDE "data/pokedex/entries/farfetch_d.asm"
+DoduoPokedexEntry::      INCLUDE "data/pokedex/entries/doduo.asm"
+DodrioPokedexEntry::     INCLUDE "data/pokedex/entries/dodrio.asm"
+SeelPokedexEntry::       INCLUDE "data/pokedex/entries/seel.asm"
+DewgongPokedexEntry::    INCLUDE "data/pokedex/entries/dewgong.asm"
+GrimerPokedexEntry::     INCLUDE "data/pokedex/entries/grimer.asm"
+MukPokedexEntry::        INCLUDE "data/pokedex/entries/muk.asm"
+ShellderPokedexEntry::   INCLUDE "data/pokedex/entries/shellder.asm"
+CloysterPokedexEntry::   INCLUDE "data/pokedex/entries/cloyster.asm"
+GastlyPokedexEntry::     INCLUDE "data/pokedex/entries/gastly.asm"
+HaunterPokedexEntry::    INCLUDE "data/pokedex/entries/haunter.asm"
+GengarPokedexEntry::     INCLUDE "data/pokedex/entries/gengar.asm"
+OnixPokedexEntry::       INCLUDE "data/pokedex/entries/onix.asm"
+DrowzeePokedexEntry::    INCLUDE "data/pokedex/entries/drowzee.asm"
+HypnoPokedexEntry::      INCLUDE "data/pokedex/entries/hypno.asm"
+KrabbyPokedexEntry::     INCLUDE "data/pokedex/entries/krabby.asm"
+KinglerPokedexEntry::    INCLUDE "data/pokedex/entries/kingler.asm"
+VoltorbPokedexEntry::    INCLUDE "data/pokedex/entries/voltorb.asm"
+ElectrodePokedexEntry::  INCLUDE "data/pokedex/entries/electrode.asm"
+ExeggcutePokedexEntry::  INCLUDE "data/pokedex/entries/exeggcute.asm"
+ExeggutorPokedexEntry::  INCLUDE "data/pokedex/entries/exeggutor.asm"
+CubonePokedexEntry::     INCLUDE "data/pokedex/entries/cubone.asm"
+MarowakPokedexEntry::    INCLUDE "data/pokedex/entries/marowak.asm"
+HitmonleePokedexEntry::  INCLUDE "data/pokedex/entries/hitmonlee.asm"
+HitmonchanPokedexEntry:: INCLUDE "data/pokedex/entries/hitmonchan.asm"
+LickitungPokedexEntry::  INCLUDE "data/pokedex/entries/lickitung.asm"
+KoffingPokedexEntry::    INCLUDE "data/pokedex/entries/koffing.asm"
+WeezingPokedexEntry::    INCLUDE "data/pokedex/entries/weezing.asm"
+RhyhornPokedexEntry::    INCLUDE "data/pokedex/entries/rhyhorn.asm"
+RhydonPokedexEntry::     INCLUDE "data/pokedex/entries/rhydon.asm"
+ChanseyPokedexEntry::    INCLUDE "data/pokedex/entries/chansey.asm"
+TangelaPokedexEntry::    INCLUDE "data/pokedex/entries/tangela.asm"
+KangaskhanPokedexEntry:: INCLUDE "data/pokedex/entries/kangaskhan.asm"
+HorseaPokedexEntry::     INCLUDE "data/pokedex/entries/horsea.asm"
+SeadraPokedexEntry::     INCLUDE "data/pokedex/entries/seadra.asm"
+GoldeenPokedexEntry::    INCLUDE "data/pokedex/entries/goldeen.asm"
+SeakingPokedexEntry::    INCLUDE "data/pokedex/entries/seaking.asm"
+StaryuPokedexEntry::     INCLUDE "data/pokedex/entries/staryu.asm"
+StarmiePokedexEntry::    INCLUDE "data/pokedex/entries/starmie.asm"
+MrMimePokedexEntry::     INCLUDE "data/pokedex/entries/mr__mime.asm"
+ScytherPokedexEntry::    INCLUDE "data/pokedex/entries/scyther.asm"
+JynxPokedexEntry::       INCLUDE "data/pokedex/entries/jynx.asm"
+ElectabuzzPokedexEntry:: INCLUDE "data/pokedex/entries/electabuzz.asm"
+MagmarPokedexEntry::     INCLUDE "data/pokedex/entries/magmar.asm"
+PinsirPokedexEntry::     INCLUDE "data/pokedex/entries/pinsir.asm"
+TaurosPokedexEntry::     INCLUDE "data/pokedex/entries/tauros.asm"
 
 
 SECTION "Pokedex Entries 129-192", ROMX
 
 PokedexEntries3::
-INCLUDE "data/pokedex/entries_3.asm"
+MagikarpPokedexEntry::   INCLUDE "data/pokedex/entries/magikarp.asm"
+GyaradosPokedexEntry::   INCLUDE "data/pokedex/entries/gyarados.asm"
+LaprasPokedexEntry::     INCLUDE "data/pokedex/entries/lapras.asm"
+DittoPokedexEntry::      INCLUDE "data/pokedex/entries/ditto.asm"
+EeveePokedexEntry::      INCLUDE "data/pokedex/entries/eevee.asm"
+VaporeonPokedexEntry::   INCLUDE "data/pokedex/entries/vaporeon.asm"
+JolteonPokedexEntry::    INCLUDE "data/pokedex/entries/jolteon.asm"
+FlareonPokedexEntry::    INCLUDE "data/pokedex/entries/flareon.asm"
+PorygonPokedexEntry::    INCLUDE "data/pokedex/entries/porygon.asm"
+OmanytePokedexEntry::    INCLUDE "data/pokedex/entries/omanyte.asm"
+OmastarPokedexEntry::    INCLUDE "data/pokedex/entries/omastar.asm"
+KabutoPokedexEntry::     INCLUDE "data/pokedex/entries/kabuto.asm"
+KabutopsPokedexEntry::   INCLUDE "data/pokedex/entries/kabutops.asm"
+AerodactylPokedexEntry:: INCLUDE "data/pokedex/entries/aerodactyl.asm"
+SnorlaxPokedexEntry::    INCLUDE "data/pokedex/entries/snorlax.asm"
+ArticunoPokedexEntry::   INCLUDE "data/pokedex/entries/articuno.asm"
+ZapdosPokedexEntry::     INCLUDE "data/pokedex/entries/zapdos.asm"
+MoltresPokedexEntry::    INCLUDE "data/pokedex/entries/moltres.asm"
+DratiniPokedexEntry::    INCLUDE "data/pokedex/entries/dratini.asm"
+DragonairPokedexEntry::  INCLUDE "data/pokedex/entries/dragonair.asm"
+DragonitePokedexEntry::  INCLUDE "data/pokedex/entries/dragonite.asm"
+MewtwoPokedexEntry::     INCLUDE "data/pokedex/entries/mewtwo.asm"
+MewPokedexEntry::        INCLUDE "data/pokedex/entries/mew.asm"
+ChikoritaPokedexEntry::  INCLUDE "data/pokedex/entries/chikorita.asm"
+BayleefPokedexEntry::    INCLUDE "data/pokedex/entries/bayleef.asm"
+MeganiumPokedexEntry::   INCLUDE "data/pokedex/entries/meganium.asm"
+CyndaquilPokedexEntry::  INCLUDE "data/pokedex/entries/cyndaquil.asm"
+QuilavaPokedexEntry::    INCLUDE "data/pokedex/entries/quilava.asm"
+TyphlosionPokedexEntry:: INCLUDE "data/pokedex/entries/typhlosion.asm"
+TotodilePokedexEntry::   INCLUDE "data/pokedex/entries/totodile.asm"
+CroconawPokedexEntry::   INCLUDE "data/pokedex/entries/croconaw.asm"
+FeraligatrPokedexEntry:: INCLUDE "data/pokedex/entries/feraligatr.asm"
+SentretPokedexEntry::    INCLUDE "data/pokedex/entries/sentret.asm"
+FurretPokedexEntry::     INCLUDE "data/pokedex/entries/furret.asm"
+HoothootPokedexEntry::   INCLUDE "data/pokedex/entries/hoothoot.asm"
+NoctowlPokedexEntry::    INCLUDE "data/pokedex/entries/noctowl.asm"
+LedybaPokedexEntry::     INCLUDE "data/pokedex/entries/ledyba.asm"
+LedianPokedexEntry::     INCLUDE "data/pokedex/entries/ledian.asm"
+SpinarakPokedexEntry::   INCLUDE "data/pokedex/entries/spinarak.asm"
+AriadosPokedexEntry::    INCLUDE "data/pokedex/entries/ariados.asm"
+CrobatPokedexEntry::     INCLUDE "data/pokedex/entries/crobat.asm"
+ChinchouPokedexEntry::   INCLUDE "data/pokedex/entries/chinchou.asm"
+LanturnPokedexEntry::    INCLUDE "data/pokedex/entries/lanturn.asm"
+PichuPokedexEntry::      INCLUDE "data/pokedex/entries/pichu.asm"
+CleffaPokedexEntry::     INCLUDE "data/pokedex/entries/cleffa.asm"
+IgglybuffPokedexEntry::  INCLUDE "data/pokedex/entries/igglybuff.asm"
+TogepiPokedexEntry::     INCLUDE "data/pokedex/entries/togepi.asm"
+TogeticPokedexEntry::    INCLUDE "data/pokedex/entries/togetic.asm"
+NatuPokedexEntry::       INCLUDE "data/pokedex/entries/natu.asm"
+XatuPokedexEntry::       INCLUDE "data/pokedex/entries/xatu.asm"
+MareepPokedexEntry::     INCLUDE "data/pokedex/entries/mareep.asm"
+FlaaffyPokedexEntry::    INCLUDE "data/pokedex/entries/flaaffy.asm"
+AmpharosPokedexEntry::   INCLUDE "data/pokedex/entries/ampharos.asm"
+BellossomPokedexEntry::  INCLUDE "data/pokedex/entries/bellossom.asm"
+MarillPokedexEntry::     INCLUDE "data/pokedex/entries/marill.asm"
+AzumarillPokedexEntry::  INCLUDE "data/pokedex/entries/azumarill.asm"
+SudowoodoPokedexEntry::  INCLUDE "data/pokedex/entries/sudowoodo.asm"
+PolitoedPokedexEntry::   INCLUDE "data/pokedex/entries/politoed.asm"
+HoppipPokedexEntry::     INCLUDE "data/pokedex/entries/hoppip.asm"
+SkiploomPokedexEntry::   INCLUDE "data/pokedex/entries/skiploom.asm"
+JumpluffPokedexEntry::   INCLUDE "data/pokedex/entries/jumpluff.asm"
+AipomPokedexEntry::      INCLUDE "data/pokedex/entries/aipom.asm"
+SunkernPokedexEntry::    INCLUDE "data/pokedex/entries/sunkern.asm"
+SunfloraPokedexEntry::   INCLUDE "data/pokedex/entries/sunflora.asm"
 
 
 SECTION "Pokedex Entries 193-251", ROMX
 
 PokedexEntries4::
-INCLUDE "data/pokedex/entries_4.asm"
+YanmaPokedexEntry::      INCLUDE "data/pokedex/entries/yanma.asm"
+WooperPokedexEntry::     INCLUDE "data/pokedex/entries/wooper.asm"
+QuagsirePokedexEntry::   INCLUDE "data/pokedex/entries/quagsire.asm"
+EspeonPokedexEntry::     INCLUDE "data/pokedex/entries/espeon.asm"
+UmbreonPokedexEntry::    INCLUDE "data/pokedex/entries/umbreon.asm"
+MurkrowPokedexEntry::    INCLUDE "data/pokedex/entries/murkrow.asm"
+SlowkingPokedexEntry::   INCLUDE "data/pokedex/entries/slowking.asm"
+MisdreavusPokedexEntry:: INCLUDE "data/pokedex/entries/misdreavus.asm"
+UnownPokedexEntry::      INCLUDE "data/pokedex/entries/unown.asm"
+WobbuffetPokedexEntry::  INCLUDE "data/pokedex/entries/wobbuffet.asm"
+GirafarigPokedexEntry::  INCLUDE "data/pokedex/entries/girafarig.asm"
+PinecoPokedexEntry::     INCLUDE "data/pokedex/entries/pineco.asm"
+ForretressPokedexEntry:: INCLUDE "data/pokedex/entries/forretress.asm"
+DunsparcePokedexEntry::  INCLUDE "data/pokedex/entries/dunsparce.asm"
+GligarPokedexEntry::     INCLUDE "data/pokedex/entries/gligar.asm"
+SteelixPokedexEntry::    INCLUDE "data/pokedex/entries/steelix.asm"
+SnubbullPokedexEntry::   INCLUDE "data/pokedex/entries/snubbull.asm"
+GranbullPokedexEntry::   INCLUDE "data/pokedex/entries/granbull.asm"
+QwilfishPokedexEntry::   INCLUDE "data/pokedex/entries/qwilfish.asm"
+ScizorPokedexEntry::     INCLUDE "data/pokedex/entries/scizor.asm"
+ShucklePokedexEntry::    INCLUDE "data/pokedex/entries/shuckle.asm"
+HeracrossPokedexEntry::  INCLUDE "data/pokedex/entries/heracross.asm"
+SneaselPokedexEntry::    INCLUDE "data/pokedex/entries/sneasel.asm"
+TeddiursaPokedexEntry::  INCLUDE "data/pokedex/entries/teddiursa.asm"
+UrsaringPokedexEntry::   INCLUDE "data/pokedex/entries/ursaring.asm"
+SlugmaPokedexEntry::     INCLUDE "data/pokedex/entries/slugma.asm"
+MagcargoPokedexEntry::   INCLUDE "data/pokedex/entries/magcargo.asm"
+SwinubPokedexEntry::     INCLUDE "data/pokedex/entries/swinub.asm"
+PiloswinePokedexEntry::  INCLUDE "data/pokedex/entries/piloswine.asm"
+CorsolaPokedexEntry::    INCLUDE "data/pokedex/entries/corsola.asm"
+RemoraidPokedexEntry::   INCLUDE "data/pokedex/entries/remoraid.asm"
+OctilleryPokedexEntry::  INCLUDE "data/pokedex/entries/octillery.asm"
+DelibirdPokedexEntry::   INCLUDE "data/pokedex/entries/delibird.asm"
+MantinePokedexEntry::    INCLUDE "data/pokedex/entries/mantine.asm"
+SkarmoryPokedexEntry::   INCLUDE "data/pokedex/entries/skarmory.asm"
+HoundourPokedexEntry::   INCLUDE "data/pokedex/entries/houndour.asm"
+HoundoomPokedexEntry::   INCLUDE "data/pokedex/entries/houndoom.asm"
+KingdraPokedexEntry::    INCLUDE "data/pokedex/entries/kingdra.asm"
+PhanpyPokedexEntry::     INCLUDE "data/pokedex/entries/phanpy.asm"
+DonphanPokedexEntry::    INCLUDE "data/pokedex/entries/donphan.asm"
+Porygon2PokedexEntry::   INCLUDE "data/pokedex/entries/porygon2.asm"
+StantlerPokedexEntry::   INCLUDE "data/pokedex/entries/stantler.asm"
+SmearglePokedexEntry::   INCLUDE "data/pokedex/entries/smeargle.asm"
+TyroguePokedexEntry::    INCLUDE "data/pokedex/entries/tyrogue.asm"
+HitmontopPokedexEntry::  INCLUDE "data/pokedex/entries/hitmontop.asm"
+SmoochumPokedexEntry::   INCLUDE "data/pokedex/entries/smoochum.asm"
+ElekidPokedexEntry::     INCLUDE "data/pokedex/entries/elekid.asm"
+MagbyPokedexEntry::      INCLUDE "data/pokedex/entries/magby.asm"
+MiltankPokedexEntry::    INCLUDE "data/pokedex/entries/miltank.asm"
+BlisseyPokedexEntry::    INCLUDE "data/pokedex/entries/blissey.asm"
+RaikouPokedexEntry::     INCLUDE "data/pokedex/entries/raikou.asm"
+EnteiPokedexEntry::      INCLUDE "data/pokedex/entries/entei.asm"
+SuicunePokedexEntry::    INCLUDE "data/pokedex/entries/suicune.asm"
+LarvitarPokedexEntry::   INCLUDE "data/pokedex/entries/larvitar.asm"
+PupitarPokedexEntry::    INCLUDE "data/pokedex/entries/pupitar.asm"
+TyranitarPokedexEntry::  INCLUDE "data/pokedex/entries/tyranitar.asm"
+LugiaPokedexEntry::      INCLUDE "data/pokedex/entries/lugia.asm"
+HoOhPokedexEntry::       INCLUDE "data/pokedex/entries/ho_oh.asm"
+CelebiPokedexEntry::     INCLUDE "data/pokedex/entries/celebi.asm"
--- a/data/pokedex/entries_1.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-BulbasaurPokedexEntry::  INCLUDE "data/pokedex/entries/bulbasaur.asm"
-IvysaurPokedexEntry::    INCLUDE "data/pokedex/entries/ivysaur.asm"
-VenusaurPokedexEntry::   INCLUDE "data/pokedex/entries/venusaur.asm"
-CharmanderPokedexEntry:: INCLUDE "data/pokedex/entries/charmander.asm"
-CharmeleonPokedexEntry:: INCLUDE "data/pokedex/entries/charmeleon.asm"
-CharizardPokedexEntry::  INCLUDE "data/pokedex/entries/charizard.asm"
-SquirtlePokedexEntry::   INCLUDE "data/pokedex/entries/squirtle.asm"
-WartortlePokedexEntry::  INCLUDE "data/pokedex/entries/wartortle.asm"
-BlastoisePokedexEntry::  INCLUDE "data/pokedex/entries/blastoise.asm"
-CaterpiePokedexEntry::   INCLUDE "data/pokedex/entries/caterpie.asm"
-MetapodPokedexEntry::    INCLUDE "data/pokedex/entries/metapod.asm"
-ButterfreePokedexEntry:: INCLUDE "data/pokedex/entries/butterfree.asm"
-WeedlePokedexEntry::     INCLUDE "data/pokedex/entries/weedle.asm"
-KakunaPokedexEntry::     INCLUDE "data/pokedex/entries/kakuna.asm"
-BeedrillPokedexEntry::   INCLUDE "data/pokedex/entries/beedrill.asm"
-PidgeyPokedexEntry::     INCLUDE "data/pokedex/entries/pidgey.asm"
-PidgeottoPokedexEntry::  INCLUDE "data/pokedex/entries/pidgeotto.asm"
-PidgeotPokedexEntry::    INCLUDE "data/pokedex/entries/pidgeot.asm"
-RattataPokedexEntry::    INCLUDE "data/pokedex/entries/rattata.asm"
-RaticatePokedexEntry::   INCLUDE "data/pokedex/entries/raticate.asm"
-SpearowPokedexEntry::    INCLUDE "data/pokedex/entries/spearow.asm"
-FearowPokedexEntry::     INCLUDE "data/pokedex/entries/fearow.asm"
-EkansPokedexEntry::      INCLUDE "data/pokedex/entries/ekans.asm"
-ArbokPokedexEntry::      INCLUDE "data/pokedex/entries/arbok.asm"
-PikachuPokedexEntry::    INCLUDE "data/pokedex/entries/pikachu.asm"
-RaichuPokedexEntry::     INCLUDE "data/pokedex/entries/raichu.asm"
-SandshrewPokedexEntry::  INCLUDE "data/pokedex/entries/sandshrew.asm"
-SandslashPokedexEntry::  INCLUDE "data/pokedex/entries/sandslash.asm"
-NidoranFPokedexEntry::   INCLUDE "data/pokedex/entries/nidoran_f.asm"
-NidorinaPokedexEntry::   INCLUDE "data/pokedex/entries/nidorina.asm"
-NidoqueenPokedexEntry::  INCLUDE "data/pokedex/entries/nidoqueen.asm"
-NidoranMPokedexEntry::   INCLUDE "data/pokedex/entries/nidoran_m.asm"
-NidorinoPokedexEntry::   INCLUDE "data/pokedex/entries/nidorino.asm"
-NidokingPokedexEntry::   INCLUDE "data/pokedex/entries/nidoking.asm"
-ClefairyPokedexEntry::   INCLUDE "data/pokedex/entries/clefairy.asm"
-ClefablePokedexEntry::   INCLUDE "data/pokedex/entries/clefable.asm"
-VulpixPokedexEntry::     INCLUDE "data/pokedex/entries/vulpix.asm"
-NinetalesPokedexEntry::  INCLUDE "data/pokedex/entries/ninetales.asm"
-JigglypuffPokedexEntry:: INCLUDE "data/pokedex/entries/jigglypuff.asm"
-WigglytuffPokedexEntry:: INCLUDE "data/pokedex/entries/wigglytuff.asm"
-ZubatPokedexEntry::      INCLUDE "data/pokedex/entries/zubat.asm"
-GolbatPokedexEntry::     INCLUDE "data/pokedex/entries/golbat.asm"
-OddishPokedexEntry::     INCLUDE "data/pokedex/entries/oddish.asm"
-GloomPokedexEntry::      INCLUDE "data/pokedex/entries/gloom.asm"
-VileplumePokedexEntry::  INCLUDE "data/pokedex/entries/vileplume.asm"
-ParasPokedexEntry::      INCLUDE "data/pokedex/entries/paras.asm"
-ParasectPokedexEntry::   INCLUDE "data/pokedex/entries/parasect.asm"
-VenonatPokedexEntry::    INCLUDE "data/pokedex/entries/venonat.asm"
-VenomothPokedexEntry::   INCLUDE "data/pokedex/entries/venomoth.asm"
-DiglettPokedexEntry::    INCLUDE "data/pokedex/entries/diglett.asm"
-DugtrioPokedexEntry::    INCLUDE "data/pokedex/entries/dugtrio.asm"
-MeowthPokedexEntry::     INCLUDE "data/pokedex/entries/meowth.asm"
-PersianPokedexEntry::    INCLUDE "data/pokedex/entries/persian.asm"
-PsyduckPokedexEntry::    INCLUDE "data/pokedex/entries/psyduck.asm"
-GolduckPokedexEntry::    INCLUDE "data/pokedex/entries/golduck.asm"
-MankeyPokedexEntry::     INCLUDE "data/pokedex/entries/mankey.asm"
-PrimeapePokedexEntry::   INCLUDE "data/pokedex/entries/primeape.asm"
-GrowlithePokedexEntry::  INCLUDE "data/pokedex/entries/growlithe.asm"
-ArcaninePokedexEntry::   INCLUDE "data/pokedex/entries/arcanine.asm"
-PoliwagPokedexEntry::    INCLUDE "data/pokedex/entries/poliwag.asm"
-PoliwhirlPokedexEntry::  INCLUDE "data/pokedex/entries/poliwhirl.asm"
-PoliwrathPokedexEntry::  INCLUDE "data/pokedex/entries/poliwrath.asm"
-AbraPokedexEntry::       INCLUDE "data/pokedex/entries/abra.asm"
-KadabraPokedexEntry::    INCLUDE "data/pokedex/entries/kadabra.asm"
--- a/data/pokedex/entries_2.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-AlakazamPokedexEntry::   INCLUDE "data/pokedex/entries/alakazam.asm"
-MachopPokedexEntry::     INCLUDE "data/pokedex/entries/machop.asm"
-MachokePokedexEntry::    INCLUDE "data/pokedex/entries/machoke.asm"
-MachampPokedexEntry::    INCLUDE "data/pokedex/entries/machamp.asm"
-BellsproutPokedexEntry:: INCLUDE "data/pokedex/entries/bellsprout.asm"
-WeepinbellPokedexEntry:: INCLUDE "data/pokedex/entries/weepinbell.asm"
-VictreebelPokedexEntry:: INCLUDE "data/pokedex/entries/victreebel.asm"
-TentacoolPokedexEntry::  INCLUDE "data/pokedex/entries/tentacool.asm"
-TentacruelPokedexEntry:: INCLUDE "data/pokedex/entries/tentacruel.asm"
-GeodudePokedexEntry::    INCLUDE "data/pokedex/entries/geodude.asm"
-GravelerPokedexEntry::   INCLUDE "data/pokedex/entries/graveler.asm"
-GolemPokedexEntry::      INCLUDE "data/pokedex/entries/golem.asm"
-PonytaPokedexEntry::     INCLUDE "data/pokedex/entries/ponyta.asm"
-RapidashPokedexEntry::   INCLUDE "data/pokedex/entries/rapidash.asm"
-SlowpokePokedexEntry::   INCLUDE "data/pokedex/entries/slowpoke.asm"
-SlowbroPokedexEntry::    INCLUDE "data/pokedex/entries/slowbro.asm"
-MagnemitePokedexEntry::  INCLUDE "data/pokedex/entries/magnemite.asm"
-MagnetonPokedexEntry::   INCLUDE "data/pokedex/entries/magneton.asm"
-FarfetchDPokedexEntry::  INCLUDE "data/pokedex/entries/farfetch_d.asm"
-DoduoPokedexEntry::      INCLUDE "data/pokedex/entries/doduo.asm"
-DodrioPokedexEntry::     INCLUDE "data/pokedex/entries/dodrio.asm"
-SeelPokedexEntry::       INCLUDE "data/pokedex/entries/seel.asm"
-DewgongPokedexEntry::    INCLUDE "data/pokedex/entries/dewgong.asm"
-GrimerPokedexEntry::     INCLUDE "data/pokedex/entries/grimer.asm"
-MukPokedexEntry::        INCLUDE "data/pokedex/entries/muk.asm"
-ShellderPokedexEntry::   INCLUDE "data/pokedex/entries/shellder.asm"
-CloysterPokedexEntry::   INCLUDE "data/pokedex/entries/cloyster.asm"
-GastlyPokedexEntry::     INCLUDE "data/pokedex/entries/gastly.asm"
-HaunterPokedexEntry::    INCLUDE "data/pokedex/entries/haunter.asm"
-GengarPokedexEntry::     INCLUDE "data/pokedex/entries/gengar.asm"
-OnixPokedexEntry::       INCLUDE "data/pokedex/entries/onix.asm"
-DrowzeePokedexEntry::    INCLUDE "data/pokedex/entries/drowzee.asm"
-HypnoPokedexEntry::      INCLUDE "data/pokedex/entries/hypno.asm"
-KrabbyPokedexEntry::     INCLUDE "data/pokedex/entries/krabby.asm"
-KinglerPokedexEntry::    INCLUDE "data/pokedex/entries/kingler.asm"
-VoltorbPokedexEntry::    INCLUDE "data/pokedex/entries/voltorb.asm"
-ElectrodePokedexEntry::  INCLUDE "data/pokedex/entries/electrode.asm"
-ExeggcutePokedexEntry::  INCLUDE "data/pokedex/entries/exeggcute.asm"
-ExeggutorPokedexEntry::  INCLUDE "data/pokedex/entries/exeggutor.asm"
-CubonePokedexEntry::     INCLUDE "data/pokedex/entries/cubone.asm"
-MarowakPokedexEntry::    INCLUDE "data/pokedex/entries/marowak.asm"
-HitmonleePokedexEntry::  INCLUDE "data/pokedex/entries/hitmonlee.asm"
-HitmonchanPokedexEntry:: INCLUDE "data/pokedex/entries/hitmonchan.asm"
-LickitungPokedexEntry::  INCLUDE "data/pokedex/entries/lickitung.asm"
-KoffingPokedexEntry::    INCLUDE "data/pokedex/entries/koffing.asm"
-WeezingPokedexEntry::    INCLUDE "data/pokedex/entries/weezing.asm"
-RhyhornPokedexEntry::    INCLUDE "data/pokedex/entries/rhyhorn.asm"
-RhydonPokedexEntry::     INCLUDE "data/pokedex/entries/rhydon.asm"
-ChanseyPokedexEntry::    INCLUDE "data/pokedex/entries/chansey.asm"
-TangelaPokedexEntry::    INCLUDE "data/pokedex/entries/tangela.asm"
-KangaskhanPokedexEntry:: INCLUDE "data/pokedex/entries/kangaskhan.asm"
-HorseaPokedexEntry::     INCLUDE "data/pokedex/entries/horsea.asm"
-SeadraPokedexEntry::     INCLUDE "data/pokedex/entries/seadra.asm"
-GoldeenPokedexEntry::    INCLUDE "data/pokedex/entries/goldeen.asm"
-SeakingPokedexEntry::    INCLUDE "data/pokedex/entries/seaking.asm"
-StaryuPokedexEntry::     INCLUDE "data/pokedex/entries/staryu.asm"
-StarmiePokedexEntry::    INCLUDE "data/pokedex/entries/starmie.asm"
-MrMimePokedexEntry::     INCLUDE "data/pokedex/entries/mr__mime.asm"
-ScytherPokedexEntry::    INCLUDE "data/pokedex/entries/scyther.asm"
-JynxPokedexEntry::       INCLUDE "data/pokedex/entries/jynx.asm"
-ElectabuzzPokedexEntry:: INCLUDE "data/pokedex/entries/electabuzz.asm"
-MagmarPokedexEntry::     INCLUDE "data/pokedex/entries/magmar.asm"
-PinsirPokedexEntry::     INCLUDE "data/pokedex/entries/pinsir.asm"
-TaurosPokedexEntry::     INCLUDE "data/pokedex/entries/tauros.asm"
--- a/data/pokedex/entries_3.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-MagikarpPokedexEntry::   INCLUDE "data/pokedex/entries/magikarp.asm"
-GyaradosPokedexEntry::   INCLUDE "data/pokedex/entries/gyarados.asm"
-LaprasPokedexEntry::     INCLUDE "data/pokedex/entries/lapras.asm"
-DittoPokedexEntry::      INCLUDE "data/pokedex/entries/ditto.asm"
-EeveePokedexEntry::      INCLUDE "data/pokedex/entries/eevee.asm"
-VaporeonPokedexEntry::   INCLUDE "data/pokedex/entries/vaporeon.asm"
-JolteonPokedexEntry::    INCLUDE "data/pokedex/entries/jolteon.asm"
-FlareonPokedexEntry::    INCLUDE "data/pokedex/entries/flareon.asm"
-PorygonPokedexEntry::    INCLUDE "data/pokedex/entries/porygon.asm"
-OmanytePokedexEntry::    INCLUDE "data/pokedex/entries/omanyte.asm"
-OmastarPokedexEntry::    INCLUDE "data/pokedex/entries/omastar.asm"
-KabutoPokedexEntry::     INCLUDE "data/pokedex/entries/kabuto.asm"
-KabutopsPokedexEntry::   INCLUDE "data/pokedex/entries/kabutops.asm"
-AerodactylPokedexEntry:: INCLUDE "data/pokedex/entries/aerodactyl.asm"
-SnorlaxPokedexEntry::    INCLUDE "data/pokedex/entries/snorlax.asm"
-ArticunoPokedexEntry::   INCLUDE "data/pokedex/entries/articuno.asm"
-ZapdosPokedexEntry::     INCLUDE "data/pokedex/entries/zapdos.asm"
-MoltresPokedexEntry::    INCLUDE "data/pokedex/entries/moltres.asm"
-DratiniPokedexEntry::    INCLUDE "data/pokedex/entries/dratini.asm"
-DragonairPokedexEntry::  INCLUDE "data/pokedex/entries/dragonair.asm"
-DragonitePokedexEntry::  INCLUDE "data/pokedex/entries/dragonite.asm"
-MewtwoPokedexEntry::     INCLUDE "data/pokedex/entries/mewtwo.asm"
-MewPokedexEntry::        INCLUDE "data/pokedex/entries/mew.asm"
-ChikoritaPokedexEntry::  INCLUDE "data/pokedex/entries/chikorita.asm"
-BayleefPokedexEntry::    INCLUDE "data/pokedex/entries/bayleef.asm"
-MeganiumPokedexEntry::   INCLUDE "data/pokedex/entries/meganium.asm"
-CyndaquilPokedexEntry::  INCLUDE "data/pokedex/entries/cyndaquil.asm"
-QuilavaPokedexEntry::    INCLUDE "data/pokedex/entries/quilava.asm"
-TyphlosionPokedexEntry:: INCLUDE "data/pokedex/entries/typhlosion.asm"
-TotodilePokedexEntry::   INCLUDE "data/pokedex/entries/totodile.asm"
-CroconawPokedexEntry::   INCLUDE "data/pokedex/entries/croconaw.asm"
-FeraligatrPokedexEntry:: INCLUDE "data/pokedex/entries/feraligatr.asm"
-SentretPokedexEntry::    INCLUDE "data/pokedex/entries/sentret.asm"
-FurretPokedexEntry::     INCLUDE "data/pokedex/entries/furret.asm"
-HoothootPokedexEntry::   INCLUDE "data/pokedex/entries/hoothoot.asm"
-NoctowlPokedexEntry::    INCLUDE "data/pokedex/entries/noctowl.asm"
-LedybaPokedexEntry::     INCLUDE "data/pokedex/entries/ledyba.asm"
-LedianPokedexEntry::     INCLUDE "data/pokedex/entries/ledian.asm"
-SpinarakPokedexEntry::   INCLUDE "data/pokedex/entries/spinarak.asm"
-AriadosPokedexEntry::    INCLUDE "data/pokedex/entries/ariados.asm"
-CrobatPokedexEntry::     INCLUDE "data/pokedex/entries/crobat.asm"
-ChinchouPokedexEntry::   INCLUDE "data/pokedex/entries/chinchou.asm"
-LanturnPokedexEntry::    INCLUDE "data/pokedex/entries/lanturn.asm"
-PichuPokedexEntry::      INCLUDE "data/pokedex/entries/pichu.asm"
-CleffaPokedexEntry::     INCLUDE "data/pokedex/entries/cleffa.asm"
-IgglybuffPokedexEntry::  INCLUDE "data/pokedex/entries/igglybuff.asm"
-TogepiPokedexEntry::     INCLUDE "data/pokedex/entries/togepi.asm"
-TogeticPokedexEntry::    INCLUDE "data/pokedex/entries/togetic.asm"
-NatuPokedexEntry::       INCLUDE "data/pokedex/entries/natu.asm"
-XatuPokedexEntry::       INCLUDE "data/pokedex/entries/xatu.asm"
-MareepPokedexEntry::     INCLUDE "data/pokedex/entries/mareep.asm"
-FlaaffyPokedexEntry::    INCLUDE "data/pokedex/entries/flaaffy.asm"
-AmpharosPokedexEntry::   INCLUDE "data/pokedex/entries/ampharos.asm"
-BellossomPokedexEntry::  INCLUDE "data/pokedex/entries/bellossom.asm"
-MarillPokedexEntry::     INCLUDE "data/pokedex/entries/marill.asm"
-AzumarillPokedexEntry::  INCLUDE "data/pokedex/entries/azumarill.asm"
-SudowoodoPokedexEntry::  INCLUDE "data/pokedex/entries/sudowoodo.asm"
-PolitoedPokedexEntry::   INCLUDE "data/pokedex/entries/politoed.asm"
-HoppipPokedexEntry::     INCLUDE "data/pokedex/entries/hoppip.asm"
-SkiploomPokedexEntry::   INCLUDE "data/pokedex/entries/skiploom.asm"
-JumpluffPokedexEntry::   INCLUDE "data/pokedex/entries/jumpluff.asm"
-AipomPokedexEntry::      INCLUDE "data/pokedex/entries/aipom.asm"
-SunkernPokedexEntry::    INCLUDE "data/pokedex/entries/sunkern.asm"
-SunfloraPokedexEntry::   INCLUDE "data/pokedex/entries/sunflora.asm"
--- a/data/pokedex/entries_4.asm
+++ /dev/null
@@ -1,59 +1,0 @@
-YanmaPokedexEntry::      INCLUDE "data/pokedex/entries/yanma.asm"
-WooperPokedexEntry::     INCLUDE "data/pokedex/entries/wooper.asm"
-QuagsirePokedexEntry::   INCLUDE "data/pokedex/entries/quagsire.asm"
-EspeonPokedexEntry::     INCLUDE "data/pokedex/entries/espeon.asm"
-UmbreonPokedexEntry::    INCLUDE "data/pokedex/entries/umbreon.asm"
-MurkrowPokedexEntry::    INCLUDE "data/pokedex/entries/murkrow.asm"
-SlowkingPokedexEntry::   INCLUDE "data/pokedex/entries/slowking.asm"
-MisdreavusPokedexEntry:: INCLUDE "data/pokedex/entries/misdreavus.asm"
-UnownPokedexEntry::      INCLUDE "data/pokedex/entries/unown.asm"
-WobbuffetPokedexEntry::  INCLUDE "data/pokedex/entries/wobbuffet.asm"
-GirafarigPokedexEntry::  INCLUDE "data/pokedex/entries/girafarig.asm"
-PinecoPokedexEntry::     INCLUDE "data/pokedex/entries/pineco.asm"
-ForretressPokedexEntry:: INCLUDE "data/pokedex/entries/forretress.asm"
-DunsparcePokedexEntry::  INCLUDE "data/pokedex/entries/dunsparce.asm"
-GligarPokedexEntry::     INCLUDE "data/pokedex/entries/gligar.asm"
-SteelixPokedexEntry::    INCLUDE "data/pokedex/entries/steelix.asm"
-SnubbullPokedexEntry::   INCLUDE "data/pokedex/entries/snubbull.asm"
-GranbullPokedexEntry::   INCLUDE "data/pokedex/entries/granbull.asm"
-QwilfishPokedexEntry::   INCLUDE "data/pokedex/entries/qwilfish.asm"
-ScizorPokedexEntry::     INCLUDE "data/pokedex/entries/scizor.asm"
-ShucklePokedexEntry::    INCLUDE "data/pokedex/entries/shuckle.asm"
-HeracrossPokedexEntry::  INCLUDE "data/pokedex/entries/heracross.asm"
-SneaselPokedexEntry::    INCLUDE "data/pokedex/entries/sneasel.asm"
-TeddiursaPokedexEntry::  INCLUDE "data/pokedex/entries/teddiursa.asm"
-UrsaringPokedexEntry::   INCLUDE "data/pokedex/entries/ursaring.asm"
-SlugmaPokedexEntry::     INCLUDE "data/pokedex/entries/slugma.asm"
-MagcargoPokedexEntry::   INCLUDE "data/pokedex/entries/magcargo.asm"
-SwinubPokedexEntry::     INCLUDE "data/pokedex/entries/swinub.asm"
-PiloswinePokedexEntry::  INCLUDE "data/pokedex/entries/piloswine.asm"
-CorsolaPokedexEntry::    INCLUDE "data/pokedex/entries/corsola.asm"
-RemoraidPokedexEntry::   INCLUDE "data/pokedex/entries/remoraid.asm"
-OctilleryPokedexEntry::  INCLUDE "data/pokedex/entries/octillery.asm"
-DelibirdPokedexEntry::   INCLUDE "data/pokedex/entries/delibird.asm"
-MantinePokedexEntry::    INCLUDE "data/pokedex/entries/mantine.asm"
-SkarmoryPokedexEntry::   INCLUDE "data/pokedex/entries/skarmory.asm"
-HoundourPokedexEntry::   INCLUDE "data/pokedex/entries/houndour.asm"
-HoundoomPokedexEntry::   INCLUDE "data/pokedex/entries/houndoom.asm"
-KingdraPokedexEntry::    INCLUDE "data/pokedex/entries/kingdra.asm"
-PhanpyPokedexEntry::     INCLUDE "data/pokedex/entries/phanpy.asm"
-DonphanPokedexEntry::    INCLUDE "data/pokedex/entries/donphan.asm"
-Porygon2PokedexEntry::   INCLUDE "data/pokedex/entries/porygon2.asm"
-StantlerPokedexEntry::   INCLUDE "data/pokedex/entries/stantler.asm"
-SmearglePokedexEntry::   INCLUDE "data/pokedex/entries/smeargle.asm"
-TyroguePokedexEntry::    INCLUDE "data/pokedex/entries/tyrogue.asm"
-HitmontopPokedexEntry::  INCLUDE "data/pokedex/entries/hitmontop.asm"
-SmoochumPokedexEntry::   INCLUDE "data/pokedex/entries/smoochum.asm"
-ElekidPokedexEntry::     INCLUDE "data/pokedex/entries/elekid.asm"
-MagbyPokedexEntry::      INCLUDE "data/pokedex/entries/magby.asm"
-MiltankPokedexEntry::    INCLUDE "data/pokedex/entries/miltank.asm"
-BlisseyPokedexEntry::    INCLUDE "data/pokedex/entries/blissey.asm"
-RaikouPokedexEntry::     INCLUDE "data/pokedex/entries/raikou.asm"
-EnteiPokedexEntry::      INCLUDE "data/pokedex/entries/entei.asm"
-SuicunePokedexEntry::    INCLUDE "data/pokedex/entries/suicune.asm"
-LarvitarPokedexEntry::   INCLUDE "data/pokedex/entries/larvitar.asm"
-PupitarPokedexEntry::    INCLUDE "data/pokedex/entries/pupitar.asm"
-TyranitarPokedexEntry::  INCLUDE "data/pokedex/entries/tyranitar.asm"
-LugiaPokedexEntry::      INCLUDE "data/pokedex/entries/lugia.asm"
-HoOhPokedexEntry::       INCLUDE "data/pokedex/entries/ho_oh.asm"
-CelebiPokedexEntry::     INCLUDE "data/pokedex/entries/celebi.asm"
--- a/data/pokedex/entries_crystal.asm
+++ /dev/null
@@ -1,2 +1,0 @@
-INCLUDE "pokecrystal.asm"
-INCLUDE "data/pokedex/entries.asm"
--- a/data/pokedex/entry_pointers.asm
+++ b/data/pokedex/entry_pointers.asm
@@ -1,77 +1,5 @@
-GetDexEntryPointer: ; 44333
-; return dex entry pointer b:de
-	push hl
-	ld hl, PokedexDataPointerTable
-	ld a, b
-	dec a
-	ld d, 0
-	ld e, a
-	add hl, de
-	add hl, de
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	push de
-	rlca
-	rlca
-	and $3
-	ld hl, .PokedexEntryBanks
-	ld d, 0
-	ld e, a
-	add hl, de
-	ld b, [hl]
-	pop de
-	pop hl
-	ret
-
-.PokedexEntryBanks: ; 44351
-
-GLOBAL PokedexEntries1
-GLOBAL PokedexEntries2
-GLOBAL PokedexEntries3
-GLOBAL PokedexEntries4
-
-	db BANK(PokedexEntries1)
-	db BANK(PokedexEntries2)
-	db BANK(PokedexEntries3)
-	db BANK(PokedexEntries4)
-
-GetDexEntryPagePointer: ; 44355
-	call GetDexEntryPointer ; b:de
-	push hl
-	ld h, d
-	ld l, e
-; skip species name
-.loop1
-	ld a, b
-	call GetFarByte
-	inc hl
-	cp "@"
-	jr nz, .loop1
-; skip height and weight
-rept 4
-	inc hl
-endr
-; if c != 1: skip entry
-	dec c
-	jr z, .done
-; skip entry
-.loop2
-	ld a, b
-	call GetFarByte
-	inc hl
-	cp "@"
-	jr nz, .loop2
-
-.done
-	ld d, h
-	ld e, l
-	pop hl
-	ret
-
 PokedexDataPointerTable: ; 0x44378
-; Pointers to all the Pokedex entries.
-
+; entries correspond to constants/pokemon_constants.asm
 	dw BulbasaurPokedexEntry
 	dw IvysaurPokedexEntry
 	dw VenusaurPokedexEntry
@@ -323,3 +251,4 @@
 	dw LugiaPokedexEntry
 	dw HoOhPokedexEntry
 	dw CelebiPokedexEntry
+; 0x4456e
--- a/data/pokedex/order_alpha.asm
+++ b/data/pokedex/order_alpha.asm
@@ -1,5 +1,6 @@
-; Every Pokemon sorted alphabetically by name.
+; Every Pokémon sorted alphabetically by name.
 
+AlphabeticalPokedexOrder: ; 0x40c65
 	db ABRA
 	db AERODACTYL
 	db AIPOM
@@ -251,3 +252,4 @@
 	db YANMA
 	db ZAPDOS
 	db ZUBAT
+; 0x40d60
--- a/data/pokedex/order_new.asm
+++ b/data/pokedex/order_new.asm
@@ -1,5 +1,6 @@
-; Every Pokemon sorted in New Pokedex Order.
+; Every Pokémon sorted in New Pokédex Order.
 
+NewPokedexOrder: ; 0x40d60
 	db CHIKORITA
 	db BAYLEEF
 	db MEGANIUM
@@ -251,3 +252,4 @@
 	db MEWTWO
 	db MEW
 	db CELEBI
+; 0x40e5b
--- a/data/pokemon_names.asm
+++ b/data/pokemon_names.asm
@@ -1,3 +1,4 @@
+PokemonNames::
 	db "BULBASAUR@"
 	db "IVYSAUR@@@"
 	db "VENUSAUR@@"
--- /dev/null
+++ b/data/spawn_points.asm
@@ -1,0 +1,41 @@
+spawn: MACRO
+; map, y, x
+	map \1
+	db \2, \3
+ENDM
+
+SpawnPoints: ; 0x152ab
+; entries correspond to SPAWN_* constants
+
+	spawn KRISS_HOUSE_2F,              3,  3
+	spawn VIRIDIAN_POKECENTER_1F,      5,  3
+
+	spawn PALLET_TOWN,                 5,  6
+	spawn VIRIDIAN_CITY,              23, 26
+	spawn PEWTER_CITY,                13, 26
+	spawn CERULEAN_CITY,              19, 22
+	spawn ROUTE_10_NORTH,             11,  2
+	spawn VERMILION_CITY,              9,  6
+	spawn LAVENDER_TOWN,               5,  6
+	spawn SAFFRON_CITY,                9, 30
+	spawn CELADON_CITY,               29, 10
+	spawn FUCHSIA_CITY,               19, 28
+	spawn CINNABAR_ISLAND,            11, 12
+	spawn ROUTE_23,                    9,  6
+
+	spawn NEW_BARK_TOWN,              13,  6
+	spawn CHERRYGROVE_CITY,           29,  4
+	spawn VIOLET_CITY,                31, 26
+	spawn ROUTE_32,                   11, 74
+	spawn AZALEA_TOWN,                15, 10
+	spawn CIANWOOD_CITY,              23, 44
+	spawn GOLDENROD_CITY,             15, 28
+	spawn OLIVINE_CITY,               13, 22
+	spawn ECRUTEAK_CITY,              23, 28
+	spawn MAHOGANY_TOWN,              15, 14
+	spawn LAKE_OF_RAGE,               21, 29
+	spawn BLACKTHORN_CITY,            21, 30
+	spawn SILVER_CAVE_OUTSIDE,        23, 20
+	spawn FAST_SHIP_CABINS_SW_SSW_NW,  6,  2
+	spawn N_A,                        -1, -1
+; 1531f
--- /dev/null
+++ b/data/sprite_anim_frames.asm
@@ -1,0 +1,499 @@
+SpriteAnimFrameData: ; 8d6e6
+; entries correspond to SPRITE_ANIM_FRAMESET_* constants
+	dw .Frameset_00
+	dw .Frameset_PartyMon
+	dw .Frameset_02
+	dw .Frameset_03
+	dw .Frameset_04
+	dw .Frameset_05
+	dw .Frameset_06
+	dw .Frameset_07
+	dw .Frameset_TextEntryCursor
+	dw .Frameset_09
+	dw .Frameset_GameFreakLogo
+	dw .Frameset_GSIntroStar
+	dw .Frameset_GSIntroSparkle
+	dw .Frameset_SlotsGolem
+	dw .Frameset_SlotsChansey
+	dw .Frameset_SlotsChansey2
+	dw .Frameset_SlotsEgg
+	dw .Frameset_RedWalk
+	dw .Frameset_StillCursor
+	dw .Frameset_TradePokeBall
+	dw .Frameset_TradePokeBall0
+	dw .Frameset_TradePoof
+	dw .Frameset_TradeTubeBulge
+	dw .Frameset_TrademonIcon
+	dw .Frameset_TrademonBubble
+	dw .Frameset_EvolutionBallOfLight
+	dw .Frameset_RadioTuningKnob
+	dw .Frameset_MagnetTrainRed
+	dw .Frameset_1c
+	dw .Frameset_Leaf
+	dw .Frameset_CutTree
+	dw .Frameset_EggCrack
+	dw .Frameset_EggHatch
+	dw .Frameset_21
+	dw .Frameset_22
+	dw .Frameset_23
+	dw .Frameset_24
+	dw .Frameset_HeadbuttTree
+	dw .Frameset_26
+	dw .Frameset_27
+	dw .Frameset_28
+	dw .Frameset_29
+	dw .Frameset_2a
+	dw .Frameset_2b
+	dw .Frameset_2c
+	dw .Frameset_BlueWalk
+	dw .Frameset_MagnetTrainBlue
+	dw .Frameset_2f
+	dw .Frameset_30
+	dw .Frameset_31
+	dw .Frameset_32
+	dw .Frameset_33
+	dw .Frameset_34
+	dw .Frameset_IntroSuicune
+	dw .Frameset_IntroSuicune2
+	dw .Frameset_IntroPichu
+	dw .Frameset_IntroWooper
+	dw .Frameset_IntroUnown1
+	dw .Frameset_IntroUnown2
+	dw .Frameset_IntroUnown3
+	dw .Frameset_IntroUnown4
+	dw .Frameset_IntroUnownF2
+	dw .Frameset_IntroSuicuneAway
+	dw .Frameset_IntroUnownF
+	dw .Frameset_CelebiLeft
+	dw .Frameset_CelebiRight
+; 8d76a
+
+.Frameset_00:
+	frame SPRITE_ANIM_FRAME_IDX_00, 32
+	endanim
+
+.Frameset_PartyMon:
+	frame SPRITE_ANIM_FRAME_IDX_00,  8
+	frame SPRITE_ANIM_FRAME_IDX_01,  8
+	dorestart
+
+.Frameset_02:
+	frame SPRITE_ANIM_FRAME_IDX_3D,  8
+	frame SPRITE_ANIM_FRAME_IDX_3E,  8
+	dorestart
+
+.Frameset_03:
+	frame SPRITE_ANIM_FRAME_IDX_3F,  8
+	frame SPRITE_ANIM_FRAME_IDX_40,  8
+	dorestart
+
+.Frameset_04:
+	frame SPRITE_ANIM_FRAME_IDX_00,  4
+	frame SPRITE_ANIM_FRAME_IDX_01,  4
+	dorestart
+
+.Frameset_05:
+	frame SPRITE_ANIM_FRAME_IDX_3D,  4
+	frame SPRITE_ANIM_FRAME_IDX_3E,  4
+	dorestart
+
+.Frameset_06:
+	frame SPRITE_ANIM_FRAME_IDX_3F,  4
+	frame SPRITE_ANIM_FRAME_IDX_40,  4
+	dorestart
+
+.Frameset_RedWalk:
+	frame SPRITE_ANIM_FRAME_IDX_00,  8
+	frame SPRITE_ANIM_FRAME_IDX_01,  8
+	frame SPRITE_ANIM_FRAME_IDX_00,  8
+	frame SPRITE_ANIM_FRAME_IDX_01,  8, OAM_X_FLIP
+	dorestart
+
+.Frameset_BlueWalk:
+	frame SPRITE_ANIM_FRAME_IDX_63,  8
+	frame SPRITE_ANIM_FRAME_IDX_64,  8
+	frame SPRITE_ANIM_FRAME_IDX_63,  8
+	frame SPRITE_ANIM_FRAME_IDX_64,  8, OAM_X_FLIP
+	dorestart
+
+.Frameset_MagnetTrainBlue:
+	frame SPRITE_ANIM_FRAME_IDX_65,  8
+	frame SPRITE_ANIM_FRAME_IDX_66,  8
+	frame SPRITE_ANIM_FRAME_IDX_65,  8
+	frame SPRITE_ANIM_FRAME_IDX_66,  8, OAM_X_FLIP
+	dorestart
+
+.Frameset_07:
+	frame SPRITE_ANIM_FRAME_IDX_1E,  1
+	frame SPRITE_ANIM_FRAME_IDX_1F,  1
+	dorestart
+
+.Frameset_TextEntryCursor:
+	frame SPRITE_ANIM_FRAME_IDX_20,  1
+	dorepeat  1
+	dorestart
+
+.Frameset_09:
+	frame SPRITE_ANIM_FRAME_IDX_21,  1
+	dorepeat  1
+	dorestart
+
+.Frameset_GameFreakLogo:
+	frame SPRITE_ANIM_FRAME_IDX_81, 12
+	frame SPRITE_ANIM_FRAME_IDX_82,  1
+	frame SPRITE_ANIM_FRAME_IDX_83,  1
+	frame SPRITE_ANIM_FRAME_IDX_82,  4
+	frame SPRITE_ANIM_FRAME_IDX_81, 12
+	frame SPRITE_ANIM_FRAME_IDX_82, 12
+	frame SPRITE_ANIM_FRAME_IDX_83,  4
+	frame SPRITE_ANIM_FRAME_IDX_84, 32
+	frame SPRITE_ANIM_FRAME_IDX_85,  3
+	frame SPRITE_ANIM_FRAME_IDX_86,  3
+	frame SPRITE_ANIM_FRAME_IDX_87,  4
+	frame SPRITE_ANIM_FRAME_IDX_88,  4
+	frame SPRITE_ANIM_FRAME_IDX_89,  4
+	frame SPRITE_ANIM_FRAME_IDX_8A, 10
+	frame SPRITE_ANIM_FRAME_IDX_8B,  7
+	endanim
+
+.Frameset_GSIntroStar:
+	frame SPRITE_ANIM_FRAME_IDX_23,  3
+	frame SPRITE_ANIM_FRAME_IDX_23,  3, OAM_Y_FLIP
+	dorestart
+
+.Frameset_GSIntroSparkle:
+	frame SPRITE_ANIM_FRAME_IDX_24,  2
+	frame SPRITE_ANIM_FRAME_IDX_25,  2
+	frame SPRITE_ANIM_FRAME_IDX_26,  2
+	frame SPRITE_ANIM_FRAME_IDX_25,  2
+	dorestart
+
+.Frameset_SlotsGolem:
+	frame SPRITE_ANIM_FRAME_IDX_27,  7
+	frame SPRITE_ANIM_FRAME_IDX_28,  7
+	frame SPRITE_ANIM_FRAME_IDX_27,  7, OAM_Y_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_28,  7, OAM_X_FLIP
+	dorestart
+
+.Frameset_SlotsChansey:
+	frame SPRITE_ANIM_FRAME_IDX_29,  7
+	frame SPRITE_ANIM_FRAME_IDX_2A,  7
+	frame SPRITE_ANIM_FRAME_IDX_29,  7
+	frame SPRITE_ANIM_FRAME_IDX_2B,  7
+	dorestart
+
+.Frameset_SlotsChansey2:
+	frame SPRITE_ANIM_FRAME_IDX_29,  7
+	frame SPRITE_ANIM_FRAME_IDX_2C,  7
+	frame SPRITE_ANIM_FRAME_IDX_2D,  7
+	frame SPRITE_ANIM_FRAME_IDX_2C,  7
+	frame SPRITE_ANIM_FRAME_IDX_29,  7
+	endanim
+
+.Frameset_SlotsEgg:
+	frame SPRITE_ANIM_FRAME_IDX_2E, 20
+	endanim
+
+.Frameset_StillCursor:
+	frame SPRITE_ANIM_FRAME_IDX_2F, 32
+	endanim
+
+.Frameset_TradePokeBall:
+	frame SPRITE_ANIM_FRAME_IDX_30, 32
+	endanim
+
+.Frameset_TradePokeBall0:
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
+	dorestart
+
+.Frameset_TradePoof:
+	frame SPRITE_ANIM_FRAME_IDX_32,  4
+	frame SPRITE_ANIM_FRAME_IDX_33,  4
+	frame SPRITE_ANIM_FRAME_IDX_34,  4
+	delanim
+
+.Frameset_TradeTubeBulge:
+	frame SPRITE_ANIM_FRAME_IDX_35,  3
+	frame SPRITE_ANIM_FRAME_IDX_36,  3
+	dorestart
+
+.Frameset_TrademonIcon:
+	frame SPRITE_ANIM_FRAME_IDX_37,  7
+	frame SPRITE_ANIM_FRAME_IDX_38,  7
+	dorestart
+
+.Frameset_TrademonBubble:
+	frame SPRITE_ANIM_FRAME_IDX_39, 32
+	endanim
+
+.Frameset_EvolutionBallOfLight:
+	frame SPRITE_ANIM_FRAME_IDX_3B,  2
+	frame SPRITE_ANIM_FRAME_IDX_3A,  2
+	frame SPRITE_ANIM_FRAME_IDX_3B,  2
+	endanim
+
+.Frameset_RadioTuningKnob:
+	frame SPRITE_ANIM_FRAME_IDX_3C, 32
+	endanim
+
+.Frameset_MagnetTrainRed:
+	frame SPRITE_ANIM_FRAME_IDX_41,  8
+	frame SPRITE_ANIM_FRAME_IDX_42,  8
+	frame SPRITE_ANIM_FRAME_IDX_41,  8
+	frame SPRITE_ANIM_FRAME_IDX_42,  8, OAM_X_FLIP
+	dorestart
+
+; XXX
+	frame SPRITE_ANIM_FRAME_IDX_43,  8
+	frame SPRITE_ANIM_FRAME_IDX_44,  8
+	dorestart
+
+; XXX
+	frame SPRITE_ANIM_FRAME_IDX_45,  8
+	frame SPRITE_ANIM_FRAME_IDX_46,  8
+	dorestart
+
+; XXX
+	frame SPRITE_ANIM_FRAME_IDX_47,  8
+	frame SPRITE_ANIM_FRAME_IDX_48,  8
+	dorestart
+
+; XXX
+	frame SPRITE_ANIM_FRAME_IDX_49,  1
+	frame SPRITE_ANIM_FRAME_IDX_49,  1, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_49,  1, OAM_X_FLIP, OAM_Y_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_49,  1, OAM_Y_FLIP
+	dorestart
+
+; XXX
+	frame SPRITE_ANIM_FRAME_IDX_4A, 32
+	endanim
+
+; XXX
+	frame SPRITE_ANIM_FRAME_IDX_4B, 32
+	endanim
+
+; XXX
+	frame SPRITE_ANIM_FRAME_IDX_4C, 32
+	endanim
+
+; XXX
+	frame SPRITE_ANIM_FRAME_IDX_4D, 32
+	endanim
+
+; XXX
+	frame SPRITE_ANIM_FRAME_IDX_4E,  3
+	dorepeat  3
+	dorestart
+
+.Frameset_1c:
+	dorepeat 32
+	endanim
+
+.Frameset_Leaf:
+	frame SPRITE_ANIM_FRAME_IDX_4F, 32
+	endanim
+
+.Frameset_CutTree:
+	frame SPRITE_ANIM_FRAME_IDX_50,  2
+	frame SPRITE_ANIM_FRAME_IDX_51, 16
+	dorepeat  1
+	frame SPRITE_ANIM_FRAME_IDX_52,  1
+	dorepeat  1
+	frame SPRITE_ANIM_FRAME_IDX_53,  1
+	delanim
+
+.Frameset_EggCrack:
+	frame SPRITE_ANIM_FRAME_IDX_54, 32
+	endanim
+
+.Frameset_EggHatch:
+	frame SPRITE_ANIM_FRAME_IDX_55, 32
+	endanim
+
+.Frameset_21:
+	frame SPRITE_ANIM_FRAME_IDX_55, 32, OAM_X_FLIP
+	endanim
+
+.Frameset_22:
+	frame SPRITE_ANIM_FRAME_IDX_55, 32, OAM_Y_FLIP
+	endanim
+
+.Frameset_23:
+	frame SPRITE_ANIM_FRAME_IDX_55, 32, OAM_X_FLIP, OAM_Y_FLIP
+	endanim
+
+.Frameset_24:
+	frame SPRITE_ANIM_FRAME_IDX_56, 10
+	frame SPRITE_ANIM_FRAME_IDX_57,  9
+	frame SPRITE_ANIM_FRAME_IDX_58, 10
+	frame SPRITE_ANIM_FRAME_IDX_59, 10
+	frame SPRITE_ANIM_FRAME_IDX_58,  9
+	frame SPRITE_ANIM_FRAME_IDX_5A, 10
+	dorestart
+
+.Frameset_HeadbuttTree:
+	frame SPRITE_ANIM_FRAME_IDX_50,  2
+	frame SPRITE_ANIM_FRAME_IDX_5B,  2
+	frame SPRITE_ANIM_FRAME_IDX_50,  2
+	frame SPRITE_ANIM_FRAME_IDX_5B,  2, OAM_X_FLIP
+	dorestart
+
+.Frameset_26:
+	frame SPRITE_ANIM_FRAME_IDX_5C,  2
+	endanim
+
+.Frameset_27:
+	frame SPRITE_ANIM_FRAME_IDX_5D,  2
+	endanim
+
+.Frameset_28:
+	frame SPRITE_ANIM_FRAME_IDX_5E,  2
+	endanim
+
+.Frameset_29:
+	frame SPRITE_ANIM_FRAME_IDX_5F,  2
+	endanim
+
+.Frameset_2a:
+	frame SPRITE_ANIM_FRAME_IDX_60,  2
+	endanim
+
+.Frameset_2b:
+	frame SPRITE_ANIM_FRAME_IDX_61,  2
+	endanim
+
+.Frameset_2c:
+	frame SPRITE_ANIM_FRAME_IDX_62,  2
+	endanim
+
+.Frameset_2f:
+	frame SPRITE_ANIM_FRAME_IDX_32,  3
+	frame SPRITE_ANIM_FRAME_IDX_33,  3
+	frame SPRITE_ANIM_FRAME_IDX_34,  3
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
+	endanim
+
+.Frameset_30:
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_32,  3
+	frame SPRITE_ANIM_FRAME_IDX_33,  3
+	frame SPRITE_ANIM_FRAME_IDX_34,  3
+	delanim
+
+.Frameset_31:
+	frame SPRITE_ANIM_FRAME_IDX_67,  3
+	frame SPRITE_ANIM_FRAME_IDX_68,  3
+	dorestart
+
+.Frameset_32:
+	frame SPRITE_ANIM_FRAME_IDX_6C,  3
+	endanim
+
+.Frameset_33:
+	frame SPRITE_ANIM_FRAME_IDX_6D,  3
+	endanim
+
+.Frameset_34:
+	frame SPRITE_ANIM_FRAME_IDX_69,  2
+	frame SPRITE_ANIM_FRAME_IDX_6A,  2
+	frame SPRITE_ANIM_FRAME_IDX_6B,  2
+	delanim
+
+.Frameset_IntroSuicune:
+	frame SPRITE_ANIM_FRAME_IDX_6E,  3
+	frame SPRITE_ANIM_FRAME_IDX_6F,  3
+	frame SPRITE_ANIM_FRAME_IDX_70,  3
+	frame SPRITE_ANIM_FRAME_IDX_71,  3
+	dorestart
+
+.Frameset_IntroSuicune2:
+	frame SPRITE_ANIM_FRAME_IDX_71,  3
+	frame SPRITE_ANIM_FRAME_IDX_6E,  7
+	endanim
+
+.Frameset_IntroPichu:
+	frame SPRITE_ANIM_FRAME_IDX_72, 32
+	frame SPRITE_ANIM_FRAME_IDX_73,  7
+	frame SPRITE_ANIM_FRAME_IDX_74,  7
+	endanim
+
+.Frameset_IntroWooper:
+	frame SPRITE_ANIM_FRAME_IDX_75,  3
+	endanim
+
+.Frameset_IntroUnown1:
+	frame SPRITE_ANIM_FRAME_IDX_76,  3
+	frame SPRITE_ANIM_FRAME_IDX_77,  3
+	frame SPRITE_ANIM_FRAME_IDX_78,  7
+	delanim
+
+.Frameset_IntroUnown2:
+	frame SPRITE_ANIM_FRAME_IDX_76,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_77,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_78,  7, OAM_X_FLIP
+	delanim
+
+.Frameset_IntroUnown3:
+	frame SPRITE_ANIM_FRAME_IDX_76,  3, OAM_Y_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_77,  3, OAM_Y_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_78,  7, OAM_Y_FLIP
+	delanim
+
+.Frameset_IntroUnown4:
+	frame SPRITE_ANIM_FRAME_IDX_76,  3, OAM_X_FLIP, OAM_Y_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_77,  3, OAM_X_FLIP, OAM_Y_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_78,  7, OAM_X_FLIP, OAM_Y_FLIP
+	delanim
+
+.Frameset_IntroUnownF2:
+	frame SPRITE_ANIM_FRAME_IDX_79,  3
+	frame SPRITE_ANIM_FRAME_IDX_7A,  3
+	frame SPRITE_ANIM_FRAME_IDX_7B,  3
+	frame SPRITE_ANIM_FRAME_IDX_7C,  7
+	frame SPRITE_ANIM_FRAME_IDX_7D,  7
+	endanim
+
+.Frameset_IntroSuicuneAway:
+	frame SPRITE_ANIM_FRAME_IDX_7E,  3
+	endanim
+
+.Frameset_IntroUnownF:
+	dorepeat 0
+	endanim
+
+.Frameset_CelebiLeft:
+	frame SPRITE_ANIM_FRAME_IDX_7F,  8
+	frame SPRITE_ANIM_FRAME_IDX_80,  8
+	endanim
+
+.Frameset_CelebiRight:
+	frame SPRITE_ANIM_FRAME_IDX_7F,  8, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_80,  8, OAM_X_FLIP
+	endanim
+; 8d94d
--- /dev/null
+++ b/data/sprite_anim_oam.asm
@@ -1,0 +1,1136 @@
+SpriteAnimOAMData: ; 8d94d
+; entries correspond to SPRITE_ANIM_FRAME_IDX_* constants
+	; vtile offset, pointer
+	dbw $00, .OAMData_00 ; 00
+	dbw $04, .OAMData_00 ; 01
+	dbw $4c, .OAMData_02 ; 02
+	dbw $5c, .OAMData_02 ; 03
+	dbw $6c, .OAMData_04 ; 04
+	dbw $6e, .OAMData_04 ; 05
+	dbw $2d, .OAMData_06 ; 06
+	dbw $4d, .OAMData_06 ; 07
+	dbw $60, .OAMData_08 ; 08
+	dbw $00, .OAMData_08 ; 09
+	dbw $00, .OAMData_08 ; 0a
+	dbw $06, .OAMData_08 ; 0b
+	dbw $0c, .OAMData_0c ; 0c
+	dbw $0d, .OAMData_02 ; 0d
+	dbw $00, .OAMData_0e ; 0e
+	dbw $04, .OAMData_0e ; 0f
+	dbw $08, .OAMData_0e ; 10
+	dbw $40, .OAMData_0e ; 11
+	dbw $44, .OAMData_0e ; 12
+	dbw $48, .OAMData_0e ; 13
+	dbw $4c, .OAMData_0e ; 14
+	dbw $80, .OAMData_15 ; 15
+	dbw $85, .OAMData_15 ; 16
+	dbw $8a, .OAMData_15 ; 17
+	dbw $00, .OAMData_18 ; 18
+	dbw $01, .OAMData_19 ; 19
+	dbw $09, .OAMData_1a ; 1a
+	dbw $10, .OAMData_1b ; 1b
+	dbw $29, .OAMData_1b ; 1c
+	dbw $42, .OAMData_1b ; 1d
+	dbw $f8, .OAMData_1e ; 1e
+	dbw $fa, .OAMData_1e ; 1f
+	dbw $00, .OAMData_20 ; 20
+	dbw $00, .OAMData_21 ; 21
+	dbw $00, .OAMData_22 ; 22
+	dbw $0f, .OAMData_23 ; 23
+	dbw $11, .OAMData_02 ; 24
+	dbw $12, .OAMData_02 ; 25
+	dbw $13, .OAMData_02 ; 26
+	dbw $00, .OAMData_27 ; 27
+	dbw $08, .OAMData_27 ; 28
+	dbw $10, .OAMData_29 ; 29
+	dbw $10, .OAMData_2a ; 2a
+	dbw $10, .OAMData_2b ; 2b
+	dbw $10, .OAMData_2c ; 2c
+	dbw $10, .OAMData_2d ; 2d
+	dbw $3a, .OAMData_02 ; 2e
+	dbw $00, .OAMData_00 ; 2f
+	dbw $00, .OAMData_30 ; 30
+	dbw $02, .OAMData_31 ; 31
+	dbw $06, .OAMData_19 ; 32
+	dbw $0a, .OAMData_19 ; 33
+	dbw $0e, .OAMData_19 ; 34
+	dbw $12, .OAMData_35 ; 35
+	dbw $13, .OAMData_35 ; 36
+	dbw $00, .OAMData_00 ; 37
+	dbw $04, .OAMData_00 ; 38
+	dbw $10, .OAMData_19 ; 39
+	dbw $00, .OAMData_31 ; 3a
+	dbw $04, .OAMData_02 ; 3b
+	dbw $00, .OAMData_3c ; 3c
+	dbw $00, .OAMData_3d ; 3d
+	dbw $00, .OAMData_3e ; 3e
+	dbw $00, .OAMData_3f ; 3f
+	dbw $00, .OAMData_40 ; 40
+	dbw $00, .OAMData_31 ; 41
+	dbw $04, .OAMData_31 ; 42
+	dbw $00, .OAMData_43 ; 43
+	dbw $30, .OAMData_43 ; 44
+	dbw $03, .OAMData_43 ; 45
+	dbw $33, .OAMData_43 ; 46
+	dbw $06, .OAMData_43 ; 47
+	dbw $36, .OAMData_43 ; 48
+	dbw $09, .OAMData_43 ; 49
+	dbw $39, .OAMData_43 ; 4a
+	dbw $0c, .OAMData_4b ; 4b
+	dbw $0c, .OAMData_4c ; 4c
+	dbw $3c, .OAMData_02 ; 4d
+	dbw $3e, .OAMData_02 ; 4e
+	dbw $00, .OAMData_4f ; 4f
+	dbw $00, .OAMData_50 ; 50
+	dbw $00, .OAMData_51 ; 51
+	dbw $00, .OAMData_52 ; 52
+	dbw $00, .OAMData_53 ; 53
+	dbw $00, .OAMData_02 ; 54
+	dbw $01, .OAMData_02 ; 55
+	dbw $00, .OAMData_56 ; 56
+	dbw $00, .OAMData_57 ; 57
+	dbw $00, .OAMData_58 ; 58
+	dbw $00, .OAMData_59 ; 59
+	dbw $00, .OAMData_5a ; 5a
+	dbw $04, .OAMData_50 ; 5b
+	dbw $00, .OAMData_5c ; 5c
+	dbw $00, .OAMData_5d ; 5d
+	dbw $00, .OAMData_5e ; 5e
+	dbw $00, .OAMData_5f ; 5f
+	dbw $00, .OAMData_60 ; 60
+	dbw $00, .OAMData_61 ; 61
+	dbw $00, .OAMData_62 ; 62
+	dbw $00, .OAMData_63 ; 63
+	dbw $04, .OAMData_63 ; 64
+	dbw $00, .OAMData_65 ; 65
+	dbw $04, .OAMData_65 ; 66
+	dbw $20, .OAMData_67 ; 67
+	dbw $21, .OAMData_67 ; 68
+	dbw $22, .OAMData_69 ; 69
+	dbw $23, .OAMData_6a ; 6a
+	dbw $27, .OAMData_6b ; 6b
+	dbw $2a, .OAMData_6c ; 6c
+	dbw $2a, .OAMData_6d ; 6d
+	dbw $00, .OAMData_6e ; 6e
+	dbw $08, .OAMData_6f ; 6f
+	dbw $60, .OAMData_70 ; 70
+	dbw $68, .OAMData_71 ; 71
+	dbw $00, .OAMData_72 ; 72
+	dbw $05, .OAMData_72 ; 73
+	dbw $0a, .OAMData_72 ; 74
+	dbw $50, .OAMData_75 ; 75
+	dbw $00, .OAMData_76 ; 76
+	dbw $01, .OAMData_77 ; 77
+	dbw $04, .OAMData_78 ; 78
+	dbw $00, .OAMData_18 ; 79
+	dbw $01, .OAMData_7a ; 7a
+	dbw $03, .OAMData_7b ; 7b
+	dbw $08, .OAMData_7c ; 7c
+	dbw $1c, .OAMData_7c ; 7d
+	dbw $80, .OAMData_7e ; 7e
+	dbw $00, .OAMData_7f ; 7f
+	dbw $04, .OAMData_7f ; 80
+	dbw $d0, .OAMData_81 ; 81
+	dbw $d3, .OAMData_81 ; 82
+	dbw $d6, .OAMData_81 ; 83
+	dbw $6c, .OAMData_84 ; 84
+	dbw $68, .OAMData_84 ; 85
+	dbw $64, .OAMData_84 ; 86
+	dbw $60, .OAMData_84 ; 87
+	dbw $0c, .OAMData_84 ; 88
+	dbw $08, .OAMData_84 ; 89
+	dbw $04, .OAMData_84 ; 8a
+	dbw $00, .OAMData_84 ; 8b
+
+.OAMData_02:
+	db 1
+	dsprite -1,  4, -1,  4, $00, $00
+
+.OAMData_04:
+	db 4
+	dsprite -1,  0, -1,  0, $00, $00
+	dsprite -1,  0,  0,  0, $01, $00
+	dsprite  0,  0, -1,  0, $10, $00
+	dsprite  0,  0,  0,  0, $11, $00
+
+.OAMData_23:
+	db 4
+	dsprite -1,  0, -1,  0, $00, $00
+	dsprite -1,  0,  0,  0, $00, $20
+	dsprite  0,  0, -1,  0, $01, $00
+	dsprite  0,  0,  0,  0, $01, $20
+
+.OAMData_30:
+	db 4
+	dsprite -1,  0, -1,  0, $00, $80
+	dsprite -1,  0,  0,  0, $00, $a0
+	dsprite  0,  0, -1,  0, $01, $80
+	dsprite  0,  0,  0,  0, $01, $a0
+
+.OAMData_18:
+	db 4
+	dsprite -1,  0, -1,  0, $00, $00
+	dsprite -1,  0,  0,  0, $00, $20
+	dsprite  0,  0, -1,  0, $00, $40
+	dsprite  0,  0,  0,  0, $00, $60
+
+.OAMData_35:
+	db 4
+	dsprite -1,  0, -1,  0, $00, $07
+	dsprite -1,  0,  0,  0, $00, $27
+	dsprite  0,  0, -1,  0, $00, $47
+	dsprite  0,  0,  0,  0, $00, $67
+; 8db4b
+
+; 8db4b
+	db 4
+	dsprite -1,  0, -1,  0, $00, $80
+	dsprite -1,  0,  0,  0, $00, $a0
+	dsprite  0,  0, -1,  0, $00, $c0
+	dsprite  0,  0,  0,  0, $00, $e0
+
+.OAMData_19:
+	db 16
+	dsprite -2,  0, -2,  0, $00, $00
+	dsprite -2,  0, -1,  0, $01, $00
+	dsprite -1,  0, -2,  0, $02, $00
+	dsprite -1,  0, -1,  0, $03, $00
+	dsprite -2,  0,  0,  0, $01, $20
+	dsprite -2,  0,  1,  0, $00, $20
+	dsprite -1,  0,  0,  0, $03, $20
+	dsprite -1,  0,  1,  0, $02, $20
+	dsprite  0,  0, -2,  0, $02, $40
+	dsprite  0,  0, -1,  0, $03, $40
+	dsprite  1,  0, -2,  0, $00, $40
+	dsprite  1,  0, -1,  0, $01, $40
+	dsprite  0,  0,  0,  0, $03, $60
+	dsprite  0,  0,  1,  0, $02, $60
+	dsprite  1,  0,  0,  0, $01, $60
+	dsprite  1,  0,  1,  0, $00, $60
+
+.OAMData_1a:
+	db 36
+	dsprite -3,  0, -3,  0, $00, $00
+	dsprite -3,  0, -2,  0, $01, $00
+	dsprite -3,  0, -1,  0, $02, $00
+	dsprite -2,  0, -3,  0, $03, $00
+	dsprite -2,  0, -2,  0, $04, $00
+	dsprite -2,  0, -1,  0, $05, $00
+	dsprite -1,  0, -3,  0, $06, $00
+	dsprite -1,  0, -2,  0, $05, $00
+	dsprite -1,  0, -1,  0, $05, $00
+	dsprite -3,  0,  0,  0, $02, $20
+	dsprite -3,  0,  1,  0, $01, $20
+	dsprite -3,  0,  2,  0, $00, $20
+	dsprite -2,  0,  0,  0, $05, $20
+	dsprite -2,  0,  1,  0, $04, $20
+	dsprite -2,  0,  2,  0, $03, $20
+	dsprite -1,  0,  0,  0, $05, $20
+	dsprite -1,  0,  1,  0, $05, $20
+	dsprite -1,  0,  2,  0, $06, $20
+	dsprite  0,  0, -3,  0, $06, $40
+	dsprite  0,  0, -2,  0, $05, $40
+	dsprite  0,  0, -1,  0, $05, $40
+	dsprite  1,  0, -3,  0, $03, $40
+	dsprite  1,  0, -2,  0, $04, $40
+	dsprite  1,  0, -1,  0, $05, $40
+	dsprite  2,  0, -3,  0, $00, $40
+	dsprite  2,  0, -2,  0, $01, $40
+	dsprite  2,  0, -1,  0, $02, $40
+	dsprite  0,  0,  0,  0, $05, $60
+	dsprite  0,  0,  1,  0, $05, $60
+	dsprite  0,  0,  2,  0, $06, $60
+	dsprite  1,  0,  0,  0, $05, $60
+	dsprite  1,  0,  1,  0, $04, $60
+	dsprite  1,  0,  2,  0, $03, $60
+	dsprite  2,  0,  0,  0, $02, $60
+	dsprite  2,  0,  1,  0, $01, $60
+	dsprite  2,  0,  2,  0, $00, $60
+
+.OAMData_43:
+	db 9
+	dsprite -2,  4, -2,  4, $00, $00
+	dsprite -2,  4, -1,  4, $01, $00
+	dsprite -2,  4,  0,  4, $02, $00
+	dsprite -1,  4, -2,  4, $10, $00
+	dsprite -1,  4, -1,  4, $11, $00
+	dsprite -1,  4,  0,  4, $12, $00
+	dsprite  0,  4, -2,  4, $20, $00
+	dsprite  0,  4, -1,  4, $21, $00
+	dsprite  0,  4,  0,  4, $22, $00
+
+.OAMData_0e:
+	db 16
+	dsprite -2,  0, -2,  0, $00, $00
+	dsprite -2,  0, -1,  0, $01, $00
+	dsprite -2,  0,  0,  0, $02, $00
+	dsprite -2,  0,  1,  0, $03, $00
+	dsprite -1,  0, -2,  0, $10, $00
+	dsprite -1,  0, -1,  0, $11, $00
+	dsprite -1,  0,  0,  0, $12, $00
+	dsprite -1,  0,  1,  0, $13, $00
+	dsprite  0,  0, -2,  0, $20, $00
+	dsprite  0,  0, -1,  0, $21, $00
+	dsprite  0,  0,  0,  0, $22, $00
+	dsprite  0,  0,  1,  0, $23, $00
+	dsprite  1,  0, -2,  0, $30, $00
+	dsprite  1,  0, -1,  0, $31, $00
+	dsprite  1,  0,  0,  0, $32, $00
+	dsprite  1,  0,  1,  0, $33, $00
+
+.OAMData_1b:
+	db 25
+	dsprite -3,  4, -3,  4, $00, $00
+	dsprite -2,  4, -3,  4, $01, $00
+	dsprite -1,  4, -3,  4, $02, $00
+	dsprite  0,  4, -3,  4, $03, $00
+	dsprite  1,  4, -3,  4, $04, $00
+	dsprite -3,  4, -2,  4, $05, $00
+	dsprite -2,  4, -2,  4, $06, $00
+	dsprite -1,  4, -2,  4, $07, $00
+	dsprite  0,  4, -2,  4, $08, $00
+	dsprite  1,  4, -2,  4, $09, $00
+	dsprite -3,  4, -1,  4, $0a, $00
+	dsprite -2,  4, -1,  4, $0b, $00
+	dsprite -1,  4, -1,  4, $0c, $00
+	dsprite  0,  4, -1,  4, $0d, $00
+	dsprite  1,  4, -1,  4, $0e, $00
+	dsprite -3,  4,  0,  4, $0f, $00
+	dsprite -2,  4,  0,  4, $10, $00
+	dsprite -1,  4,  0,  4, $11, $00
+	dsprite  0,  4,  0,  4, $12, $00
+	dsprite  1,  4,  0,  4, $13, $00
+	dsprite -3,  4,  1,  4, $14, $00
+	dsprite -2,  4,  1,  4, $15, $00
+	dsprite -1,  4,  1,  4, $16, $00
+	dsprite  0,  4,  1,  4, $17, $00
+	dsprite  1,  4,  1,  4, $18, $00
+; 8dcf9
+
+; 8dcf9
+	db 36
+	dsprite -3,  0, -3,  0, $00, $00
+	dsprite -3,  0, -2,  0, $01, $00
+	dsprite -3,  0, -1,  0, $02, $00
+	dsprite -3,  0,  0,  0, $03, $00
+	dsprite -3,  0,  1,  0, $04, $00
+	dsprite -3,  0,  2,  0, $05, $00
+	dsprite -2,  0, -3,  0, $06, $00
+	dsprite -2,  0, -2,  0, $07, $00
+	dsprite -2,  0, -1,  0, $08, $00
+	dsprite -2,  0,  0,  0, $09, $00
+	dsprite -2,  0,  1,  0, $0a, $00
+	dsprite -2,  0,  2,  0, $0b, $00
+	dsprite -1,  0, -3,  0, $0c, $00
+	dsprite -1,  0, -2,  0, $0d, $00
+	dsprite -1,  0, -1,  0, $0e, $00
+	dsprite -1,  0,  0,  0, $0f, $00
+	dsprite -1,  0,  1,  0, $10, $00
+	dsprite -1,  0,  2,  0, $11, $00
+	dsprite  0,  0, -3,  0, $12, $00
+	dsprite  0,  0, -2,  0, $13, $00
+	dsprite  0,  0, -1,  0, $14, $00
+	dsprite  0,  0,  0,  0, $15, $00
+	dsprite  0,  0,  1,  0, $16, $00
+	dsprite  0,  0,  2,  0, $17, $00
+	dsprite  1,  0, -3,  0, $18, $00
+	dsprite  1,  0, -2,  0, $19, $00
+	dsprite  1,  0, -1,  0, $1a, $00
+	dsprite  1,  0,  0,  0, $1b, $00
+	dsprite  1,  0,  1,  0, $1c, $00
+	dsprite  1,  0,  2,  0, $1d, $00
+	dsprite  2,  0, -3,  0, $1e, $00
+	dsprite  2,  0, -2,  0, $1f, $00
+	dsprite  2,  0, -1,  0, $20, $00
+	dsprite  2,  0,  0,  0, $21, $00
+	dsprite  2,  0,  1,  0, $22, $00
+	dsprite  2,  0,  2,  0, $23, $00
+
+.OAMData_00:
+; party menu icons
+	db 4
+	dsprite -1,  0, -1,  0, $00, $00
+	dsprite -1,  0,  0,  0, $01, $00
+	dsprite  0,  0, -1,  0, $02, $00
+	dsprite  0,  0,  0,  0, $03, $00
+
+.OAMData_31:
+	db 4
+	dsprite -1,  0, -1,  0, $00, $80
+	dsprite -1,  0,  0,  0, $01, $80
+	dsprite  0,  0, -1,  0, $02, $80
+	dsprite  0,  0,  0,  0, $03, $80
+
+.OAMData_3d:
+; party menu icon with mail, frame 1
+	db 4
+	dsprite -1,  0, -1,  0, $00, $00
+	dsprite -1,  0,  0,  0, $01, $00
+	dsprite  0,  0, -1,  0, $08, $00
+	dsprite  0,  0,  0,  0, $03, $00
+
+.OAMData_3e:
+; party menu icon with mail, frame 2
+	db 4
+	dsprite -1,  0, -1,  0, $04, $00
+	dsprite -1,  0,  0,  0, $05, $00
+	dsprite  0,  0, -1,  0, $08, $00
+	dsprite  0,  0,  0,  0, $07, $00
+
+.OAMData_3f:
+; party menu icon with item, frame 1
+	db 4
+	dsprite -1,  0, -1,  0, $00, $00
+	dsprite -1,  0,  0,  0, $01, $00
+	dsprite  0,  0, -1,  0, $09, $00
+	dsprite  0,  0,  0,  0, $03, $00
+
+.OAMData_40:
+; party menu icon with item, frame 2
+	db 4
+	dsprite -1,  0, -1,  0, $04, $00
+	dsprite -1,  0,  0,  0, $05, $00
+	dsprite  0,  0, -1,  0, $09, $00
+	dsprite  0,  0,  0,  0, $07, $00
+
+.OAMData_06:
+	db 6
+	dsprite -1,  0, -2,  4, $00, $01
+	dsprite -1,  0, -1,  4, $01, $01
+	dsprite -1,  0,  0,  4, $02, $01
+	dsprite  0,  0, -2,  4, $10, $01
+	dsprite  0,  0, -1,  4, $11, $01
+	dsprite  0,  0,  0,  4, $12, $01
+
+.OAMData_08:
+	db 29
+	dsprite -3,  0, -3,  0, $00, $00
+	dsprite -3,  0, -2,  0, $01, $00
+	dsprite -3,  0, -1,  0, $02, $00
+	dsprite -3,  0,  0,  0, $03, $00
+	dsprite -2,  0, -3,  0, $10, $00
+	dsprite -2,  0, -2,  0, $11, $00
+	dsprite -2,  0, -1,  0, $12, $00
+	dsprite -2,  0,  0,  0, $13, $00
+	dsprite -1,  0, -3,  0, $20, $00
+	dsprite -1,  0, -2,  0, $21, $00
+	dsprite -1,  0, -1,  0, $22, $00
+	dsprite -1,  0,  0,  0, $23, $00
+	dsprite -1,  0,  1,  0, $24, $00
+	dsprite  0,  0, -3,  0, $30, $80
+	dsprite  0,  0, -2,  0, $31, $80
+	dsprite  0,  0, -1,  0, $32, $80
+	dsprite  0,  0,  0,  0, $33, $80
+	dsprite  0,  0,  1,  0, $34, $80
+	dsprite  1,  0, -3,  0, $40, $80
+	dsprite  1,  0, -2,  0, $41, $80
+	dsprite  1,  0, -1,  0, $42, $80
+	dsprite  1,  0,  0,  0, $43, $80
+	dsprite  1,  0,  1,  0, $44, $80
+	dsprite  1,  0,  2,  0, $45, $80
+	dsprite  2,  0, -2,  0, $51, $80
+	dsprite  2,  0, -1,  0, $52, $80
+	dsprite  2,  0,  0,  0, $53, $80
+	dsprite  2,  0,  1,  0, $54, $80
+	dsprite  2,  0,  2,  0, $55, $80
+
+.OAMData_0c:
+	db 2
+	dsprite -1,  0, -1,  4, $00, $00
+	dsprite  0,  0, -1,  4, $10, $00
+
+.OAMData_15:
+	db 5
+	dsprite -2,  0,  3,  0, $00, $00
+	dsprite -2,  0,  4,  0, $01, $00
+	dsprite -1,  0,  2,  0, $02, $00
+	dsprite -1,  0,  3,  0, $03, $00
+	dsprite  0,  0,  2,  0, $04, $00
+
+.OAMData_4f:
+	db 1
+	dsprite -1,  4, -1,  4, $00, $06
+
+.OAMData_50:
+	db 4
+	dsprite -1,  0, -1,  0, $00, $06
+	dsprite -1,  0,  0,  0, $01, $06
+	dsprite  0,  0, -1,  0, $02, $06
+	dsprite  0,  0,  0,  0, $03, $06
+
+.OAMData_20:
+	db 4
+	dsprite -1,  7, -1,  7, $00, $00
+	dsprite -1,  7,  0,  0, $00, $20
+	dsprite  0,  0, -1,  7, $00, $40
+	dsprite  0,  0,  0,  0, $00, $60
+
+.OAMData_21:
+	db 10
+	dsprite -1,  7,  0,  0, $00, $00
+	dsprite -1,  7,  1,  0, $01, $00
+	dsprite -1,  7,  2,  0, $01, $00
+	dsprite -1,  7,  3,  0, $01, $00
+	dsprite -1,  7,  4,  0, $00, $20
+	dsprite  0,  0,  0,  0, $00, $40
+	dsprite  0,  0,  1,  0, $01, $40
+	dsprite  0,  0,  2,  0, $01, $40
+	dsprite  0,  0,  3,  0, $01, $40
+	dsprite  0,  0,  4,  0, $00, $60
+
+.OAMData_22:
+	db 15
+	dsprite -3,  4, -2,  4, $00, $11
+	dsprite -3,  4, -1,  4, $01, $11
+	dsprite -3,  4,  0,  4, $02, $11
+	dsprite -2,  4, -2,  4, $03, $11
+	dsprite -2,  4, -1,  4, $04, $11
+	dsprite -2,  4,  0,  4, $05, $11
+	dsprite -1,  4, -2,  4, $06, $11
+	dsprite -1,  4, -1,  4, $07, $11
+	dsprite -1,  4,  0,  4, $08, $11
+	dsprite  0,  4, -2,  4, $09, $11
+	dsprite  0,  4, -1,  4, $0a, $11
+	dsprite  0,  4,  0,  4, $0b, $11
+	dsprite  1,  4, -2,  4, $0c, $11
+	dsprite  1,  4, -1,  4, $0d, $11
+	dsprite  1,  4,  0,  4, $0e, $11
+
+.OAMData_27:
+	db 6
+	dsprite -2,  4, -2,  4, $00, $15
+	dsprite -2,  4, -1,  4, $02, $15
+	dsprite -2,  4,  0,  4, $00, $35
+	dsprite  0,  4, -2,  4, $04, $15
+	dsprite  0,  4, -1,  4, $06, $15
+	dsprite  0,  4,  0,  4, $04, $35
+
+.OAMData_29:
+	db 6
+	dsprite -2,  4, -2,  4, $00, $16
+	dsprite -2,  4, -1,  4, $02, $16
+	dsprite -2,  4,  0,  4, $04, $16
+	dsprite  0,  4, -2,  4, $06, $16
+	dsprite  0,  4, -1,  4, $08, $16
+	dsprite  0,  4,  0,  4, $0a, $16
+
+.OAMData_2a:
+	db 6
+	dsprite -2,  4, -2,  4, $00, $16
+	dsprite -2,  4, -1,  4, $02, $16
+	dsprite -2,  4,  0,  4, $04, $16
+	dsprite  0,  4, -2,  4, $0c, $16
+	dsprite  0,  4, -1,  4, $0e, $16
+	dsprite  0,  4,  0,  4, $10, $16
+
+.OAMData_2b:
+	db 6
+	dsprite -2,  4, -2,  4, $00, $16
+	dsprite -2,  4, -1,  4, $02, $16
+	dsprite -2,  4,  0,  4, $04, $16
+	dsprite  0,  4, -2,  4, $12, $16
+	dsprite  0,  4, -1,  4, $14, $16
+	dsprite  0,  4,  0,  4, $16, $16
+
+.OAMData_2c:
+	db 6
+	dsprite -2,  4, -2,  4, $00, $16
+	dsprite -2,  4, -1,  4, $02, $16
+	dsprite -2,  4,  0,  4, $04, $16
+	dsprite  0,  4, -2,  4, $18, $16
+	dsprite  0,  4, -1,  4, $1a, $16
+	dsprite  0,  4,  0,  4, $1c, $16
+
+.OAMData_2d:
+	db 6
+	dsprite -2,  4, -2,  4, $1e, $16
+	dsprite -2,  4, -1,  4, $20, $16
+	dsprite -2,  4,  0,  4, $22, $16
+	dsprite  0,  4, -2,  4, $24, $16
+	dsprite  0,  4, -1,  4, $26, $16
+	dsprite  0,  4,  0,  4, $28, $16
+
+.OAMData_3c:
+	db 3
+	dsprite -2,  4, -1,  4, $00, $10
+	dsprite -1,  4, -1,  4, $00, $10
+	dsprite  0,  4, -1,  4, $00, $10
+
+.OAMData_4b:
+	db 6
+	dsprite  0,  0,  0,  0, $00, $00
+	dsprite  0,  0,  1,  0, $01, $00
+	dsprite  0,  0,  2,  0, $01, $00
+	dsprite  0,  0,  3,  0, $01, $00
+	dsprite  0,  0,  4,  0, $02, $00
+	dsprite  0,  0,  5,  0, $03, $00
+
+.OAMData_4c:
+	db 4
+	dsprite  0,  0,  0,  0, $00, $00
+	dsprite  0,  0,  1,  0, $01, $00
+	dsprite  0,  0,  2,  0, $02, $00
+	dsprite  0,  0,  3,  0, $03, $00
+
+.OAMData_51:
+	db 4
+	dsprite -1,  0, -2,  6, $00, $06
+	dsprite -1,  0,  0,  2, $01, $06
+	dsprite  0,  0, -2,  6, $02, $06
+	dsprite  0,  0,  0,  2, $03, $06
+
+.OAMData_52:
+	db 4
+	dsprite -1,  0, -2,  4, $00, $06
+	dsprite -1,  0,  0,  4, $01, $06
+	dsprite  0,  0, -2,  4, $02, $06
+	dsprite  0,  0,  0,  4, $03, $06
+
+.OAMData_53:
+	db 4
+	dsprite -1,  0, -2,  0, $00, $06
+	dsprite -1,  0,  1,  0, $01, $06
+	dsprite  0,  0, -2,  0, $02, $06
+	dsprite  0,  0,  1,  0, $03, $06
+
+.OAMData_56:
+	db 19
+	dsprite -1,  0, -4,  0, $00, $00
+	dsprite -2,  0, -3,  0, $02, $00
+	dsprite  0,  0, -3,  0, $04, $00
+	dsprite -3,  0, -2,  0, $06, $00
+	dsprite -1,  0, -2,  0, $08, $00
+	dsprite  1,  0, -2,  0, $0a, $00
+	dsprite -3,  0, -1,  0, $0c, $00
+	dsprite -1,  0, -1,  0, $0e, $00
+	dsprite  1,  0, -1,  0, $10, $00
+	dsprite -3,  0,  0,  0, $12, $00
+	dsprite -1,  0,  0,  0, $14, $00
+	dsprite  1,  0,  0,  0, $16, $00
+	dsprite -3,  0,  1,  0, $18, $00
+	dsprite -1,  0,  1,  0, $1a, $00
+	dsprite  1,  0,  1,  0, $1c, $00
+	dsprite -1,  0,  2,  0, $1e, $00
+	dsprite  1,  0,  2,  0, $20, $00
+	dsprite -2,  0,  3,  0, $22, $00
+	dsprite  0,  0,  3,  0, $24, $00
+
+.OAMData_57:
+	db 16
+	dsprite -1,  0, -4,  0, $00, $00
+	dsprite -2,  0, -3,  0, $02, $00
+	dsprite  0,  0, -3,  0, $04, $00
+	dsprite -1,  0, -2,  0, $26, $00
+	dsprite  1,  0, -2,  0, $0a, $00
+	dsprite -3,  0, -1,  0, $28, $00
+	dsprite -1,  0, -1,  0, $2a, $00
+	dsprite  1,  0, -1,  0, $10, $00
+	dsprite -1,  0,  0,  0, $2c, $00
+	dsprite  1,  0,  0,  0, $16, $00
+	dsprite -1,  0,  1,  0, $30, $00
+	dsprite  1,  0,  1,  0, $1c, $00
+	dsprite -1,  0,  2,  0, $1e, $00
+	dsprite  1,  0,  2,  0, $20, $00
+	dsprite -2,  0,  3,  0, $22, $00
+	dsprite  0,  0,  3,  0, $24, $00
+
+.OAMData_58:
+	db 15
+	dsprite -1,  0, -4,  0, $00, $00
+	dsprite -2,  0, -3,  0, $02, $00
+	dsprite  0,  0, -3,  0, $32, $00
+	dsprite -1,  0, -2,  0, $34, $00
+	dsprite  1,  0, -2,  0, $36, $00
+	dsprite -1,  0, -1,  0, $38, $00
+	dsprite  1,  0, -1,  0, $3a, $00
+	dsprite -1,  0,  0,  0, $3c, $00
+	dsprite  1,  0,  0,  0, $3e, $00
+	dsprite -1,  0,  1,  0, $30, $00
+	dsprite  1,  0,  1,  0, $1c, $00
+	dsprite -1,  0,  2,  0, $1e, $00
+	dsprite  1,  0,  2,  0, $20, $00
+	dsprite -2,  0,  3,  0, $22, $00
+	dsprite  0,  0,  3,  0, $24, $00
+
+.OAMData_59:
+	db 17
+	dsprite -1,  0, -4,  0, $00, $00
+	dsprite -2,  0, -3,  0, $02, $00
+	dsprite  0,  0, -3,  0, $04, $00
+	dsprite -1,  0, -2,  0, $40, $00
+	dsprite  1,  0, -2,  0, $42, $00
+	dsprite  3,  0, -2,  0, $44, $00
+	dsprite -1,  0, -1,  0, $46, $00
+	dsprite  1,  0, -1,  0, $48, $00
+	dsprite  3,  0, -1,  0, $4a, $00
+	dsprite -1,  0,  0,  0, $4c, $00
+	dsprite  1,  0,  0,  0, $4e, $00
+	dsprite -1,  0,  1,  0, $30, $00
+	dsprite  1,  0,  1,  0, $1c, $00
+	dsprite -1,  0,  2,  0, $1e, $00
+	dsprite  1,  0,  2,  0, $20, $00
+	dsprite -2,  0,  3,  0, $22, $00
+	dsprite  0,  0,  3,  0, $24, $00
+
+.OAMData_5a:
+	db 17
+	dsprite -1,  0, -4,  0, $00, $00
+	dsprite -2,  0, -3,  0, $02, $00
+	dsprite  0,  0, -3,  0, $04, $00
+	dsprite -1,  0, -2,  0, $50, $00
+	dsprite  1,  0, -2,  0, $0a, $00
+	dsprite -3,  0, -1,  0, $52, $00
+	dsprite -1,  0, -1,  0, $54, $00
+	dsprite  1,  0, -1,  0, $10, $00
+	dsprite -3,  0,  0,  0, $56, $00
+	dsprite -1,  0,  0,  0, $2e, $00
+	dsprite  1,  0,  0,  0, $16, $00
+	dsprite -1,  0,  1,  0, $30, $00
+	dsprite  1,  0,  1,  0, $1c, $00
+	dsprite -1,  0,  2,  0, $1e, $00
+	dsprite  1,  0,  2,  0, $20, $00
+	dsprite -2,  0,  3,  0, $22, $00
+	dsprite  0,  0,  3,  0, $24, $00
+
+.OAMData_1e:
+	db 1
+	dsprite -1,  4, -1,  4, $00, $11
+
+.OAMData_5c:
+	db 12
+	dsprite  0,  0,  0,  0, $30, $00
+	dsprite  0,  0,  1,  0, $31, $00
+	dsprite  0,  0,  2,  0, $31, $00
+	dsprite  0,  0,  3,  0, $31, $00
+	dsprite  0,  0,  4,  0, $31, $00
+	dsprite  0,  0,  5,  0, $32, $00
+	dsprite  1,  0,  0,  0, $33, $00
+	dsprite  1,  0,  1,  0, $34, $00
+	dsprite  1,  0,  2,  0, $34, $00
+	dsprite  1,  0,  3,  0, $34, $00
+	dsprite  1,  0,  4,  0, $34, $00
+	dsprite  1,  0,  5,  0, $35, $00
+
+.OAMData_5d:
+	db 1
+	dsprite  0,  0,  0,  0, $ed, $00
+
+.OAMData_5e:
+	db 4
+	dsprite -1,  7, -1,  7, $30, $00
+	dsprite -1,  7,  0,  1, $32, $00
+	dsprite  0,  1, -1,  7, $33, $00
+	dsprite  0,  1,  0,  1, $35, $00
+
+.OAMData_5f:
+	db 8
+	dsprite -1,  7, -1,  7, $30, $00
+	dsprite -1,  7,  0,  4, $31, $00
+	dsprite -1,  7,  1,  4, $31, $00
+	dsprite -1,  7,  2,  1, $32, $00
+	dsprite  0,  1, -1,  7, $33, $00
+	dsprite  0,  1,  0,  4, $34, $00
+	dsprite  0,  1,  1,  4, $34, $00
+	dsprite  0,  1,  2,  1, $35, $00
+
+.OAMData_60:
+	db 1
+	dsprite  0,  0,  0,  0, $34, $00
+
+.OAMData_61:
+	db 2
+	dsprite  0,  0,  0,  0, $30, $00
+	dsprite  1,  0,  0,  0, $33, $00
+
+.OAMData_62:
+	db 2
+	dsprite  0,  0,  0,  0, $32, $00
+	dsprite  1,  0,  0,  0, $35, $00
+
+.OAMData_63:
+	db 4
+	dsprite -1,  0, -1,  0, $00, $01
+	dsprite -1,  0,  0,  0, $01, $01
+	dsprite  0,  0, -1,  0, $02, $01
+	dsprite  0,  0,  0,  0, $03, $01
+
+.OAMData_65:
+	db 4
+	dsprite -1,  0, -1,  0, $00, $81
+	dsprite -1,  0,  0,  0, $01, $81
+	dsprite  0,  0, -1,  0, $02, $81
+	dsprite  0,  0,  0,  0, $03, $81
+
+.OAMData_67:
+	db 1
+	dsprite -1,  4, -1,  4, $00, $02
+
+.OAMData_6c:
+	db 4
+	dsprite -2,  0, -1,  4, $00, $03
+	dsprite -1,  0, -1,  4, $01, $03
+	dsprite  0,  0, -1,  4, $02, $03
+	dsprite  1,  0, -1,  4, $03, $03
+
+.OAMData_6d:
+	db 4
+	dsprite -2,  0, -1,  4, $03, $44
+	dsprite -1,  0, -1,  4, $02, $44
+	dsprite  0,  0, -1,  4, $01, $44
+	dsprite  1,  0, -1,  4, $00, $44
+
+.OAMData_69:
+	db 4
+	dsprite -1,  0, -1,  0, $00, $01
+	dsprite -1,  0,  0,  0, $00, $21
+	dsprite  0,  0, -1,  0, $00, $41
+	dsprite  0,  0,  0,  0, $00, $61
+
+.OAMData_6a:
+	db 8
+	dsprite -2,  4, -2,  4, $00, $01
+	dsprite -2,  4, -1,  4, $01, $01
+	dsprite -2,  4,  0,  4, $00, $21
+	dsprite -1,  4, -2,  4, $02, $01
+	dsprite -1,  4,  0,  4, $02, $21
+	dsprite  0,  4, -2,  4, $00, $41
+	dsprite  0,  4, -1,  4, $01, $41
+	dsprite  0,  4,  0,  4, $00, $61
+
+.OAMData_6b:
+	db 12
+	dsprite -2,  0, -2,  0, $00, $01
+	dsprite -2,  0, -1,  0, $01, $01
+	dsprite -1,  0, -2,  0, $02, $01
+	dsprite -2,  0,  0,  0, $01, $21
+	dsprite -2,  0,  1,  0, $00, $21
+	dsprite -1,  0,  1,  0, $02, $21
+	dsprite  0,  0, -2,  0, $02, $41
+	dsprite  1,  0, -2,  0, $00, $41
+	dsprite  1,  0, -1,  0, $01, $41
+	dsprite  0,  0,  1,  0, $02, $61
+	dsprite  1,  0,  0,  0, $01, $61
+	dsprite  1,  0,  1,  0, $00, $61
+
+.OAMData_6e:
+	db 36
+	dsprite -3,  0,  1,  0, $05, $00
+	dsprite -3,  0,  2,  0, $06, $00
+	dsprite -3,  0,  3,  0, $07, $00
+	dsprite -2,  0, -3,  0, $11, $00
+	dsprite -2,  0, -2,  0, $12, $00
+	dsprite -2,  0, -1,  0, $13, $00
+	dsprite -2,  0,  0,  0, $14, $00
+	dsprite -2,  0,  1,  0, $15, $00
+	dsprite -2,  0,  2,  0, $16, $00
+	dsprite -2,  0,  3,  0, $17, $00
+	dsprite -1,  0, -4,  0, $20, $00
+	dsprite -1,  0, -3,  0, $21, $00
+	dsprite -1,  0, -2,  0, $22, $00
+	dsprite -1,  0, -1,  0, $23, $00
+	dsprite -1,  0,  0,  0, $24, $00
+	dsprite -1,  0,  1,  0, $25, $00
+	dsprite -1,  0,  2,  0, $26, $00
+	dsprite -1,  0,  3,  0, $27, $00
+	dsprite  0,  0, -4,  0, $30, $00
+	dsprite  0,  0, -3,  0, $31, $00
+	dsprite  0,  0, -2,  0, $32, $00
+	dsprite  0,  0, -1,  0, $33, $00
+	dsprite  0,  0,  0,  0, $34, $00
+	dsprite  0,  0,  1,  0, $35, $00
+	dsprite  0,  0,  2,  0, $36, $00
+	dsprite  1,  0, -4,  0, $40, $00
+	dsprite  1,  0, -3,  0, $41, $00
+	dsprite  1,  0, -2,  0, $42, $00
+	dsprite  1,  0, -1,  0, $43, $00
+	dsprite  1,  0,  0,  0, $44, $00
+	dsprite  1,  0,  1,  0, $45, $00
+	dsprite  1,  0,  2,  0, $46, $00
+	dsprite  1,  0,  3,  0, $47, $00
+	dsprite  2,  0, -4,  0, $50, $00
+	dsprite  2,  0, -3,  0, $51, $00
+	dsprite  2,  0,  3,  0, $57, $00
+
+.OAMData_6f:
+	db 28
+	dsprite -3,  0,  0,  0, $04, $00
+	dsprite -3,  0,  1,  0, $05, $00
+	dsprite -3,  0,  2,  0, $06, $00
+	dsprite -2,  0, -3,  0, $11, $00
+	dsprite -2,  0, -2,  0, $12, $00
+	dsprite -2,  0, -1,  0, $13, $00
+	dsprite -2,  0,  0,  0, $14, $00
+	dsprite -2,  0,  1,  0, $15, $00
+	dsprite -2,  0,  2,  0, $16, $00
+	dsprite -1,  0, -3,  0, $21, $00
+	dsprite -1,  0, -2,  0, $22, $00
+	dsprite -1,  0, -1,  0, $23, $00
+	dsprite -1,  0,  0,  0, $24, $00
+	dsprite -1,  0,  1,  0, $25, $00
+	dsprite -1,  0,  2,  0, $26, $00
+	dsprite  0,  0, -4,  0, $30, $00
+	dsprite  0,  0, -3,  0, $31, $00
+	dsprite  0,  0, -2,  0, $32, $00
+	dsprite  0,  0, -1,  0, $33, $00
+	dsprite  0,  0,  0,  0, $34, $00
+	dsprite  0,  0,  1,  0, $35, $00
+	dsprite  1,  0, -2,  0, $42, $00
+	dsprite  1,  0, -1,  0, $43, $00
+	dsprite  1,  0,  0,  0, $44, $00
+	dsprite  1,  0,  1,  0, $45, $00
+	dsprite  2,  0, -1,  0, $53, $00
+	dsprite  2,  0,  0,  0, $54, $00
+	dsprite  2,  0,  1,  0, $55, $00
+
+.OAMData_70:
+	db 30
+	dsprite -3,  0,  0,  0, $04, $00
+	dsprite -3,  0,  1,  0, $05, $00
+	dsprite -2,  0, -3,  0, $11, $00
+	dsprite -2,  0, -2,  0, $12, $00
+	dsprite -2,  0, -1,  0, $13, $00
+	dsprite -2,  0,  0,  0, $14, $00
+	dsprite -2,  0,  1,  0, $15, $00
+	dsprite -2,  0,  2,  0, $16, $00
+	dsprite -2,  0,  3,  0, $17, $00
+	dsprite -1,  0, -4,  0, $20, $00
+	dsprite -1,  0, -3,  0, $21, $00
+	dsprite -1,  0, -2,  0, $22, $00
+	dsprite -1,  0, -1,  0, $23, $00
+	dsprite -1,  0,  0,  0, $24, $00
+	dsprite -1,  0,  1,  0, $25, $00
+	dsprite -1,  0,  2,  0, $26, $00
+	dsprite  0,  0, -4,  0, $30, $00
+	dsprite  0,  0, -3,  0, $31, $00
+	dsprite  0,  0, -2,  0, $32, $00
+	dsprite  0,  0, -1,  0, $33, $00
+	dsprite  0,  0,  0,  0, $34, $00
+	dsprite  0,  0,  1,  0, $35, $00
+	dsprite  1,  0, -2,  0, $42, $00
+	dsprite  1,  0, -1,  0, $43, $00
+	dsprite  1,  0,  0,  0, $44, $00
+	dsprite  1,  0,  1,  0, $45, $00
+	dsprite  2,  0, -2,  0, $52, $00
+	dsprite  2,  0, -1,  0, $53, $00
+	dsprite  2,  0,  0,  0, $54, $00
+	dsprite  2,  0,  1,  0, $55, $00
+
+.OAMData_71:
+	db 31
+	dsprite -2,  0, -3,  0, $11, $00
+	dsprite -2,  0, -2,  0, $12, $00
+	dsprite -2,  0, -1,  0, $13, $00
+	dsprite -2,  0,  0,  0, $14, $00
+	dsprite -2,  0,  1,  0, $15, $00
+	dsprite -2,  0,  2,  0, $16, $00
+	dsprite -2,  0,  3,  0, $17, $00
+	dsprite -1,  0, -4,  0, $20, $00
+	dsprite -1,  0, -3,  0, $21, $00
+	dsprite -1,  0, -2,  0, $22, $00
+	dsprite -1,  0, -1,  0, $23, $00
+	dsprite -1,  0,  0,  0, $24, $00
+	dsprite -1,  0,  1,  0, $25, $00
+	dsprite -1,  0,  2,  0, $26, $00
+	dsprite -1,  0,  3,  0, $27, $00
+	dsprite  0,  0, -4,  0, $30, $00
+	dsprite  0,  0, -3,  0, $31, $00
+	dsprite  0,  0, -2,  0, $32, $00
+	dsprite  0,  0, -1,  0, $33, $00
+	dsprite  0,  0,  0,  0, $34, $00
+	dsprite  0,  0,  1,  0, $35, $00
+	dsprite  0,  0,  2,  0, $36, $00
+	dsprite  1,  0, -3,  0, $41, $00
+	dsprite  1,  0, -2,  0, $42, $00
+	dsprite  1,  0, -1,  0, $43, $00
+	dsprite  1,  0,  0,  0, $44, $00
+	dsprite  1,  0,  1,  0, $45, $00
+	dsprite  2,  0, -3,  0, $51, $00
+	dsprite  2,  0, -2,  0, $52, $00
+	dsprite  2,  0,  0,  0, $54, $00
+	dsprite  2,  0,  1,  0, $55, $00
+
+.OAMData_72:
+	db 25
+	dsprite -3,  4, -3,  4, $00, $09
+	dsprite -3,  4, -2,  4, $01, $09
+	dsprite -3,  4, -1,  4, $02, $09
+	dsprite -3,  4,  0,  4, $03, $09
+	dsprite -3,  4,  1,  4, $04, $09
+	dsprite -2,  4, -3,  4, $10, $09
+	dsprite -2,  4, -2,  4, $11, $09
+	dsprite -2,  4, -1,  4, $12, $09
+	dsprite -2,  4,  0,  4, $13, $09
+	dsprite -2,  4,  1,  4, $14, $09
+	dsprite -1,  4, -3,  4, $20, $09
+	dsprite -1,  4, -2,  4, $21, $09
+	dsprite -1,  4, -1,  4, $22, $09
+	dsprite -1,  4,  0,  4, $23, $09
+	dsprite -1,  4,  1,  4, $24, $09
+	dsprite  0,  4, -3,  4, $30, $09
+	dsprite  0,  4, -2,  4, $31, $09
+	dsprite  0,  4, -1,  4, $32, $09
+	dsprite  0,  4,  0,  4, $33, $09
+	dsprite  0,  4,  1,  4, $34, $09
+	dsprite  1,  4, -3,  4, $40, $09
+	dsprite  1,  4, -2,  4, $41, $09
+	dsprite  1,  4, -1,  4, $42, $09
+	dsprite  1,  4,  0,  4, $43, $09
+	dsprite  1,  4,  1,  4, $44, $09
+
+.OAMData_75:
+	db 16
+	dsprite -2,  0, -3,  4, $00, $0a
+	dsprite -2,  0, -2,  4, $01, $0a
+	dsprite -2,  0, -1,  4, $02, $0a
+	dsprite -2,  0,  0,  4, $03, $0a
+	dsprite -1,  0, -3,  4, $04, $0a
+	dsprite -1,  0, -2,  4, $05, $0a
+	dsprite -1,  0, -1,  4, $06, $0a
+	dsprite -1,  0,  0,  4, $07, $0a
+	dsprite  0,  0, -3,  4, $08, $0a
+	dsprite  0,  0, -2,  4, $09, $0a
+	dsprite  0,  0, -1,  4, $0a, $0a
+	dsprite  0,  0,  0,  4, $0b, $0a
+	dsprite  1,  0, -3,  4, $0c, $0a
+	dsprite  1,  0, -2,  4, $0d, $0a
+	dsprite  1,  0, -1,  4, $0e, $0a
+	dsprite  1,  0,  0,  4, $0f, $0a
+
+.OAMData_76:
+	db 1
+	dsprite -1,  4, -1,  4, $00, $00
+
+.OAMData_77:
+	db 3
+	dsprite  0,  0, -1,  0, $00, $00
+	dsprite -1,  0, -1,  0, $01, $00
+	dsprite -1,  0,  0,  0, $02, $00
+
+.OAMData_78:
+	db 7
+	dsprite  1,  0, -2,  0, $00, $00
+	dsprite  0,  0, -2,  0, $01, $00
+	dsprite -1,  0, -2,  0, $02, $00
+	dsprite -1,  0, -1,  0, $03, $00
+	dsprite -2,  0, -1,  0, $04, $00
+	dsprite -2,  0,  0,  0, $05, $00
+	dsprite -2,  0,  1,  0, $06, $00
+
+.OAMData_7a:
+	db 8
+	dsprite -1,  0, -2,  0, $00, $00
+	dsprite -1,  0, -1,  0, $01, $00
+	dsprite -1,  0,  0,  0, $01, $20
+	dsprite -1,  0,  1,  0, $00, $20
+	dsprite  0,  0, -2,  0, $00, $40
+	dsprite  0,  0, -1,  0, $01, $40
+	dsprite  0,  0,  0,  0, $01, $60
+	dsprite  0,  0,  1,  0, $00, $60
+
+.OAMData_7b:
+	db 12
+	dsprite -3,  0, -1,  0, $00, $00
+	dsprite -2,  0, -1,  0, $01, $00
+	dsprite -1,  0, -1,  0, $02, $00
+	dsprite -3,  0,  0,  0, $00, $20
+	dsprite -2,  0,  0,  0, $01, $20
+	dsprite -1,  0,  0,  0, $02, $20
+	dsprite  0,  0, -1,  0, $02, $40
+	dsprite  1,  0, -1,  0, $01, $40
+	dsprite  2,  0, -1,  0, $00, $40
+	dsprite  0,  0,  0,  0, $02, $60
+	dsprite  1,  0,  0,  0, $01, $60
+	dsprite  2,  0,  0,  0, $00, $60
+
+.OAMData_7c:
+	db 20
+	dsprite -3,  4, -2,  0, $00, $00
+	dsprite -3,  4, -1,  0, $01, $00
+	dsprite -3,  4,  0,  0, $02, $00
+	dsprite -3,  4,  1,  0, $03, $00
+	dsprite -2,  4, -2,  0, $04, $00
+	dsprite -2,  4, -1,  0, $05, $00
+	dsprite -2,  4,  0,  0, $06, $00
+	dsprite -2,  4,  1,  0, $07, $00
+	dsprite -1,  4, -2,  0, $08, $00
+	dsprite -1,  4, -1,  0, $09, $00
+	dsprite -1,  4,  0,  0, $0a, $00
+	dsprite -1,  4,  1,  0, $0b, $00
+	dsprite  0,  4, -2,  0, $0c, $00
+	dsprite  0,  4, -1,  0, $0d, $00
+	dsprite  0,  4,  0,  0, $0e, $00
+	dsprite  0,  4,  1,  0, $0f, $00
+	dsprite  1,  4, -2,  0, $10, $00
+	dsprite  1,  4, -1,  0, $11, $00
+	dsprite  1,  4,  0,  0, $12, $00
+	dsprite  1,  4,  1,  0, $13, $00
+
+.OAMData_7e:
+	db 20
+	dsprite  0,  0,   1,  0, $00, $81
+	dsprite  1,  0,   2,  0, $00, $81
+	dsprite  2,  0,   3,  0, $00, $81
+	dsprite  3,  0,   4,  0, $00, $81
+	dsprite  4,  0,   5,  0, $00, $81
+	dsprite  3,  0,   6,  0, $00, $81
+	dsprite  2,  0,   7,  0, $00, $81
+	dsprite  1,  0,   8,  0, $00, $81
+	dsprite  0,  0,   9,  0, $00, $81
+	dsprite  1,  0,  10,  0, $00, $81
+	dsprite  2,  0,  11,  0, $00, $81
+	dsprite  3,  0,  12,  0, $00, $81
+	dsprite  4,  0,  13,  0, $00, $81
+	dsprite  3,  0,  14,  0, $00, $81
+	dsprite  2,  0,  15,  0, $00, $81
+	dsprite  1,  0,  16,  0, $00, $81
+	dsprite  0,  0, -15,  0, $00, $81
+	dsprite  1,  0, -14,  0, $00, $81
+	dsprite  2,  0, -13,  0, $00, $81
+	dsprite  3,  0, -12,  0, $00, $81
+
+.OAMData_7f:
+	db 4
+	dsprite -1,  0, -1,  0, $00, $02
+	dsprite -1,  0,  0,  0, $01, $02
+	dsprite  0,  0, -1,  0, $02, $02
+	dsprite  0,  0,  0,  0, $03, $02
+
+.OAMData_81:
+	db 9
+	dsprite -2,  0, -2,  4, $00, $01
+	dsprite -2,  0, -1,  4, $01, $01
+	dsprite -2,  0,  0,  4, $02, $01
+	dsprite -1,  0, -2,  4, $10, $01
+	dsprite -1,  0, -1,  4, $11, $01
+	dsprite -1,  0,  0,  4, $12, $01
+	dsprite  0,  0, -2,  4, $20, $01
+	dsprite  0,  0, -1,  4, $21, $01
+	dsprite  0,  0,  0,  4, $22, $01
+
+.OAMData_84:
+	db 24
+	dsprite -5,  0, -2,  4, $00, $01
+	dsprite -5,  0, -1,  4, $01, $01
+	dsprite -5,  0,  0,  4, $02, $01
+	dsprite -5,  0,  1,  4, $03, $01
+	dsprite -4,  0, -2,  4, $10, $01
+	dsprite -4,  0, -1,  4, $11, $01
+	dsprite -4,  0,  0,  4, $12, $01
+	dsprite -4,  0,  1,  4, $13, $01
+	dsprite -3,  0, -2,  4, $20, $01
+	dsprite -3,  0, -1,  4, $21, $01
+	dsprite -3,  0,  0,  4, $22, $01
+	dsprite -3,  0,  1,  4, $23, $01
+	dsprite -2,  0, -2,  4, $30, $01
+	dsprite -2,  0, -1,  4, $31, $01
+	dsprite -2,  0,  0,  4, $32, $01
+	dsprite -2,  0,  1,  4, $33, $01
+	dsprite -1,  0, -2,  4, $40, $01
+	dsprite -1,  0, -1,  4, $41, $01
+	dsprite -1,  0,  0,  4, $42, $01
+	dsprite -1,  0,  1,  4, $43, $01
+	dsprite  0,  0, -2,  4, $50, $01
+	dsprite  0,  0, -1,  4, $51, $01
+	dsprite  0,  0,  0,  4, $52, $01
+	dsprite  0,  0,  1,  4, $53, $01
+; 8e706
--- /dev/null
+++ b/data/sprite_anim_seqs.asm
@@ -1,0 +1,94 @@
+SpriteAnimSeqData: ; 8d1c4
+; entries correspond to SPRITE_ANIM_INDEX_* constants
+	; frameset sequence, tile
+; SPRITE_ANIM_INDEX_PARTY_MON
+	db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_SEQ_PARTY_MON, $00
+; SPRITE_ANIM_INDEX_01
+	db SPRITE_ANIM_FRAMESET_07, SPRITE_ANIM_SEQ_04, $00
+; SPRITE_ANIM_INDEX_NAMING_SCREEN_CURSOR
+	db SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR, SPRITE_ANIM_SEQ_NAMING_SCREEN_CURSOR, $05
+; SPRITE_ANIM_INDEX_GAMEFREAK_LOGO
+	db SPRITE_ANIM_FRAMESET_GAMEFREAK_LOGO, SPRITE_ANIM_SEQ_GAMEFREAK_LOGO, $00
+; SPRITE_ANIM_INDEX_GS_INTRO_STAR
+	db SPRITE_ANIM_FRAMESET_GS_INTRO_STAR, SPRITE_ANIM_SEQ_GS_INTRO_STAR, $06
+; SPRITE_ANIM_INDEX_GS_INTRO_SPARKLE
+	db SPRITE_ANIM_FRAMESET_GS_INTRO_SPARKLE, SPRITE_ANIM_SEQ_GS_INTRO_SPARKLE, $06
+; SPRITE_ANIM_INDEX_SLOTS_GOLEM
+	db SPRITE_ANIM_FRAMESET_SLOTS_GOLEM, SPRITE_ANIM_SEQ_SLOTS_GOLEM, $07
+; SPRITE_ANIM_INDEX_SLOTS_CHANSEY
+	db SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY, SPRITE_ANIM_SEQ_SLOTS_CHANSEY, $07
+; SPRITE_ANIM_INDEX_SLOTS_EGG
+	db SPRITE_ANIM_FRAMESET_SLOTS_EGG, SPRITE_ANIM_SEQ_SLOTS_EGG, $07
+; SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR
+	db SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR, SPRITE_ANIM_SEQ_MAIL_CURSOR, $05
+; SPRITE_ANIM_INDEX_RED_WALK
+	db SPRITE_ANIM_FRAMESET_RED_WALK, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_0B
+	db SPRITE_ANIM_FRAMESET_STILL_CURSOR, SPRITE_ANIM_SEQ_0D, $08
+; SPRITE_ANIM_INDEX_DUMMY_GAME
+	db SPRITE_ANIM_FRAMESET_STILL_CURSOR, SPRITE_ANIM_SEQ_0E, $08
+; SPRITE_ANIM_INDEX_0D
+	db SPRITE_ANIM_FRAMESET_STILL_CURSOR, SPRITE_ANIM_SEQ_0F, $08
+; SPRITE_ANIM_INDEX_TRADE_POKE_BALL
+	db SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL, SPRITE_ANIM_SEQ_TRADE_POKE_BALL, $00
+; SPRITE_ANIM_INDEX_TRADE_POOF
+	db SPRITE_ANIM_FRAMESET_TRADE_POOF, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_TRADE_TUBE_BULGE
+	db SPRITE_ANIM_FRAMESET_TRADE_TUBE_BULGE, SPRITE_ANIM_SEQ_TRADE_TUBE_BULGE, $00
+; SPRITE_ANIM_INDEX_TRADEMON_ICON
+	db SPRITE_ANIM_FRAMESET_TRADEMON_ICON, SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE, $00
+; SPRITE_ANIM_INDEX_TRADEMON_BUBBLE
+	db SPRITE_ANIM_FRAMESET_TRADEMON_BUBBLE, SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE, $00
+; SPRITE_ANIM_INDEX_EVOLUTION_BALL_OF_LIGHT
+	db SPRITE_ANIM_FRAMESET_EVOLUTION_BALL_OF_LIGHT, SPRITE_ANIM_SEQ_REVEAL_NEW_MON, $00
+; SPRITE_ANIM_INDEX_RADIO_TUNING_KNOB
+	db SPRITE_ANIM_FRAMESET_RADIO_TUNING_KNOB, SPRITE_ANIM_SEQ_RADIO_TUNING_KNOB, $00
+; SPRITE_ANIM_INDEX_MAGNET_TRAIN_RED
+	db SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_RED, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_LEAF
+	db SPRITE_ANIM_FRAMESET_LEAF, SPRITE_ANIM_SEQ_CUT_LEAVES, $00
+; SPRITE_ANIM_INDEX_CUT_TREE
+	db SPRITE_ANIM_FRAMESET_CUT_TREE, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_FLY_LEAF
+	db SPRITE_ANIM_FRAMESET_LEAF, SPRITE_ANIM_SEQ_FLY_LEAF, $00
+; SPRITE_ANIM_INDEX_EGG_CRACK
+	db SPRITE_ANIM_FRAMESET_EGG_CRACK, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_1A
+	db SPRITE_ANIM_FRAMESET_24, SPRITE_ANIM_SEQ_19, $00
+; SPRITE_ANIM_INDEX_HEADBUTT
+	db SPRITE_ANIM_FRAMESET_HEADBUTT, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_EGG_HATCH
+	db SPRITE_ANIM_FRAMESET_EGG_HATCH, SPRITE_ANIM_SEQ_REVEAL_NEW_MON, $00
+; SPRITE_ANIM_INDEX_1D
+	db SPRITE_ANIM_FRAMESET_26, SPRITE_ANIM_SEQ_1A, $00
+; SPRITE_ANIM_INDEX_BLUE_WALK
+	db SPRITE_ANIM_FRAMESET_BLUE_WALK, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_MAGNET_TRAIN_BLUE
+	db SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_BLUE, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_20
+	db SPRITE_ANIM_FRAMESET_2F, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_21
+	db SPRITE_ANIM_FRAMESET_30, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_22
+	db SPRITE_ANIM_FRAMESET_31, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_23
+	db SPRITE_ANIM_FRAMESET_32, SPRITE_ANIM_SEQ_1B, $00
+; SPRITE_ANIM_INDEX_24
+	db SPRITE_ANIM_FRAMESET_33, SPRITE_ANIM_SEQ_1C, $00
+; SPRITE_ANIM_INDEX_25
+	db SPRITE_ANIM_FRAMESET_34, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_INTRO_SUICUNE
+	db SPRITE_ANIM_FRAMESET_INTRO_SUICUNE, SPRITE_ANIM_SEQ_INTRO_SUICUNE, $00
+; SPRITE_ANIM_INDEX_INTRO_PICHU
+	db SPRITE_ANIM_FRAMESET_INTRO_PICHU, SPRITE_ANIM_SEQ_INTRO_PICHU_WOOPER, $00
+; SPRITE_ANIM_INDEX_INTRO_WOOPER
+	db SPRITE_ANIM_FRAMESET_INTRO_WOOPER, SPRITE_ANIM_SEQ_INTRO_PICHU_WOOPER, $00
+; SPRITE_ANIM_INDEX_INTRO_UNOWN
+	db SPRITE_ANIM_FRAMESET_INTRO_UNOWN_1, SPRITE_ANIM_SEQ_INTRO_UNOWN, $00
+; SPRITE_ANIM_INDEX_INTRO_UNOWN_F
+	db SPRITE_ANIM_FRAMESET_INTRO_UNOWN_F, SPRITE_ANIM_SEQ_INTRO_UNOWN_F, $00
+; SPRITE_ANIM_INDEX_INTRO_SUICUNE_AWAY
+	db SPRITE_ANIM_FRAMESET_INTRO_SUICUNE_AWAY, SPRITE_ANIM_SEQ_INTRO_SUICUNE_AWAY, $00
+; SPRITE_ANIM_INDEX_CELEBI
+	db SPRITE_ANIM_FRAMESET_CELEBI_LEFT, SPRITE_ANIM_SEQ_NULL, $00 ; 2c
+; 8d24b
--- a/data/sprite_engine.asm
+++ /dev/null
@@ -1,1650 +1,0 @@
-SpriteAnimFrameData: ; 8d6e6
-; entries correspond to SPRITE_ANIM_FRAMESET_* constants
-	dw .Frameset_00
-	dw .Frameset_PartyMon
-	dw .Frameset_02
-	dw .Frameset_03
-	dw .Frameset_04
-	dw .Frameset_05
-	dw .Frameset_06
-	dw .Frameset_07
-	dw .Frameset_TextEntryCursor
-	dw .Frameset_09
-	dw .Frameset_GameFreakLogo
-	dw .Frameset_GSIntroStar
-	dw .Frameset_GSIntroSparkle
-	dw .Frameset_SlotsGolem
-	dw .Frameset_SlotsChansey
-	dw .Frameset_SlotsChansey2
-	dw .Frameset_SlotsEgg
-	dw .Frameset_RedWalk
-	dw .Frameset_StillCursor
-	dw .Frameset_TradePokeBall
-	dw .Frameset_TradePokeBall0
-	dw .Frameset_TradePoof
-	dw .Frameset_TradeTubeBulge
-	dw .Frameset_TrademonIcon
-	dw .Frameset_TrademonBubble
-	dw .Frameset_EvolutionBallOfLight
-	dw .Frameset_RadioTuningKnob
-	dw .Frameset_MagnetTrainRed
-	dw .Frameset_1c
-	dw .Frameset_Leaf
-	dw .Frameset_CutTree
-	dw .Frameset_EggCrack
-	dw .Frameset_EggHatch
-	dw .Frameset_21
-	dw .Frameset_22
-	dw .Frameset_23
-	dw .Frameset_24
-	dw .Frameset_HeadbuttTree
-	dw .Frameset_26
-	dw .Frameset_27
-	dw .Frameset_28
-	dw .Frameset_29
-	dw .Frameset_2a
-	dw .Frameset_2b
-	dw .Frameset_2c
-	dw .Frameset_BlueWalk
-	dw .Frameset_MagnetTrainBlue
-	dw .Frameset_2f
-	dw .Frameset_30
-	dw .Frameset_31
-	dw .Frameset_32
-	dw .Frameset_33
-	dw .Frameset_34
-	dw .Frameset_IntroSuicune
-	dw .Frameset_IntroSuicune2
-	dw .Frameset_IntroPichu
-	dw .Frameset_IntroWooper
-	dw .Frameset_IntroUnown1
-	dw .Frameset_IntroUnown2
-	dw .Frameset_IntroUnown3
-	dw .Frameset_IntroUnown4
-	dw .Frameset_IntroUnownF2
-	dw .Frameset_IntroSuicuneAway
-	dw .Frameset_IntroUnownF
-	dw .Frameset_CelebiLeft
-	dw .Frameset_CelebiRight
-; 8d76a
-
-.Frameset_00:
-	frame SPRITE_ANIM_FRAME_IDX_00, 32
-	endanim
-
-.Frameset_PartyMon:
-	frame SPRITE_ANIM_FRAME_IDX_00,  8
-	frame SPRITE_ANIM_FRAME_IDX_01,  8
-	dorestart
-
-.Frameset_02:
-	frame SPRITE_ANIM_FRAME_IDX_3D,  8
-	frame SPRITE_ANIM_FRAME_IDX_3E,  8
-	dorestart
-
-.Frameset_03:
-	frame SPRITE_ANIM_FRAME_IDX_3F,  8
-	frame SPRITE_ANIM_FRAME_IDX_40,  8
-	dorestart
-
-.Frameset_04:
-	frame SPRITE_ANIM_FRAME_IDX_00,  4
-	frame SPRITE_ANIM_FRAME_IDX_01,  4
-	dorestart
-
-.Frameset_05:
-	frame SPRITE_ANIM_FRAME_IDX_3D,  4
-	frame SPRITE_ANIM_FRAME_IDX_3E,  4
-	dorestart
-
-.Frameset_06:
-	frame SPRITE_ANIM_FRAME_IDX_3F,  4
-	frame SPRITE_ANIM_FRAME_IDX_40,  4
-	dorestart
-
-.Frameset_RedWalk:
-	frame SPRITE_ANIM_FRAME_IDX_00,  8
-	frame SPRITE_ANIM_FRAME_IDX_01,  8
-	frame SPRITE_ANIM_FRAME_IDX_00,  8
-	frame SPRITE_ANIM_FRAME_IDX_01,  8, OAM_X_FLIP
-	dorestart
-
-.Frameset_BlueWalk:
-	frame SPRITE_ANIM_FRAME_IDX_63,  8
-	frame SPRITE_ANIM_FRAME_IDX_64,  8
-	frame SPRITE_ANIM_FRAME_IDX_63,  8
-	frame SPRITE_ANIM_FRAME_IDX_64,  8, OAM_X_FLIP
-	dorestart
-
-.Frameset_MagnetTrainBlue:
-	frame SPRITE_ANIM_FRAME_IDX_65,  8
-	frame SPRITE_ANIM_FRAME_IDX_66,  8
-	frame SPRITE_ANIM_FRAME_IDX_65,  8
-	frame SPRITE_ANIM_FRAME_IDX_66,  8, OAM_X_FLIP
-	dorestart
-
-.Frameset_07:
-	frame SPRITE_ANIM_FRAME_IDX_1E,  1
-	frame SPRITE_ANIM_FRAME_IDX_1F,  1
-	dorestart
-
-.Frameset_TextEntryCursor:
-	frame SPRITE_ANIM_FRAME_IDX_20,  1
-	dorepeat  1
-	dorestart
-
-.Frameset_09:
-	frame SPRITE_ANIM_FRAME_IDX_21,  1
-	dorepeat  1
-	dorestart
-
-.Frameset_GameFreakLogo:
-	frame SPRITE_ANIM_FRAME_IDX_81, 12
-	frame SPRITE_ANIM_FRAME_IDX_82,  1
-	frame SPRITE_ANIM_FRAME_IDX_83,  1
-	frame SPRITE_ANIM_FRAME_IDX_82,  4
-	frame SPRITE_ANIM_FRAME_IDX_81, 12
-	frame SPRITE_ANIM_FRAME_IDX_82, 12
-	frame SPRITE_ANIM_FRAME_IDX_83,  4
-	frame SPRITE_ANIM_FRAME_IDX_84, 32
-	frame SPRITE_ANIM_FRAME_IDX_85,  3
-	frame SPRITE_ANIM_FRAME_IDX_86,  3
-	frame SPRITE_ANIM_FRAME_IDX_87,  4
-	frame SPRITE_ANIM_FRAME_IDX_88,  4
-	frame SPRITE_ANIM_FRAME_IDX_89,  4
-	frame SPRITE_ANIM_FRAME_IDX_8A, 10
-	frame SPRITE_ANIM_FRAME_IDX_8B,  7
-	endanim
-
-.Frameset_GSIntroStar:
-	frame SPRITE_ANIM_FRAME_IDX_23,  3
-	frame SPRITE_ANIM_FRAME_IDX_23,  3, OAM_Y_FLIP
-	dorestart
-
-.Frameset_GSIntroSparkle:
-	frame SPRITE_ANIM_FRAME_IDX_24,  2
-	frame SPRITE_ANIM_FRAME_IDX_25,  2
-	frame SPRITE_ANIM_FRAME_IDX_26,  2
-	frame SPRITE_ANIM_FRAME_IDX_25,  2
-	dorestart
-
-.Frameset_SlotsGolem:
-	frame SPRITE_ANIM_FRAME_IDX_27,  7
-	frame SPRITE_ANIM_FRAME_IDX_28,  7
-	frame SPRITE_ANIM_FRAME_IDX_27,  7, OAM_Y_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_28,  7, OAM_X_FLIP
-	dorestart
-
-.Frameset_SlotsChansey:
-	frame SPRITE_ANIM_FRAME_IDX_29,  7
-	frame SPRITE_ANIM_FRAME_IDX_2A,  7
-	frame SPRITE_ANIM_FRAME_IDX_29,  7
-	frame SPRITE_ANIM_FRAME_IDX_2B,  7
-	dorestart
-
-.Frameset_SlotsChansey2:
-	frame SPRITE_ANIM_FRAME_IDX_29,  7
-	frame SPRITE_ANIM_FRAME_IDX_2C,  7
-	frame SPRITE_ANIM_FRAME_IDX_2D,  7
-	frame SPRITE_ANIM_FRAME_IDX_2C,  7
-	frame SPRITE_ANIM_FRAME_IDX_29,  7
-	endanim
-
-.Frameset_SlotsEgg:
-	frame SPRITE_ANIM_FRAME_IDX_2E, 20
-	endanim
-
-.Frameset_StillCursor:
-	frame SPRITE_ANIM_FRAME_IDX_2F, 32
-	endanim
-
-.Frameset_TradePokeBall:
-	frame SPRITE_ANIM_FRAME_IDX_30, 32
-	endanim
-
-.Frameset_TradePokeBall0:
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
-	dorestart
-
-.Frameset_TradePoof:
-	frame SPRITE_ANIM_FRAME_IDX_32,  4
-	frame SPRITE_ANIM_FRAME_IDX_33,  4
-	frame SPRITE_ANIM_FRAME_IDX_34,  4
-	delanim
-
-.Frameset_TradeTubeBulge:
-	frame SPRITE_ANIM_FRAME_IDX_35,  3
-	frame SPRITE_ANIM_FRAME_IDX_36,  3
-	dorestart
-
-.Frameset_TrademonIcon:
-	frame SPRITE_ANIM_FRAME_IDX_37,  7
-	frame SPRITE_ANIM_FRAME_IDX_38,  7
-	dorestart
-
-.Frameset_TrademonBubble:
-	frame SPRITE_ANIM_FRAME_IDX_39, 32
-	endanim
-
-.Frameset_EvolutionBallOfLight:
-	frame SPRITE_ANIM_FRAME_IDX_3B,  2
-	frame SPRITE_ANIM_FRAME_IDX_3A,  2
-	frame SPRITE_ANIM_FRAME_IDX_3B,  2
-	endanim
-
-.Frameset_RadioTuningKnob:
-	frame SPRITE_ANIM_FRAME_IDX_3C, 32
-	endanim
-
-.Frameset_MagnetTrainRed:
-	frame SPRITE_ANIM_FRAME_IDX_41,  8
-	frame SPRITE_ANIM_FRAME_IDX_42,  8
-	frame SPRITE_ANIM_FRAME_IDX_41,  8
-	frame SPRITE_ANIM_FRAME_IDX_42,  8, OAM_X_FLIP
-	dorestart
-
-; XXX
-	frame SPRITE_ANIM_FRAME_IDX_43,  8
-	frame SPRITE_ANIM_FRAME_IDX_44,  8
-	dorestart
-
-; XXX
-	frame SPRITE_ANIM_FRAME_IDX_45,  8
-	frame SPRITE_ANIM_FRAME_IDX_46,  8
-	dorestart
-
-; XXX
-	frame SPRITE_ANIM_FRAME_IDX_47,  8
-	frame SPRITE_ANIM_FRAME_IDX_48,  8
-	dorestart
-
-; XXX
-	frame SPRITE_ANIM_FRAME_IDX_49,  1
-	frame SPRITE_ANIM_FRAME_IDX_49,  1, OAM_X_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_49,  1, OAM_X_FLIP, OAM_Y_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_49,  1, OAM_Y_FLIP
-	dorestart
-
-; XXX
-	frame SPRITE_ANIM_FRAME_IDX_4A, 32
-	endanim
-
-; XXX
-	frame SPRITE_ANIM_FRAME_IDX_4B, 32
-	endanim
-
-; XXX
-	frame SPRITE_ANIM_FRAME_IDX_4C, 32
-	endanim
-
-; XXX
-	frame SPRITE_ANIM_FRAME_IDX_4D, 32
-	endanim
-
-; XXX
-	frame SPRITE_ANIM_FRAME_IDX_4E,  3
-	dorepeat  3
-	dorestart
-
-.Frameset_1c:
-	dorepeat 32
-	endanim
-
-.Frameset_Leaf:
-	frame SPRITE_ANIM_FRAME_IDX_4F, 32
-	endanim
-
-.Frameset_CutTree:
-	frame SPRITE_ANIM_FRAME_IDX_50,  2
-	frame SPRITE_ANIM_FRAME_IDX_51, 16
-	dorepeat  1
-	frame SPRITE_ANIM_FRAME_IDX_52,  1
-	dorepeat  1
-	frame SPRITE_ANIM_FRAME_IDX_53,  1
-	delanim
-
-.Frameset_EggCrack:
-	frame SPRITE_ANIM_FRAME_IDX_54, 32
-	endanim
-
-.Frameset_EggHatch:
-	frame SPRITE_ANIM_FRAME_IDX_55, 32
-	endanim
-
-.Frameset_21:
-	frame SPRITE_ANIM_FRAME_IDX_55, 32, OAM_X_FLIP
-	endanim
-
-.Frameset_22:
-	frame SPRITE_ANIM_FRAME_IDX_55, 32, OAM_Y_FLIP
-	endanim
-
-.Frameset_23:
-	frame SPRITE_ANIM_FRAME_IDX_55, 32, OAM_X_FLIP, OAM_Y_FLIP
-	endanim
-
-.Frameset_24:
-	frame SPRITE_ANIM_FRAME_IDX_56, 10
-	frame SPRITE_ANIM_FRAME_IDX_57,  9
-	frame SPRITE_ANIM_FRAME_IDX_58, 10
-	frame SPRITE_ANIM_FRAME_IDX_59, 10
-	frame SPRITE_ANIM_FRAME_IDX_58,  9
-	frame SPRITE_ANIM_FRAME_IDX_5A, 10
-	dorestart
-
-.Frameset_HeadbuttTree:
-	frame SPRITE_ANIM_FRAME_IDX_50,  2
-	frame SPRITE_ANIM_FRAME_IDX_5B,  2
-	frame SPRITE_ANIM_FRAME_IDX_50,  2
-	frame SPRITE_ANIM_FRAME_IDX_5B,  2, OAM_X_FLIP
-	dorestart
-
-.Frameset_26:
-	frame SPRITE_ANIM_FRAME_IDX_5C,  2
-	endanim
-
-.Frameset_27:
-	frame SPRITE_ANIM_FRAME_IDX_5D,  2
-	endanim
-
-.Frameset_28:
-	frame SPRITE_ANIM_FRAME_IDX_5E,  2
-	endanim
-
-.Frameset_29:
-	frame SPRITE_ANIM_FRAME_IDX_5F,  2
-	endanim
-
-.Frameset_2a:
-	frame SPRITE_ANIM_FRAME_IDX_60,  2
-	endanim
-
-.Frameset_2b:
-	frame SPRITE_ANIM_FRAME_IDX_61,  2
-	endanim
-
-.Frameset_2c:
-	frame SPRITE_ANIM_FRAME_IDX_62,  2
-	endanim
-
-.Frameset_2f:
-	frame SPRITE_ANIM_FRAME_IDX_32,  3
-	frame SPRITE_ANIM_FRAME_IDX_33,  3
-	frame SPRITE_ANIM_FRAME_IDX_34,  3
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
-	endanim
-
-.Frameset_30:
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_32,  3
-	frame SPRITE_ANIM_FRAME_IDX_33,  3
-	frame SPRITE_ANIM_FRAME_IDX_34,  3
-	delanim
-
-.Frameset_31:
-	frame SPRITE_ANIM_FRAME_IDX_67,  3
-	frame SPRITE_ANIM_FRAME_IDX_68,  3
-	dorestart
-
-.Frameset_32:
-	frame SPRITE_ANIM_FRAME_IDX_6C,  3
-	endanim
-
-.Frameset_33:
-	frame SPRITE_ANIM_FRAME_IDX_6D,  3
-	endanim
-
-.Frameset_34:
-	frame SPRITE_ANIM_FRAME_IDX_69,  2
-	frame SPRITE_ANIM_FRAME_IDX_6A,  2
-	frame SPRITE_ANIM_FRAME_IDX_6B,  2
-	delanim
-
-.Frameset_IntroSuicune:
-	frame SPRITE_ANIM_FRAME_IDX_6E,  3
-	frame SPRITE_ANIM_FRAME_IDX_6F,  3
-	frame SPRITE_ANIM_FRAME_IDX_70,  3
-	frame SPRITE_ANIM_FRAME_IDX_71,  3
-	dorestart
-
-.Frameset_IntroSuicune2:
-	frame SPRITE_ANIM_FRAME_IDX_71,  3
-	frame SPRITE_ANIM_FRAME_IDX_6E,  7
-	endanim
-
-.Frameset_IntroPichu:
-	frame SPRITE_ANIM_FRAME_IDX_72, 32
-	frame SPRITE_ANIM_FRAME_IDX_73,  7
-	frame SPRITE_ANIM_FRAME_IDX_74,  7
-	endanim
-
-.Frameset_IntroWooper:
-	frame SPRITE_ANIM_FRAME_IDX_75,  3
-	endanim
-
-.Frameset_IntroUnown1:
-	frame SPRITE_ANIM_FRAME_IDX_76,  3
-	frame SPRITE_ANIM_FRAME_IDX_77,  3
-	frame SPRITE_ANIM_FRAME_IDX_78,  7
-	delanim
-
-.Frameset_IntroUnown2:
-	frame SPRITE_ANIM_FRAME_IDX_76,  3, OAM_X_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_77,  3, OAM_X_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_78,  7, OAM_X_FLIP
-	delanim
-
-.Frameset_IntroUnown3:
-	frame SPRITE_ANIM_FRAME_IDX_76,  3, OAM_Y_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_77,  3, OAM_Y_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_78,  7, OAM_Y_FLIP
-	delanim
-
-.Frameset_IntroUnown4:
-	frame SPRITE_ANIM_FRAME_IDX_76,  3, OAM_X_FLIP, OAM_Y_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_77,  3, OAM_X_FLIP, OAM_Y_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_78,  7, OAM_X_FLIP, OAM_Y_FLIP
-	delanim
-
-.Frameset_IntroUnownF2:
-	frame SPRITE_ANIM_FRAME_IDX_79,  3
-	frame SPRITE_ANIM_FRAME_IDX_7A,  3
-	frame SPRITE_ANIM_FRAME_IDX_7B,  3
-	frame SPRITE_ANIM_FRAME_IDX_7C,  7
-	frame SPRITE_ANIM_FRAME_IDX_7D,  7
-	endanim
-
-.Frameset_IntroSuicuneAway:
-	frame SPRITE_ANIM_FRAME_IDX_7E,  3
-	endanim
-
-.Frameset_IntroUnownF:
-	dorepeat 0
-	endanim
-
-.Frameset_CelebiLeft:
-	frame SPRITE_ANIM_FRAME_IDX_7F,  8
-	frame SPRITE_ANIM_FRAME_IDX_80,  8
-	endanim
-
-.Frameset_CelebiRight:
-	frame SPRITE_ANIM_FRAME_IDX_7F,  8, OAM_X_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_80,  8, OAM_X_FLIP
-	endanim
-; 8d94d
-
-SpriteAnimOAMData: ; 8d94d
-; entries correspond to SPRITE_ANIM_FRAME_IDX_* constants
-	; vtile offset, pointer
-	dbw $00, .OAMData_00 ; 00
-	dbw $04, .OAMData_00 ; 01
-	dbw $4c, .OAMData_02 ; 02
-	dbw $5c, .OAMData_02 ; 03
-	dbw $6c, .OAMData_04 ; 04
-	dbw $6e, .OAMData_04 ; 05
-	dbw $2d, .OAMData_06 ; 06
-	dbw $4d, .OAMData_06 ; 07
-	dbw $60, .OAMData_08 ; 08
-	dbw $00, .OAMData_08 ; 09
-	dbw $00, .OAMData_08 ; 0a
-	dbw $06, .OAMData_08 ; 0b
-	dbw $0c, .OAMData_0c ; 0c
-	dbw $0d, .OAMData_02 ; 0d
-	dbw $00, .OAMData_0e ; 0e
-	dbw $04, .OAMData_0e ; 0f
-	dbw $08, .OAMData_0e ; 10
-	dbw $40, .OAMData_0e ; 11
-	dbw $44, .OAMData_0e ; 12
-	dbw $48, .OAMData_0e ; 13
-	dbw $4c, .OAMData_0e ; 14
-	dbw $80, .OAMData_15 ; 15
-	dbw $85, .OAMData_15 ; 16
-	dbw $8a, .OAMData_15 ; 17
-	dbw $00, .OAMData_18 ; 18
-	dbw $01, .OAMData_19 ; 19
-	dbw $09, .OAMData_1a ; 1a
-	dbw $10, .OAMData_1b ; 1b
-	dbw $29, .OAMData_1b ; 1c
-	dbw $42, .OAMData_1b ; 1d
-	dbw $f8, .OAMData_1e ; 1e
-	dbw $fa, .OAMData_1e ; 1f
-	dbw $00, .OAMData_20 ; 20
-	dbw $00, .OAMData_21 ; 21
-	dbw $00, .OAMData_22 ; 22
-	dbw $0f, .OAMData_23 ; 23
-	dbw $11, .OAMData_02 ; 24
-	dbw $12, .OAMData_02 ; 25
-	dbw $13, .OAMData_02 ; 26
-	dbw $00, .OAMData_27 ; 27
-	dbw $08, .OAMData_27 ; 28
-	dbw $10, .OAMData_29 ; 29
-	dbw $10, .OAMData_2a ; 2a
-	dbw $10, .OAMData_2b ; 2b
-	dbw $10, .OAMData_2c ; 2c
-	dbw $10, .OAMData_2d ; 2d
-	dbw $3a, .OAMData_02 ; 2e
-	dbw $00, .OAMData_00 ; 2f
-	dbw $00, .OAMData_30 ; 30
-	dbw $02, .OAMData_31 ; 31
-	dbw $06, .OAMData_19 ; 32
-	dbw $0a, .OAMData_19 ; 33
-	dbw $0e, .OAMData_19 ; 34
-	dbw $12, .OAMData_35 ; 35
-	dbw $13, .OAMData_35 ; 36
-	dbw $00, .OAMData_00 ; 37
-	dbw $04, .OAMData_00 ; 38
-	dbw $10, .OAMData_19 ; 39
-	dbw $00, .OAMData_31 ; 3a
-	dbw $04, .OAMData_02 ; 3b
-	dbw $00, .OAMData_3c ; 3c
-	dbw $00, .OAMData_3d ; 3d
-	dbw $00, .OAMData_3e ; 3e
-	dbw $00, .OAMData_3f ; 3f
-	dbw $00, .OAMData_40 ; 40
-	dbw $00, .OAMData_31 ; 41
-	dbw $04, .OAMData_31 ; 42
-	dbw $00, .OAMData_43 ; 43
-	dbw $30, .OAMData_43 ; 44
-	dbw $03, .OAMData_43 ; 45
-	dbw $33, .OAMData_43 ; 46
-	dbw $06, .OAMData_43 ; 47
-	dbw $36, .OAMData_43 ; 48
-	dbw $09, .OAMData_43 ; 49
-	dbw $39, .OAMData_43 ; 4a
-	dbw $0c, .OAMData_4b ; 4b
-	dbw $0c, .OAMData_4c ; 4c
-	dbw $3c, .OAMData_02 ; 4d
-	dbw $3e, .OAMData_02 ; 4e
-	dbw $00, .OAMData_4f ; 4f
-	dbw $00, .OAMData_50 ; 50
-	dbw $00, .OAMData_51 ; 51
-	dbw $00, .OAMData_52 ; 52
-	dbw $00, .OAMData_53 ; 53
-	dbw $00, .OAMData_02 ; 54
-	dbw $01, .OAMData_02 ; 55
-	dbw $00, .OAMData_56 ; 56
-	dbw $00, .OAMData_57 ; 57
-	dbw $00, .OAMData_58 ; 58
-	dbw $00, .OAMData_59 ; 59
-	dbw $00, .OAMData_5a ; 5a
-	dbw $04, .OAMData_50 ; 5b
-	dbw $00, .OAMData_5c ; 5c
-	dbw $00, .OAMData_5d ; 5d
-	dbw $00, .OAMData_5e ; 5e
-	dbw $00, .OAMData_5f ; 5f
-	dbw $00, .OAMData_60 ; 60
-	dbw $00, .OAMData_61 ; 61
-	dbw $00, .OAMData_62 ; 62
-	dbw $00, .OAMData_63 ; 63
-	dbw $04, .OAMData_63 ; 64
-	dbw $00, .OAMData_65 ; 65
-	dbw $04, .OAMData_65 ; 66
-	dbw $20, .OAMData_67 ; 67
-	dbw $21, .OAMData_67 ; 68
-	dbw $22, .OAMData_69 ; 69
-	dbw $23, .OAMData_6a ; 6a
-	dbw $27, .OAMData_6b ; 6b
-	dbw $2a, .OAMData_6c ; 6c
-	dbw $2a, .OAMData_6d ; 6d
-	dbw $00, .OAMData_6e ; 6e
-	dbw $08, .OAMData_6f ; 6f
-	dbw $60, .OAMData_70 ; 70
-	dbw $68, .OAMData_71 ; 71
-	dbw $00, .OAMData_72 ; 72
-	dbw $05, .OAMData_72 ; 73
-	dbw $0a, .OAMData_72 ; 74
-	dbw $50, .OAMData_75 ; 75
-	dbw $00, .OAMData_76 ; 76
-	dbw $01, .OAMData_77 ; 77
-	dbw $04, .OAMData_78 ; 78
-	dbw $00, .OAMData_18 ; 79
-	dbw $01, .OAMData_7a ; 7a
-	dbw $03, .OAMData_7b ; 7b
-	dbw $08, .OAMData_7c ; 7c
-	dbw $1c, .OAMData_7c ; 7d
-	dbw $80, .OAMData_7e ; 7e
-	dbw $00, .OAMData_7f ; 7f
-	dbw $04, .OAMData_7f ; 80
-	dbw $d0, .OAMData_81 ; 81
-	dbw $d3, .OAMData_81 ; 82
-	dbw $d6, .OAMData_81 ; 83
-	dbw $6c, .OAMData_84 ; 84
-	dbw $68, .OAMData_84 ; 85
-	dbw $64, .OAMData_84 ; 86
-	dbw $60, .OAMData_84 ; 87
-	dbw $0c, .OAMData_84 ; 88
-	dbw $08, .OAMData_84 ; 89
-	dbw $04, .OAMData_84 ; 8a
-	dbw $00, .OAMData_84 ; 8b
-
-.OAMData_02:
-	db 1
-	dsprite -1,  4, -1,  4, $00, $00
-
-.OAMData_04:
-	db 4
-	dsprite -1,  0, -1,  0, $00, $00
-	dsprite -1,  0,  0,  0, $01, $00
-	dsprite  0,  0, -1,  0, $10, $00
-	dsprite  0,  0,  0,  0, $11, $00
-
-.OAMData_23:
-	db 4
-	dsprite -1,  0, -1,  0, $00, $00
-	dsprite -1,  0,  0,  0, $00, $20
-	dsprite  0,  0, -1,  0, $01, $00
-	dsprite  0,  0,  0,  0, $01, $20
-
-.OAMData_30:
-	db 4
-	dsprite -1,  0, -1,  0, $00, $80
-	dsprite -1,  0,  0,  0, $00, $a0
-	dsprite  0,  0, -1,  0, $01, $80
-	dsprite  0,  0,  0,  0, $01, $a0
-
-.OAMData_18:
-	db 4
-	dsprite -1,  0, -1,  0, $00, $00
-	dsprite -1,  0,  0,  0, $00, $20
-	dsprite  0,  0, -1,  0, $00, $40
-	dsprite  0,  0,  0,  0, $00, $60
-
-.OAMData_35:
-	db 4
-	dsprite -1,  0, -1,  0, $00, $07
-	dsprite -1,  0,  0,  0, $00, $27
-	dsprite  0,  0, -1,  0, $00, $47
-	dsprite  0,  0,  0,  0, $00, $67
-; 8db4b
-
-; 8db4b
-	db 4
-	dsprite -1,  0, -1,  0, $00, $80
-	dsprite -1,  0,  0,  0, $00, $a0
-	dsprite  0,  0, -1,  0, $00, $c0
-	dsprite  0,  0,  0,  0, $00, $e0
-
-.OAMData_19:
-	db 16
-	dsprite -2,  0, -2,  0, $00, $00
-	dsprite -2,  0, -1,  0, $01, $00
-	dsprite -1,  0, -2,  0, $02, $00
-	dsprite -1,  0, -1,  0, $03, $00
-	dsprite -2,  0,  0,  0, $01, $20
-	dsprite -2,  0,  1,  0, $00, $20
-	dsprite -1,  0,  0,  0, $03, $20
-	dsprite -1,  0,  1,  0, $02, $20
-	dsprite  0,  0, -2,  0, $02, $40
-	dsprite  0,  0, -1,  0, $03, $40
-	dsprite  1,  0, -2,  0, $00, $40
-	dsprite  1,  0, -1,  0, $01, $40
-	dsprite  0,  0,  0,  0, $03, $60
-	dsprite  0,  0,  1,  0, $02, $60
-	dsprite  1,  0,  0,  0, $01, $60
-	dsprite  1,  0,  1,  0, $00, $60
-
-.OAMData_1a:
-	db 36
-	dsprite -3,  0, -3,  0, $00, $00
-	dsprite -3,  0, -2,  0, $01, $00
-	dsprite -3,  0, -1,  0, $02, $00
-	dsprite -2,  0, -3,  0, $03, $00
-	dsprite -2,  0, -2,  0, $04, $00
-	dsprite -2,  0, -1,  0, $05, $00
-	dsprite -1,  0, -3,  0, $06, $00
-	dsprite -1,  0, -2,  0, $05, $00
-	dsprite -1,  0, -1,  0, $05, $00
-	dsprite -3,  0,  0,  0, $02, $20
-	dsprite -3,  0,  1,  0, $01, $20
-	dsprite -3,  0,  2,  0, $00, $20
-	dsprite -2,  0,  0,  0, $05, $20
-	dsprite -2,  0,  1,  0, $04, $20
-	dsprite -2,  0,  2,  0, $03, $20
-	dsprite -1,  0,  0,  0, $05, $20
-	dsprite -1,  0,  1,  0, $05, $20
-	dsprite -1,  0,  2,  0, $06, $20
-	dsprite  0,  0, -3,  0, $06, $40
-	dsprite  0,  0, -2,  0, $05, $40
-	dsprite  0,  0, -1,  0, $05, $40
-	dsprite  1,  0, -3,  0, $03, $40
-	dsprite  1,  0, -2,  0, $04, $40
-	dsprite  1,  0, -1,  0, $05, $40
-	dsprite  2,  0, -3,  0, $00, $40
-	dsprite  2,  0, -2,  0, $01, $40
-	dsprite  2,  0, -1,  0, $02, $40
-	dsprite  0,  0,  0,  0, $05, $60
-	dsprite  0,  0,  1,  0, $05, $60
-	dsprite  0,  0,  2,  0, $06, $60
-	dsprite  1,  0,  0,  0, $05, $60
-	dsprite  1,  0,  1,  0, $04, $60
-	dsprite  1,  0,  2,  0, $03, $60
-	dsprite  2,  0,  0,  0, $02, $60
-	dsprite  2,  0,  1,  0, $01, $60
-	dsprite  2,  0,  2,  0, $00, $60
-
-.OAMData_43:
-	db 9
-	dsprite -2,  4, -2,  4, $00, $00
-	dsprite -2,  4, -1,  4, $01, $00
-	dsprite -2,  4,  0,  4, $02, $00
-	dsprite -1,  4, -2,  4, $10, $00
-	dsprite -1,  4, -1,  4, $11, $00
-	dsprite -1,  4,  0,  4, $12, $00
-	dsprite  0,  4, -2,  4, $20, $00
-	dsprite  0,  4, -1,  4, $21, $00
-	dsprite  0,  4,  0,  4, $22, $00
-
-.OAMData_0e:
-	db 16
-	dsprite -2,  0, -2,  0, $00, $00
-	dsprite -2,  0, -1,  0, $01, $00
-	dsprite -2,  0,  0,  0, $02, $00
-	dsprite -2,  0,  1,  0, $03, $00
-	dsprite -1,  0, -2,  0, $10, $00
-	dsprite -1,  0, -1,  0, $11, $00
-	dsprite -1,  0,  0,  0, $12, $00
-	dsprite -1,  0,  1,  0, $13, $00
-	dsprite  0,  0, -2,  0, $20, $00
-	dsprite  0,  0, -1,  0, $21, $00
-	dsprite  0,  0,  0,  0, $22, $00
-	dsprite  0,  0,  1,  0, $23, $00
-	dsprite  1,  0, -2,  0, $30, $00
-	dsprite  1,  0, -1,  0, $31, $00
-	dsprite  1,  0,  0,  0, $32, $00
-	dsprite  1,  0,  1,  0, $33, $00
-
-.OAMData_1b:
-	db 25
-	dsprite -3,  4, -3,  4, $00, $00
-	dsprite -2,  4, -3,  4, $01, $00
-	dsprite -1,  4, -3,  4, $02, $00
-	dsprite  0,  4, -3,  4, $03, $00
-	dsprite  1,  4, -3,  4, $04, $00
-	dsprite -3,  4, -2,  4, $05, $00
-	dsprite -2,  4, -2,  4, $06, $00
-	dsprite -1,  4, -2,  4, $07, $00
-	dsprite  0,  4, -2,  4, $08, $00
-	dsprite  1,  4, -2,  4, $09, $00
-	dsprite -3,  4, -1,  4, $0a, $00
-	dsprite -2,  4, -1,  4, $0b, $00
-	dsprite -1,  4, -1,  4, $0c, $00
-	dsprite  0,  4, -1,  4, $0d, $00
-	dsprite  1,  4, -1,  4, $0e, $00
-	dsprite -3,  4,  0,  4, $0f, $00
-	dsprite -2,  4,  0,  4, $10, $00
-	dsprite -1,  4,  0,  4, $11, $00
-	dsprite  0,  4,  0,  4, $12, $00
-	dsprite  1,  4,  0,  4, $13, $00
-	dsprite -3,  4,  1,  4, $14, $00
-	dsprite -2,  4,  1,  4, $15, $00
-	dsprite -1,  4,  1,  4, $16, $00
-	dsprite  0,  4,  1,  4, $17, $00
-	dsprite  1,  4,  1,  4, $18, $00
-; 8dcf9
-
-; 8dcf9
-	db 36
-	dsprite -3,  0, -3,  0, $00, $00
-	dsprite -3,  0, -2,  0, $01, $00
-	dsprite -3,  0, -1,  0, $02, $00
-	dsprite -3,  0,  0,  0, $03, $00
-	dsprite -3,  0,  1,  0, $04, $00
-	dsprite -3,  0,  2,  0, $05, $00
-	dsprite -2,  0, -3,  0, $06, $00
-	dsprite -2,  0, -2,  0, $07, $00
-	dsprite -2,  0, -1,  0, $08, $00
-	dsprite -2,  0,  0,  0, $09, $00
-	dsprite -2,  0,  1,  0, $0a, $00
-	dsprite -2,  0,  2,  0, $0b, $00
-	dsprite -1,  0, -3,  0, $0c, $00
-	dsprite -1,  0, -2,  0, $0d, $00
-	dsprite -1,  0, -1,  0, $0e, $00
-	dsprite -1,  0,  0,  0, $0f, $00
-	dsprite -1,  0,  1,  0, $10, $00
-	dsprite -1,  0,  2,  0, $11, $00
-	dsprite  0,  0, -3,  0, $12, $00
-	dsprite  0,  0, -2,  0, $13, $00
-	dsprite  0,  0, -1,  0, $14, $00
-	dsprite  0,  0,  0,  0, $15, $00
-	dsprite  0,  0,  1,  0, $16, $00
-	dsprite  0,  0,  2,  0, $17, $00
-	dsprite  1,  0, -3,  0, $18, $00
-	dsprite  1,  0, -2,  0, $19, $00
-	dsprite  1,  0, -1,  0, $1a, $00
-	dsprite  1,  0,  0,  0, $1b, $00
-	dsprite  1,  0,  1,  0, $1c, $00
-	dsprite  1,  0,  2,  0, $1d, $00
-	dsprite  2,  0, -3,  0, $1e, $00
-	dsprite  2,  0, -2,  0, $1f, $00
-	dsprite  2,  0, -1,  0, $20, $00
-	dsprite  2,  0,  0,  0, $21, $00
-	dsprite  2,  0,  1,  0, $22, $00
-	dsprite  2,  0,  2,  0, $23, $00
-
-.OAMData_00:
-; party menu icons
-	db 4
-	dsprite -1,  0, -1,  0, $00, $00
-	dsprite -1,  0,  0,  0, $01, $00
-	dsprite  0,  0, -1,  0, $02, $00
-	dsprite  0,  0,  0,  0, $03, $00
-
-.OAMData_31:
-	db 4
-	dsprite -1,  0, -1,  0, $00, $80
-	dsprite -1,  0,  0,  0, $01, $80
-	dsprite  0,  0, -1,  0, $02, $80
-	dsprite  0,  0,  0,  0, $03, $80
-
-.OAMData_3d:
-; party menu icon with mail, frame 1
-	db 4
-	dsprite -1,  0, -1,  0, $00, $00
-	dsprite -1,  0,  0,  0, $01, $00
-	dsprite  0,  0, -1,  0, $08, $00
-	dsprite  0,  0,  0,  0, $03, $00
-
-.OAMData_3e:
-; party menu icon with mail, frame 2
-	db 4
-	dsprite -1,  0, -1,  0, $04, $00
-	dsprite -1,  0,  0,  0, $05, $00
-	dsprite  0,  0, -1,  0, $08, $00
-	dsprite  0,  0,  0,  0, $07, $00
-
-.OAMData_3f:
-; party menu icon with item, frame 1
-	db 4
-	dsprite -1,  0, -1,  0, $00, $00
-	dsprite -1,  0,  0,  0, $01, $00
-	dsprite  0,  0, -1,  0, $09, $00
-	dsprite  0,  0,  0,  0, $03, $00
-
-.OAMData_40:
-; party menu icon with item, frame 2
-	db 4
-	dsprite -1,  0, -1,  0, $04, $00
-	dsprite -1,  0,  0,  0, $05, $00
-	dsprite  0,  0, -1,  0, $09, $00
-	dsprite  0,  0,  0,  0, $07, $00
-
-.OAMData_06:
-	db 6
-	dsprite -1,  0, -2,  4, $00, $01
-	dsprite -1,  0, -1,  4, $01, $01
-	dsprite -1,  0,  0,  4, $02, $01
-	dsprite  0,  0, -2,  4, $10, $01
-	dsprite  0,  0, -1,  4, $11, $01
-	dsprite  0,  0,  0,  4, $12, $01
-
-.OAMData_08:
-	db 29
-	dsprite -3,  0, -3,  0, $00, $00
-	dsprite -3,  0, -2,  0, $01, $00
-	dsprite -3,  0, -1,  0, $02, $00
-	dsprite -3,  0,  0,  0, $03, $00
-	dsprite -2,  0, -3,  0, $10, $00
-	dsprite -2,  0, -2,  0, $11, $00
-	dsprite -2,  0, -1,  0, $12, $00
-	dsprite -2,  0,  0,  0, $13, $00
-	dsprite -1,  0, -3,  0, $20, $00
-	dsprite -1,  0, -2,  0, $21, $00
-	dsprite -1,  0, -1,  0, $22, $00
-	dsprite -1,  0,  0,  0, $23, $00
-	dsprite -1,  0,  1,  0, $24, $00
-	dsprite  0,  0, -3,  0, $30, $80
-	dsprite  0,  0, -2,  0, $31, $80
-	dsprite  0,  0, -1,  0, $32, $80
-	dsprite  0,  0,  0,  0, $33, $80
-	dsprite  0,  0,  1,  0, $34, $80
-	dsprite  1,  0, -3,  0, $40, $80
-	dsprite  1,  0, -2,  0, $41, $80
-	dsprite  1,  0, -1,  0, $42, $80
-	dsprite  1,  0,  0,  0, $43, $80
-	dsprite  1,  0,  1,  0, $44, $80
-	dsprite  1,  0,  2,  0, $45, $80
-	dsprite  2,  0, -2,  0, $51, $80
-	dsprite  2,  0, -1,  0, $52, $80
-	dsprite  2,  0,  0,  0, $53, $80
-	dsprite  2,  0,  1,  0, $54, $80
-	dsprite  2,  0,  2,  0, $55, $80
-
-.OAMData_0c:
-	db 2
-	dsprite -1,  0, -1,  4, $00, $00
-	dsprite  0,  0, -1,  4, $10, $00
-
-.OAMData_15:
-	db 5
-	dsprite -2,  0,  3,  0, $00, $00
-	dsprite -2,  0,  4,  0, $01, $00
-	dsprite -1,  0,  2,  0, $02, $00
-	dsprite -1,  0,  3,  0, $03, $00
-	dsprite  0,  0,  2,  0, $04, $00
-
-.OAMData_4f:
-	db 1
-	dsprite -1,  4, -1,  4, $00, $06
-
-.OAMData_50:
-	db 4
-	dsprite -1,  0, -1,  0, $00, $06
-	dsprite -1,  0,  0,  0, $01, $06
-	dsprite  0,  0, -1,  0, $02, $06
-	dsprite  0,  0,  0,  0, $03, $06
-
-.OAMData_20:
-	db 4
-	dsprite -1,  7, -1,  7, $00, $00
-	dsprite -1,  7,  0,  0, $00, $20
-	dsprite  0,  0, -1,  7, $00, $40
-	dsprite  0,  0,  0,  0, $00, $60
-
-.OAMData_21:
-	db 10
-	dsprite -1,  7,  0,  0, $00, $00
-	dsprite -1,  7,  1,  0, $01, $00
-	dsprite -1,  7,  2,  0, $01, $00
-	dsprite -1,  7,  3,  0, $01, $00
-	dsprite -1,  7,  4,  0, $00, $20
-	dsprite  0,  0,  0,  0, $00, $40
-	dsprite  0,  0,  1,  0, $01, $40
-	dsprite  0,  0,  2,  0, $01, $40
-	dsprite  0,  0,  3,  0, $01, $40
-	dsprite  0,  0,  4,  0, $00, $60
-
-.OAMData_22:
-	db 15
-	dsprite -3,  4, -2,  4, $00, $11
-	dsprite -3,  4, -1,  4, $01, $11
-	dsprite -3,  4,  0,  4, $02, $11
-	dsprite -2,  4, -2,  4, $03, $11
-	dsprite -2,  4, -1,  4, $04, $11
-	dsprite -2,  4,  0,  4, $05, $11
-	dsprite -1,  4, -2,  4, $06, $11
-	dsprite -1,  4, -1,  4, $07, $11
-	dsprite -1,  4,  0,  4, $08, $11
-	dsprite  0,  4, -2,  4, $09, $11
-	dsprite  0,  4, -1,  4, $0a, $11
-	dsprite  0,  4,  0,  4, $0b, $11
-	dsprite  1,  4, -2,  4, $0c, $11
-	dsprite  1,  4, -1,  4, $0d, $11
-	dsprite  1,  4,  0,  4, $0e, $11
-
-.OAMData_27:
-	db 6
-	dsprite -2,  4, -2,  4, $00, $15
-	dsprite -2,  4, -1,  4, $02, $15
-	dsprite -2,  4,  0,  4, $00, $35
-	dsprite  0,  4, -2,  4, $04, $15
-	dsprite  0,  4, -1,  4, $06, $15
-	dsprite  0,  4,  0,  4, $04, $35
-
-.OAMData_29:
-	db 6
-	dsprite -2,  4, -2,  4, $00, $16
-	dsprite -2,  4, -1,  4, $02, $16
-	dsprite -2,  4,  0,  4, $04, $16
-	dsprite  0,  4, -2,  4, $06, $16
-	dsprite  0,  4, -1,  4, $08, $16
-	dsprite  0,  4,  0,  4, $0a, $16
-
-.OAMData_2a:
-	db 6
-	dsprite -2,  4, -2,  4, $00, $16
-	dsprite -2,  4, -1,  4, $02, $16
-	dsprite -2,  4,  0,  4, $04, $16
-	dsprite  0,  4, -2,  4, $0c, $16
-	dsprite  0,  4, -1,  4, $0e, $16
-	dsprite  0,  4,  0,  4, $10, $16
-
-.OAMData_2b:
-	db 6
-	dsprite -2,  4, -2,  4, $00, $16
-	dsprite -2,  4, -1,  4, $02, $16
-	dsprite -2,  4,  0,  4, $04, $16
-	dsprite  0,  4, -2,  4, $12, $16
-	dsprite  0,  4, -1,  4, $14, $16
-	dsprite  0,  4,  0,  4, $16, $16
-
-.OAMData_2c:
-	db 6
-	dsprite -2,  4, -2,  4, $00, $16
-	dsprite -2,  4, -1,  4, $02, $16
-	dsprite -2,  4,  0,  4, $04, $16
-	dsprite  0,  4, -2,  4, $18, $16
-	dsprite  0,  4, -1,  4, $1a, $16
-	dsprite  0,  4,  0,  4, $1c, $16
-
-.OAMData_2d:
-	db 6
-	dsprite -2,  4, -2,  4, $1e, $16
-	dsprite -2,  4, -1,  4, $20, $16
-	dsprite -2,  4,  0,  4, $22, $16
-	dsprite  0,  4, -2,  4, $24, $16
-	dsprite  0,  4, -1,  4, $26, $16
-	dsprite  0,  4,  0,  4, $28, $16
-
-.OAMData_3c:
-	db 3
-	dsprite -2,  4, -1,  4, $00, $10
-	dsprite -1,  4, -1,  4, $00, $10
-	dsprite  0,  4, -1,  4, $00, $10
-
-.OAMData_4b:
-	db 6
-	dsprite  0,  0,  0,  0, $00, $00
-	dsprite  0,  0,  1,  0, $01, $00
-	dsprite  0,  0,  2,  0, $01, $00
-	dsprite  0,  0,  3,  0, $01, $00
-	dsprite  0,  0,  4,  0, $02, $00
-	dsprite  0,  0,  5,  0, $03, $00
-
-.OAMData_4c:
-	db 4
-	dsprite  0,  0,  0,  0, $00, $00
-	dsprite  0,  0,  1,  0, $01, $00
-	dsprite  0,  0,  2,  0, $02, $00
-	dsprite  0,  0,  3,  0, $03, $00
-
-.OAMData_51:
-	db 4
-	dsprite -1,  0, -2,  6, $00, $06
-	dsprite -1,  0,  0,  2, $01, $06
-	dsprite  0,  0, -2,  6, $02, $06
-	dsprite  0,  0,  0,  2, $03, $06
-
-.OAMData_52:
-	db 4
-	dsprite -1,  0, -2,  4, $00, $06
-	dsprite -1,  0,  0,  4, $01, $06
-	dsprite  0,  0, -2,  4, $02, $06
-	dsprite  0,  0,  0,  4, $03, $06
-
-.OAMData_53:
-	db 4
-	dsprite -1,  0, -2,  0, $00, $06
-	dsprite -1,  0,  1,  0, $01, $06
-	dsprite  0,  0, -2,  0, $02, $06
-	dsprite  0,  0,  1,  0, $03, $06
-
-.OAMData_56:
-	db 19
-	dsprite -1,  0, -4,  0, $00, $00
-	dsprite -2,  0, -3,  0, $02, $00
-	dsprite  0,  0, -3,  0, $04, $00
-	dsprite -3,  0, -2,  0, $06, $00
-	dsprite -1,  0, -2,  0, $08, $00
-	dsprite  1,  0, -2,  0, $0a, $00
-	dsprite -3,  0, -1,  0, $0c, $00
-	dsprite -1,  0, -1,  0, $0e, $00
-	dsprite  1,  0, -1,  0, $10, $00
-	dsprite -3,  0,  0,  0, $12, $00
-	dsprite -1,  0,  0,  0, $14, $00
-	dsprite  1,  0,  0,  0, $16, $00
-	dsprite -3,  0,  1,  0, $18, $00
-	dsprite -1,  0,  1,  0, $1a, $00
-	dsprite  1,  0,  1,  0, $1c, $00
-	dsprite -1,  0,  2,  0, $1e, $00
-	dsprite  1,  0,  2,  0, $20, $00
-	dsprite -2,  0,  3,  0, $22, $00
-	dsprite  0,  0,  3,  0, $24, $00
-
-.OAMData_57:
-	db 16
-	dsprite -1,  0, -4,  0, $00, $00
-	dsprite -2,  0, -3,  0, $02, $00
-	dsprite  0,  0, -3,  0, $04, $00
-	dsprite -1,  0, -2,  0, $26, $00
-	dsprite  1,  0, -2,  0, $0a, $00
-	dsprite -3,  0, -1,  0, $28, $00
-	dsprite -1,  0, -1,  0, $2a, $00
-	dsprite  1,  0, -1,  0, $10, $00
-	dsprite -1,  0,  0,  0, $2c, $00
-	dsprite  1,  0,  0,  0, $16, $00
-	dsprite -1,  0,  1,  0, $30, $00
-	dsprite  1,  0,  1,  0, $1c, $00
-	dsprite -1,  0,  2,  0, $1e, $00
-	dsprite  1,  0,  2,  0, $20, $00
-	dsprite -2,  0,  3,  0, $22, $00
-	dsprite  0,  0,  3,  0, $24, $00
-
-.OAMData_58:
-	db 15
-	dsprite -1,  0, -4,  0, $00, $00
-	dsprite -2,  0, -3,  0, $02, $00
-	dsprite  0,  0, -3,  0, $32, $00
-	dsprite -1,  0, -2,  0, $34, $00
-	dsprite  1,  0, -2,  0, $36, $00
-	dsprite -1,  0, -1,  0, $38, $00
-	dsprite  1,  0, -1,  0, $3a, $00
-	dsprite -1,  0,  0,  0, $3c, $00
-	dsprite  1,  0,  0,  0, $3e, $00
-	dsprite -1,  0,  1,  0, $30, $00
-	dsprite  1,  0,  1,  0, $1c, $00
-	dsprite -1,  0,  2,  0, $1e, $00
-	dsprite  1,  0,  2,  0, $20, $00
-	dsprite -2,  0,  3,  0, $22, $00
-	dsprite  0,  0,  3,  0, $24, $00
-
-.OAMData_59:
-	db 17
-	dsprite -1,  0, -4,  0, $00, $00
-	dsprite -2,  0, -3,  0, $02, $00
-	dsprite  0,  0, -3,  0, $04, $00
-	dsprite -1,  0, -2,  0, $40, $00
-	dsprite  1,  0, -2,  0, $42, $00
-	dsprite  3,  0, -2,  0, $44, $00
-	dsprite -1,  0, -1,  0, $46, $00
-	dsprite  1,  0, -1,  0, $48, $00
-	dsprite  3,  0, -1,  0, $4a, $00
-	dsprite -1,  0,  0,  0, $4c, $00
-	dsprite  1,  0,  0,  0, $4e, $00
-	dsprite -1,  0,  1,  0, $30, $00
-	dsprite  1,  0,  1,  0, $1c, $00
-	dsprite -1,  0,  2,  0, $1e, $00
-	dsprite  1,  0,  2,  0, $20, $00
-	dsprite -2,  0,  3,  0, $22, $00
-	dsprite  0,  0,  3,  0, $24, $00
-
-.OAMData_5a:
-	db 17
-	dsprite -1,  0, -4,  0, $00, $00
-	dsprite -2,  0, -3,  0, $02, $00
-	dsprite  0,  0, -3,  0, $04, $00
-	dsprite -1,  0, -2,  0, $50, $00
-	dsprite  1,  0, -2,  0, $0a, $00
-	dsprite -3,  0, -1,  0, $52, $00
-	dsprite -1,  0, -1,  0, $54, $00
-	dsprite  1,  0, -1,  0, $10, $00
-	dsprite -3,  0,  0,  0, $56, $00
-	dsprite -1,  0,  0,  0, $2e, $00
-	dsprite  1,  0,  0,  0, $16, $00
-	dsprite -1,  0,  1,  0, $30, $00
-	dsprite  1,  0,  1,  0, $1c, $00
-	dsprite -1,  0,  2,  0, $1e, $00
-	dsprite  1,  0,  2,  0, $20, $00
-	dsprite -2,  0,  3,  0, $22, $00
-	dsprite  0,  0,  3,  0, $24, $00
-
-.OAMData_1e:
-	db 1
-	dsprite -1,  4, -1,  4, $00, $11
-
-.OAMData_5c:
-	db 12
-	dsprite  0,  0,  0,  0, $30, $00
-	dsprite  0,  0,  1,  0, $31, $00
-	dsprite  0,  0,  2,  0, $31, $00
-	dsprite  0,  0,  3,  0, $31, $00
-	dsprite  0,  0,  4,  0, $31, $00
-	dsprite  0,  0,  5,  0, $32, $00
-	dsprite  1,  0,  0,  0, $33, $00
-	dsprite  1,  0,  1,  0, $34, $00
-	dsprite  1,  0,  2,  0, $34, $00
-	dsprite  1,  0,  3,  0, $34, $00
-	dsprite  1,  0,  4,  0, $34, $00
-	dsprite  1,  0,  5,  0, $35, $00
-
-.OAMData_5d:
-	db 1
-	dsprite  0,  0,  0,  0, $ed, $00
-
-.OAMData_5e:
-	db 4
-	dsprite -1,  7, -1,  7, $30, $00
-	dsprite -1,  7,  0,  1, $32, $00
-	dsprite  0,  1, -1,  7, $33, $00
-	dsprite  0,  1,  0,  1, $35, $00
-
-.OAMData_5f:
-	db 8
-	dsprite -1,  7, -1,  7, $30, $00
-	dsprite -1,  7,  0,  4, $31, $00
-	dsprite -1,  7,  1,  4, $31, $00
-	dsprite -1,  7,  2,  1, $32, $00
-	dsprite  0,  1, -1,  7, $33, $00
-	dsprite  0,  1,  0,  4, $34, $00
-	dsprite  0,  1,  1,  4, $34, $00
-	dsprite  0,  1,  2,  1, $35, $00
-
-.OAMData_60:
-	db 1
-	dsprite  0,  0,  0,  0, $34, $00
-
-.OAMData_61:
-	db 2
-	dsprite  0,  0,  0,  0, $30, $00
-	dsprite  1,  0,  0,  0, $33, $00
-
-.OAMData_62:
-	db 2
-	dsprite  0,  0,  0,  0, $32, $00
-	dsprite  1,  0,  0,  0, $35, $00
-
-.OAMData_63:
-	db 4
-	dsprite -1,  0, -1,  0, $00, $01
-	dsprite -1,  0,  0,  0, $01, $01
-	dsprite  0,  0, -1,  0, $02, $01
-	dsprite  0,  0,  0,  0, $03, $01
-
-.OAMData_65:
-	db 4
-	dsprite -1,  0, -1,  0, $00, $81
-	dsprite -1,  0,  0,  0, $01, $81
-	dsprite  0,  0, -1,  0, $02, $81
-	dsprite  0,  0,  0,  0, $03, $81
-
-.OAMData_67:
-	db 1
-	dsprite -1,  4, -1,  4, $00, $02
-
-.OAMData_6c:
-	db 4
-	dsprite -2,  0, -1,  4, $00, $03
-	dsprite -1,  0, -1,  4, $01, $03
-	dsprite  0,  0, -1,  4, $02, $03
-	dsprite  1,  0, -1,  4, $03, $03
-
-.OAMData_6d:
-	db 4
-	dsprite -2,  0, -1,  4, $03, $44
-	dsprite -1,  0, -1,  4, $02, $44
-	dsprite  0,  0, -1,  4, $01, $44
-	dsprite  1,  0, -1,  4, $00, $44
-
-.OAMData_69:
-	db 4
-	dsprite -1,  0, -1,  0, $00, $01
-	dsprite -1,  0,  0,  0, $00, $21
-	dsprite  0,  0, -1,  0, $00, $41
-	dsprite  0,  0,  0,  0, $00, $61
-
-.OAMData_6a:
-	db 8
-	dsprite -2,  4, -2,  4, $00, $01
-	dsprite -2,  4, -1,  4, $01, $01
-	dsprite -2,  4,  0,  4, $00, $21
-	dsprite -1,  4, -2,  4, $02, $01
-	dsprite -1,  4,  0,  4, $02, $21
-	dsprite  0,  4, -2,  4, $00, $41
-	dsprite  0,  4, -1,  4, $01, $41
-	dsprite  0,  4,  0,  4, $00, $61
-
-.OAMData_6b:
-	db 12
-	dsprite -2,  0, -2,  0, $00, $01
-	dsprite -2,  0, -1,  0, $01, $01
-	dsprite -1,  0, -2,  0, $02, $01
-	dsprite -2,  0,  0,  0, $01, $21
-	dsprite -2,  0,  1,  0, $00, $21
-	dsprite -1,  0,  1,  0, $02, $21
-	dsprite  0,  0, -2,  0, $02, $41
-	dsprite  1,  0, -2,  0, $00, $41
-	dsprite  1,  0, -1,  0, $01, $41
-	dsprite  0,  0,  1,  0, $02, $61
-	dsprite  1,  0,  0,  0, $01, $61
-	dsprite  1,  0,  1,  0, $00, $61
-
-.OAMData_6e:
-	db 36
-	dsprite -3,  0,  1,  0, $05, $00
-	dsprite -3,  0,  2,  0, $06, $00
-	dsprite -3,  0,  3,  0, $07, $00
-	dsprite -2,  0, -3,  0, $11, $00
-	dsprite -2,  0, -2,  0, $12, $00
-	dsprite -2,  0, -1,  0, $13, $00
-	dsprite -2,  0,  0,  0, $14, $00
-	dsprite -2,  0,  1,  0, $15, $00
-	dsprite -2,  0,  2,  0, $16, $00
-	dsprite -2,  0,  3,  0, $17, $00
-	dsprite -1,  0, -4,  0, $20, $00
-	dsprite -1,  0, -3,  0, $21, $00
-	dsprite -1,  0, -2,  0, $22, $00
-	dsprite -1,  0, -1,  0, $23, $00
-	dsprite -1,  0,  0,  0, $24, $00
-	dsprite -1,  0,  1,  0, $25, $00
-	dsprite -1,  0,  2,  0, $26, $00
-	dsprite -1,  0,  3,  0, $27, $00
-	dsprite  0,  0, -4,  0, $30, $00
-	dsprite  0,  0, -3,  0, $31, $00
-	dsprite  0,  0, -2,  0, $32, $00
-	dsprite  0,  0, -1,  0, $33, $00
-	dsprite  0,  0,  0,  0, $34, $00
-	dsprite  0,  0,  1,  0, $35, $00
-	dsprite  0,  0,  2,  0, $36, $00
-	dsprite  1,  0, -4,  0, $40, $00
-	dsprite  1,  0, -3,  0, $41, $00
-	dsprite  1,  0, -2,  0, $42, $00
-	dsprite  1,  0, -1,  0, $43, $00
-	dsprite  1,  0,  0,  0, $44, $00
-	dsprite  1,  0,  1,  0, $45, $00
-	dsprite  1,  0,  2,  0, $46, $00
-	dsprite  1,  0,  3,  0, $47, $00
-	dsprite  2,  0, -4,  0, $50, $00
-	dsprite  2,  0, -3,  0, $51, $00
-	dsprite  2,  0,  3,  0, $57, $00
-
-.OAMData_6f:
-	db 28
-	dsprite -3,  0,  0,  0, $04, $00
-	dsprite -3,  0,  1,  0, $05, $00
-	dsprite -3,  0,  2,  0, $06, $00
-	dsprite -2,  0, -3,  0, $11, $00
-	dsprite -2,  0, -2,  0, $12, $00
-	dsprite -2,  0, -1,  0, $13, $00
-	dsprite -2,  0,  0,  0, $14, $00
-	dsprite -2,  0,  1,  0, $15, $00
-	dsprite -2,  0,  2,  0, $16, $00
-	dsprite -1,  0, -3,  0, $21, $00
-	dsprite -1,  0, -2,  0, $22, $00
-	dsprite -1,  0, -1,  0, $23, $00
-	dsprite -1,  0,  0,  0, $24, $00
-	dsprite -1,  0,  1,  0, $25, $00
-	dsprite -1,  0,  2,  0, $26, $00
-	dsprite  0,  0, -4,  0, $30, $00
-	dsprite  0,  0, -3,  0, $31, $00
-	dsprite  0,  0, -2,  0, $32, $00
-	dsprite  0,  0, -1,  0, $33, $00
-	dsprite  0,  0,  0,  0, $34, $00
-	dsprite  0,  0,  1,  0, $35, $00
-	dsprite  1,  0, -2,  0, $42, $00
-	dsprite  1,  0, -1,  0, $43, $00
-	dsprite  1,  0,  0,  0, $44, $00
-	dsprite  1,  0,  1,  0, $45, $00
-	dsprite  2,  0, -1,  0, $53, $00
-	dsprite  2,  0,  0,  0, $54, $00
-	dsprite  2,  0,  1,  0, $55, $00
-
-.OAMData_70:
-	db 30
-	dsprite -3,  0,  0,  0, $04, $00
-	dsprite -3,  0,  1,  0, $05, $00
-	dsprite -2,  0, -3,  0, $11, $00
-	dsprite -2,  0, -2,  0, $12, $00
-	dsprite -2,  0, -1,  0, $13, $00
-	dsprite -2,  0,  0,  0, $14, $00
-	dsprite -2,  0,  1,  0, $15, $00
-	dsprite -2,  0,  2,  0, $16, $00
-	dsprite -2,  0,  3,  0, $17, $00
-	dsprite -1,  0, -4,  0, $20, $00
-	dsprite -1,  0, -3,  0, $21, $00
-	dsprite -1,  0, -2,  0, $22, $00
-	dsprite -1,  0, -1,  0, $23, $00
-	dsprite -1,  0,  0,  0, $24, $00
-	dsprite -1,  0,  1,  0, $25, $00
-	dsprite -1,  0,  2,  0, $26, $00
-	dsprite  0,  0, -4,  0, $30, $00
-	dsprite  0,  0, -3,  0, $31, $00
-	dsprite  0,  0, -2,  0, $32, $00
-	dsprite  0,  0, -1,  0, $33, $00
-	dsprite  0,  0,  0,  0, $34, $00
-	dsprite  0,  0,  1,  0, $35, $00
-	dsprite  1,  0, -2,  0, $42, $00
-	dsprite  1,  0, -1,  0, $43, $00
-	dsprite  1,  0,  0,  0, $44, $00
-	dsprite  1,  0,  1,  0, $45, $00
-	dsprite  2,  0, -2,  0, $52, $00
-	dsprite  2,  0, -1,  0, $53, $00
-	dsprite  2,  0,  0,  0, $54, $00
-	dsprite  2,  0,  1,  0, $55, $00
-
-.OAMData_71:
-	db 31
-	dsprite -2,  0, -3,  0, $11, $00
-	dsprite -2,  0, -2,  0, $12, $00
-	dsprite -2,  0, -1,  0, $13, $00
-	dsprite -2,  0,  0,  0, $14, $00
-	dsprite -2,  0,  1,  0, $15, $00
-	dsprite -2,  0,  2,  0, $16, $00
-	dsprite -2,  0,  3,  0, $17, $00
-	dsprite -1,  0, -4,  0, $20, $00
-	dsprite -1,  0, -3,  0, $21, $00
-	dsprite -1,  0, -2,  0, $22, $00
-	dsprite -1,  0, -1,  0, $23, $00
-	dsprite -1,  0,  0,  0, $24, $00
-	dsprite -1,  0,  1,  0, $25, $00
-	dsprite -1,  0,  2,  0, $26, $00
-	dsprite -1,  0,  3,  0, $27, $00
-	dsprite  0,  0, -4,  0, $30, $00
-	dsprite  0,  0, -3,  0, $31, $00
-	dsprite  0,  0, -2,  0, $32, $00
-	dsprite  0,  0, -1,  0, $33, $00
-	dsprite  0,  0,  0,  0, $34, $00
-	dsprite  0,  0,  1,  0, $35, $00
-	dsprite  0,  0,  2,  0, $36, $00
-	dsprite  1,  0, -3,  0, $41, $00
-	dsprite  1,  0, -2,  0, $42, $00
-	dsprite  1,  0, -1,  0, $43, $00
-	dsprite  1,  0,  0,  0, $44, $00
-	dsprite  1,  0,  1,  0, $45, $00
-	dsprite  2,  0, -3,  0, $51, $00
-	dsprite  2,  0, -2,  0, $52, $00
-	dsprite  2,  0,  0,  0, $54, $00
-	dsprite  2,  0,  1,  0, $55, $00
-
-.OAMData_72:
-	db 25
-	dsprite -3,  4, -3,  4, $00, $09
-	dsprite -3,  4, -2,  4, $01, $09
-	dsprite -3,  4, -1,  4, $02, $09
-	dsprite -3,  4,  0,  4, $03, $09
-	dsprite -3,  4,  1,  4, $04, $09
-	dsprite -2,  4, -3,  4, $10, $09
-	dsprite -2,  4, -2,  4, $11, $09
-	dsprite -2,  4, -1,  4, $12, $09
-	dsprite -2,  4,  0,  4, $13, $09
-	dsprite -2,  4,  1,  4, $14, $09
-	dsprite -1,  4, -3,  4, $20, $09
-	dsprite -1,  4, -2,  4, $21, $09
-	dsprite -1,  4, -1,  4, $22, $09
-	dsprite -1,  4,  0,  4, $23, $09
-	dsprite -1,  4,  1,  4, $24, $09
-	dsprite  0,  4, -3,  4, $30, $09
-	dsprite  0,  4, -2,  4, $31, $09
-	dsprite  0,  4, -1,  4, $32, $09
-	dsprite  0,  4,  0,  4, $33, $09
-	dsprite  0,  4,  1,  4, $34, $09
-	dsprite  1,  4, -3,  4, $40, $09
-	dsprite  1,  4, -2,  4, $41, $09
-	dsprite  1,  4, -1,  4, $42, $09
-	dsprite  1,  4,  0,  4, $43, $09
-	dsprite  1,  4,  1,  4, $44, $09
-
-.OAMData_75:
-	db 16
-	dsprite -2,  0, -3,  4, $00, $0a
-	dsprite -2,  0, -2,  4, $01, $0a
-	dsprite -2,  0, -1,  4, $02, $0a
-	dsprite -2,  0,  0,  4, $03, $0a
-	dsprite -1,  0, -3,  4, $04, $0a
-	dsprite -1,  0, -2,  4, $05, $0a
-	dsprite -1,  0, -1,  4, $06, $0a
-	dsprite -1,  0,  0,  4, $07, $0a
-	dsprite  0,  0, -3,  4, $08, $0a
-	dsprite  0,  0, -2,  4, $09, $0a
-	dsprite  0,  0, -1,  4, $0a, $0a
-	dsprite  0,  0,  0,  4, $0b, $0a
-	dsprite  1,  0, -3,  4, $0c, $0a
-	dsprite  1,  0, -2,  4, $0d, $0a
-	dsprite  1,  0, -1,  4, $0e, $0a
-	dsprite  1,  0,  0,  4, $0f, $0a
-
-.OAMData_76:
-	db 1
-	dsprite -1,  4, -1,  4, $00, $00
-
-.OAMData_77:
-	db 3
-	dsprite  0,  0, -1,  0, $00, $00
-	dsprite -1,  0, -1,  0, $01, $00
-	dsprite -1,  0,  0,  0, $02, $00
-
-.OAMData_78:
-	db 7
-	dsprite  1,  0, -2,  0, $00, $00
-	dsprite  0,  0, -2,  0, $01, $00
-	dsprite -1,  0, -2,  0, $02, $00
-	dsprite -1,  0, -1,  0, $03, $00
-	dsprite -2,  0, -1,  0, $04, $00
-	dsprite -2,  0,  0,  0, $05, $00
-	dsprite -2,  0,  1,  0, $06, $00
-
-.OAMData_7a:
-	db 8
-	dsprite -1,  0, -2,  0, $00, $00
-	dsprite -1,  0, -1,  0, $01, $00
-	dsprite -1,  0,  0,  0, $01, $20
-	dsprite -1,  0,  1,  0, $00, $20
-	dsprite  0,  0, -2,  0, $00, $40
-	dsprite  0,  0, -1,  0, $01, $40
-	dsprite  0,  0,  0,  0, $01, $60
-	dsprite  0,  0,  1,  0, $00, $60
-
-.OAMData_7b:
-	db 12
-	dsprite -3,  0, -1,  0, $00, $00
-	dsprite -2,  0, -1,  0, $01, $00
-	dsprite -1,  0, -1,  0, $02, $00
-	dsprite -3,  0,  0,  0, $00, $20
-	dsprite -2,  0,  0,  0, $01, $20
-	dsprite -1,  0,  0,  0, $02, $20
-	dsprite  0,  0, -1,  0, $02, $40
-	dsprite  1,  0, -1,  0, $01, $40
-	dsprite  2,  0, -1,  0, $00, $40
-	dsprite  0,  0,  0,  0, $02, $60
-	dsprite  1,  0,  0,  0, $01, $60
-	dsprite  2,  0,  0,  0, $00, $60
-
-.OAMData_7c:
-	db 20
-	dsprite -3,  4, -2,  0, $00, $00
-	dsprite -3,  4, -1,  0, $01, $00
-	dsprite -3,  4,  0,  0, $02, $00
-	dsprite -3,  4,  1,  0, $03, $00
-	dsprite -2,  4, -2,  0, $04, $00
-	dsprite -2,  4, -1,  0, $05, $00
-	dsprite -2,  4,  0,  0, $06, $00
-	dsprite -2,  4,  1,  0, $07, $00
-	dsprite -1,  4, -2,  0, $08, $00
-	dsprite -1,  4, -1,  0, $09, $00
-	dsprite -1,  4,  0,  0, $0a, $00
-	dsprite -1,  4,  1,  0, $0b, $00
-	dsprite  0,  4, -2,  0, $0c, $00
-	dsprite  0,  4, -1,  0, $0d, $00
-	dsprite  0,  4,  0,  0, $0e, $00
-	dsprite  0,  4,  1,  0, $0f, $00
-	dsprite  1,  4, -2,  0, $10, $00
-	dsprite  1,  4, -1,  0, $11, $00
-	dsprite  1,  4,  0,  0, $12, $00
-	dsprite  1,  4,  1,  0, $13, $00
-
-.OAMData_7e:
-	db 20
-	dsprite  0,  0,   1,  0, $00, $81
-	dsprite  1,  0,   2,  0, $00, $81
-	dsprite  2,  0,   3,  0, $00, $81
-	dsprite  3,  0,   4,  0, $00, $81
-	dsprite  4,  0,   5,  0, $00, $81
-	dsprite  3,  0,   6,  0, $00, $81
-	dsprite  2,  0,   7,  0, $00, $81
-	dsprite  1,  0,   8,  0, $00, $81
-	dsprite  0,  0,   9,  0, $00, $81
-	dsprite  1,  0,  10,  0, $00, $81
-	dsprite  2,  0,  11,  0, $00, $81
-	dsprite  3,  0,  12,  0, $00, $81
-	dsprite  4,  0,  13,  0, $00, $81
-	dsprite  3,  0,  14,  0, $00, $81
-	dsprite  2,  0,  15,  0, $00, $81
-	dsprite  1,  0,  16,  0, $00, $81
-	dsprite  0,  0, -15,  0, $00, $81
-	dsprite  1,  0, -14,  0, $00, $81
-	dsprite  2,  0, -13,  0, $00, $81
-	dsprite  3,  0, -12,  0, $00, $81
-
-.OAMData_7f:
-	db 4
-	dsprite -1,  0, -1,  0, $00, $02
-	dsprite -1,  0,  0,  0, $01, $02
-	dsprite  0,  0, -1,  0, $02, $02
-	dsprite  0,  0,  0,  0, $03, $02
-
-.OAMData_81:
-	db 9
-	dsprite -2,  0, -2,  4, $00, $01
-	dsprite -2,  0, -1,  4, $01, $01
-	dsprite -2,  0,  0,  4, $02, $01
-	dsprite -1,  0, -2,  4, $10, $01
-	dsprite -1,  0, -1,  4, $11, $01
-	dsprite -1,  0,  0,  4, $12, $01
-	dsprite  0,  0, -2,  4, $20, $01
-	dsprite  0,  0, -1,  4, $21, $01
-	dsprite  0,  0,  0,  4, $22, $01
-
-.OAMData_84:
-	db 24
-	dsprite -5,  0, -2,  4, $00, $01
-	dsprite -5,  0, -1,  4, $01, $01
-	dsprite -5,  0,  0,  4, $02, $01
-	dsprite -5,  0,  1,  4, $03, $01
-	dsprite -4,  0, -2,  4, $10, $01
-	dsprite -4,  0, -1,  4, $11, $01
-	dsprite -4,  0,  0,  4, $12, $01
-	dsprite -4,  0,  1,  4, $13, $01
-	dsprite -3,  0, -2,  4, $20, $01
-	dsprite -3,  0, -1,  4, $21, $01
-	dsprite -3,  0,  0,  4, $22, $01
-	dsprite -3,  0,  1,  4, $23, $01
-	dsprite -2,  0, -2,  4, $30, $01
-	dsprite -2,  0, -1,  4, $31, $01
-	dsprite -2,  0,  0,  4, $32, $01
-	dsprite -2,  0,  1,  4, $33, $01
-	dsprite -1,  0, -2,  4, $40, $01
-	dsprite -1,  0, -1,  4, $41, $01
-	dsprite -1,  0,  0,  4, $42, $01
-	dsprite -1,  0,  1,  4, $43, $01
-	dsprite  0,  0, -2,  4, $50, $01
-	dsprite  0,  0, -1,  4, $51, $01
-	dsprite  0,  0,  0,  4, $52, $01
-	dsprite  0,  0,  1,  4, $53, $01
-; 8e706
-
-BrokenStdGFXPointers: ; Broken 2bpp pointers
-	dbbw $80, $01, .deleted ; 128-tile 2bpp at 1:672a (inside Multiply)
-	dbbw $80, $01, .deleted
-	dbbw $80, $01, .deleted
-	dbbw $80, $01, .deleted
-	dbbw $10, $37, .deleted ; 16-tile 2bpp at 37:672a (within Tileset11GFX)
-	dbbw $10, $11, .deleted ; 16-tile 2bpp at 11:672a (empty data)
-	dbbw $10, $39, .deleted ; 16-tile 2bpp at 39:672a (empty data)
-	dbbw $10, $24, .deleted ; 16-tile 2bpp at 24:672a (inside Function926f7)
-	dbbw $10, $21, .deleted ; 16-tile 2bpp at 21:672a (inside Function8671c)
-
-.deleted
-; 8e72a (23:672a)
--- /dev/null
+++ b/data/sprite_mons.asm
@@ -1,0 +1,38 @@
+SpriteMons: ; 14495
+; entries correspond to SPRITE_* constants past SPRITE_POKEMON
+	db UNOWN
+	db GEODUDE
+	db GROWLITHE
+	db WEEDLE
+	db SHELLDER
+	db ODDISH
+	db GENGAR
+	db ZUBAT
+	db MAGIKARP
+	db SQUIRTLE
+	db TOGEPI
+	db BUTTERFREE
+	db DIGLETT
+	db POLIWAG
+	db PIKACHU
+	db CLEFAIRY
+	db CHARMANDER
+	db JYNX
+	db STARMIE
+	db BULBASAUR
+	db JIGGLYPUFF
+	db GRIMER
+	db EKANS
+	db PARAS
+	db TENTACOOL
+	db TAUROS
+	db MACHOP
+	db VOLTORB
+	db LAPRAS
+	db RHYDON
+	db MOLTRES
+	db SNORLAX
+	db GYARADOS
+	db LUGIA
+	db HO_OH
+; 144b8
--- /dev/null
+++ b/data/time_capsule/catch_rate_items.asm
@@ -1,0 +1,19 @@
+; Pokémon traded from RBY do not have held items, so GSC usually interprets the
+; catch rate as an item. However, if the catch rate appears in this table, the
+; item associated with the table entry is used instead.
+
+TimeCapsule_CatchRateItems: ; 28785
+	db ITEM_19, LEFTOVERS
+	db ITEM_2D, BITTER_BERRY
+	db ITEM_32, GOLD_BERRY
+	db ITEM_5A, BERRY
+	db ITEM_64, BERRY
+	db ITEM_78, BERRY
+	db ITEM_87, BERRY
+	db ITEM_BE, BERRY
+	db ITEM_C3, BERRY
+	db ITEM_DC, BERRY
+	db ITEM_FA, BERRY
+	db -1,      BERRY
+	db  0 ; end
+; 2879e
--- /dev/null
+++ b/data/time_capsule/mon_order.asm
@@ -1,0 +1,255 @@
+Pokered_MonIndices: ; fb91c
+	db RHYDON
+	db KANGASKHAN
+	db NIDORAN_M
+	db CLEFAIRY
+	db SPEAROW
+	db VOLTORB
+	db NIDOKING
+	db SLOWBRO
+	db IVYSAUR
+	db EXEGGUTOR
+	db LICKITUNG
+	db EXEGGCUTE
+	db GRIMER
+	db GENGAR
+	db NIDORAN_F
+	db NIDOQUEEN
+	db CUBONE
+	db RHYHORN
+	db LAPRAS
+	db ARCANINE
+	db MEW
+	db GYARADOS
+	db SHELLDER
+	db TENTACOOL
+	db GASTLY
+	db SCYTHER
+	db STARYU
+	db BLASTOISE
+	db PINSIR
+	db TANGELA
+	db SCIZOR ; MISSINGNO.
+	db SHUCKLE ; MISSINGNO.
+	db GROWLITHE
+	db ONIX
+	db FEAROW
+	db PIDGEY
+	db SLOWPOKE
+	db KADABRA
+	db GRAVELER
+	db CHANSEY
+	db MACHOKE
+	db MR__MIME
+	db HITMONLEE
+	db HITMONCHAN
+	db ARBOK
+	db PARASECT
+	db PSYDUCK
+	db DROWZEE
+	db GOLEM
+	db HERACROSS ; MISSINGNO.
+	db MAGMAR
+	db HO_OH ; MISSINGNO.
+	db ELECTABUZZ
+	db MAGNETON
+	db KOFFING
+	db SNEASEL ; MISSINGNO.
+	db MANKEY
+	db SEEL
+	db DIGLETT
+	db TAUROS
+	db TEDDIURSA ; MISSINGNO.
+	db URSARING ; MISSINGNO.
+	db SLUGMA ; MISSINGNO.
+	db FARFETCH_D
+	db VENONAT
+	db DRAGONITE
+	db MAGCARGO ; MISSINGNO.
+	db SWINUB ; MISSINGNO.
+	db PILOSWINE ; MISSINGNO.
+	db DODUO
+	db POLIWAG
+	db JYNX
+	db MOLTRES
+	db ARTICUNO
+	db ZAPDOS
+	db DITTO
+	db MEOWTH
+	db KRABBY
+	db CORSOLA ; MISSINGNO.
+	db REMORAID ; MISSINGNO.
+	db OCTILLERY ; MISSINGNO.
+	db VULPIX
+	db NINETALES
+	db PIKACHU
+	db RAICHU
+	db DELIBIRD ; MISSINGNO.
+	db MANTINE ; MISSINGNO.
+	db DRATINI
+	db DRAGONAIR
+	db KABUTO
+	db KABUTOPS
+	db HORSEA
+	db SEADRA
+	db SKARMORY ; MISSINGNO.
+	db HOUNDOUR ; MISSINGNO.
+	db SANDSHREW
+	db SANDSLASH
+	db OMANYTE
+	db OMASTAR
+	db JIGGLYPUFF
+	db WIGGLYTUFF
+	db EEVEE
+	db FLAREON
+	db JOLTEON
+	db VAPOREON
+	db MACHOP
+	db ZUBAT
+	db EKANS
+	db PARAS
+	db POLIWHIRL
+	db POLIWRATH
+	db WEEDLE
+	db KAKUNA
+	db BEEDRILL
+	db HOUNDOOM ; MISSINGNO.
+	db DODRIO
+	db PRIMEAPE
+	db DUGTRIO
+	db VENOMOTH
+	db DEWGONG
+	db KINGDRA ; MISSINGNO.
+	db PHANPY ; MISSINGNO.
+	db CATERPIE
+	db METAPOD
+	db BUTTERFREE
+	db MACHAMP
+	db DONPHAN ; MISSINGNO.
+	db GOLDUCK
+	db HYPNO
+	db GOLBAT
+	db MEWTWO
+	db SNORLAX
+	db MAGIKARP
+	db PORYGON2 ; MISSINGNO.
+	db STANTLER ; MISSINGNO.
+	db MUK
+	db SMEARGLE ; MISSINGNO.
+	db KINGLER
+	db CLOYSTER
+	db TYROGUE ; MISSINGNO.
+	db ELECTRODE
+	db CLEFABLE
+	db WEEZING
+	db PERSIAN
+	db MAROWAK
+	db HITMONTOP ; MISSINGNO.
+	db HAUNTER
+	db ABRA
+	db ALAKAZAM
+	db PIDGEOTTO
+	db PIDGEOT
+	db STARMIE
+	db BULBASAUR
+	db VENUSAUR
+	db TENTACRUEL
+	db SMOOCHUM ; MISSINGNO.
+	db GOLDEEN
+	db SEAKING
+	db ELEKID ; MISSINGNO.
+	db MAGBY ; MISSINGNO.
+	db MILTANK ; MISSINGNO.
+	db BLISSEY ; MISSINGNO.
+	db PONYTA
+	db RAPIDASH
+	db RATTATA
+	db RATICATE
+	db NIDORINO
+	db NIDORINA
+	db GEODUDE
+	db PORYGON
+	db AERODACTYL
+	db RAIKOU ; MISSINGNO.
+	db MAGNEMITE
+	db ENTEI ; MISSINGNO.
+	db SUICUNE ; MISSINGNO.
+	db CHARMANDER
+	db SQUIRTLE
+	db CHARMELEON
+	db WARTORTLE
+	db CHARIZARD
+	db LARVITAR ; MISSINGNO.
+	db PUPITAR ; MISSINGNO. KABUTOPS FOSSIL
+	db TYRANITAR ; MISSINGNO. AERODACTYL FOSSIL
+	db LUGIA ; MISSINGNO. GHOST
+	db ODDISH
+	db GLOOM
+	db VILEPLUME
+	db BELLSPROUT
+	db WEEPINBELL
+	db VICTREEBEL
+
+	db CHIKORITA
+	db BAYLEEF
+	db MEGANIUM
+	db CYNDAQUIL
+	db QUILAVA
+	db TYPHLOSION
+	db TOTODILE
+	db CROCONAW
+	db FERALIGATR
+	db SENTRET
+	db FURRET
+	db HOOTHOOT
+	db NOCTOWL
+	db LEDYBA
+	db LEDIAN
+	db SPINARAK
+	db ARIADOS
+	db CROBAT
+	db CHINCHOU
+	db LANTURN
+	db PICHU
+	db CLEFFA
+	db IGGLYBUFF
+	db TOGEPI
+	db TOGETIC
+	db NATU
+	db XATU
+	db MAREEP
+	db FLAAFFY
+	db AMPHAROS
+	db BELLOSSOM
+	db MARILL
+	db AZUMARILL
+	db SUDOWOODO
+	db POLITOED
+	db HOPPIP
+	db SKIPLOOM
+	db JUMPLUFF
+	db AIPOM
+	db SUNKERN
+	db SUNFLORA
+	db YANMA
+	db WOOPER
+	db QUAGSIRE
+	db ESPEON
+	db UMBREON
+	db MURKROW
+	db SLOWKING
+	db MISDREAVUS
+	db UNOWN
+	db WOBBUFFET
+	db GIRAFARIG
+	db PINECO
+	db FORRETRESS
+	db DUNSPARCE
+	db GLIGAR
+	db STEELIX
+	db SNUBBULL
+	db GRANBULL
+	db QWILFISH
+	db WOBBUFFET
+	db WOBBUFFET
+; fba18
--- /dev/null
+++ b/data/time_capsule/special_stats.asm
@@ -1,0 +1,155 @@
+; The original base Special stat for each Pokémon from Red/Blue
+
+KantoMonSpecials: ; fb656
+	db  65 ; BULBASAUR
+	db  80 ; IVYSAUR
+	db 100 ; VENUSAUR
+	db  50 ; CHARMANDER
+	db  65 ; CHARMELEON
+	db  85 ; CHARIZARD
+	db  50 ; SQUIRTLE
+	db  65 ; WARTORTLE
+	db  85 ; BLASTOISE
+	db  20 ; CATERPIE
+	db  25 ; METAPOD
+	db  80 ; BUTTERFREE
+	db  20 ; WEEDLE
+	db  25 ; KAKUNA
+	db  45 ; BEEDRILL
+	db  35 ; PIDGEY
+	db  50 ; PIDGEOTTO
+	db  70 ; PIDGEOT
+	db  25 ; RATTATA
+	db  50 ; RATICATE
+	db  31 ; SPEAROW
+	db  61 ; FEAROW
+	db  40 ; EKANS
+	db  65 ; ARBOK
+	db  50 ; PIKACHU
+	db  90 ; RAICHU
+	db  30 ; SANDSHREW
+	db  55 ; SANDSLASH
+	db  40 ; NIDORAN_F
+	db  55 ; NIDORINA
+	db  75 ; NIDOQUEEN
+	db  40 ; NIDORAN_M
+	db  55 ; NIDORINO
+	db  75 ; NIDOKING
+	db  60 ; CLEFAIRY
+	db  85 ; CLEFABLE
+	db  65 ; VULPIX
+	db 100 ; NINETALES
+	db  25 ; JIGGLYPUFF
+	db  50 ; WIGGLYTUFF
+	db  40 ; ZUBAT
+	db  75 ; GOLBAT
+	db  75 ; ODDISH
+	db  85 ; GLOOM
+	db 100 ; VILEPLUME
+	db  55 ; PARAS
+	db  80 ; PARASECT
+	db  40 ; VENONAT
+	db  90 ; VENOMOTH
+	db  45 ; DIGLETT
+	db  70 ; DUGTRIO
+	db  40 ; MEOWTH
+	db  65 ; PERSIAN
+	db  50 ; PSYDUCK
+	db  80 ; GOLDUCK
+	db  35 ; MANKEY
+	db  60 ; PRIMEAPE
+	db  50 ; GROWLITHE
+	db  80 ; ARCANINE
+	db  40 ; POLIWAG
+	db  50 ; POLIWHIRL
+	db  70 ; POLIWRATH
+	db 105 ; ABRA
+	db 120 ; KADABRA
+	db 135 ; ALAKAZAM
+	db  35 ; MACHOP
+	db  50 ; MACHOKE
+	db  65 ; MACHAMP
+	db  70 ; BELLSPROUT
+	db  85 ; WEEPINBELL
+	db 100 ; VICTREEBEL
+	db 100 ; TENTACOOL
+	db 120 ; TENTACRUEL
+	db  30 ; GEODUDE
+	db  45 ; GRAVELER
+	db  55 ; GOLEM
+	db  65 ; PONYTA
+	db  80 ; RAPIDASH
+	db  40 ; SLOWPOKE
+	db  80 ; SLOWBRO
+	db  95 ; MAGNEMITE
+	db 120 ; MAGNETON
+	db  58 ; FARFETCH_D
+	db  35 ; DODUO
+	db  60 ; DODRIO
+	db  70 ; SEEL
+	db  95 ; DEWGONG
+	db  40 ; GRIMER
+	db  65 ; MUK
+	db  45 ; SHELLDER
+	db  85 ; CLOYSTER
+	db 100 ; GASTLY
+	db 115 ; HAUNTER
+	db 130 ; GENGAR
+	db  30 ; ONIX
+	db  90 ; DROWZEE
+	db 115 ; HYPNO
+	db  25 ; KRABBY
+	db  50 ; KINGLER
+	db  55 ; VOLTORB
+	db  80 ; ELECTRODE
+	db  60 ; EXEGGCUTE
+	db 125 ; EXEGGUTOR
+	db  40 ; CUBONE
+	db  50 ; MAROWAK
+	db  35 ; HITMONLEE
+	db  35 ; HITMONCHAN
+	db  60 ; LICKITUNG
+	db  60 ; KOFFING
+	db  85 ; WEEZING
+	db  30 ; RHYHORN
+	db  45 ; RHYDON
+	db 105 ; CHANSEY
+	db 100 ; TANGELA
+	db  40 ; KANGASKHAN
+	db  70 ; HORSEA
+	db  95 ; SEADRA
+	db  50 ; GOLDEEN
+	db  80 ; SEAKING
+	db  70 ; STARYU
+	db 100 ; STARMIE
+	db 100 ; MR__MIME
+	db  55 ; SCYTHER
+	db  95 ; JYNX
+	db  85 ; ELECTABUZZ
+	db  85 ; MAGMAR
+	db  55 ; PINSIR
+	db  70 ; TAUROS
+	db  20 ; MAGIKARP
+	db 100 ; GYARADOS
+	db  95 ; LAPRAS
+	db  48 ; DITTO
+	db  65 ; EEVEE
+	db 110 ; VAPOREON
+	db 110 ; JOLTEON
+	db 110 ; FLAREON
+	db  75 ; PORYGON
+	db  90 ; OMANYTE
+	db 115 ; OMASTAR
+	db  45 ; KABUTO
+	db  70 ; KABUTOPS
+	db  60 ; AERODACTYL
+	db  65 ; SNORLAX
+	db 125 ; ARTICUNO
+	db 125 ; ZAPDOS
+	db 125 ; MOLTRES
+	db  50 ; DRATINI
+	db  70 ; DRAGONAIR
+	db 100 ; DRAGONITE
+	db 154 ; MEWTWO
+	db 100 ; MEW
+; fb6ed
--- /dev/null
+++ b/data/tmhm_moves.asm
@@ -1,0 +1,69 @@
+TMHMMoves: ; 1167a
+; TMs
+	db DYNAMICPUNCH
+	db HEADBUTT
+	db CURSE
+	db ROLLOUT
+	db ROAR
+	db TOXIC
+	db ZAP_CANNON
+	db ROCK_SMASH
+	db PSYCH_UP
+	db HIDDEN_POWER
+	db SUNNY_DAY
+	db SWEET_SCENT
+	db SNORE
+	db BLIZZARD
+	db HYPER_BEAM
+	db ICY_WIND
+	db PROTECT
+	db RAIN_DANCE
+	db GIGA_DRAIN
+	db ENDURE
+	db FRUSTRATION
+	db SOLARBEAM
+	db IRON_TAIL
+	db DRAGONBREATH
+	db THUNDER
+	db EARTHQUAKE
+	db RETURN
+	db DIG
+	db PSYCHIC_M
+	db SHADOW_BALL
+	db MUD_SLAP
+	db DOUBLE_TEAM
+	db ICE_PUNCH
+	db SWAGGER
+	db SLEEP_TALK
+	db SLUDGE_BOMB
+	db SANDSTORM
+	db FIRE_BLAST
+	db SWIFT
+	db DEFENSE_CURL
+	db THUNDERPUNCH
+	db DREAM_EATER
+	db DETECT
+	db REST
+	db ATTRACT
+	db THIEF
+	db STEEL_WING
+	db FIRE_PUNCH
+	db FURY_CUTTER
+	db NIGHTMARE
+
+; HMs
+	db CUT
+	db FLY
+	db SURF
+	db STRENGTH
+	db FLASH
+	db WHIRLPOOL
+	db WATERFALL
+
+; Move tutor
+	db FLAMETHROWER
+	db THUNDERBOLT
+	db ICE_BEAM
+
+	db 0 ; end
+; 116b7
--- /dev/null
+++ b/data/wild/bug_contest_mons.asm
@@ -1,0 +1,14 @@
+ContestMons: ; 97d87
+	;   %, species,   min, max
+	db 20, CATERPIE,    7, 18
+	db 20, WEEDLE,      7, 18
+	db 10, METAPOD,     9, 18
+	db 10, KAKUNA,      9, 18
+	db  5, BUTTERFREE, 12, 15
+	db  5, BEEDRILL,   12, 15
+	db 10, VENONAT,    10, 16
+	db 10, PARAS,      10, 17
+	db  5, SCYTHER,    13, 14
+	db  5, PINSIR,     13, 14
+	db -1, VENOMOTH,   30, 40
+; 97db3
--- a/data/wild/johto_grass.asm
+++ b/data/wild/johto_grass.asm
@@ -1,5 +1,7 @@
 ; Johto Pokémon in grass
 
+JohtoGrassWildMons: ; 0x2a5e9
+
 	map SPROUT_TOWER_2F
 	db 2 percent, 2 percent, 2 percent ; encounter rates: morn/day/nite
 	; morn
--- a/data/wild/johto_water.asm
+++ b/data/wild/johto_water.asm
@@ -1,5 +1,7 @@
 ; Johto Pokémon in water
 
+JohtoWaterWildMons: ; 0x2b11d
+
 	map RUINS_OF_ALPH_OUTSIDE
 	db 2 percent ; encounter rate
 	db 15, WOOPER
--- a/data/wild/kanto_grass.asm
+++ b/data/wild/kanto_grass.asm
@@ -1,5 +1,7 @@
 ; Kanto Pokémon in grass
 
+KantoGrassWildMons: ; 0x2b274
+
 	map DIGLETTS_CAVE
 	db 4 percent, 2 percent, 8 percent ; encounter rates: morn/day/nite
 	; morn
--- a/data/wild/kanto_water.asm
+++ b/data/wild/kanto_water.asm
@@ -1,5 +1,7 @@
 ; Kanto Pokémon in water
 
+KantoWaterWildMons: ; 0x2b7f7
+
 	map TOHJO_FALLS
 	db 4 percent ; encounter rate
 	db 20, GOLDEEN
--- /dev/null
+++ b/data/wild/probabilities.asm
@@ -1,0 +1,15 @@
+GrassMonProbTable: ; 2a1cb
+	db 30,  $0 ; 30% chance
+	db 60,  $2 ; 30% chance
+	db 80,  $4 ; 20% chance
+	db 90,  $6 ; 10% chance
+	db 95,  $8 ;  5% chance
+	db 99,  $a ;  4% chance
+	db 100, $c ;  1% chance
+; 2a1d9
+
+WaterMonProbTable: ; 2a1d9
+	db 60,  $0 ; 60% chance
+	db 90,  $2 ; 30% chance
+	db 100, $4 ; 10% chance
+; 2a1df
--- /dev/null
+++ b/data/wild/roammon_maps.asm
@@ -1,0 +1,33 @@
+; Maps that roaming monsters can be on, and possible maps they can jump to.
+; Notably missing are Route 40 and Route 41, which are water routes.
+
+roam_map: macro
+; map, # of other maps, other maps
+	map \1
+	db  \2
+rept \2
+	map \3
+	shift
+endr
+	db 0
+endm
+
+RoamMaps: ; 2a40f
+	roam_map ROUTE_29, 2, ROUTE_30, ROUTE_46
+	roam_map ROUTE_30, 2, ROUTE_29, ROUTE_31
+	roam_map ROUTE_31, 3, ROUTE_30, ROUTE_32, ROUTE_36
+	roam_map ROUTE_32, 3, ROUTE_36, ROUTE_31, ROUTE_33
+	roam_map ROUTE_33, 2, ROUTE_32, ROUTE_34
+	roam_map ROUTE_34, 2, ROUTE_33, ROUTE_35
+	roam_map ROUTE_35, 2, ROUTE_34, ROUTE_36
+	roam_map ROUTE_36, 4, ROUTE_35, ROUTE_31, ROUTE_32, ROUTE_37
+	roam_map ROUTE_37, 3, ROUTE_36, ROUTE_38, ROUTE_42
+	roam_map ROUTE_38, 3, ROUTE_37, ROUTE_39, ROUTE_42
+	roam_map ROUTE_39, 1, ROUTE_38
+	roam_map ROUTE_42, 4, ROUTE_43, ROUTE_44, ROUTE_37, ROUTE_38
+	roam_map ROUTE_43, 2, ROUTE_42, ROUTE_44
+	roam_map ROUTE_44, 3, ROUTE_42, ROUTE_43, ROUTE_45
+	roam_map ROUTE_45, 2, ROUTE_44, ROUTE_46
+	roam_map ROUTE_46, 2, ROUTE_45, ROUTE_29
+	db -1 ; end
+; 2a4a0
--- a/data/wild/swarm_grass.asm
+++ b/data/wild/swarm_grass.asm
@@ -1,4 +1,6 @@
-; swarms in grass
+; Pokémon swarms in grass
+
+SwarmGrassWildMons: ; 0x2b8d0
 
 ; Dunsparce swarm
 	map DARK_CAVE_VIOLET_ENTRANCE
--- a/data/wild/swarm_water.asm
+++ b/data/wild/swarm_water.asm
@@ -1,4 +1,6 @@
-; swarms in water
+; Pokémon swarms in water
+
+SwarmWaterWildMons: ; 0x2b92f
 
 	; No swarms encountered while surfing in Crystal
 
--- /dev/null
+++ b/data/wild/treemon_maps.asm
@@ -1,0 +1,50 @@
+treemon_map: macro
+	map \1
+	db  \2 ; treemon set
+endm
+
+TreeMonMaps: ; b825e
+	treemon_map ROUTE_26, 4
+	treemon_map ROUTE_27, 4
+	treemon_map ROUTE_28, 0
+	treemon_map ROUTE_29, 3
+	treemon_map ROUTE_30, 3
+	treemon_map ROUTE_31, 3
+	treemon_map ROUTE_32, 4
+	treemon_map ROUTE_33, 2
+	treemon_map ROUTE_34, 3
+	treemon_map ROUTE_35, 3
+	treemon_map ROUTE_36, 3
+	treemon_map ROUTE_37, 3
+	treemon_map ROUTE_38, 3
+	treemon_map ROUTE_39, 3
+	treemon_map ROUTE_40, 0
+	treemon_map ROUTE_41, 0
+	treemon_map ROUTE_42, 2
+	treemon_map ROUTE_43, 5
+	treemon_map ROUTE_44, 1
+	treemon_map ROUTE_45, 1
+	treemon_map ROUTE_46, 1
+	treemon_map NEW_BARK_TOWN, 0
+	treemon_map CHERRYGROVE_CITY, 0
+	treemon_map VIOLET_CITY, 0
+	treemon_map AZALEA_TOWN, 2
+	treemon_map CIANWOOD_CITY, 0
+	treemon_map GOLDENROD_CITY, 0
+	treemon_map OLIVINE_CITY, 0
+	treemon_map ECRUTEAK_CITY, 0
+	treemon_map MAHOGANY_TOWN, 0
+	treemon_map LAKE_OF_RAGE, 5
+	treemon_map BLACKTHORN_CITY, 0
+	treemon_map SILVER_CAVE_OUTSIDE, 0
+	treemon_map ILEX_FOREST, 6
+	db -1
+; b82c5
+
+RockMonMaps: ; b82c5
+	treemon_map CIANWOOD_CITY, 7
+	treemon_map ROUTE_40, 7
+	treemon_map DARK_CAVE_VIOLET_ENTRANCE, 7
+	treemon_map SLOWPOKE_WELL_B1F, 7
+	db -1
+; b82d2
--- /dev/null
+++ b/data/wild/treemons.asm
@@ -1,0 +1,128 @@
+TreeMons: ; b82e8
+	dw TreeMons1
+	dw TreeMons1
+	dw TreeMons2
+	dw TreeMons3
+	dw TreeMons4
+	dw TreeMons5
+	dw TreeMons6
+	dw RockMons
+	dw TreeMons1
+
+; Two tables each (common, rare).
+; Structure:
+;	db  %, species, level
+
+TreeMons1: ; b82fa
+; common
+	db 50, SPEAROW,    10
+	db 15, SPEAROW,    10
+	db 15, SPEAROW,    10
+	db 10, AIPOM,      10
+	db  5, AIPOM,      10
+	db  5, AIPOM,      10
+	db -1
+; rare
+	db 50, SPEAROW,    10
+	db 15, HERACROSS,  10
+	db 15, HERACROSS,  10
+	db 10, AIPOM,      10
+	db  5, AIPOM,      10
+	db  5, AIPOM,      10
+	db -1
+
+TreeMons2: ; b8320
+; common
+	db 50, SPEAROW,    10
+	db 15, EKANS,      10
+	db 15, SPEAROW,    10
+	db 10, AIPOM,      10
+	db  5, AIPOM,      10
+	db  5, AIPOM,      10
+	db -1
+; rare
+	db 50, SPEAROW,    10
+	db 15, HERACROSS,  10
+	db 15, HERACROSS,  10
+	db 10, AIPOM,      10
+	db  5, AIPOM,      10
+	db  5, AIPOM,      10
+	db -1
+
+TreeMons3: ; b8346
+; common
+	db 50, HOOTHOOT,   10
+	db 15, SPINARAK,   10
+	db 15, LEDYBA,     10
+	db 10, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db -1
+; rare
+	db 50, HOOTHOOT,   10
+	db 15, PINECO,     10
+	db 15, PINECO,     10
+	db 10, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db -1
+
+TreeMons4: ; b836c
+; common
+	db 50, HOOTHOOT,   10
+	db 15, EKANS,      10
+	db 15, HOOTHOOT,   10
+	db 10, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db -1
+; rare
+	db 50, HOOTHOOT,   10
+	db 15, PINECO,     10
+	db 15, PINECO,     10
+	db 10, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db -1
+
+TreeMons5: ; b8392
+; common
+	db 50, HOOTHOOT,   10
+	db 15, VENONAT,    10
+	db 15, HOOTHOOT,   10
+	db 10, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db -1
+; rare
+	db 50, HOOTHOOT,   10
+	db 15, PINECO,     10
+	db 15, PINECO,     10
+	db 10, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db -1
+
+TreeMons6: ; b83b8
+; common
+	db 50, HOOTHOOT,   10
+	db 15, PINECO,     10
+	db 15, PINECO,     10
+	db 10, NOCTOWL,    10
+	db  5, BUTTERFREE, 10
+	db  5, BEEDRILL,   10
+	db -1
+; rare
+	db 50, HOOTHOOT,   10
+	db 15, CATERPIE,   10
+	db 15, WEEDLE,     10
+	db 10, HOOTHOOT,   10
+	db  5, METAPOD,    10
+	db  5, KAKUNA,     10
+	db -1
+
+RockMons: ; b83de
+	db 90, KRABBY,     15
+	db 10, SHUCKLE,    15
+	db -1
+; b83e5
--- /dev/null
+++ b/docs/map_scripts.md
@@ -1,0 +1,118 @@
+# Map Scripts
+
+
+## `const_value set 2`
+
+### `const` *`MAPNAME_PERSONNAME`*
+
+
+## `MapName_MapScriptHeader:`
+
+
+## `.MapTriggers: db` *N*
+
+### `maptrigger` *script*
+
+
+## `.MapCallbacks: db` *N*
+
+### `dbw` *type*, *script*
+
+
+## Scripts
+
+
+## Text
+
+- **`text`**
+- **`line`**
+- **`cont`**
+- **`para`**
+- **`done`**
+
+
+## `MapName_MapEventHeader:`
+
+	; filler
+	db 0, 0
+
+
+## `.Warps: db` *N*
+
+### `warp_def` *y*, *x*, *warp_id*, *map*
+
+
+## `.XYTriggers: db` *N*
+
+### `xy_trigger` *id*, *y*, *x*, `$0`, *script*, `$0`, `$0`
+
+
+## `.Signposts: db` *N*
+
+### `signpost` *y*, *x*, *type*, *script*
+
+#### Signpost types:
+
+- **`SIGNPOST_READ`**
+
+- **`SIGNPOST_UP/DOWN/LEFT/RIGHT`**
+
+- **`SIGNPOST_IFSET/IFNOTSET`**
+
+  **`dw` *event_flag*, *script***
+
+- **`SIGNPOST_ITEM`**
+
+  **`dwb` *event_flag*, *item_id***
+
+- **`SIGNPOST_COPY`**
+
+## `.PersonEvents: db` *N*
+
+### `person_event` *sprite*, *y*, *x*, *movement*, *ry*, *rx*, *hour*, *daytime*, *palette*, *type*, *range*, *script*, *event_flag*
+
+#### Movement types:
+
+- **`SPRITEMOVEDATA_ITEM_TREE`**
+
+- **`SPRITEMOVEDATA_WANDER`**
+
+- **`SPRITEMOVEDATA_SPINRANDOM_SLOW`**
+
+- **`SPRITEMOVEDATA_WALK_UP_DOWN`**
+
+- **`SPRITEMOVEDATA_WALK_LEFT_RIGHT`**
+
+- **`SPRITEMOVEDATA_STANDING_UP/DOWN/LEFT/RIGHT`**
+
+- **`SPRITEMOVEDATA_SPINRANDOM_FAST`**
+
+- **`SPRITEMOVEDATA_SNORLAX`**
+
+- **`SPRITEMOVEDATA_POKEMON`**
+
+- **`SPRITEMOVEDATA_SUDOWOODO`**
+
+- **`SPRITEMOVEDATA_SMASHABLE_ROCK`**
+
+- **`SPRITEMOVEDATA_STRENGTH_BOULDER`**
+
+- **`SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE`**
+
+- **`SPRITEMOVEDATA_SPINCLOCKWISE`**
+
+- **`SPRITEMOVEDATA_BIGDOLL`**
+
+- **`SPRITEMOVEDATA_LAPRAS`**
+
+#### Person types:
+
+- **`PERSONTYPE_SCRIPT`**
+
+- **`PERSONTYPE_ITEMBALL`**
+
+  **`itemball` *item_id***
+
+- **`PERSONTYPE_TRAINER`**
+
+  **`trainer` *event_flag*, *group_id*, *trainer_id*, *seen_text*, *beaten_text*, *loss_text*, *script***
--- /dev/null
+++ b/docs/music_commands.md
@@ -1,0 +1,93 @@
+# Music Commands
+
+## `musicheader` *n*, *index*, *address*
+
+## `cry_header` *n*, *index*, *address*
+
+## `note` *pitch*, *octave*
+
+## `sound` *pitch*, *octave*, *intensity*, *frequency*
+
+## `noise` *pitch*, *duration*, *intensity*, *frequency*
+
+## `$D0`−`$D7`: `octave` *n*
+
+## `$D8`: `notetype` *length*[, *intensity*]
+
+## `$D9`: `pitchoffset` *octave*, *key*
+
+## `$DA`: `tempo` *tempo*
+
+## `$DB`: `dutycycle` *duty_cycle*
+
+## `$DC`: `intensity` *intensity*
+
+## `$DD`: `soundinput` *input*
+
+## `$DE`: `sound_duty` *a*, *b*, *c*, *d*
+
+## `$DF`: `togglesfx`
+
+## `$E0`: `slidepitchto` *duration*, *octave*, *pitch*
+
+## `$E1`: `vibrato` *delay*, *extent*
+
+## `$E2`: `unknownmusic0xe2` *unknown*
+
+## `$E3`: `togglenoise` *id*
+
+## `$E4`: `panning` *tracks*
+
+## `$E5`: `volume` *volume*
+
+## `$E6`: `tone` *tone*
+
+## `$E7`: `unknownmusic0xe7` *unknown*
+
+## `$E8`: `unknownmusic0xe8` *unknown*
+
+## `$E9`: `tempo_relative` *value*
+
+## `$EA`: `restartchannel` *address*
+
+## `$EB`: `newsong` *id*
+
+## `$EC`: `sfxpriorityon`
+
+## `$ED`: `sfxpriorityoff`
+
+## `$EE`: `unknownmusic0xee` *address*
+
+## `$EF`: `stereopanning` *tracks*
+
+## `$F0`: `sfxtogglenoise` *id*
+
+## `$F1`: `music0xf1`
+
+## `$F2`: `music0xf2`
+
+## `$F3`: `music0xf3`
+
+## `$F4`: `music0xf4`
+
+## `$F5`: `music0xf5`
+
+## `$F6`: `music0xf6`
+
+## `$F7`: `music0xf7`
+
+## `$F8`: `music0xf8`
+
+## `$F9`: `unknownmusic0xf9`
+
+## `$FA`: `setcondition` *condition*
+
+## `$FB`: `jumpif` *condition*, *address*
+
+## `$FC`: `jumpchannel` *address*
+
+## `$FD`: `loopchannel` *count*, *address*
+
+## `$FE`: `callchannel` *address*
+
+## `$FF`: `endchannel`
--- /dev/null
+++ b/docs/pic_animations.md
@@ -1,0 +1,28 @@
+# Pic Animations
+
+Pic animations are assembled in 3 parts:
+
+- Top-level animations:
+   - `frame` *#*, *duration*: Frame 0 is the original pic (no change)
+   - `setrepeat` *#*: Sets the number of times to repeat
+   - `dorepeat` *#*: Repeats from command *#* (starting from 0)
+   - `end`
+
+- Bitmasks:
+  Layered over the pic to designate affected tiles
+
+- Frame definitions:
+  first byte is the bitmask used for this frame  
+  following bytes are tile ids mapped to each bit in the mask
+
+Animation data is in these files:
+
+- gfx/pics/anims.asm:
+  Main animations (played everywhere)
+
+- gfx/pics/extras.asm:
+  Extra animations, appended to the main animation.  
+  Used in the status screen (blinking, tail wags etc.)
+
+- gfx/pics/unown_anims.asm and gfx/pics/unown_extras.asm:
+  Unown has its own animation data despite having an entry in the main tables.
--- /dev/null
+++ b/docs/scripting_commands.md
@@ -1,0 +1,345 @@
+# Scripting Commands
+
+## `$00`: `scall` *script*
+
+## `$01`: `farscall` *script*
+
+## `$02`: `ptcall` *script*
+
+## `$03`: `jump` *script*
+
+## `$04`: `farjump` *script*
+
+## `$05`: `ptjump` *script*
+
+## `$06`: `if_equal` *byte*, *script*
+
+## `$07`: `if_not_equal` *byte*, *script*
+
+## `$08`: `iffalse` *script*
+
+## `$09`: `iftrue` *script*
+
+## `$0A`: `if_greater_than` *byte*, *script*
+
+## `$0B`: `if_less_than` *byte*, *script*
+
+## `$0C`: `jumpstd` *std_script*
+
+## `$0D`: `callstd` *std_script*
+
+## `$0E`: `callasm` *asm*
+
+## `$0F`: `special` *special_pointer*
+
+## `$10`: `ptcallasm` *asm*
+
+## `$11`: `checkmaptriggers` *map*
+
+## `$12`: `domaptrigger` *map*, *trigger_id*
+
+## `$13`: `checktriggers`
+
+## `$14`: `dotrigger` *trigger_id*
+
+## `$15`: `writebyte` *value*
+
+## `$16`: `addvar` *value*
+
+## `$17`: `random` *value*
+
+## `$18`: `checkver`
+
+## `$19`: `copybytetovar` *address*
+
+## `$1A`: `copyvartobyte` *address*
+
+## `$1B`: `loadvar` *address*, *value*
+
+## `$1C`: `checkcode` *variable*
+
+## `$1D`: `writevarcode` *variable*
+
+## `$1E`: `writecode` *variable*, *value*
+
+## `$1F`: `giveitem` *item_id*[, *quantity*=1]
+
+## `$20`: `takeitem` *item_id*[, *quantity*=1]
+
+## `$21`: `checkitem` *item_id*
+
+## `$22`: `givemoney` *account*, *value*
+
+## `$23`: `takemoney` *account*, *value*
+
+## `$24`: `checkmoney` *account*, *value*
+
+## `$25`: `givecoins` *value*
+
+## `$26`: `takecoins` *value*
+
+## `$27`: `checkcoins` *value*
+
+## `$28`: `addcellnum` *contact_id*
+
+## `$29`: `delcellnum` *contact_id*
+
+## `$2A`: `checkcellnum` *contact_id*
+
+## `$2B`: `checktime` *time*
+
+- **`checkmorn`:** `checktime MORN`
+- **`checkday`:** `checktime DAY`
+- **`checknite`:** `checktime NITE`
+
+## `$2C`: `checkpoke` *mon_id*
+
+## `$2D`: `givepoke` *mon_id*, *level*[, *item*=0[, *trainer*=0, *ot_name*, *nickname*]]
+
+## `$2E`: `giveegg` *mon_id*, *level*
+
+## `$2F`: `givepokeitem` *pointer*
+
+## `$30`: `checkpokeitem` *pointer*
+
+## `$31`: `checkevent` *event_flag*
+
+## `$32`: `clearevent` *event_flag*
+
+## `$33`: `setevent` *event_flag*
+
+## `$34`: `checkflag` *engine_flag*
+
+## `$35`: `clearflag` *engine_flag*
+
+## `$36`: `setflag` *engine_flag*
+
+## `$37`: `wildon`
+
+## `$38`: `wildoff`
+
+## `$39`: `xycompare` *pointer*
+
+## `$3A`: `warpmod` *warp_id*, *map*
+
+## `$3B`: `blackoutmod` *map*
+
+## `$3C`: `warp` *map*, *x*, *y*
+
+## `$3D`: `readmoney` *account*, *memory*
+
+## `$3E`: `readcoins` *memory*
+
+## `$3F`: `RAM2MEM` *memory*
+
+## `$40`: `pokenamemem` *mon_id*, *memory*
+
+## `$41`: `itemtotext` *item_id*, *memory*
+
+## `$42`: `mapnametotext` *memory*
+
+## `$43`: `trainertotext` *trainer_id*, *trainer_group*, *memory*
+
+## `$44`: `stringtotext` *text_pointer*, *memory*
+
+## `$45`: `itemnotify`
+
+## `$46`: `pocketisfull`
+
+## `$47`: `opentext`
+
+## `$48`: `refreshscreen` *dummy*
+
+## `$49`: `closetext`
+
+## `$4A`: `loadbytec2cf` *byte*
+
+## `$4B`: `farwritetext` *text_pointer*
+
+## `$4C`: `writetext` *text_pointer*
+
+## `$4D`: `repeattext` *byte1*, *byte2*
+
+## `$4E`: `yesorno`
+
+## `$4F`: `loadmenudata` *data_pointer*
+
+## `$50`: `closewindow`
+
+## `$51`: `jumptextfaceplayer` *text_pointer*
+
+## `$52`: `farjumptext` *text_pointer*
+
+## `$53`: `jumptext` *text_pointer*
+
+## `$54`: `waitbutton`
+
+## `$55`: `buttonsound`
+
+## `$56`: `pokepic` *mon_id*
+
+## `$57`: `closepokepic`
+
+## `$58`: `_2dmenu`
+
+## `$59`: `verticalmenu`
+
+## `$5A`: `loadpikachudata`
+
+## `$5B`: `randomwildmon`
+
+## `$5C`: `loadmemtrainer`
+
+## `$5D`: `loadwildmon` *mon_id*, *level*
+
+## `$5E`: `loadtrainer` *trainer_group*, *trainer_id*
+
+## `$5F`: `startbattle`
+
+## `$60`: `reloadmapafterbattle`
+
+## `$61`: `catchtutorial` *byte*
+
+## `$62`: `trainertext` *which_text*
+
+## `$63`: `trainerflagaction` *action*
+
+## `$64`: `winlosstext` *win_text_pointer*, *loss_text_pointer*
+
+## `$65`: `scripttalkafter`
+
+## `$66`: `end_if_just_battled`
+
+## `$67`: `check_just_battled`
+
+## `$68`: `setlasttalked` *person*
+
+## `$69`: `applymovement` *person*, *data_pointer*
+
+## `$6A`: `applymovement2` *data_pointer*
+
+## `$6B`: `faceplayer`
+
+## `$6C`: `faceperson` *person1*, *person2*
+
+## `$6D`: `variablesprite` *variable_sprite_id*, *sprite_id*
+
+## `$6E`: `disappear` *person*
+
+## `$6F`: `appear` *person*
+
+## `$70`: `follow` *person2*, *person1*
+
+## `$71`: `stopfollow`
+
+## `$72`: `moveperson` *person*, *x*, *y*
+
+## `$73`: `writepersonxy` *person*
+
+## `$74`: `loademote` *emote_id*
+
+## `$75`: `showemote` *emote_id*, *person*, *length*
+
+## `$76`: `spriteface` *person*, *facing*
+
+## `$77`: `follownotexact` *person2*, *person1*
+
+## `$78`: `earthquake` *param*
+
+## `$79`: `changemap` *bank*, *blockdata_pointer*
+
+## `$7A`: `changeblock` *x*, *y*, *block*
+
+## `$7B`: `reloadmap`
+
+## `$7C`: `reloadmappart`
+
+## `$7D`: `writecmdqueue` *queue_pointer*
+
+## `$7E`: `delcmdqueue` *byte*
+
+## `$7F`: `playmusic` *music_id*
+
+## `$80`: `encountermusic`
+
+## `$81`: `musicfadeout` *music_id*, *length*
+
+## `$82`: `playmapmusic`
+
+## `$83`: `dontrestartmapmusic`
+
+## `$84`: `cry` *mon_id*
+
+## `$85`: `playsound` *sfx_id*
+
+## `$86`: `waitsfx`
+
+## `$87`: `warpsound`
+
+## `$88`: `specialsound`
+
+## `$89`: `passtoengine` *data_pointer*
+
+## `$8A`: `newloadmap` *which_method*
+
+## `$8B`: `pause` *length*
+
+## `$8C`: `deactivatefacing` *length*
+
+## `$8D`: `priorityjump` *script*
+
+## `$8E`: `warpcheck`
+
+## `$8F`: `ptpriorityjump` *script*
+
+## `$90`: `return`
+
+## `$91`: `end`
+
+## `$92`: `reloadandreturn` *which_method*
+
+## `$93`: `end_all`
+
+## `$94`: `pokemart` *dialog_id*, *mart_id*
+
+## `$95`: `elevator` *floor_list*
+
+## `$96`: `trade` *trade_id*
+
+## `$97`: `askforphonenumber` *contact_id*
+
+## `$98`: `phonecall` *call_id*
+
+## `$99`: `hangup`
+
+## `$9A`: `describedecoration` *byte*
+
+## `$9B`: `fruittree` *tree_id*
+
+## `$9C`: `specialphonecall` *call_id*
+
+## `$9D`: `checkphonecall`
+
+## `$9E`: `verbosegiveitem` *item_id*[, *quantity*=1]
+
+## `$9F`: `verbosegiveitem2` *item_id*, *variable*
+
+## `$A0`: `swarm` *swarm_id*, *map*
+
+## `$A1`: `halloffame`
+
+## `$A2`: `credits`
+
+## `$A3`: `warpfacing` *facing*, *map*, *x*, *y*
+
+## `$A4`: `battletowertext` *memory*
+
+## `$A5`: `landmarktotext` *landmark_id*, *memory*
+
+## `$A6`: `trainerclassname` *trainer_group*, *memory*
+
+## `$A7`: `name` *type*, *id*, *memory*
+
+## `$A8`: `wait` *duration*
+
+## `$A9`: `check_save`
--- a/engine/battle_start.asm
+++ b/engine/battle_start.asm
@@ -141,7 +141,7 @@
 ; 8c2f4
 
 TrainerBattlePokeballTiles: ; 8c2f4
-INCBIN "gfx/ow_fx/trainer_battle_pokeball_tiles.2bpp"
+INCBIN "gfx/overworld/trainer_battle_pokeball_tiles.2bpp"
 
 
 FlashyTransitionToBattle: ; 8c314
@@ -651,11 +651,11 @@
 	ld [rSVBK], a
 	call .copypals
 	push hl
-	ld de, UnknBGPals + 7 palettes
+	ld de, UnknBGPals palette PAL_BG_TEXT
 	ld bc, 1 palettes
 	call CopyBytes
 	pop hl
-	ld de, BGPals + 7 palettes
+	ld de, BGPals palette PAL_BG_TEXT
 	ld bc, 1 palettes
 	call CopyBytes
 	pop af
@@ -670,17 +670,17 @@
 	ret
 
 .copypals ; 8c677 (23:4677)
-	ld de, UnknBGPals + 7 palettes
+	ld de, UnknBGPals palette PAL_BG_TEXT
 	call .copy
-	ld de, BGPals + 7 palettes
+	ld de, BGPals palette PAL_BG_TEXT
 	call .copy
-	ld de, UnknOBPals + 6 palettes
+	ld de, UnknOBPals palette PAL_OW_TREE
 	call .copy
-	ld de, OBPals + 6 palettes
+	ld de, OBPals palette PAL_OW_TREE
 	call .copy
-	ld de, UnknOBPals + 7 palettes
+	ld de, UnknOBPals palette PAL_OW_ROCK
 	call .copy
-	ld de, OBPals + 7 palettes
+	ld de, OBPals palette PAL_OW_ROCK
 
 .copy ; 8c698 (23:4698)
 	push hl
--- /dev/null
+++ b/engine/battle_tower.asm
@@ -1,0 +1,210 @@
+Function_LoadOpponentTrainerAndPokemons: ; 1f8000
+	ld a, [rSVBK]
+	push af
+	ld a, BANK(BT_OTTrainer)
+	ld [rSVBK], a
+
+	; Fill BT_OTTrainer with zeros
+	xor a
+	ld hl, BT_OTTrainer
+	ld bc, BT_OTTrainerEnd - BT_OTTrainer
+	call ByteFill
+
+	; Write $ff into the Item-Slots
+	ld a, $ff
+	ld [BT_OTPkmn1Item], a
+	ld [BT_OTPkmn2Item], a
+	ld [BT_OTPkmn3Item], a
+
+	; Set BT_OTTrainer as start address to write the following data to
+	ld de, BT_OTTrainer
+
+	ld a, [hRandomAdd]
+	ld b, a
+.resample ; loop to find a random trainer
+	call Random
+	ld a, [hRandomAdd]
+	add b
+	ld b, a ; b contains the nr of the trainer
+IF DEF(CRYSTAL11)
+	and (1 << 7) - 1
+	cp 70
+ELSE
+	and (1 << 5) - 1
+	cp 21
+ENDC
+	jr nc, .resample
+	ld b, a
+
+	ld a, BANK(sBTTrainers)
+	call GetSRAMBank
+
+	ld c, BATTLETOWER_NROFTRAINERS
+	ld hl, sBTTrainers
+.next_trainer
+	ld a, [hli]
+	cp b
+	jr z, .resample
+	dec c
+	jr nz, .next_trainer ; c <= 7  initialise all 7 trainers?
+
+	ld hl, sBTTrainers
+	ld a, [sNrOfBeatenBattleTowerTrainers]
+	ld c, a
+	ld a, b
+	ld b, 0
+	add hl, bc
+	ld [hl], a
+
+	call CloseSRAM
+
+	push af
+; Copy name (10 bytes) and class (1 byte) of trainer
+	ld hl, BattleTowerTrainers
+	ld bc, NAME_LENGTH
+	call AddNTimes
+	ld bc, NAME_LENGTH
+	call CopyBytes
+
+	call Function_LoadRandomBattleTowerPkmn
+	pop af
+
+	ld hl, BattleTowerTrainerData
+	ld bc, BATTLETOWER_TRAINERDATALENGTH
+	call AddNTimes
+	ld bc, BATTLETOWER_TRAINERDATALENGTH
+.copy_bt_trainer_data_loop
+	ld a, BANK(BattleTowerTrainerData)
+	call GetFarByte
+	ld [de], a
+	inc hl
+	inc de
+	dec bc
+	ld a, b
+	or c
+	jr nz, .copy_bt_trainer_data_loop
+
+	pop af
+	ld [rSVBK], a
+
+	ret
+
+
+Function_LoadRandomBattleTowerPkmn: ; 1f8081
+	ld c, BATTLETOWER_NROFPKMNS
+.loop
+	push bc
+	ld a, BANK(sBTPkmnPrevTrainer1)
+	call GetSRAMBank
+
+.FindARandomBattleTowerPkmn:
+	; From Which LevelGroup are the Pkmn loaded
+	; a = 1..10
+	ld a, [wBTChoiceOfLvlGroup] ; [$d800]
+	dec a
+	ld hl, BattleTowerMons
+	ld bc, BattleTowerMons2 - BattleTowerMons1
+	call AddNTimes
+
+	ld a, [hRandomAdd]
+	ld b, a
+.resample
+	call Random
+	ld a, [hRandomAdd]
+	add b
+	ld b, a
+	and $1f
+	cp BATTLETOWER_NRMONSPERLEVELBRACKET
+	jr nc, .resample
+	; in register 'a' is the chosen Pkmn of the LevelGroup
+
+	; Check if Pkmn was already loaded before
+	; Check current and the 2 previous teams
+	; includes check if item is double at the current team
+	ld bc, PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH
+	call AddNTimes
+	ld a, [hli]
+	ld b, a
+	ld a, [hld]
+	ld c, a
+	ld a, [BT_OTPkmn1]
+	cp b
+	jr z, .FindARandomBattleTowerPkmn
+	ld a, [BT_OTPkmn1Item]
+	cp c
+	jr z, .FindARandomBattleTowerPkmn
+	ld a, [BT_OTPkmn2]
+	cp b
+	jr z, .FindARandomBattleTowerPkmn
+	ld a, [BT_OTPkmn2Item]
+	cp c
+	jr z, .FindARandomBattleTowerPkmn
+	ld a, [BT_OTPkmn3]
+	cp b
+	jr z, .FindARandomBattleTowerPkmn
+	ld a, [BT_OTPkmn3Item]
+	cp c
+	jr z, .FindARandomBattleTowerPkmn
+	ld a, [sBTPkmnPrevTrainer1]
+	cp b
+	jr z, .FindARandomBattleTowerPkmn
+	ld a, [sBTPkmnPrevTrainer2]
+	cp b
+	jr z, .FindARandomBattleTowerPkmn
+	ld a, [sBTPkmnPrevTrainer3]
+	cp b
+	jr z, .FindARandomBattleTowerPkmn
+	ld a, [sBTPkmnPrevPrevTrainer1]
+	cp b
+	jr z, .FindARandomBattleTowerPkmn
+	ld a, [sBTPkmnPrevPrevTrainer2]
+	cp b
+	jr z, .FindARandomBattleTowerPkmn
+	ld a, [sBTPkmnPrevPrevTrainer3]
+	cp b
+	jr z, .FindARandomBattleTowerPkmn
+
+	ld bc, PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH
+	call CopyBytes
+
+	ld a, [wNamedObjectIndexBuffer]
+	push af
+	push de
+	ld hl, - (PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH)
+	add hl, de
+	ld a, [hl]
+	ld [wNamedObjectIndexBuffer], a
+	ld bc, PARTYMON_STRUCT_LENGTH
+	add hl, bc
+	push hl
+	call GetPokemonName
+	ld h, d
+	ld l, e
+	pop de
+	ld bc, PKMN_NAME_LENGTH
+	call CopyBytes
+
+	pop de
+	pop af
+	ld [wNamedObjectIndexBuffer], a
+	pop bc
+	dec c
+	jp nz, .loop
+
+	ld a, [sBTPkmnPrevTrainer1]
+	ld [sBTPkmnPrevPrevTrainer1], a
+	ld a, [sBTPkmnPrevTrainer2]
+	ld [sBTPkmnPrevPrevTrainer2], a
+	ld a, [sBTPkmnPrevTrainer3]
+	ld [sBTPkmnPrevPrevTrainer3], a
+	ld a, [BT_OTPkmn1]
+	ld [sBTPkmnPrevTrainer1], a
+	ld a, [BT_OTPkmn2]
+	ld [sBTPkmnPrevTrainer2], a
+	ld a, [BT_OTPkmn3]
+	ld [sBTPkmnPrevTrainer3], a
+	call CloseSRAM
+	ret
+; 1f814e
+
+INCLUDE "data/battle_tower.asm"
--- a/engine/breeding/egg.asm
+++ b/engine/breeding/egg.asm
@@ -888,7 +888,7 @@
 	call PrintText
 	ld a, [wBreedMon1Species]
 	call PlayCry
-	ld a, [wDaycareLady]
+	ld a, [wDayCareLady]
 	bit 0, a
 	jr z, DayCareMonCursor
 	call ButtonSound
@@ -901,7 +901,7 @@
 	call PrintText
 	ld a, [wBreedMon2Species]
 	call PlayCry
-	ld a, [wDaycareMan]
+	ld a, [wDayCareMan]
 	bit 0, a
 	jr z, DayCareMonCursor
 	call ButtonSound
--- a/engine/color.asm
+++ b/engine/color.asm
@@ -1859,7 +1859,7 @@
 	RGB 31, 31, 25
 
 SGBBorder:
-INCBIN "gfx/misc/sgb_border.2bpp"
+INCBIN "gfx/sgb/sgb_border.2bpp"
 
 Palettes_a8be:
 	RGB 30, 26, 15
@@ -1877,7 +1877,7 @@
 
 INCLUDE "gfx/pics/palette_pointers.asm"
 
-INCLUDE "gfx/trainers/palette_pointers.asm"
+INCLUDE "gfx/trainer_palettes.asm"
 
 LoadMapPals:
 	callba LoadSpecialMapPalette
@@ -1948,7 +1948,7 @@
 	call AddNTimes
 	ld de, UnknOBPals
 	ld bc, 8 palettes
-	ld a, $5 ; BANK(UnknOBPals)
+	ld a, BANK(UnknOBPals)
 	call FarCopyWRAM
 
 	ld a, [wPermission]
@@ -1967,13 +1967,13 @@
 	add hl, de
 	ld a, [TimeOfDayPal]
 	and 3
-	cp NITE
+	cp NITE_F
 	jr c, .morn_day
 rept 4
 	inc hl
 endr
 .morn_day
-	ld de, UnknBGPals + 6 palettes + 2
+	ld de, UnknBGPals palette PAL_BG_ROOF + 2
 	ld bc, 4
 	ld a, $5
 	call FarCopyWRAM
@@ -1983,10 +1983,10 @@
 	dw .OutdoorColors ; unused
 	dw .OutdoorColors ; TOWN
 	dw .OutdoorColors ; ROUTE
-	dw .IndoorColors ; INDOOR
+	dw .IndoorColors  ; INDOOR
 	dw .DungeonColors ; CAVE
-	dw .Perm5Colors ; PERM_5
-	dw .IndoorColors ; GATE
+	dw .Perm5Colors   ; PERM_5
+	dw .IndoorColors  ; GATE
 	dw .DungeonColors ; DUNGEON
 
 ; Valid indices: $00 - $29
@@ -2267,7 +2267,7 @@
 	RGB 18, 18, 18
 	RGB 00, 00, 00
 
-Palettes_b7a9:
+SlotMachinePals:
 	RGB 31, 31, 31
 	RGB 24, 25, 28
 	RGB 24, 24, 09
--- a/engine/decorations.asm
+++ b/engine/decorations.asm
@@ -541,69 +541,7 @@
 	ret
 ; 26a4f
 
-decoration: MACRO
-	; type, name, command, event flag, tile/sprite
-	db \1, \2, \3
-	dw \4
-	db \5
-ENDM
-
-DecorationAttributes: ; 26a4f
-	decoration DECO_PLANT,    $00,               $0,                 EVENT_GAVE_KURT_APRICORNS,                         $00
-	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_BED,       EVENT_GAVE_KURT_APRICORNS,                         $00
-	decoration DECO_BED,      FEATHERY_BED,      SET_UP_BED,         EVENT_DECO_BED_1,                  $1b
-	decoration DECO_BED,      PINK_BED,          SET_UP_BED,         EVENT_DECO_BED_2,                  $1c
-	decoration DECO_BED,      POLKADOT_BED,      SET_UP_BED,         EVENT_DECO_BED_3,                  $1d
-	decoration DECO_BED,      PIKACHU_BED,       SET_UP_BED,         EVENT_DECO_BED_4,                  $1e
-	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_CARPET,    EVENT_GAVE_KURT_APRICORNS,                         $00
-	decoration DECO_CARPET,   RED_CARPET,        SET_UP_CARPET,      EVENT_DECO_CARPET_1,               $08
-	decoration DECO_CARPET,   BLUE_CARPET,       SET_UP_CARPET,      EVENT_DECO_CARPET_2,               $0b
-	decoration DECO_CARPET,   YELLOW_CARPET,     SET_UP_CARPET,      EVENT_DECO_CARPET_3,               $0e
-	decoration DECO_CARPET,   GREEN_CARPET,      SET_UP_CARPET,      EVENT_DECO_CARPET_4,               $11
-	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_PLANT,     EVENT_GAVE_KURT_APRICORNS,                         $00
-	decoration DECO_PLANT,    MAGNAPLANT,        SET_UP_PLANT,       EVENT_DECO_PLANT_1,                $20
-	decoration DECO_PLANT,    TROPICPLANT,       SET_UP_PLANT,       EVENT_DECO_PLANT_2,                $21
-	decoration DECO_PLANT,    JUMBOPLANT,        SET_UP_PLANT,       EVENT_DECO_PLANT_3,                $22
-	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_POSTER,    EVENT_GAVE_KURT_APRICORNS,                         $00
-	decoration DECO_PLANT,    TOWN_MAP_D,        SET_UP_POSTER,      EVENT_DECO_PLANT_4,                $1f
-	decoration DECO_POSTER,   PIKACHU,           SET_UP_POSTER,      EVENT_DECO_POSTER_1,               $23
-	decoration DECO_POSTER,   CLEFAIRY,          SET_UP_POSTER,      EVENT_DECO_POSTER_2,               $24
-	decoration DECO_POSTER,   JIGGLYPUFF,        SET_UP_POSTER,      EVENT_DECO_POSTER_3,               $25
-	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_CONSOLE,   EVENT_GAVE_KURT_APRICORNS,                         $00
-	decoration DECO_PLANT,    FAMICOM,           SET_UP_CONSOLE,     EVENT_DECO_FAMICOM,                SPRITE_FAMICOM
-	decoration DECO_PLANT,    SUPER_NES,         SET_UP_CONSOLE,     EVENT_DECO_SNES,                   SPRITE_SNES
-	decoration DECO_PLANT,    NINTENDO_64,       SET_UP_CONSOLE,     EVENT_DECO_N64,                    SPRITE_N64
-	decoration DECO_PLANT,    VIRTUAL_BOY,       SET_UP_CONSOLE,     EVENT_DECO_VIRTUAL_BOY,            SPRITE_VIRTUAL_BOY
-	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_BIG_DOLL,  EVENT_GAVE_KURT_APRICORNS,                         $00
-	decoration DECO_BIGDOLL,  SNORLAX,           SET_UP_BIG_DOLL,    EVENT_DECO_BIG_SNORLAX_DOLL,       SPRITE_BIG_SNORLAX
-	decoration DECO_BIGDOLL,  ONIX,              SET_UP_BIG_DOLL,    EVENT_DECO_BIG_ONIX_DOLL,          SPRITE_BIG_ONIX
-	decoration DECO_BIGDOLL,  LAPRAS,            SET_UP_BIG_DOLL,    EVENT_DECO_BIG_LAPRAS_DOLL,        SPRITE_BIG_LAPRAS
-	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_DOLL,      EVENT_GAVE_KURT_APRICORNS,                         $00
-	decoration DECO_DOLL,     PIKACHU,           SET_UP_DOLL,        EVENT_DECO_PIKACHU_DOLL,           SPRITE_PIKACHU
-	decoration DECO_PLANT,    SURF_PIKA_DOLL,    SET_UP_DOLL,        EVENT_DECO_SURFING_PIKACHU_DOLL,   SPRITE_SURFING_PIKACHU
-	decoration DECO_DOLL,     CLEFAIRY,          SET_UP_DOLL,        EVENT_DECO_CLEFAIRY_DOLL,          SPRITE_CLEFAIRY
-	decoration DECO_DOLL,     JIGGLYPUFF,        SET_UP_DOLL,        EVENT_DECO_JIGGLYPUFF_DOLL,        SPRITE_JIGGLYPUFF
-	decoration DECO_DOLL,     BULBASAUR,         SET_UP_DOLL,        EVENT_DECO_BULBASAUR_DOLL,         SPRITE_BULBASAUR
-	decoration DECO_DOLL,     CHARMANDER,        SET_UP_DOLL,        EVENT_DECO_CHARMANDER_DOLL,        SPRITE_CHARMANDER
-	decoration DECO_DOLL,     SQUIRTLE,          SET_UP_DOLL,        EVENT_DECO_SQUIRTLE_DOLL,          SPRITE_SQUIRTLE
-	decoration DECO_DOLL,     POLIWAG,           SET_UP_DOLL,        EVENT_DECO_POLIWAG_DOLL,           SPRITE_POLIWAG
-	decoration DECO_DOLL,     DIGLETT,           SET_UP_DOLL,        EVENT_DECO_DIGLETT_DOLL,           SPRITE_DIGLETT
-	decoration DECO_DOLL,     STARYU,            SET_UP_DOLL,        EVENT_DECO_STARMIE_DOLL,           SPRITE_STARMIE
-	decoration DECO_DOLL,     MAGIKARP,          SET_UP_DOLL,        EVENT_DECO_MAGIKARP_DOLL,          SPRITE_MAGIKARP
-	decoration DECO_DOLL,     ODDISH,            SET_UP_DOLL,        EVENT_DECO_ODDISH_DOLL,            SPRITE_ODDISH
-	decoration DECO_DOLL,     GENGAR,            SET_UP_DOLL,        EVENT_DECO_GENGAR_DOLL,            SPRITE_GENGAR
-	decoration DECO_DOLL,     SHELLDER,          SET_UP_DOLL,        EVENT_DECO_SHELLDER_DOLL,          SPRITE_SHELLDER
-	decoration DECO_DOLL,     GRIMER,            SET_UP_DOLL,        EVENT_DECO_GRIMER_DOLL,            SPRITE_GRIMER
-	decoration DECO_DOLL,     VOLTORB,           SET_UP_DOLL,        EVENT_DECO_VOLTORB_DOLL,           SPRITE_VOLTORB
-	decoration DECO_DOLL,     WEEDLE,            SET_UP_DOLL,        EVENT_DECO_WEEDLE_DOLL,            SPRITE_WEEDLE
-	decoration DECO_DOLL,     UNOWN,             SET_UP_DOLL,        EVENT_DECO_UNOWN_DOLL,             SPRITE_UNOWN
-	decoration DECO_DOLL,     GEODUDE,           SET_UP_DOLL,        EVENT_DECO_GEODUDE_DOLL,           SPRITE_GEODUDE
-	decoration DECO_DOLL,     MACHOP,            SET_UP_DOLL,        EVENT_DECO_MACHOP_DOLL,            SPRITE_MACHOP
-	decoration DECO_DOLL,     TENTACOOL,         SET_UP_DOLL,        EVENT_DECO_TENTACOOL_DOLL,         SPRITE_TENTACOOL
-	decoration DECO_PLANT,    GOLD_TROPHY,       SET_UP_DOLL,        EVENT_DECO_GOLD_TROPHY,            SPRITE_GOLD_TROPHY
-	decoration DECO_PLANT,    SILVER_TROPHY,     SET_UP_DOLL,        EVENT_DECO_SILVER_TROPHY,          SPRITE_SILVER_TROPHY
-; 26b8d
-
+INCLUDE "data/decoration_attributes.asm"
 
 DecorationNames: ; 26b8d
 	db "CANCEL@"
--- a/engine/delete_save_change_clock.asm
+++ b/engine/delete_save_change_clock.asm
@@ -127,7 +127,7 @@
 	ld e, a
 	ld d, $0
 	add hl, de
-	ld [hl], $61
+	ld [hl], "▲"
 	ret
 
 .dpadinput ; 4d490
@@ -227,7 +227,7 @@
 	ld c, $2
 	call .ComponentFromNumber
 	ld hl, sPlayerData + (PlayerName - wPlayerData)
-	ld c, $5 ; PLAYER_NAME_LENGTH_J
+	ld c, NAME_LENGTH_JAPANESE - 1
 	call .ComponentFromString
 	ld hl, sPlayerData + (Money - wPlayerData)
 	ld c, $3
--- a/engine/engine_flags.asm
+++ b/engine/engine_flags.asm
@@ -83,206 +83,4 @@
 ; 80462
 
 
-EngineFlags: ; 80462
-; All locations are in WRAM bank 1.
-engine_flag: MACRO
-	dwb \1, 1 << \2
-ENDM
-	; location, bit
-
-	; pokegear
-	engine_flag wPokegearFlags, 1 ; radio card       ; $0
-	engine_flag wPokegearFlags, 0 ; map card
-	engine_flag wPokegearFlags, 2 ; phone card
-	engine_flag wPokegearFlags, 3 ; expn card
-	engine_flag wPokegearFlags, 7 ; on/off
-
-	;   wDaycareMan, 7 ; daycare 1 on
-	engine_flag wDaycareMan, 6 ; egg is ready
-	;   wDaycareMan, 5 ; monster 1 and 2 are compatible
-	engine_flag wDaycareMan, 0 ; monster 1 in daycare
-
-	;   wDaycareLady, 7 = daycare 2 on
-	engine_flag wDaycareLady, 0 ; monster 2 in daycare
-
-	engine_flag wMomSavingMoney, 0 ; mom saving money ; $8
-	engine_flag wMomSavingMoney, 7 ; dst
-
-	engine_flag wUnusedTwoDayTimerOn, 0 ; unused, possibly related to a 2-day timer
-
-	engine_flag StatusFlags, 0 ; pokedex
-	engine_flag StatusFlags, 1 ; unown dex
-	engine_flag StatusFlags, 3 ; pokerus
-	engine_flag StatusFlags, 4 ; rocket signal on ch20
-	engine_flag StatusFlags, 6 ; credits skip
-	engine_flag StatusFlags, 7 ; bug contest on   ; $10
-	engine_flag StatusFlags2, 2 ; bug contest timer
-	engine_flag StatusFlags2, 1 ; safari zone?
-	engine_flag StatusFlags2, 0 ; rockets in radio tower
-	engine_flag StatusFlags2, 4 ; bike shop call enabled (1024 bike steps reqd)
-	engine_flag StatusFlags2, 5 ; give pokerus
-	engine_flag StatusFlags2, 6 ; berry -> berry juice when trading?
-	engine_flag StatusFlags2, 7 ; rockets in mahogany
-
-	engine_flag BikeFlags, 0 ; strength active  ; $18
-	engine_flag BikeFlags, 1 ; always on bike (cant surf)
-	engine_flag BikeFlags, 2 ; downhill (cycling road)
-
-	engine_flag JohtoBadges, 0 ; zephyrbadge
-	engine_flag JohtoBadges, 1 ; hivebadge
-	engine_flag JohtoBadges, 2 ; plainbadge
-	engine_flag JohtoBadges, 3 ; fogbadge
-	engine_flag JohtoBadges, 4 ; mineralbadge
-	engine_flag JohtoBadges, 5 ; stormbadge ; $20
-	engine_flag JohtoBadges, 6 ; glacierbadge
-	engine_flag JohtoBadges, 7 ; risingbadge
-
-	engine_flag KantoBadges, 0 ; boulderbadge
-	engine_flag KantoBadges, 1 ; cascadebadge
-	engine_flag KantoBadges, 2 ; thunderbadge
-	engine_flag KantoBadges, 3 ; rainbowbadge
-	engine_flag KantoBadges, 4 ; soulbadge
-	engine_flag KantoBadges, 5 ; marshbadge ; $28
-	engine_flag KantoBadges, 6 ; volcanobadge
-	engine_flag KantoBadges, 7 ; earthbadge
-
-	; unown sets
-	engine_flag UnlockedUnowns, 0 ; 1
-	engine_flag UnlockedUnowns, 1 ; 2
-	engine_flag UnlockedUnowns, 2 ; 3
-	engine_flag UnlockedUnowns, 3 ; 4
-	engine_flag UnlockedUnowns, 4 ; 5
-	engine_flag UnlockedUnowns, 5 ; 6       ; $30
-	engine_flag UnlockedUnowns, 6 ; 7
-	engine_flag UnlockedUnowns, 7 ; 8
-
-	; fly
-	engine_flag VisitedSpawns, 0     ; your house
-	engine_flag VisitedSpawns, 1     ; viridian pokecenter
-	engine_flag VisitedSpawns, 2     ; pallet
-	engine_flag VisitedSpawns, 3     ; viridian
-	engine_flag VisitedSpawns, 4     ; pewter
-	engine_flag VisitedSpawns, 5     ; cerulean ; $38
-	engine_flag VisitedSpawns, 6     ; rock tunnel
-	engine_flag VisitedSpawns, 7     ; vermilion
-	engine_flag VisitedSpawns + 1, 0 ; lavender
-	engine_flag VisitedSpawns + 1, 1 ; saffron
-	engine_flag VisitedSpawns + 1, 2 ; celadon
-	engine_flag VisitedSpawns + 1, 3 ; fuchsia
-	engine_flag VisitedSpawns + 1, 4 ; cinnabar
-	engine_flag VisitedSpawns + 1, 5 ; indigo plateau ; $40
-	engine_flag VisitedSpawns + 1, 6 ; new bark
-	engine_flag VisitedSpawns + 1, 7 ; cherrygrove
-	engine_flag VisitedSpawns + 2, 0 ; violet
-	                                 ; union cave
-	engine_flag VisitedSpawns + 2, 2 ; azalea
-	engine_flag VisitedSpawns + 2, 3 ; cianwood
-	engine_flag VisitedSpawns + 2, 4 ; goldenrod
-	engine_flag VisitedSpawns + 2, 5 ; olivine
-	engine_flag VisitedSpawns + 2, 6 ; ecruteak  ; $48
-	engine_flag VisitedSpawns + 2, 7 ; mahogany
-	engine_flag VisitedSpawns + 3, 0 ; lake of rage
-	engine_flag VisitedSpawns + 3, 1 ; blackthorn
-	engine_flag VisitedSpawns + 3, 2 ; silver cave
-	                                 ; fast ship
-	engine_flag VisitedSpawns + 3, 4 ; unused
-
-	engine_flag wLuckyNumberShowFlag, 0 ; lucky number show
-	engine_flag StatusFlags2, 3 ; ????
-
-	engine_flag DailyFlags, 0 ; kurt making balls  ; $50
-	engine_flag DailyFlags, 1 ; ????
-	engine_flag DailyFlags, 2 ; special wilddata?
-	engine_flag DailyFlags, 3 ; time capsule (24h wait)
-	engine_flag DailyFlags, 4 ; all fruit trees
-	engine_flag DailyFlags, 5 ; shuckle given
-	engine_flag DailyFlags, 6 ; goldenrod underground merchant closed
-	engine_flag DailyFlags, 7 ; fought in trainer hall today
-
-	engine_flag WeeklyFlags, 0 ; mt moon square clefairy  ; $58
-	engine_flag WeeklyFlags, 1 ; union cave lapras
-	engine_flag WeeklyFlags, 2 ; goldenrod underground haircut used
-	engine_flag WeeklyFlags, 3 ; goldenrod mall happiness event floor05 person07
-	engine_flag WeeklyFlags, 4 ; tea in blues house
-	engine_flag WeeklyFlags, 5 ; indigo plateau rival fight
-	engine_flag WeeklyFlags, 6 ; move tutor
-	engine_flag WeeklyFlags, 7 ; buenas password
-
-	engine_flag SwarmFlags, 0 ; buenas password 2
-	engine_flag SwarmFlags, 1 ; goldenrod dept store sale is on
-
-	engine_flag GameTimerPause, 7 ; $62
-
-	engine_flag PlayerGender, 0 ; player is female
-
-	engine_flag wCelebiEvent, 2 ; have gs ball after kurt examined it
-
-	; rematches
-	engine_flag wDailyRematchFlags, 0 ; jack
-	engine_flag wDailyRematchFlags, 1 ; huey
-	engine_flag wDailyRematchFlags, 2 ; gaven
-	engine_flag wDailyRematchFlags, 3 ; beth  ; $68
-	engine_flag wDailyRematchFlags, 4 ; jose
-	engine_flag wDailyRematchFlags, 5 ; reena
-	engine_flag wDailyRematchFlags, 6 ; joey
-	engine_flag wDailyRematchFlags, 7 ; wade
-	engine_flag wDailyRematchFlags + 1, 0 ; ralph
-	engine_flag wDailyRematchFlags + 1, 1 ; liz
-	engine_flag wDailyRematchFlags + 1, 2 ; anthony
-	engine_flag wDailyRematchFlags + 1, 3 ; todd  ; $70
-	engine_flag wDailyRematchFlags + 1, 4 ; gina
-	engine_flag wDailyRematchFlags + 1, 5 ; arnie
-	engine_flag wDailyRematchFlags + 1, 6 ; alan
-	engine_flag wDailyRematchFlags + 1, 7 ; dana
-	engine_flag wDailyRematchFlags + 2, 0 ; chad
-	engine_flag wDailyRematchFlags + 2, 1 ; tully
-	engine_flag wDailyRematchFlags + 2, 2 ; brent
-	engine_flag wDailyRematchFlags + 2, 3 ; tiffany  ; $78
-	engine_flag wDailyRematchFlags + 2, 4 ; vance
-	engine_flag wDailyRematchFlags + 2, 5 ; wilton
-	engine_flag wDailyRematchFlags + 2, 6 ; parry
-	engine_flag wDailyRematchFlags + 2, 7 ; erin
-
-	engine_flag wDailyPhoneItemFlags, 0 ; beverly has nugget
-	engine_flag wDailyPhoneItemFlags, 1 ; jose has star piece
-	engine_flag wDailyPhoneItemFlags, 2 ; wade has item (see EVENT_WADE_HAS_*** in constants/event_flags.asm)
-	engine_flag wDailyPhoneItemFlags, 3 ; gina has leaf stone  ; $80
-	engine_flag wDailyPhoneItemFlags, 4 ; alan has fire stone
-	engine_flag wDailyPhoneItemFlags, 5 ; liz has thunderstone
-	engine_flag wDailyPhoneItemFlags, 6 ; derek has nugget
-	engine_flag wDailyPhoneItemFlags, 7 ; tully has water stone
-
-	engine_flag wDailyPhoneItemFlags + 1, 0 ; tiffany has pink bow
-	engine_flag wDailyPhoneItemFlags + 1, 1 ; wilton has item (see EVENT_WILTON_HAS_*** in constants/event_flags.asm)
-
-	engine_flag wDailyPhoneTimeOfDayFlags, 0
-	engine_flag wDailyPhoneTimeOfDayFlags, 1  ; $88
-	engine_flag wDailyPhoneTimeOfDayFlags, 2
-	engine_flag wDailyPhoneTimeOfDayFlags, 3
-	engine_flag wDailyPhoneTimeOfDayFlags, 4
-	engine_flag wDailyPhoneTimeOfDayFlags, 5
-	engine_flag wDailyPhoneTimeOfDayFlags, 6
-	engine_flag wDailyPhoneTimeOfDayFlags, 7
-
-	engine_flag wDailyPhoneTimeOfDayFlags + 1, 0
-	engine_flag wDailyPhoneTimeOfDayFlags + 1, 1  ; $90
-	engine_flag wDailyPhoneTimeOfDayFlags + 1, 2
-	engine_flag wDailyPhoneTimeOfDayFlags + 1, 3
-	engine_flag wDailyPhoneTimeOfDayFlags + 1, 4
-	engine_flag wDailyPhoneTimeOfDayFlags + 1, 5
-	engine_flag wDailyPhoneTimeOfDayFlags + 1, 6
-	engine_flag wDailyPhoneTimeOfDayFlags + 1, 7
-
-	engine_flag wDailyPhoneTimeOfDayFlags + 2, 0
-	engine_flag wDailyPhoneTimeOfDayFlags + 2, 1  ; $98
-	engine_flag wDailyPhoneTimeOfDayFlags + 2, 2
-	engine_flag wDailyPhoneTimeOfDayFlags + 2, 3
-	engine_flag wDailyPhoneTimeOfDayFlags + 2, 4
-	engine_flag wDailyPhoneTimeOfDayFlags + 2, 5
-	engine_flag wDailyPhoneTimeOfDayFlags + 2, 6
-	engine_flag wDailyPhoneTimeOfDayFlags + 2, 7
-
-	engine_flag wPlayerSpriteSetupFlags, 2 ; female player has been transformed into male
-
-	engine_flag SwarmFlags, 2 ; dunsparce swarm   ; $a0
-	engine_flag SwarmFlags, 3 ; yanma swarm
+INCLUDE "data/engine_flags.asm"
--- a/engine/events.asm
+++ b/engine/events.asm
@@ -964,7 +964,7 @@
 
 .skip_egg
 	; Increase the EXP of (both) DayCare Pokemon by 1.
-	callba DaycareStep
+	callba DayCareStep
 
 	; Every four steps, deal damage to all Poisoned Pokemon
 	ld hl, PoisonStepCount
--- a/engine/events_2.asm
+++ b/engine/events_2.asm
@@ -253,20 +253,9 @@
 	ret
 ; 97d87
 
-ContestMons: ; 97d87
-	;   %, species,   min, max
-	db 20, CATERPIE,    7, 18
-	db 20, WEEDLE,      7, 18
-	db 10, METAPOD,     9, 18
-	db 10, KAKUNA,      9, 18
-	db  5, BUTTERFREE, 12, 15
-	db  5, BEEDRILL,   12, 15
-	db 10, VENONAT,    10, 16
-	db 10, PARAS,      10, 17
-	db  5, SCYTHER,    13, 14
-	db  5, PINSIR,     13, 14
-	db -1, VENOMOTH,   30, 40
-; 97db3
+
+INCLUDE "data/wild/bug_contest_mons.asm"
+
 
 DoBikeStep:: ; 97db3
 	nop
--- a/engine/events_3.asm
+++ b/engine/events_3.asm
@@ -455,56 +455,8 @@
 	ret
 ; b825e
 
-TreeMonMaps: ; b825e
-treemon_map: macro
-	map \1
-	db  \2 ; treemon set
-endm
-	treemon_map ROUTE_26, 4
-	treemon_map ROUTE_27, 4
-	treemon_map ROUTE_28, 0
-	treemon_map ROUTE_29, 3
-	treemon_map ROUTE_30, 3
-	treemon_map ROUTE_31, 3
-	treemon_map ROUTE_32, 4
-	treemon_map ROUTE_33, 2
-	treemon_map ROUTE_34, 3
-	treemon_map ROUTE_35, 3
-	treemon_map ROUTE_36, 3
-	treemon_map ROUTE_37, 3
-	treemon_map ROUTE_38, 3
-	treemon_map ROUTE_39, 3
-	treemon_map ROUTE_40, 0
-	treemon_map ROUTE_41, 0
-	treemon_map ROUTE_42, 2
-	treemon_map ROUTE_43, 5
-	treemon_map ROUTE_44, 1
-	treemon_map ROUTE_45, 1
-	treemon_map ROUTE_46, 1
-	treemon_map NEW_BARK_TOWN, 0
-	treemon_map CHERRYGROVE_CITY, 0
-	treemon_map VIOLET_CITY, 0
-	treemon_map AZALEA_TOWN, 2
-	treemon_map CIANWOOD_CITY, 0
-	treemon_map GOLDENROD_CITY, 0
-	treemon_map OLIVINE_CITY, 0
-	treemon_map ECRUTEAK_CITY, 0
-	treemon_map MAHOGANY_TOWN, 0
-	treemon_map LAKE_OF_RAGE, 5
-	treemon_map BLACKTHORN_CITY, 0
-	treemon_map SILVER_CAVE_OUTSIDE, 0
-	treemon_map ILEX_FOREST, 6
-	db -1
-; b82c5
+INCLUDE "data/wild/treemon_maps.asm"
 
-RockMonMaps: ; b82c5
-	treemon_map CIANWOOD_CITY, 7
-	treemon_map ROUTE_40, 7
-	treemon_map DARK_CAVE_VIOLET_ENTRANCE, 7
-	treemon_map SLOWPOKE_WELL_B1F, 7
-	db -1
-; b82d2
-
 GetTreeMons: ; b82d2
 ; Return the address of TreeMon table a in hl.
 ; Return nc if table a doesn't exist.
@@ -533,129 +485,8 @@
 	ret
 ; b82e8
 
-TreeMons: ; b82e8
-	dw TreeMons1
-	dw TreeMons1
-	dw TreeMons2
-	dw TreeMons3
-	dw TreeMons4
-	dw TreeMons5
-	dw TreeMons6
-	dw RockMons
-	dw TreeMons1
+INCLUDE "data/wild/treemons.asm"
 
-; Two tables each (normal, rare).
-; Structure:
-;	db  %, species, level
-
-TreeMons1: ; b82fa
-	db 50, SPEAROW,    10
-	db 15, SPEAROW,    10
-	db 15, SPEAROW,    10
-	db 10, AIPOM,      10
-	db  5, AIPOM,      10
-	db  5, AIPOM,      10
-	db -1
-
-	db 50, SPEAROW,    10
-	db 15, HERACROSS,  10
-	db 15, HERACROSS,  10
-	db 10, AIPOM,      10
-	db  5, AIPOM,      10
-	db  5, AIPOM,      10
-	db -1
-
-TreeMons2: ; b8320
-	db 50, SPEAROW,    10
-	db 15, EKANS,      10
-	db 15, SPEAROW,    10
-	db 10, AIPOM,      10
-	db  5, AIPOM,      10
-	db  5, AIPOM,      10
-	db -1
-
-	db 50, SPEAROW,    10
-	db 15, HERACROSS,  10
-	db 15, HERACROSS,  10
-	db 10, AIPOM,      10
-	db  5, AIPOM,      10
-	db  5, AIPOM,      10
-	db -1
-
-TreeMons3: ; b8346
-	db 50, HOOTHOOT,   10
-	db 15, SPINARAK,   10
-	db 15, LEDYBA,     10
-	db 10, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db -1
-
-	db 50, HOOTHOOT,   10
-	db 15, PINECO,     10
-	db 15, PINECO,     10
-	db 10, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db -1
-
-TreeMons4: ; b836c
-	db 50, HOOTHOOT,   10
-	db 15, EKANS,      10
-	db 15, HOOTHOOT,   10
-	db 10, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db -1
-
-	db 50, HOOTHOOT,   10
-	db 15, PINECO,     10
-	db 15, PINECO,     10
-	db 10, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db -1
-
-TreeMons5: ; b8392
-	db 50, HOOTHOOT,   10
-	db 15, VENONAT,    10
-	db 15, HOOTHOOT,   10
-	db 10, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db -1
-
-	db 50, HOOTHOOT,   10
-	db 15, PINECO,     10
-	db 15, PINECO,     10
-	db 10, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db -1
-
-TreeMons6: ; b83b8
-	db 50, HOOTHOOT,   10
-	db 15, PINECO,     10
-	db 15, PINECO,     10
-	db 10, NOCTOWL,    10
-	db  5, BUTTERFREE, 10
-	db  5, BEEDRILL,   10
-	db -1
-
-	db 50, HOOTHOOT,   10
-	db 15, CATERPIE,   10
-	db 15, WEEDLE,     10
-	db 10, HOOTHOOT,   10
-	db  5, METAPOD,    10
-	db  5, KAKUNA,     10
-	db -1
-
-RockMons: ; b83de
-	db 90, KRABBY,     15
-	db 10, SHUCKLE,    15
-	db -1
-; b83e5
-
 GetTreeMon: ; b83e5
 	push hl
 	call GetTreeScore
@@ -850,9 +681,9 @@
 ; b84f2
 
 FishingGFX: ; b84f2
-INCBIN "gfx/ow_fx/chris_fish.2bpp"
+INCBIN "gfx/overworld/chris_fish.2bpp"
 ; b8582
 
 KrisFishingGFX: ; b8582
-INCBIN "gfx/ow_fx/kris_fish.2bpp"
+INCBIN "gfx/overworld/kris_fish.2bpp"
 ; b8612
--- a/engine/evolve.asm
+++ b/engine/evolve.asm
@@ -133,13 +133,13 @@
 
 ; TR_NITE
 	ld a, [TimeOfDay]
-	cp NITE
+	cp NITE_F
 	jp nz, .dont_evolve_3
 	jr .proceed
 
 .happiness_daylight
 	ld a, [TimeOfDay]
-	cp NITE
+	cp NITE_F
 	jp z, .dont_evolve_3
 	jr .proceed
 
--- a/engine/facings.asm
+++ /dev/null
@@ -1,264 +1,0 @@
-Facings: ; 4049
-; entries correspond to FACING_* constants
-	dw FacingStepDown0
-	dw FacingStepDown1
-	dw FacingStepDown2
-	dw FacingStepDown3
-	dw FacingStepUp0
-	dw FacingStepUp1
-	dw FacingStepUp2
-	dw FacingStepUp3
-	dw FacingStepLeft0
-	dw FacingStepLeft1
-	dw FacingStepLeft2
-	dw FacingStepLeft3
-	dw FacingStepRight0
-	dw FacingStepRight1
-	dw FacingStepRight2
-	dw FacingStepRight3
-	dw FacingFishDown
-	dw FacingFishUp
-	dw FacingFishLeft
-	dw FacingFishRight
-	dw FacingEmote
-	dw FacingShadow
-	dw FacingBigDollAsymmetric
-	dw FacingBigDollSymmetric
-	dw FacingWeirdTree0
-	dw FacingWeirdTree1
-	dw FacingWeirdTree2
-	dw FacingWeirdTree3
-	dw FacingBoulderDust1
-	dw FacingBoulderDust2
-	dw FacingGrass1
-	dw FacingGrass2
-FacingsEnd:
-	dw 0
-
-NUM_FACINGS EQU (FacingsEnd - Facings) / 2
-
-
-; Tables used as a reference to transform OAM data.
-
-; Format:
-;	db y, x, attributes, tile index
-
-FacingStepDown0:
-FacingStepDown2:
-FacingWeirdTree0:
-FacingWeirdTree2: ; standing down
-	db 4 ; #
-	db  0,  0, 0, $00
-	db  0,  8, 0, $01
-	db  8,  0, 2, $02
-	db  8,  8, 2, $03
-; 409c
-
-FacingStepDown1: ; walking down 1
-	db 4 ; #
-	db  0,  0, 0, $80
-	db  0,  8, 0, $81
-	db  8,  0, 2, $82
-	db  8,  8, 2, $83
-; 40ad
-
-FacingStepDown3: ; walking down 2
-	db 4 ; #
-	db  0,  8, X_FLIP, $80
-	db  0,  0, X_FLIP, $81
-	db  8,  8, 2 | X_FLIP, $82
-	db  8,  0, 2 | X_FLIP, $83
-; 40be
-
-FacingStepUp0:
-FacingStepUp2: ; standing up
-	db 4 ; #
-	db  0,  0, 0, $04
-	db  0,  8, 0, $05
-	db  8,  0, 2, $06
-	db  8,  8, 2, $07
-; 40cf
-
-FacingStepUp1: ; walking up 1
-	db 4 ; #
-	db  0,  0, 0, $84
-	db  0,  8, 0, $85
-	db  8,  0, 2, $86
-	db  8,  8, 2, $87
-; 40e0
-
-FacingStepUp3: ; walking up 2
-	db 4 ; #
-	db  0,  8, X_FLIP, $84
-	db  0,  0, X_FLIP, $85
-	db  8,  8, 2 | X_FLIP, $86
-	db  8,  0, 2 | X_FLIP, $87
-; 40f1
-
-FacingStepLeft0:
-FacingStepLeft2: ; standing left
-	db 4 ; #
-	db  0,  0, 0, $08
-	db  0,  8, 0, $09
-	db  8,  0, 2, $0a
-	db  8,  8, 2, $0b
-; 4102
-
-FacingStepRight0:
-FacingStepRight2: ; standing right
-	db 4 ; #
-	db  0,  8, X_FLIP, $08
-	db  0,  0, X_FLIP, $09
-	db  8,  8, 2 | X_FLIP, $0a
-	db  8,  0, 2 | X_FLIP, $0b
-; 4113
-
-FacingStepLeft1:
-FacingStepLeft3: ; walking left
-	db 4 ; #
-	db  0,  0, 0, $88
-	db  0,  8, 0, $89
-	db  8,  0, 2, $8a
-	db  8,  8, 2, $8b
-; 4124
-
-FacingStepRight1:
-FacingStepRight3: ; walking right
-	db 4 ; #
-	db  0,  8, X_FLIP, $88
-	db  0,  0, X_FLIP, $89
-	db  8,  8, 2 | X_FLIP, $8a
-	db  8,  0, 2 | X_FLIP, $8b
-; 4135
-
-FacingFishDown: ; fishing down
-	db 5 ; #
-	db  0,  0, 0, $00
-	db  0,  8, 0, $01
-	db  8,  0, 2, $02
-	db  8,  8, 2, $03
-	db 16,  0, 4, $fc
-; 414a
-
-FacingFishUp: ; fishing up
-	db 5 ; #
-	db  0,  0, 0, $04
-	db  0,  8, 0, $05
-	db  8,  0, 2, $06
-	db  8,  8, 2, $07
-	db -8,  0, 4, $fc
-; 415f
-
-FacingFishLeft: ; fishing left
-	db 5 ; #
-	db  0,  0, 0, $08
-	db  0,  8, 0, $09
-	db  8,  0, 2, $0a
-	db  8,  8, 2, $0b
-	db  5, -8, 4 | X_FLIP, $fd
-; 4174
-
-FacingFishRight: ; fishing right
-	db 5 ; #
-	db  0,  8, X_FLIP, $08
-	db  0,  0, X_FLIP, $09
-	db  8,  8, 2 | X_FLIP, $0a
-	db  8,  0, 2 | X_FLIP, $0b
-	db  5, 16, 4, $fd
-; 4189
-
-FacingEmote: ; emote
-	db 4 ; #
-	db  0,  0, 4, $f8
-	db  0,  8, 4, $f9
-	db  8,  0, 4, $fa
-	db  8,  8, 4, $fb
-; 419a
-
-FacingShadow: ; shadow
-	db 2 ; #
-	db  0,  0, 4, $fc
-	db  0,  8, 4 | X_FLIP, $fc
-; 41a3
-
-FacingBigDollSymmetric: ; big snorlax or lapras doll
-	db 16 ; #
-	db  0,  0, 0, $00
-	db  0,  8, 0, $01
-	db  8,  0, 0, $02
-	db  8,  8, 0, $03
-	db 16,  0, 0, $04
-	db 16,  8, 0, $05
-	db 24,  0, 0, $06
-	db 24,  8, 0, $07
-	db  0, 24, X_FLIP, $00
-	db  0, 16, X_FLIP, $01
-	db  8, 24, X_FLIP, $02
-	db  8, 16, X_FLIP, $03
-	db 16, 24, X_FLIP, $04
-	db 16, 16, X_FLIP, $05
-	db 24, 24, X_FLIP, $06
-	db 24, 16, X_FLIP, $07
-; 41e4
-
-FacingWeirdTree1: ; 41e4
-	db 4 ; #
-	db  0,  0, 0, $04
-	db  0,  8, 0, $05
-	db  8,  0, 0, $06
-	db  8,  8, 0, $07
-; 41f5
-
-FacingWeirdTree3: ; 41f5
-	db 4 ; #
-	db  0,  8, X_FLIP, $04
-	db  0,  0, X_FLIP, $05
-	db  8,  8, X_FLIP, $06
-	db  8,  0, X_FLIP, $07
-; 4206
-
-FacingBigDollAsymmetric: ; big doll other than snorlax or lapras
-	db 14 ; #
-	db  0,  0, 0, $00
-	db  0,  8, 0, $01
-	db  8,  0, 0, $04
-	db  8,  8, 0, $05
-	db 16,  8, 0, $07
-	db 24,  8, 0, $0a
-	db  0, 24, 0, $03
-	db  0, 16, 0, $02
-	db  8, 24, X_FLIP, $02
-	db  8, 16, 0, $06
-	db 16, 24, 0, $09
-	db 16, 16, 0, $08
-	db 24, 24, X_FLIP, $04
-	db 24, 16, 0, $0b
-; 423f
-
-FacingBoulderDust1: ; boulder dust 1
-	db 4 ; #
-	db  0,  0, 4, $fe
-	db  0,  8, 4, $fe
-	db  8,  0, 4, $fe
-	db  8,  8, 4, $fe
-; 4250
-
-FacingBoulderDust2: ; boulder dust 2
-	db 4 ; #
-	db  0,  0, 4, $ff
-	db  0,  8, 4, $ff
-	db  8,  0, 4, $ff
-	db  8,  8, 4, $ff
-; 4261
-
-FacingGrass1: ; 4261
-	db 2 ; #
-	db  8,  0, 4, $fe
-	db  8,  8, 4 | X_FLIP, $fe
-; 426a
-
-FacingGrass2: ; 426a
-	db 2 ; #
-	db  9, -1, 4, $fe
-	db  9,  9, 4 | X_FLIP, $fe
-; 4273
--- a/engine/fish.asm
+++ b/engine/fish.asm
@@ -81,7 +81,7 @@
 
 	ld a, [TimeOfDay]
 	and 3
-	cp NITE
+	cp NITE_F
 	jr c, .time_species
 	inc hl
 	inc hl
--- a/engine/fruit_trees.asm
+++ b/engine/fruit_trees.asm
@@ -102,38 +102,9 @@
 	ret
 ; 44097
 
-FruitTreeItems: ; 44097
-	db BERRY
-	db BERRY
-	db BERRY
-	db BERRY
-	db PSNCUREBERRY
-	db PSNCUREBERRY
-	db BITTER_BERRY
-	db BITTER_BERRY
-	db PRZCUREBERRY
-	db PRZCUREBERRY
-	db MYSTERYBERRY
-	db MYSTERYBERRY
-	db ICE_BERRY
-	db ICE_BERRY
-	db MINT_BERRY
-	db BURNT_BERRY
-	db RED_APRICORN
-	db BLU_APRICORN
-	db BLK_APRICORN
-	db WHT_APRICORN
-	db PNK_APRICORN
-	db GRN_APRICORN
-	db YLW_APRICORN
-	db BERRY
-	db PSNCUREBERRY
-	db BITTER_BERRY
-	db PRZCUREBERRY
-	db ICE_BERRY
-	db MINT_BERRY
-	db BURNT_BERRY
-; 440b5
+
+INCLUDE "data/fruit_tree_items.asm"
+
 
 FruitBearingTreeText: ; 440b5
 	text_jump _FruitBearingTreeText
--- a/engine/healmachineanim.asm
+++ b/engine/healmachineanim.asm
@@ -137,7 +137,7 @@
 ; 123fc
 
 .HealMachineGFX: ; 123fc
-INCBIN "gfx/ow_fx/heal_machine.2bpp"
+INCBIN "gfx/overworld/heal_machine.2bpp"
 ; 1241c
 
 .HOF_OAM: ; 1241c
--- a/engine/intro_menu.asm
+++ b/engine/intro_menu.asm
@@ -199,8 +199,6 @@
 	ld [Coins], a
 	ld [Coins + 1], a
 
-START_MONEY EQU 3000
-
 IF START_MONEY / $10000
 	ld a, START_MONEY / $10000
 ENDC
@@ -214,11 +212,11 @@
 	ld [wWhichMomItem], a
 
 	ld hl, MomItemTriggerBalance
-	ld [hl], 2300 / $10000
+	ld [hl], MOM_MONEY / $10000
 	inc hl
-	ld [hl], 2300 / $100 % $100
+	ld [hl], MOM_MONEY / $100 % $100
 	inc hl
-	ld [hl], 2300 % $100
+	ld [hl], MOM_MONEY % $100
 
 	call InitializeNPCNames
 
--- a/engine/landmarks.asm
+++ b/engine/landmarks.asm
@@ -47,213 +47,7 @@
 ; 0x1ca8c3
 
 
-Landmarks: ; 0x1ca8c3
-
-landmark: MACRO
-	db \1, \2
-	dw \3
-ENDM
-
-	landmark   0,   0, SpecialMapName
-	landmark 148, 116, NewBarkTownName
-	landmark 136, 116, Route29Name
-	landmark 108, 116, CherrygroveCityName
-	landmark 108,  96, Route30Name
-	landmark 104,  76, Route31Name
-	landmark  92,  76, VioletCityName
-	landmark  93,  74, SproutTowerName
-	landmark  92, 108, Route32Name
-	landmark  84,  92, RuinsOfAlphName
-	landmark  92, 140, UnionCaveName
-	landmark  90, 140, Route33Name
-	landmark  76, 140, AzaleaTownName
-	landmark  78, 138, SlowpokeWellName
-	landmark  60, 136, IlexForestName
-	landmark  60, 128, Route34Name
-	landmark  60, 108, GoldenrodCityName
-	landmark  58, 108, RadioTowerName
-	landmark  60,  92, Route35Name
-	landmark  60,  76, NationalParkName
-	landmark  72,  76, Route36Name
-	landmark  76,  68, Route37Name
-	landmark  76,  60, EcruteakCityName
-	landmark  78,  58, TinTowerName
-	landmark  74,  58, BurnedTowerName
-	landmark  60,  60, Route38Name
-	landmark  44,  64, Route39Name
-	landmark  44,  76, OlivineCityName
-	landmark  46,  78, LighthouseName
-	landmark  36,  72, BattleTowerName
-	landmark  36,  80, Route40Name
-	landmark  36, 108, WhirlIslandsName
-	landmark  36, 116, Route41Name
-	landmark  28, 116, CianwoodCityName
-	landmark 100,  60, Route42Name
-	landmark  92,  60, MtMortarName
-	landmark 116,  60, MahoganyTownName
-	landmark 116,  52, Route43Name
-	landmark 116,  44, LakeOfRageName
-	landmark 128,  60, Route44Name
-	landmark 138,  54, IcePathName
-	landmark 140,  60, BlackthornCityName
-	landmark 140,  52, DragonsDenName
-	landmark 140,  80, Route45Name
-	landmark 120,  88, DarkCaveName
-	landmark 132, 104, Route46Name
-	landmark 156,  84, SilverCaveName
-	landmark  60, 124, PalletTownName
-	landmark  60, 108, Route1Name
-	landmark  60,  92, ViridianCityName
-	landmark  60,  80, Route2Name
-	landmark  60,  68, PewterCityName
-	landmark  72,  68, Route3Name
-	landmark  84,  68, MtMoonName
-	landmark  96,  68, Route4Name
-	landmark 108,  68, CeruleanCityName
-	landmark 108,  60, Route24Name
-	landmark 116,  52, Route25Name
-	landmark 108,  76, Route5Name
-	landmark 116,  92, UndergroundName
-	landmark 108,  92, Route6Name
-	landmark 108, 100, VermilionCityName
-	landmark  96,  76, DiglettsCaveName
-	landmark  96,  84, Route7Name
-	landmark 124,  84, Route8Name
-	landmark 124,  68, Route9Name
-	landmark 140,  68, RockTunnelName
-	landmark 140,  72, Route10Name
-	landmark 140,  76, PowerPlantName
-	landmark 140,  84, LavenderTownName
-	landmark 148,  84, LavRadioTowerName
-	landmark  84,  84, CeladonCityName
-	landmark 108,  84, SaffronCityName
-	landmark 124, 100, Route11Name
-	landmark 140,  96, Route12Name
-	landmark 132, 116, Route13Name
-	landmark 124, 128, Route14Name
-	landmark 112, 132, Route15Name
-	landmark  76,  84, Route16Name
-	landmark  76, 108, Route17Name
-	landmark  88, 132, Route18Name
-	landmark 100, 132, FuchsiaCityName
-	landmark 100, 144, Route19Name
-	landmark  84, 148, Route20Name
-	landmark  76, 148, SeafoamIslandsName
-	landmark  60, 148, CinnabarIslandName
-	landmark  60, 136, Route21Name
-	landmark  44,  84, Route22Name
-	landmark  36,  68, VictoryRoadName
-	landmark  36,  60, Route23Name
-	landmark  36,  52, IndigoPlateauName
-	landmark  36, 108, Route26Name
-	landmark  28, 116, Route27Name
-	landmark  20, 116, TohjoFallsName
-	landmark  28,  84, Route28Name
-	landmark 148, 132, FastShipName
-
-
-NewBarkTownName:     db "NEW BARK¯TOWN@"
-CherrygroveCityName: db "CHERRYGROVE¯CITY@"
-VioletCityName:      db "VIOLET CITY@"
-AzaleaTownName:      db "AZALEA TOWN@"
-GoldenrodCityName:   db "GOLDENROD¯CITY@"
-EcruteakCityName:    db "ECRUTEAK¯CITY@"
-OlivineCityName:     db "OLIVINE¯CITY@"
-CianwoodCityName:    db "CIANWOOD¯CITY@"
-MahoganyTownName:    db "MAHOGANY¯TOWN@"
-BlackthornCityName:  db "BLACKTHORN¯CITY@"
-LakeOfRageName:      db "LAKE OF¯RAGE@"
-SilverCaveName:      db "SILVER CAVE@"
-SproutTowerName:     db "SPROUT¯TOWER@"
-RuinsOfAlphName:     db "RUINS¯OF ALPH@"
-UnionCaveName:       db "UNION CAVE@"
-SlowpokeWellName:    db "SLOWPOKE¯WELL@"
-RadioTowerName:      db "RADIO TOWER@"
-PowerPlantName:      db "POWER PLANT@"
-NationalParkName:    db "NATIONAL¯PARK@"
-TinTowerName:        db "TIN TOWER@"
-LighthouseName:      db "LIGHTHOUSE@"
-WhirlIslandsName:    db "WHIRL¯ISLANDS@"
-MtMortarName:        db "MT.MORTAR@"
-DragonsDenName:      db "DRAGON'S¯DEN@"
-IcePathName:         db "ICE PATH@"
-NotApplicableName:   db "N/A@"
-PalletTownName:      db "PALLET TOWN@"
-ViridianCityName:    db "VIRIDIAN¯CITY@"
-PewterCityName:      db "PEWTER CITY@"
-CeruleanCityName:    db "CERULEAN¯CITY@"
-LavenderTownName:    db "LAVENDER¯TOWN@"
-VermilionCityName:   db "VERMILION¯CITY@"
-CeladonCityName:     db "CELADON¯CITY@"
-SaffronCityName:     db "SAFFRON¯CITY@"
-FuchsiaCityName:     db "FUCHSIA¯CITY@"
-CinnabarIslandName:  db "CINNABAR¯ISLAND@"
-IndigoPlateauName:   db "INDIGO¯PLATEAU@"
-VictoryRoadName:     db "VICTORY¯ROAD@"
-MtMoonName:          db "MT.MOON@"
-RockTunnelName:      db "ROCK TUNNEL@"
-LavRadioTowerName:   db "LAV¯RADIO TOWER@"
-SilphCoName:         db "SILPH CO.@"
-SafariZoneName:      db "SAFARI ZONE@"
-SeafoamIslandsName:  db "SEAFOAM¯ISLANDS@"
-PokemonMansionName:  db "#MON¯MANSION@"
-CeruleanCaveName:    db "CERULEAN¯CAVE@"
-Route1Name:          db "ROUTE 1@"
-Route2Name:          db "ROUTE 2@"
-Route3Name:          db "ROUTE 3@"
-Route4Name:          db "ROUTE 4@"
-Route5Name:          db "ROUTE 5@"
-Route6Name:          db "ROUTE 6@"
-Route7Name:          db "ROUTE 7@"
-Route8Name:          db "ROUTE 8@"
-Route9Name:          db "ROUTE 9@"
-Route10Name:         db "ROUTE 10@"
-Route11Name:         db "ROUTE 11@"
-Route12Name:         db "ROUTE 12@"
-Route13Name:         db "ROUTE 13@"
-Route14Name:         db "ROUTE 14@"
-Route15Name:         db "ROUTE 15@"
-Route16Name:         db "ROUTE 16@"
-Route17Name:         db "ROUTE 17@"
-Route18Name:         db "ROUTE 18@"
-Route19Name:         db "ROUTE 19@"
-Route20Name:         db "ROUTE 20@"
-Route21Name:         db "ROUTE 21@"
-Route22Name:         db "ROUTE 22@"
-Route23Name:         db "ROUTE 23@"
-Route24Name:         db "ROUTE 24@"
-Route25Name:         db "ROUTE 25@"
-Route26Name:         db "ROUTE 26@"
-Route27Name:         db "ROUTE 27@"
-Route28Name:         db "ROUTE 28@"
-Route29Name:         db "ROUTE 29@"
-Route30Name:         db "ROUTE 30@"
-Route31Name:         db "ROUTE 31@"
-Route32Name:         db "ROUTE 32@"
-Route33Name:         db "ROUTE 33@"
-Route34Name:         db "ROUTE 34@"
-Route35Name:         db "ROUTE 35@"
-Route36Name:         db "ROUTE 36@"
-Route37Name:         db "ROUTE 37@"
-Route38Name:         db "ROUTE 38@"
-Route39Name:         db "ROUTE 39@"
-Route40Name:         db "ROUTE 40@"
-Route41Name:         db "ROUTE 41@"
-Route42Name:         db "ROUTE 42@"
-Route43Name:         db "ROUTE 43@"
-Route44Name:         db "ROUTE 44@"
-Route45Name:         db "ROUTE 45@"
-Route46Name:         db "ROUTE 46@"
-DarkCaveName:        db "DARK CAVE@"
-IlexForestName:      db "ILEX¯FOREST@"
-BurnedTowerName:     db "BURNED¯TOWER@"
-FastShipName:        db "FAST SHIP@"
-ViridianForestName:  db "VIRIDIAN¯FOREST@"
-DiglettsCaveName:    db "DIGLETT'S¯CAVE@"
-TohjoFallsName:      db "TOHJO FALLS@"
-UndergroundName:     db "UNDERGROUND@"
-BattleTowerName:     db "BATTLE¯TOWER@"
-SpecialMapName:      db "SPECIAL@"
+INCLUDE "data/landmarks.asm"
 
 
 RegionCheck: ; 0x1caea1
--- a/engine/link.asm
+++ b/engine/link.asm
@@ -737,8 +737,8 @@
 .skip_steel
 	push bc
 	dec a
-	ld hl, BaseData + 7 ; type
-	ld bc, BaseData1 - BaseData0
+	ld hl, BaseData + BASE_TYPES
+	ld bc, BASE_DATA_SIZE
 	call AddNTimes
 	ld bc, 2
 	ld a, BANK(BaseData)
@@ -1112,7 +1112,7 @@
 	and a
 	ret z
 	push hl
-	ld hl, .TimeCapsuleAlt
+	ld hl, TimeCapsule_CatchRateItems
 .loop
 	ld a, [hli]
 	and a
@@ -1129,25 +1129,10 @@
 	pop hl
 	ret
 
-.TimeCapsuleAlt: ; 28785
-; Pokémon traded from RBY do not have held items, so GSC usually interprets the
-; catch rate as an item. However, if the catch rate appears in this table, the
-; item associated with the table entry is used instead.
-	db ITEM_19, LEFTOVERS
-	db ITEM_2D, BITTER_BERRY
-	db ITEM_32, GOLD_BERRY
-	db ITEM_5A, BERRY
-	db ITEM_64, BERRY
-	db ITEM_78, BERRY
-	db ITEM_87, BERRY
-	db ITEM_BE, BERRY
-	db ITEM_C3, BERRY
-	db ITEM_DC, BERRY
-	db ITEM_FA, BERRY
-	db -1,      BERRY
-	db  0
-; 2879e
 
+INCLUDE "data/time_capsule/catch_rate_items.asm"
+
+
 Link_CopyOTData: ; 2879e
 .loop
 	ld a, [hli]
@@ -2594,5 +2579,5 @@
 
 GFX_29f54: ; 29f54
 ; unreferenced
-INCBIN "gfx/unknown/029f54.2bpp"
+INCBIN "gfx/unknown/unused_border.2bpp"
 ; 29fe4
--- a/engine/map_objects.asm
+++ b/engine/map_objects.asm
@@ -1,8 +1,9 @@
 
-INCLUDE "engine/facings.asm"
+INCLUDE "data/facings.asm"
 
-SpriteMovementData:: ; 4273
+
 INCLUDE "data/map_objects.asm"
+
 
 ; 4357
 DeleteMapObject:: ; 4357
--- a/engine/map_triggers.asm
+++ /dev/null
@@ -1,91 +1,0 @@
-MapTriggers:: ; 4d01e
-; Map triggers
-
-trigger_def: MACRO
-; db group, map
-; dw address
-	map \1
-	dw \2
-ENDM
-
-	trigger_def POKECENTER_2F,                          wPokecenter2FTrigger
-	trigger_def TRADE_CENTER,                           wTradeCenterTrigger
-	trigger_def COLOSSEUM,                              wColosseumTrigger
-	trigger_def TIME_CAPSULE,                           wTimeCapsuleTrigger
-	trigger_def POWER_PLANT,                            wPowerPlantTrigger
-	trigger_def CERULEAN_GYM,                           wCeruleanGymTrigger
-	trigger_def ROUTE_25,                               wRoute25Trigger
-	trigger_def TRAINER_HOUSE_B1F,                      wTrainerHouseB1FTrigger
-	trigger_def VICTORY_ROAD_GATE,                      wVictoryRoadGateTrigger
-	trigger_def SAFFRON_TRAIN_STATION,                  wSaffronTrainStationTrigger
-	trigger_def ROUTE_16_GATE,                          wRoute16GateTrigger
-	trigger_def ROUTE_17_18_GATE,                       wRoute1718GateTrigger
-	trigger_def INDIGO_PLATEAU_POKECENTER_1F,           wIndigoPlateauPokecenter1FTrigger
-	trigger_def WILLS_ROOM,                             wWillsRoomTrigger
-	trigger_def KOGAS_ROOM,                             wKogasRoomTrigger
-	trigger_def BRUNOS_ROOM,                            wBrunosRoomTrigger
-	trigger_def KARENS_ROOM,                            wKarensRoomTrigger
-	trigger_def LANCES_ROOM,                            wLancesRoomTrigger
-	trigger_def HALL_OF_FAME,                           wHallOfFameTrigger
-	trigger_def ROUTE_27,                               wRoute27Trigger
-	trigger_def NEW_BARK_TOWN,                          wNewBarkTownTrigger
-	trigger_def ELMS_LAB,                               wElmsLabTrigger
-	trigger_def KRISS_HOUSE_1F,                         wKrissHouse1FTrigger
-	trigger_def ROUTE_29,                               wRoute29Trigger
-	trigger_def CHERRYGROVE_CITY,                       wCherrygroveCityTrigger
-	trigger_def MR_POKEMONS_HOUSE,                      wMrPokemonsHouseTrigger
-	trigger_def ROUTE_32,                               wRoute32Trigger
-	trigger_def ROUTE_35_NATIONAL_PARK_GATE,            wRoute35NationalParkGateTrigger
-	trigger_def ROUTE_36,                               wRoute36Trigger
-	trigger_def ROUTE_36_NATIONAL_PARK_GATE,            wRoute36NationalParkGateTrigger
-	trigger_def AZALEA_TOWN,                            wAzaleaTownTrigger
-	trigger_def GOLDENROD_GYM,                          wGoldenrodGymTrigger
-	trigger_def GOLDENROD_MAGNET_TRAIN_STATION,         wGoldenrodMagnetTrainStationTrigger
-	trigger_def GOLDENROD_POKECENTER_1F,                wGoldenrodPokecenter1FTrigger
-	trigger_def OLIVINE_CITY,                           wOlivineCityTrigger
-	trigger_def ROUTE_34,                               wRoute34Trigger
-	trigger_def ROUTE_34_ILEX_FOREST_GATE,              wRoute34IlexForestGateTrigger
-	trigger_def ECRUTEAK_HOUSE,                         wEcruteakHouseTrigger
-	trigger_def WISE_TRIOS_ROOM,                        wWiseTriosRoomTrigger
-	trigger_def ECRUTEAK_POKECENTER_1F,                 wEcruteakPokecenter1FTrigger
-	trigger_def ECRUTEAK_GYM,                           wEcruteakGymTrigger
-	trigger_def MAHOGANY_TOWN,                          wMahoganyTownTrigger
-	trigger_def ROUTE_42,                               wRoute42Trigger
-	trigger_def CIANWOOD_CITY,                          wCianwoodCityTrigger
-	trigger_def BATTLE_TOWER_1F,                        wBattleTower1FTrigger
-	trigger_def BATTLE_TOWER_BATTLE_ROOM,               wBattleTowerBattleRoomTrigger
-	trigger_def BATTLE_TOWER_ELEVATOR,                  wBattleTowerElevatorTrigger
-	trigger_def BATTLE_TOWER_HALLWAY,                   wBattleTowerHallwayTrigger
-	trigger_def BATTLE_TOWER_OUTSIDE,                   wBattleTowerOutsideTrigger
-	trigger_def ROUTE_43_GATE,                          wRoute43GateTrigger
-	trigger_def MOUNT_MOON,                             wMountMoonTrigger
-	trigger_def SPROUT_TOWER_3F,                        wSproutTower3FTrigger
-	trigger_def TIN_TOWER_1F,                           wTinTower1FTrigger
-	trigger_def BURNED_TOWER_1F,                        wBurnedTower1FTrigger
-	trigger_def BURNED_TOWER_B1F,                       wBurnedTowerB1FTrigger
-	trigger_def RADIO_TOWER_5F,                         wRadioTower5FTrigger
-	trigger_def RUINS_OF_ALPH_OUTSIDE,                  wRuinsOfAlphOutsideTrigger
-	trigger_def RUINS_OF_ALPH_RESEARCH_CENTER,          wRuinsOfAlphResearchCenterTrigger
-	trigger_def RUINS_OF_ALPH_HO_OH_CHAMBER,            wRuinsOfAlphHoOhChamberTrigger
-	trigger_def RUINS_OF_ALPH_KABUTO_CHAMBER,           wRuinsOfAlphKabutoChamberTrigger
-	trigger_def RUINS_OF_ALPH_OMANYTE_CHAMBER,          wRuinsOfAlphOmanyteChamberTrigger
-	trigger_def RUINS_OF_ALPH_AERODACTYL_CHAMBER,       wRuinsOfAlphAerodactylChamberTrigger
-	trigger_def RUINS_OF_ALPH_INNER_CHAMBER,            wRuinsOfAlphInnerChamberTrigger
-	trigger_def MAHOGANY_MART_1F,                       wMahoganyMart1FTrigger
-	trigger_def TEAM_ROCKET_BASE_B1F,                   wTeamRocketBaseB1FTrigger
-	trigger_def TEAM_ROCKET_BASE_B2F,                   wTeamRocketBaseB2FTrigger
-	trigger_def TEAM_ROCKET_BASE_B3F,                   wTeamRocketBaseB3FTrigger
-	trigger_def UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES, wUndergroundPathSwitchRoomEntrancesTrigger
-	trigger_def SILVER_CAVE_ROOM_3,                     wSilverCaveRoom3Trigger
-	trigger_def VICTORY_ROAD,                           wVictoryRoadTrigger
-	trigger_def DRAGONS_DEN_B1F,                        wDragonsDenB1FTrigger
-	trigger_def DRAGON_SHRINE,                          wDragonShrineTrigger
-	trigger_def OLIVINE_PORT,                           wOlivinePortTrigger
-	trigger_def VERMILION_PORT,                         wVermilionPortTrigger
-	trigger_def FAST_SHIP_1F,                           wFastShip1FTrigger
-	trigger_def FAST_SHIP_B1F,                          wFastShipB1FTrigger
-	trigger_def MOUNT_MOON_SQUARE,                      wMountMoonSquareTrigger
-	trigger_def MOBILE_TRADE_ROOM_MOBILE,               wMobileTradeRoomMobileTrigger
-	trigger_def MOBILE_BATTLE_ROOM,                     wMobileBattleRoomTrigger
-	db -1
-; 4d15b
--- a/engine/mon_icons.asm
+++ b/engine/mon_icons.asm
@@ -450,4 +450,27 @@
 	jr nz, .loop
 	ret
 
-INCLUDE "menu/mon_icons.asm"
+ReadMonMenuIcon: ; 8eab3
+	cp EGG
+	jr z, .egg
+	dec a
+	ld hl, MonMenuIcons
+	ld e, a
+	ld d, 0
+	add hl, de
+	ld a, [hl]
+	ret
+.egg
+	ld a, ICON_EGG
+	ret
+; 8eac4
+
+
+INCLUDE "data/mon_menu_icons.asm"
+
+
+INCLUDE "gfx/icon_pointers.asm"
+
+Icons:
+INCLUDE "gfx/icons.asm"
+
--- a/engine/move_mon.asm
+++ b/engine/move_mon.asm
@@ -446,9 +446,9 @@
 	ld a, [wPokemonWithdrawDepositParameter]
 	and a
 	jr z, .check_IfPartyIsFull
-	cp DAYCARE_WITHDRAW
+	cp DAY_CARE_WITHDRAW
 	jr z, .check_IfPartyIsFull
-	cp DAYCARE_DEPOSIT
+	cp DAY_CARE_DEPOSIT
 	ld hl, wBreedMon1Species
 	jr z, .breedmon
 
@@ -473,7 +473,7 @@
 	ld b, 0
 	add hl, bc
 	ld a, [wPokemonWithdrawDepositParameter]
-	cp DAYCARE_WITHDRAW
+	cp DAY_CARE_WITHDRAW
 	ld a, [wBreedMon1Species]
 	jr z, .okay1
 	ld a, [CurPartySpecies]
@@ -504,7 +504,7 @@
 	ld hl, sBoxMon1Species
 	ld bc, BOXMON_STRUCT_LENGTH
 	jr z, .okay3
-	cp DAYCARE_WITHDRAW
+	cp DAY_CARE_WITHDRAW
 	ld hl, wBreedMon1Species
 	jr z, .okay4
 	ld hl, PartyMon1Species
@@ -518,7 +518,7 @@
 	ld bc, BOXMON_STRUCT_LENGTH
 	call CopyBytes
 	ld a, [wPokemonWithdrawDepositParameter]
-	cp DAYCARE_DEPOSIT
+	cp DAY_CARE_DEPOSIT
 	ld de, wBreedMon1OT
 	jr z, .okay5
 	dec a
@@ -540,7 +540,7 @@
 	and a
 	jr z, .okay7
 	ld hl, wBreedMon1OT
-	cp DAYCARE_WITHDRAW
+	cp DAY_CARE_WITHDRAW
 	jr z, .okay8
 	ld hl, PartyMonOT
 
@@ -552,7 +552,7 @@
 	ld bc, NAME_LENGTH
 	call CopyBytes
 	ld a, [wPokemonWithdrawDepositParameter]
-	cp DAYCARE_DEPOSIT
+	cp DAY_CARE_DEPOSIT
 	ld de, wBreedMon1Nick
 	jr z, .okay9
 	dec a
@@ -574,7 +574,7 @@
 	and a
 	jr z, .okay11
 	ld hl, wBreedMon1Nick
-	cp DAYCARE_WITHDRAW
+	cp DAY_CARE_WITHDRAW
 	jr z, .okay12
 	ld hl, PartyMonNicknames
 
@@ -590,7 +590,7 @@
 	ld a, [wPokemonWithdrawDepositParameter]
 	cp PC_DEPOSIT
 	jr z, .took_out_of_box
-	cp DAYCARE_DEPOSIT
+	cp DAY_CARE_DEPOSIT
 	jp z, .CloseSRAM_And_ClearCarryFlag
 
 	push hl
@@ -732,7 +732,7 @@
 	ret
 ; dd21
 
-RetrievePokemonFromDaycareMan: ; dd21
+RetrievePokemonFromDayCareMan: ; dd21
 	ld a, [wBreedMon1Species]
 	ld [CurPartySpecies], a
 	ld de, SFX_TRANSACTION
@@ -748,7 +748,7 @@
 	jp Functiondd64
 ; dd42
 
-RetrievePokemonFromDaycareLady: ; dd42
+RetrievePokemonFromDayCareLady: ; dd42
 	ld a, [wBreedMon2Species]
 	ld [CurPartySpecies], a
 	ld de, SFX_TRANSACTION
@@ -872,7 +872,7 @@
 	ret
 ; de2a
 
-DepositMonWithDaycareMan: ; de2a
+DepositMonWithDayCareMan: ; de2a
 	ld de, wBreedMon1Nick
 	call DepositBreedmon
 	xor a
@@ -880,7 +880,7 @@
 	jp RemoveMonFromPartyOrBox
 ; de37
 
-DepositMonWithDaycareLady: ; de37
+DepositMonWithDayCareLady: ; de37
 	ld de, wBreedMon2Nick
 	call DepositBreedmon
 	xor a
--- a/engine/mysterygift.asm
+++ b/engine/mysterygift.asm
@@ -1411,7 +1411,7 @@
 	ret
 
 MysteryGiftGFX: ; 105258
-INCBIN "gfx/misc/mystery_gift.2bpp"
+INCBIN "gfx/mystery_gift/mystery_gift.2bpp"
 MysteryGiftGFXEnd:
 
 Function105688: ; 105688 (41:5688)
@@ -1732,4 +1732,4 @@
 
 ; japanese mystery gift gfx
 MysteryGiftJP_GFX: ; 105930
-INCBIN "gfx/misc/mystery_gift_jp.2bpp"
+INCBIN "gfx/mystery_gift/mystery_gift_jp.2bpp"
--- a/engine/mysterygift2.asm
+++ b/engine/mysterygift2.asm
@@ -123,7 +123,7 @@
 
 MysteryGiftGetItemHeldEffect: ; 2c708 (b:4708)
 	ld a, c
-	cp $25 ; 37
+	cp MysteryGiftItemsEnd - MysteryGiftItems
 	jr nc, MysteryGiftFallbackItem
 	ld hl, MysteryGiftItems
 	ld b, 0
@@ -133,7 +133,7 @@
 
 MysteryGiftGetDecoration: ; 2c715 (b:4715)
 	ld a, c
-	cp $25 ; 37
+	cp MysteryGiftDecosEnd - MysteryGiftDecos
 	jr nc, MysteryGiftFallbackItem
 	ld hl, MysteryGiftDecos
 	ld b, 0
@@ -146,82 +146,7 @@
 	ret
 ; 2c725 (b:4725)
 
-MysteryGiftItems: ; 2c725
-	db BERRY
-	db PRZCUREBERRY
-	db MINT_BERRY
-	db ICE_BERRY
-	db BURNT_BERRY
-	db PSNCUREBERRY
-	db GUARD_SPEC
-	db X_DEFEND
-	db X_ATTACK
-	db BITTER_BERRY
-	db DIRE_HIT
-	db X_SPECIAL
-	db X_ACCURACY
-	db EON_MAIL
-	db MORPH_MAIL
-	db MUSIC_MAIL
-	db MIRACLEBERRY
-	db GOLD_BERRY
-	db REVIVE
-	db GREAT_BALL
-	db SUPER_REPEL
-	db MAX_REPEL
-	db ELIXER
-	db ETHER
-	db WATER_STONE
-	db FIRE_STONE
-	db LEAF_STONE
-	db THUNDERSTONE
-	db MAX_ETHER
-	db MAX_ELIXER
-	db MAX_REVIVE
-	db SCOPE_LENS
-	db HP_UP
-	db PP_UP
-	db RARE_CANDY
-	db BLUESKY_MAIL
-	db MIRAGE_MAIL
-; 2c74a
 
-MysteryGiftDecos: ; 2c74a
-	db DECOFLAG_PIKACHU_DOLL
-	db DECOFLAG_BULBASAUR_DOLL
-	db DECOFLAG_CHARMANDER_DOLL
-	db DECOFLAG_SQUIRTLE_DOLL
-	db DECOFLAG_POLIWAG_DOLL
-	db DECOFLAG_DIGLETT_DOLL
-	db DECOFLAG_STARMIE_DOLL
-	db DECOFLAG_MAGIKARP_DOLL
-	db DECOFLAG_ODDISH_DOLL
-	db DECOFLAG_GENGAR_DOLL
-	db DECOFLAG_CLEFAIRY_POSTER
-	db DECOFLAG_JIGGLYPUFF_POSTER
-	db DECOFLAG_SNES
-	db DECOFLAG_SHELLDER_DOLL
-	db DECOFLAG_VOLTORB_DOLL
-	db DECOFLAG_WEEDLE_DOLL
-	db DECOFLAG_MAGNAPLANT
-	db DECOFLAG_TROPICPLANT
-	db DECOFLAG_FAMICOM
-	db DECOFLAG_N64
-	db DECOFLAG_SURF_PIKACHU_DOLL
-	db DECOFLAG_JIGGLYPUFF_DOLL
-	db DECOFLAG_PINK_BED
-	db DECOFLAG_POLKADOT_BED
-	db DECOFLAG_RED_CARPET
-	db DECOFLAG_BLUE_CARPET
-	db DECOFLAG_YELLOW_CARPET
-	db DECOFLAG_GREEN_CARPET
-	db DECOFLAG_JUMBOPLANT
-	db DECOFLAG_VIRTUAL_BOY
-	db DECOFLAG_MACHOP_DOLL
-	db DECOFLAG_PIKACHU_POSTER
-	db DECOFLAG_TENTACOOL_DOLL
-	db DECOFLAG_BIG_ONIX_DOLL
-	db DECOFLAG_PIKACHU_BED
-	db DECOFLAG_GRIMER_DOLL
-	db DECOFLAG_UNOWN_DOLL
-; 2c76f
+INCLUDE "data/mystery_gift/items.asm"
+
+INCLUDE "data/mystery_gift/decos.asm"
--- a/engine/namingscreen.asm
+++ b/engine/namingscreen.asm
@@ -953,36 +953,7 @@
 INCBIN "gfx/namingscreen/cursor.2bpp"
 ; 11ce7
 
-NameInputLower:
-	db "a b c d e f g h i"
-	db "j k l m n o p q r"
-	db "s t u v w x y z  "
-	db "× ( ) : ; [ ] <PK> <MN>"
-	db "UPPER  DEL   END "
-
-BoxNameInputLower:
-	db "a b c d e f g h i"
-	db "j k l m n o p q r"
-	db "s t u v w x y z  "
-	db "é 'd 'l 'm 'r 's 't 'v 0"
-	db "1 2 3 4 5 6 7 8 9"
-	db "UPPER  DEL   END "
-
-NameInputUpper:
-	db "A B C D E F G H I"
-	db "J K L M N O P Q R"
-	db "S T U V W X Y Z  "
-	db "- ? ! / . ,      "
-	db "lower  DEL   END "
-
-BoxNameInputUpper:
-	db "A B C D E F G H I"
-	db "J K L M N O P Q R"
-	db "S T U V W X Y Z  "
-	db "× ( ) : ; [ ] <PK> <MN>"
-	db "- ? ! ♂ ♀ / . , &"
-	db "lower  DEL   END "
-
+INCLUDE "data/name_input_chars.asm"
 ; 11e5d
 
 NamingScreenGFX_End: ; unused
@@ -1499,22 +1470,6 @@
 
 ; 121dd
 
-MailEntry_Uppercase: ; 122dd
-	db "A B C D E F G H I J"
-	db "K L M N O P Q R S T"
-	db "U V W X Y Z   , ? !"
-	db "1 2 3 4 5 6 7 8 9 0"
-	db "<PK> <MN> <PO> <KE> é ♂ ♀ ¥ … ×"
-	db "lower  DEL   END   "
-
-; 1224f
-
-MailEntry_Lowercase: ; 1224f
-	db "a b c d e f g h i j"
-	db "k l m n o p q r s t"
-	db "u v w x y z   . - /"
-	db "'d 'l 'm 'r 's 't 'v & ( )"
-	db "<``> <''> [ ] ' : ;      "
-	db "UPPER  DEL   END   "
+INCLUDE "data/mail_input_chars.asm"
 
 ; 122c1
--- a/engine/npc_movement.asm
+++ b/engine/npc_movement.asm
@@ -118,7 +118,7 @@
 ; 6f5b
 
 .data_6f5b
-	db 1 << DOWN, 1 << UP, 1 << RIGHT, 1 << LEFT
+	db DOWN_MASK, UP_MASK, RIGHT_MASK, LEFT_MASK
 ; 6f5f
 
 Function6f5f: ; 6f5f
@@ -143,7 +143,7 @@
 ; 6f7b
 
 .data_6f7b
-	db 1 << UP, 1 << DOWN, 1 << LEFT, 1 << RIGHT
+	db UP_MASK, DOWN_MASK, LEFT_MASK, RIGHT_MASK
 ; 6f7f
 
 Function6f7f: ; 6f7f
--- a/engine/npctrade.asm
+++ b/engine/npctrade.asm
@@ -1,27 +1,11 @@
-
-; Trade struct
-TRADE_DIALOG  EQU 0
-TRADE_GIVEMON EQU 1
-TRADE_GETMON  EQU 2
-TRADE_NICK    EQU 3
-TRADE_DVS     EQU 14
-TRADE_ITEM    EQU 16
-TRADE_OT_ID   EQU 17
-TRADE_OT_NAME EQU 19
-TRADE_GENDER  EQU 30
-TRADE_PADDING EQU 31
-
 ; Trade dialogs
-TRADE_INTRO    EQU 0
-TRADE_CANCEL   EQU 1
-TRADE_WRONG    EQU 2
-TRADE_COMPLETE EQU 3
-TRADE_AFTER    EQU 4
+	const_def
+	const TRADE_INTRO
+	const TRADE_CANCEL
+	const TRADE_WRONG
+	const TRADE_COMPLETE
+	const TRADE_AFTER
 
-TRADE_EITHER_GENDER EQU 0
-TRADE_MALE_ONLY EQU 1
-TRADE_FEMALE_ONLY EQU 2
-
 NPCTrade:: ; fcba8
 	ld a, e
 	ld [wJumptableIndex], a
@@ -40,7 +24,7 @@
 
 ; Select givemon from party
 	ld b, PARTYMENUACTION_GIVE_MON
-	callba SelectTradeOrDaycareMon
+	callba SelectTradeOrDayCareMon
 	ld a, TRADE_CANCEL
 	jr c, .done
 
@@ -427,25 +411,7 @@
 ; fce58
 
 
-NPCTrades: ; fce58
-npctrade: MACRO
-	db \1, \2, \3, \4 ; dialog set, requested mon, offered mon, nickname
-	db \5, \6 ; dvs
-	shift
-	db \6 ; item
-	dw \7 ; OT ID
-	db \8, \9, 0 ; OT name, gender requested
-ENDM
-
-
-	npctrade 0, ABRA,       MACHOP,     "MUSCLE@@@@@", $37, $66, GOLD_BERRY,   37460, "MIKE@@@@@@@", TRADE_EITHER_GENDER
-	npctrade 0, BELLSPROUT, ONIX,       "ROCKY@@@@@@", $96, $66, BITTER_BERRY, 48926, "KYLE@@@@@@@", TRADE_EITHER_GENDER
-	npctrade 1, KRABBY,     VOLTORB,    "VOLTY@@@@@@", $98, $88, PRZCUREBERRY, 29189, "TIM@@@@@@@@", TRADE_EITHER_GENDER
-	npctrade 3, DRAGONAIR,  DODRIO,     "DORIS@@@@@@", $77, $66, SMOKE_BALL,   00283, "EMY@@@@@@@@", TRADE_FEMALE_ONLY
-	npctrade 2, HAUNTER,    XATU,       "PAUL@@@@@@@", $96, $86, MYSTERYBERRY, 15616, "CHRIS@@@@@@", TRADE_EITHER_GENDER
-	npctrade 3, CHANSEY,    AERODACTYL, "AEROY@@@@@@", $96, $66, GOLD_BERRY,   26491, "KIM@@@@@@@@", TRADE_EITHER_GENDER
-	npctrade 0, DUGTRIO,    MAGNETON,   "MAGGIE@@@@@", $96, $66, METAL_COAT,   50082, "FOREST@@@@@", TRADE_EITHER_GENDER
-; fcf38
+INCLUDE "data/npc_trades.asm"
 
 
 PrintTradeText: ; fcf38
--- /dev/null
+++ b/engine/odd_eggs.asm
@@ -1,0 +1,96 @@
+GiveOddEgg: ; 1fb4b6
+	; Figure out which egg to give.
+
+	; Compare a random word to
+	; probabilities out of 0xffff.
+	call Random
+	ld hl, OddEggProbabilities
+	ld c, 0
+	ld b, c
+.loop
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+
+	; Break on $ffff.
+	ld a, d
+	cp $ffff / $100
+	jr nz, .not_done
+	ld a, e
+	cp $ffff % $100
+	jr z, .done
+.not_done
+
+	; Break when [hRandom] <= de.
+	ld a, [hRandom + 1]
+	cp d
+	jr c, .done
+	jr z, .ok
+	jr .next
+.ok
+	ld a, [hRandom + 0]
+	cp e
+	jr c, .done
+	jr z, .done
+.next
+	inc bc
+	jr .loop
+.done
+
+	ld hl, OddEggs
+	ld a, OddEgg2 - OddEgg1
+	call AddNTimes
+
+	ld de, OddEggSpecies
+	ld bc, PARTYMON_STRUCT_LENGTH + 2 * PKMN_NAME_LENGTH
+	call CopyBytes
+
+	ld a, EGG_TICKET
+	ld [CurItem], a
+	ld a, 1
+	ld [wItemQuantityChangeBuffer], a
+	ld a, -1
+	ld [CurItemQuantity], a
+	ld hl, NumItems
+	call TossItem
+
+	; load species in wcd2a
+	ld a, EGG
+	ld [wMobileMonSpeciesBuffer], a
+
+	; load pointer to (wMobileMonSpeciesBuffer - 1) in wMobileMonSpeciesPointerBuffer
+	ld a, (wMobileMonSpeciesBuffer - 1) % $100
+	ld [wMobileMonSpeciesPointerBuffer], a
+	ld a, (wMobileMonSpeciesBuffer - 1) / $100
+	ld [wMobileMonSpeciesPointerBuffer + 1], a
+	; load pointer to OddEggSpecies in wMobileMonStructurePointerBuffer
+	ld a, OddEggSpecies % $100
+	ld [wMobileMonStructurePointerBuffer], a
+	ld a, OddEggSpecies / $100
+	ld [wMobileMonStructurePointerBuffer + 1], a
+
+	; load Odd Egg Name in wTempOddEggNickname
+	ld hl, .Odd
+	ld de, wTempOddEggNickname
+	ld bc, PKMN_NAME_LENGTH
+	call CopyBytes
+
+	; load pointer to wTempOddEggNickname in wMobileMonOTNamePointerBuffer
+	ld a, wTempOddEggNickname % $100
+	ld [wMobileMonOTNamePointerBuffer], a
+	ld a, wTempOddEggNickname / $100
+	ld [wMobileMonOTNamePointerBuffer + 1], a
+	; load pointer to wOddEggName in wMobileMonNicknamePointerBuffer
+	ld a, wOddEggName % $100
+	ld [wMobileMonNicknamePointerBuffer], a
+	ld a, wOddEggName / $100
+	ld [wMobileMonNicknamePointerBuffer + 1], a
+	callba AddMobileMonToParty
+	ret
+; 1fb546
+
+.Odd:
+	db "ODD@@@@@@@@@"
+
+INCLUDE "data/odd_eggs.asm"
--- a/engine/options_menu.asm
+++ b/engine/options_menu.asm
@@ -105,6 +105,11 @@
 ; e42f5
 
 
+	const_def
+	const OPT_TEXT_SPEED_FAST ; 0
+	const OPT_TEXT_SPEED_MED  ; 1
+	const OPT_TEXT_SPEED_SLOW ; 2
+
 Options_TextSpeed: ; e42f5
 	call GetTextSpeed
 	ld a, [hJoyPressed]
@@ -113,9 +118,9 @@
 	bit D_RIGHT_F, a
 	jr z, .NonePressed
 	ld a, c ; right pressed
-	cp SLOW_TEXT
+	cp OPT_TEXT_SPEED_SLOW
 	jr c, .Increase
-	ld c, FAST_TEXT +- 1
+	ld c, OPT_TEXT_SPEED_FAST +- 1
 
 .Increase:
 	inc c
@@ -126,7 +131,7 @@
 	ld a, c
 	and a
 	jr nz, .Decrease
-	ld c, SLOW_TEXT + 1
+	ld c, OPT_TEXT_SPEED_SLOW + 1
 
 .Decrease:
 	dec c
@@ -154,38 +159,39 @@
 ; e4331
 
 .Strings:
+; entries correspond to OPT_TEXT_SPEED_* constants
 	dw .Fast
 	dw .Mid
 	dw .Slow
 
-.Fast:
-	db "FAST@"
-.Mid:
-	db "MID @"
-.Slow:
-	db "SLOW@"
+.Fast: db "FAST@"
+.Mid:  db "MID @"
+.Slow: db "SLOW@"
 ; e4346
 
 
 GetTextSpeed: ; e4346
-	ld a, [Options] ; This converts the number of frames, to 0, 1, 2 representing speed
-	and 7
-	cp 5 ; 5 frames of delay is slow
+; converts TEXT_DELAY_* value in a to OPT_TEXT_SPEED_* value in c,
+; with previous/next TEXT_DELAY_* values in d/e
+	ld a, [Options]
+	and $7
+	cp TEXT_DELAY_SLOW
 	jr z, .slow
-	cp 1 ; 1 frame of delay is fast
+	cp TEXT_DELAY_FAST
 	jr z, .fast
-	ld c, MED_TEXT ; set it to mid if not one of the above
-	lb de, 1, 5
+	; none of the above
+	ld c, OPT_TEXT_SPEED_MED
+	lb de, TEXT_DELAY_FAST, TEXT_DELAY_SLOW
 	ret
 
 .slow
-	ld c, SLOW_TEXT
-	lb de, 3, 1
+	ld c, OPT_TEXT_SPEED_SLOW
+	lb de, TEXT_DELAY_MED, TEXT_DELAY_FAST
 	ret
 
 .fast
-	ld c, FAST_TEXT
-	lb de, 5, 3
+	ld c, OPT_TEXT_SPEED_FAST
+	lb de, TEXT_DELAY_SLOW, TEXT_DELAY_MED
 	ret
 ; e4365
 
@@ -227,10 +233,8 @@
 	ret
 ; e4398
 
-.On:
-	db "ON @"
-.Off:
-	db "OFF@"
+.On:  db "ON @"
+.Off: db "OFF@"
 ; e43a0
 
 
@@ -270,10 +274,8 @@
 	ret
 ; e43d1
 
-.Shift:
-	db "SHIFT@"
-.Set:
-	db "SET  @"
+.Shift: db "SHIFT@"
+.Set:   db "SET  @"
 ; e43dd
 
 
@@ -320,13 +322,18 @@
 	ret
 ; e4416
 
-.Mono:
-	db "MONO  @"
-.Stereo:
-	db "STEREO@"
+.Mono:   db "MONO  @"
+.Stereo: db "STEREO@"
 ; e4424
 
 
+	const_def
+	const OPT_PRINT_LIGHTEST ; 0
+	const OPT_PRINT_LIGHTER  ; 1
+	const OPT_PRINT_NORMAL   ; 2
+	const OPT_PRINT_DARKER   ; 3
+	const OPT_PRINT_DARKEST  ; 4
+
 Options_Print: ; e4424
 	call GetPrinterSetting
 	ld a, [hJoyPressed]
@@ -335,9 +342,9 @@
 	bit D_RIGHT_F, a
 	jr z, .NonePressed
 	ld a, c
-	cp 4
+	cp OPT_PRINT_DARKEST
 	jr c, .Increase
-	ld c, -1
+	ld c, OPT_PRINT_LIGHTEST - 1
 
 .Increase:
 	inc c
@@ -348,7 +355,7 @@
 	ld a, c
 	and a
 	jr nz, .Decrease
-	ld c, 5
+	ld c, OPT_PRINT_DARKEST + 1
 
 .Decrease:
 	dec c
@@ -373,6 +380,7 @@
 ; e445a
 
 .Strings:
+; entries correspond to OPT_PRINT_* constants
 	dw .Lightest
 	dw .Lighter
 	dw .Normal
@@ -379,51 +387,49 @@
 	dw .Darker
 	dw .Darkest
 
-.Lightest:
-	db "LIGHTEST@"
-.Lighter:
-	db "LIGHTER @"
-.Normal:
-	db "NORMAL  @"
-.Darker:
-	db "DARKER  @"
-.Darkest:
-	db "DARKEST @"
+.Lightest: db "LIGHTEST@"
+.Lighter:  db "LIGHTER @"
+.Normal:   db "NORMAL  @"
+.Darker:   db "DARKER  @"
+.Darkest:  db "DARKEST @"
 ; e4491
 
 
 GetPrinterSetting: ; e4491
-	ld a, [GBPrinter] ; converts from the stored printer setting to 0,1,2,3,4
+; converts GBPRINTER_* value in a to OPT_PRINT_* value in c,
+; with previous/next GBPRINTER_* values in d/e
+	ld a, [GBPrinter]
 	and a
 	jr z, .IsLightest
-	cp PRINT_LIGHTER
+	cp GBPRINTER_LIGHTER
 	jr z, .IsLight
-	cp PRINT_DARKER
+	cp GBPRINTER_DARKER
 	jr z, .IsDark
-	cp PRINT_DARKEST
+	cp GBPRINTER_DARKEST
 	jr z, .IsDarkest
-	ld c, 2 ; normal if none of the above
-	lb de, PRINT_LIGHTER, PRINT_DARKER ; the 2 values next to this setting
+	; none of the above
+	ld c, OPT_PRINT_NORMAL
+	lb de, GBPRINTER_LIGHTER, GBPRINTER_DARKER
 	ret
 
 .IsLightest:
-	ld c, 0
-	lb de, PRINT_DARKEST, PRINT_LIGHTER ; the 2 values next to this setting
+	ld c, OPT_PRINT_LIGHTEST
+	lb de, GBPRINTER_DARKEST, GBPRINTER_LIGHTER
 	ret
 
 .IsLight:
-	ld c, 1
-	lb de, PRINT_LIGHTEST, PRINT_NORMAL ; the 2 values next to this setting
+	ld c, OPT_PRINT_LIGHTER
+	lb de, GBPRINTER_LIGHTEST, GBPRINTER_NORMAL
 	ret
 
 .IsDark:
-	ld c, 3
-	lb de, PRINT_NORMAL, PRINT_DARKEST ; the 2 values next to this setting
+	ld c, OPT_PRINT_DARKER
+	lb de, GBPRINTER_NORMAL, GBPRINTER_DARKEST
 	ret
 
 .IsDarkest:
-	ld c, 4
-	lb de, PRINT_DARKER, PRINT_LIGHTEST ; the 2 values next to this setting
+	ld c, OPT_PRINT_DARKEST
+	lb de, GBPRINTER_DARKER, GBPRINTER_LIGHTEST
 	ret
 ; e44c1
 
@@ -463,10 +469,8 @@
 	ret
 ; e44f2
 
-.Off:
-	db "OFF@"
-.On:
-	db "ON @"
+.Off: db "OFF@"
+.On:  db "ON @"
 ; e44fa
 
 
--- a/engine/overworld.asm
+++ b/engine/overworld.asm
@@ -232,9 +232,9 @@
 
 	cp SPRITE_POKEMON
 	jr c, .Normal
-	cp SPRITE_DAYCARE_MON_1
+	cp SPRITE_DAY_CARE_MON_1
 	jr z, .wBreedMon1
-	cp SPRITE_DAYCARE_MON_2
+	cp SPRITE_DAY_CARE_MON_2
 	jr z, .wBreedMon2
 	cp SPRITE_VARS
 	jr nc, .Variable
@@ -716,766 +716,11 @@
 	ret
 ; 1444d
 
-emote_header: MACRO
-	dw \1
-	db \2 tiles, BANK(\1)
-	dw VTiles1 tile \3
-ENDM
 
-EmotesPointers: ; 144d
-; entries correspond to EMOTE_* constants
-; graphics address, length, starting tile
-	emote_header ShockEmote,     4, $78
-	emote_header QuestionEmote,  4, $78
-	emote_header HappyEmote,     4, $78
-	emote_header SadEmote,       4, $78
-	emote_header HeartEmote,     4, $78
-	emote_header BoltEmote,      4, $78
-	emote_header SleepEmote,     4, $78
-	emote_header FishEmote,      4, $78
-	emote_header JumpShadowGFX,  1, $7c
-	emote_header FishingRodGFX,  2, $7c
-	emote_header BoulderDustGFX, 2, $7e
-	emote_header GrassRustleGFX, 1, $7e
-; 14495
+INCLUDE "data/emote_headers.asm"
 
+INCLUDE "data/sprite_mons.asm"
 
-SpriteMons: ; 14495
-	db UNOWN
-	db GEODUDE
-	db GROWLITHE
-	db WEEDLE
-	db SHELLDER
-	db ODDISH
-	db GENGAR
-	db ZUBAT
-	db MAGIKARP
-	db SQUIRTLE
-	db TOGEPI
-	db BUTTERFREE
-	db DIGLETT
-	db POLIWAG
-	db PIKACHU
-	db CLEFAIRY
-	db CHARMANDER
-	db JYNX
-	db STARMIE
-	db BULBASAUR
-	db JIGGLYPUFF
-	db GRIMER
-	db EKANS
-	db PARAS
-	db TENTACOOL
-	db TAUROS
-	db MACHOP
-	db VOLTORB
-	db LAPRAS
-	db RHYDON
-	db MOLTRES
-	db SNORLAX
-	db GYARADOS
-	db LUGIA
-	db HO_OH
-; 144b8
+INCLUDE "data/outdoor_sprites.asm"
 
-
-OutdoorSprites: ; 144b8
-; Valid sprite IDs for each map group.
-
-	dw Group1Sprites
-	dw Group2Sprites
-	dw Group3Sprites
-	dw Group4Sprites
-	dw Group5Sprites
-	dw Group6Sprites
-	dw Group7Sprites
-	dw Group8Sprites
-	dw Group9Sprites
-	dw Group10Sprites
-	dw Group11Sprites
-	dw Group12Sprites
-	dw Group13Sprites
-	dw Group14Sprites
-	dw Group15Sprites
-	dw Group16Sprites
-	dw Group17Sprites
-	dw Group18Sprites
-	dw Group19Sprites
-	dw Group20Sprites
-	dw Group21Sprites
-	dw Group22Sprites
-	dw Group23Sprites
-	dw Group24Sprites
-	dw Group25Sprites
-	dw Group26Sprites
-; 144ec
-
-
-Group13Sprites: ; 144ec
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_TEACHER
-	db SPRITE_FISHER
-	db SPRITE_YOUNGSTER
-	db SPRITE_BLUE
-	db SPRITE_GRAMPS
-	db SPRITE_BUG_CATCHER
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_SWIMMER_GIRL
-	db SPRITE_SWIMMER_GUY
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 14503
-
-Group23Sprites: ; 14503
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_TEACHER
-	db SPRITE_FISHER
-	db SPRITE_YOUNGSTER
-	db SPRITE_BLUE
-	db SPRITE_GRAMPS
-	db SPRITE_BUG_CATCHER
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_SWIMMER_GIRL
-	db SPRITE_SWIMMER_GUY
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 1451a
-
-Group14Sprites: ; 1451a
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_TEACHER
-	db SPRITE_FISHER
-	db SPRITE_YOUNGSTER
-	db SPRITE_BLUE
-	db SPRITE_GRAMPS
-	db SPRITE_BUG_CATCHER
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_SWIMMER_GIRL
-	db SPRITE_SWIMMER_GUY
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 14531
-
-Group6Sprites: ; 14531
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_TEACHER
-	db SPRITE_FISHER
-	db SPRITE_YOUNGSTER
-	db SPRITE_BLUE
-	db SPRITE_GRAMPS
-	db SPRITE_BUG_CATCHER
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_SWIMMER_GIRL
-	db SPRITE_SWIMMER_GUY
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 14548
-
-Group7Sprites: ; 14548
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_COOLTRAINER_M
-	db SPRITE_SUPER_NERD
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_FISHER
-	db SPRITE_YOUNGSTER
-	db SPRITE_LASS
-	db SPRITE_POKEFAN_M
-	db SPRITE_ROCKET
-	db SPRITE_MISTY
-	db SPRITE_POKE_BALL
-	db SPRITE_SLOWPOKE
-; 1455f
-
-Group25Sprites: ; 1455f
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_COOLTRAINER_M
-	db SPRITE_SUPER_NERD
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_FISHER
-	db SPRITE_YOUNGSTER
-	db SPRITE_LASS
-	db SPRITE_POKEFAN_M
-	db SPRITE_ROCKET
-	db SPRITE_MISTY
-	db SPRITE_POKE_BALL
-	db SPRITE_SLOWPOKE
-; 14576
-
-Group21Sprites: ; 14576
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_FISHER
-	db SPRITE_POLIWAG
-	db SPRITE_TEACHER
-	db SPRITE_GRAMPS
-	db SPRITE_YOUNGSTER
-	db SPRITE_LASS
-	db SPRITE_BIKER
-	db SPRITE_SILVER
-	db SPRITE_BLUE
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 1458d
-
-Group18Sprites: ; 1458d
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_POKEFAN_M
-	db SPRITE_MACHOP
-	db SPRITE_GRAMPS
-	db SPRITE_YOUNGSTER
-	db SPRITE_FISHER
-	db SPRITE_TEACHER
-	db SPRITE_SUPER_NERD
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_BIKER
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 145a4
-
-Group12Sprites: ; 145a4
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_POKEFAN_M
-	db SPRITE_MACHOP
-	db SPRITE_GRAMPS
-	db SPRITE_YOUNGSTER
-	db SPRITE_FISHER
-	db SPRITE_TEACHER
-	db SPRITE_SUPER_NERD
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_BIKER
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 145bb
-
-Group17Sprites: ; 145bb
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_POKEFAN_M
-	db SPRITE_MACHOP
-	db SPRITE_GRAMPS
-	db SPRITE_YOUNGSTER
-	db SPRITE_FISHER
-	db SPRITE_TEACHER
-	db SPRITE_SUPER_NERD
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_BIKER
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 145d2
-
-Group16Sprites: ; 145d2
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_POKEFAN_M
-	db SPRITE_BUENA
-	db SPRITE_GRAMPS
-	db SPRITE_YOUNGSTER
-	db SPRITE_FISHER
-	db SPRITE_TEACHER
-	db SPRITE_SUPER_NERD
-	db SPRITE_MACHOP
-	db SPRITE_BIKER
-	db SPRITE_POKE_BALL
-	db SPRITE_BOULDER
-; 145e9
-
-Group24Sprites: ; 145e9
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_SILVER
-	db SPRITE_TEACHER
-	db SPRITE_FISHER
-	db SPRITE_COOLTRAINER_M
-	db SPRITE_YOUNGSTER
-	db SPRITE_MONSTER
-	db SPRITE_GRAMPS
-	db SPRITE_BUG_CATCHER
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 14600
-
-Group26Sprites: ; 14600
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_SILVER
-	db SPRITE_TEACHER
-	db SPRITE_FISHER
-	db SPRITE_COOLTRAINER_M
-	db SPRITE_YOUNGSTER
-	db SPRITE_MONSTER
-	db SPRITE_GRAMPS
-	db SPRITE_BUG_CATCHER
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 14617
-
-Group19Sprites: ; 14617
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_SILVER
-	db SPRITE_TEACHER
-	db SPRITE_FISHER
-	db SPRITE_COOLTRAINER_M
-	db SPRITE_YOUNGSTER
-	db SPRITE_MONSTER
-	db SPRITE_GRAMPS
-	db SPRITE_BUG_CATCHER
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 1462e
-
-Group10Sprites: ; 1462e
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_FISHER
-	db SPRITE_LASS
-	db SPRITE_OFFICER
-	db SPRITE_GRAMPS
-	db SPRITE_YOUNGSTER
-	db SPRITE_COOLTRAINER_M
-	db SPRITE_BUG_CATCHER
-	db SPRITE_SUPER_NERD
-	db SPRITE_WEIRD_TREE
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 14645
-
-Group4Sprites: ; 14645
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_FISHER
-	db SPRITE_LASS
-	db SPRITE_OFFICER
-	db SPRITE_GRAMPS
-	db SPRITE_YOUNGSTER
-	db SPRITE_COOLTRAINER_M
-	db SPRITE_BUG_CATCHER
-	db SPRITE_SUPER_NERD
-	db SPRITE_WEIRD_TREE
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 1465c
-
-Group8Sprites: ; 1465c
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_KURT_OUTSIDE
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_GRAMPS
-	db SPRITE_YOUNGSTER
-	db SPRITE_OFFICER
-	db SPRITE_POKEFAN_M
-	db SPRITE_BLACK_BELT
-	db SPRITE_TEACHER
-	db SPRITE_AZALEA_ROCKET
-	db SPRITE_LASS
-	db SPRITE_SILVER
-	db SPRITE_FRUIT_TREE
-	db SPRITE_SLOWPOKE
-; 14673
-
-Group11Sprites: ; 14673
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_POKE_BALL
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_GRAMPS
-	db SPRITE_YOUNGSTER
-	db SPRITE_OFFICER
-	db SPRITE_POKEFAN_M
-	db SPRITE_DAYCARE_MON_1
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_ROCKET
-	db SPRITE_LASS
-	db SPRITE_DAYCARE_MON_2
-	db SPRITE_FRUIT_TREE
-	db SPRITE_SLOWPOKE
-; 1468a
-
-Group22Sprites: ; 1468a
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_STANDING_YOUNGSTER
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_OLIVINE_RIVAL
-	db SPRITE_POKEFAN_M
-	db SPRITE_LASS
-	db SPRITE_BUENA
-	db SPRITE_SWIMMER_GIRL
-	db SPRITE_SAILOR
-	db SPRITE_POKEFAN_F
-	db SPRITE_SUPER_NERD
-	db SPRITE_TAUROS
-	db SPRITE_FRUIT_TREE
-	db SPRITE_ROCK
-; 146a1
-
-Group1Sprites: ; 146a1
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_STANDING_YOUNGSTER
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_OLIVINE_RIVAL
-	db SPRITE_POKEFAN_M
-	db SPRITE_LASS
-	db SPRITE_BUENA
-	db SPRITE_SWIMMER_GIRL
-	db SPRITE_SAILOR
-	db SPRITE_POKEFAN_F
-	db SPRITE_SUPER_NERD
-	db SPRITE_TAUROS
-	db SPRITE_FRUIT_TREE
-	db SPRITE_ROCK
-; 146b8
-
-Group9Sprites: ; 146b8
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_LANCE
-	db SPRITE_GRAMPS
-	db SPRITE_SUPER_NERD
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_FISHER
-	db SPRITE_COOLTRAINER_M
-	db SPRITE_LASS
-	db SPRITE_YOUNGSTER
-	db SPRITE_GYARADOS
-	db SPRITE_FRUIT_TREE
-	db SPRITE_POKE_BALL
-; 146cf
-
-Group2Sprites: ; 146cf
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_GRAMPS
-	db SPRITE_YOUNGSTER
-	db SPRITE_LASS
-	db SPRITE_SUPER_NERD
-	db SPRITE_COOLTRAINER_M
-	db SPRITE_POKEFAN_M
-	db SPRITE_BLACK_BELT
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_FISHER
-	db SPRITE_FRUIT_TREE
-	db SPRITE_POKE_BALL
-; 146e6
-
-Group5Sprites: ; 146e6
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_GRAMPS
-	db SPRITE_YOUNGSTER
-	db SPRITE_LASS
-	db SPRITE_SUPER_NERD
-	db SPRITE_COOLTRAINER_M
-	db SPRITE_POKEFAN_M
-	db SPRITE_BLACK_BELT
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_FISHER
-	db SPRITE_FRUIT_TREE
-	db SPRITE_POKE_BALL
-; 146fd
-
-Group3Sprites: ; 146fd
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_GAMEBOY_KID
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_LASS
-	db SPRITE_POKEFAN_F
-	db SPRITE_TEACHER
-	db SPRITE_YOUNGSTER
-	db SPRITE_GROWLITHE
-	db SPRITE_POKEFAN_M
-	db SPRITE_ROCKER
-	db SPRITE_FISHER
-	db SPRITE_SCIENTIST
-	db SPRITE_POKE_BALL
-	db SPRITE_BOULDER
-; 14714
-
-Group15Sprites: ; 14714
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_SAILOR
-	db SPRITE_FISHING_GURU
-	db SPRITE_GENTLEMAN
-	db SPRITE_SUPER_NERD
-	db SPRITE_HO_OH
-	db SPRITE_TEACHER
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_YOUNGSTER
-	db SPRITE_FAIRY
-	db SPRITE_POKE_BALL
-	db SPRITE_ROCK
-; 1472b
-
-Group20Sprites: ; 1472b
-	db SPRITE_OAK
-	db SPRITE_FISHER
-	db SPRITE_TEACHER
-	db SPRITE_TWIN
-	db SPRITE_POKEFAN_M
-	db SPRITE_GRAMPS
-	db SPRITE_FAIRY
-	db SPRITE_SILVER
-	db SPRITE_FISHING_GURU
-	db SPRITE_POKE_BALL
-	db SPRITE_POKEDEX
-; 14736
-
-
-SpriteHeaders: ; 14736
-INCLUDE "gfx/overworld/sprite_headers.asm"
-; 1499a
+INCLUDE "gfx/sprite_headers.asm"
--- a/engine/party_menu.asm
+++ b/engine/party_menu.asm
@@ -13,7 +13,7 @@
 ; 5001d
 
 
-SelectTradeOrDaycareMon: ; 5001d
+SelectTradeOrDayCareMon: ; 5001d
 	ld a, b
 	ld [PartyMenuActionText], a
 	call DisableSpriteUpdates
--- a/engine/phone.asm
+++ b/engine/phone.asm
@@ -165,7 +165,7 @@
 
 	callba CheckTime
 	pop af
-	and (1 << MORN) + (1 << DAY) + (1 << NITE)
+	and MORN | DAY | NITE
 	and c
 
 	pop de
@@ -760,89 +760,11 @@
 	ret
 ; 9045f
 
-PhoneContacts: ; 9045f
-phone: MACRO
-	db  \1, \2 ; trainer
-	map \3     ; map
-	db  \4
-	dba \5 ; script 1
-	db  \6
-	dba \7 ; script 2
-ENDM
-; entries correspond to PHONE_* constants
-	phone TRAINER_NONE, PHONE_00,              N_A,                       0, UnusedPhoneScript,   0, UnusedPhoneScript
-	phone TRAINER_NONE, PHONECONTACT_MOM,      KRISS_HOUSE_1F,            7, MomPhoneScript,      0, UnusedPhoneScript
-	phone TRAINER_NONE, PHONECONTACT_BIKESHOP, OAKS_LAB,                  0, UnusedPhoneScript,   0, UnusedPhoneScript
-	phone TRAINER_NONE, PHONECONTACT_BILL,     N_A,                       7, BillPhoneScript1,    0, BillPhoneScript2
-	phone TRAINER_NONE, PHONECONTACT_ELM,      ELMS_LAB,                  7, ElmPhoneScript1,     0, ElmPhoneScript2
-	phone SCHOOLBOY,    JACK1,                 NATIONAL_PARK,             7, JackPhoneScript1,    7, JackPhoneScript2
-	phone POKEFANF,     BEVERLY1,              NATIONAL_PARK,             7, BeverlyPhoneScript1, 7, BeverlyPhoneScript2
-	phone SAILOR,       HUEY1,                 OLIVINE_LIGHTHOUSE_2F,     7, HueyPhoneScript1,    7, HueyPhoneScript2
-	phone TRAINER_NONE, PHONE_00,              N_A,                       0, UnusedPhoneScript,   0, UnusedPhoneScript
-	phone TRAINER_NONE, PHONE_00,              N_A,                       0, UnusedPhoneScript,   0, UnusedPhoneScript
-	phone TRAINER_NONE, PHONE_00,              N_A,                       0, UnusedPhoneScript,   0, UnusedPhoneScript
-	phone COOLTRAINERM, GAVEN3,                ROUTE_26,                  7, GavenPhoneScript1,   7, GavenPhoneScript2
-	phone COOLTRAINERF, BETH1,                 ROUTE_26,                  7, BethPhoneScript1,    7, BethPhoneScript2
-	phone BIRD_KEEPER,  JOSE2,                 ROUTE_27,                  7, JosePhoneScript1,    7, JosePhoneScript2
-	phone COOLTRAINERF, REENA1,                ROUTE_27,                  7, ReenaPhoneScript1,   7, ReenaPhoneScript2
-	phone YOUNGSTER,    JOEY1,                 ROUTE_30,                  7, JoeyPhoneScript1,    7, JoeyPhoneScript2
-	phone BUG_CATCHER,  WADE1,                 ROUTE_31,                  7, WadePhoneScript1,    7, WadePhoneScript2
-	phone FISHER,       RALPH1,                ROUTE_32,                  7, RalphPhoneScript1,   7, RalphPhoneScript2
-	phone PICNICKER,    LIZ1,                  ROUTE_32,                  7, LizPhoneScript1,     7, LizPhoneScript2
-	phone HIKER,        ANTHONY2,              ROUTE_33,                  7, AnthonyPhoneScript1, 7, AnthonyPhoneScript2
-	phone CAMPER,       TODD1,                 ROUTE_34,                  7, ToddPhoneScript1,    7, ToddPhoneScript2
-	phone PICNICKER,    GINA1,                 ROUTE_34,                  7, GinaPhoneScript1,    7, GinaPhoneScript2
-	phone JUGGLER,      IRWIN1,                ROUTE_35,                  7, IrwinPhoneScript1,   7, IrwinPhoneScript2
-	phone BUG_CATCHER,  ARNIE1,                ROUTE_35,                  7, ArniePhoneScript1,   7, ArniePhoneScript2
-	phone SCHOOLBOY,    ALAN1,                 ROUTE_36,                  7, AlanPhoneScript1,    7, AlanPhoneScript2
-	phone TRAINER_NONE, PHONE_00,              N_A,                       0, UnusedPhoneScript,   0, UnusedPhoneScript
-	phone LASS,         DANA1,                 ROUTE_38,                  7, DanaPhoneScript1,    7, DanaPhoneScript2
-	phone SCHOOLBOY,    CHAD1,                 ROUTE_38,                  7, ChadPhoneScript1,    7, ChadPhoneScript2
-	phone POKEFANM,     DEREK1,                ROUTE_39,                  7, DerekPhoneScript1,   7, DerekPhoneScript2
-	phone FISHER,       TULLY1,                ROUTE_42,                  7, TullyPhoneScript1,   7, TullyPhoneScript2
-	phone POKEMANIAC,   BRENT1,                ROUTE_43,                  7, BrentPhoneScript1,   7, BrentPhoneScript2
-	phone PICNICKER,    TIFFANY3,              ROUTE_43,                  7, TiffanyPhoneScript1, 7, TiffanyPhoneScript2
-	phone BIRD_KEEPER,  VANCE1,                ROUTE_44,                  7, VancePhoneScript1,   7, VancePhoneScript2
-	phone FISHER,       WILTON1,               ROUTE_44,                  7, WiltonPhoneScript1,  7, WiltonPhoneScript2
-	phone BLACKBELT_T,  KENJI3,                ROUTE_45,                  7, KenjiPhoneScript1,   7, KenjiPhoneScript2
-	phone HIKER,        PARRY1,                ROUTE_45,                  7, ParryPhoneScript1,   7, ParryPhoneScript2
-	phone PICNICKER,    ERIN1,                 ROUTE_46,                  7, ErinPhoneScript1,    7, ErinPhoneScript2
-	phone TRAINER_NONE, PHONECONTACT_BUENA,    GOLDENROD_DEPT_STORE_ROOF, 7, BuenaPhoneScript1,   7, BuenaPhoneScript2
-; 90627
 
-SpecialPhoneCallList: ; 90627
-	dw SpecialCallOnlyWhenOutside
-	db PHONE_ELM
-	dba ElmPhoneScript2
+INCLUDE "data/phone_contacts.asm"
 
-	dw SpecialCallOnlyWhenOutside
-	db PHONE_ELM
-	dba ElmPhoneScript2
+INCLUDE "data/phone_special.asm"
 
-	dw SpecialCallOnlyWhenOutside
-	db PHONE_ELM
-	dba ElmPhoneScript2
-
-	dw SpecialCallOnlyWhenOutside
-	db PHONE_ELM
-	dba ElmPhoneScript2
-
-	dw SpecialCallWhereverYouAre
-	db PHONE_ELM
-	dba ElmPhoneScript2
-
-	dw SpecialCallWhereverYouAre
-	db PHONE_OAK ; ????????
-	dba BikeShopPhoneScript ; bike shop
-
-	dw SpecialCallWhereverYouAre
-	db PHONE_MOM
-	dba MomPhoneLectureScript
-
-	dw SpecialCallOnlyWhenOutside
-	db PHONE_ELM
-	dba ElmPhoneScript2
-; 90657
 
 UnknownScript_0x90657: ; 0x90657
 	writetext UnknownText_0x9065b
--- a/engine/player_object.asm
+++ b/engine/player_object.asm
@@ -29,7 +29,7 @@
 	call GetMapObject
 	ld hl, MAPOBJECT_COLOR
 	add hl, bc
-	ln e, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT
+	ln e, PAL_NPC_RED, PERSONTYPE_SCRIPT
 	ld a, [wPlayerSpriteSetupFlags]
 	bit 2, a
 	jr nz, .ok
@@ -36,7 +36,7 @@
 	ld a, [PlayerGender]
 	bit 0, a
 	jr z, .ok
-	ln e, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT
+	ln e, PAL_NPC_BLUE, PERSONTYPE_SCRIPT
 
 .ok
 	ld [hl], e
--- a/engine/pokecenter_pc.asm
+++ b/engine/pokecenter_pc.asm
@@ -2,9 +2,9 @@
 	call PC_CheckPartyForPokemon
 	ret c
 	call PC_PlayBootSound
-	ld hl, PokeCenterPCText_BootedUpPC
+	ld hl, PokecenterPCText_BootedUpPC
 	call PC_DisplayText
-	ld hl, PokeCenterPCText_AccessWhosePC
+	ld hl, PokecenterPCText_AccessWhosePC
 	call PC_DisplayTextWaitMenu
 	ld hl, .TopMenu
 	call LoadMenuDataHeader
@@ -103,7 +103,7 @@
 
 BillsPC: ; 15668
 	call PC_PlayChoosePCSound
-	ld hl, PokeCenterPCText_AccessedBillsPC
+	ld hl, PokecenterPCText_AccessedBillsPC
 	call PC_DisplayText
 	callba _BillsPC
 	and a
@@ -112,7 +112,7 @@
 
 PlayersPC: ; 15679
 	call PC_PlayChoosePCSound
-	ld hl, PokeCenterPCText_AccessedOwnPC
+	ld hl, PokecenterPCText_AccessedOwnPC
 	call PC_DisplayText
 	ld b, $0
 	call _PlayersPC
@@ -122,7 +122,7 @@
 
 OaksPC: ; 15689
 	call PC_PlayChoosePCSound
-	ld hl, PokeCenterPCText_AccessedOaksPC
+	ld hl, PokecenterPCText_AccessedOaksPC
 	call PC_DisplayText
 	callba ProfOaksPC
 	and a
@@ -139,7 +139,7 @@
 ; 156ab
 
 TurnOffPC: ; 156ab
-	ld hl, PokeCenterPCText_LinkClosed
+	ld hl, PokecenterPCText_LinkClosed
 	call PrintText
 	scf
 	ret
@@ -641,37 +641,37 @@
 	ret
 ; 15a27
 
-PokeCenterPCText_BootedUpPC: ; 0x15a27
+PokecenterPCText_BootedUpPC: ; 0x15a27
 	; turned on the PC.
 	text_jump UnknownText_0x1c144d
 	db "@"
 ; 0x15a2c
 
-PokeCenterPCText_AccessWhosePC: ; 0x15a2c
+PokecenterPCText_AccessWhosePC: ; 0x15a2c
 	; Access whose PC?
 	text_jump UnknownText_0x1c1462
 	db "@"
 ; 0x15a31
 
-PokeCenterPCText_AccessedBillsPC: ; 0x15a31
+PokecenterPCText_AccessedBillsPC: ; 0x15a31
 	; BILL's PC accessed. #MON Storage System opened.
 	text_jump UnknownText_0x1c1474
 	db "@"
 ; 0x15a36
 
-PokeCenterPCText_AccessedOwnPC: ; 0x15a36
+PokecenterPCText_AccessedOwnPC: ; 0x15a36
 	; Accessed own PC. Item Storage System opened.
 	text_jump UnknownText_0x1c14a4
 	db "@"
 ; 0x15a3b
 
-PokeCenterPCText_AccessedOaksPC: ; 0x15a3b
+PokecenterPCText_AccessedOaksPC: ; 0x15a3b
 	; PROF.OAK's PC accessed. #DEX Rating System opened.
 	text_jump UnknownText_0x1c14d2
 	db "@"
 ; 0x15a40
 
-PokeCenterPCText_LinkClosed: ; 0x15a40
+PokecenterPCText_LinkClosed: ; 0x15a40
 	; … Link closed…
 	text_jump UnknownText_0x1c1505
 	db "@"
--- a/engine/pokedex.asm
+++ b/engine/pokedex.asm
@@ -1708,11 +1708,11 @@
 .doneabc
 	ret
 
-AlphabeticalPokedexOrder: ; 0x40c65
+
 INCLUDE "data/pokedex/order_alpha.asm"
 
-NewPokedexOrder: ; 0x40d60
 INCLUDE "data/pokedex/order_new.asm"
+
 
 Pokedex_DisplayModeDescription: ; 40e5b
 	xor a
--- /dev/null
+++ b/engine/pokedex_2.asm
@@ -1,0 +1,286 @@
+AnimateDexSearchSlowpoke: ; 441cf
+	ld hl, .FrameIDs
+	ld b, 25
+.loop
+	ld a, [hli]
+
+	; Wrap around
+	cp $fe
+	jr nz, .ok
+	ld hl, .FrameIDs
+	ld a, [hli]
+.ok
+
+	ld [wDexSearchSlowpokeFrame], a
+	ld a, [hli]
+	ld c, a
+	push bc
+	push hl
+	call DoDexSearchSlowpokeFrame
+	pop hl
+	pop bc
+	call DelayFrames
+	dec b
+	jr nz, .loop
+	xor a
+	ld [wDexSearchSlowpokeFrame], a
+	call DoDexSearchSlowpokeFrame
+	ld c, 32
+	call DelayFrames
+	ret
+
+.FrameIDs: ; 441fc
+	; frame ID, duration
+	db 0, 7
+	db 1, 7
+	db 2, 7
+	db 3, 7
+	db 4, 7
+	db -2
+
+DoDexSearchSlowpokeFrame: ; 44207
+	ld a, [wDexSearchSlowpokeFrame]
+	ld hl, .SpriteData
+	ld de, Sprites
+.loop
+	ld a, [hli]
+	cp -1
+	ret z
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [wDexSearchSlowpokeFrame]
+	ld b, a
+	add a
+	add b
+	add [hl]
+	inc hl
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	jr .loop
+
+.SpriteData: ; 44228
+	dsprite 11, 0,  9, 0, $00, $00
+	dsprite 11, 0, 10, 0, $01, $00
+	dsprite 11, 0, 11, 0, $02, $00
+	dsprite 12, 0,  9, 0, $10, $00
+	dsprite 12, 0, 10, 0, $11, $00
+	dsprite 12, 0, 11, 0, $12, $00
+	dsprite 13, 0,  9, 0, $20, $00
+	dsprite 13, 0, 10, 0, $21, $00
+	dsprite 13, 0, 11, 0, $22, $00
+	db -1
+
+DisplayDexEntry: ; 4424d
+	call GetPokemonName
+	hlcoord 9, 3
+	call PlaceString ; mon species
+	ld a, [wd265]
+	ld b, a
+	call GetDexEntryPointer
+	ld a, b
+	push af
+	hlcoord 9, 5
+	call FarString ; dex species
+	ld h, b
+	ld l, c
+	push de
+; Print dex number
+	hlcoord 2, 8
+	ld a, $5c ; No
+	ld [hli], a
+	ld a, $5d ; .
+	ld [hli], a
+	ld de, wd265
+	lb bc, PRINTNUM_LEADINGZEROS | 1, 3
+	call PrintNum
+; Check to see if we caught it.  Get out of here if we haven't.
+	ld a, [wd265]
+	dec a
+	call CheckCaughtMon
+	pop hl
+	pop bc
+	ret z
+; Get the height of the Pokemon.
+	ld a, [CurPartySpecies]
+	ld [CurSpecies], a
+	inc hl
+	ld a, b
+	push af
+	push hl
+	call GetFarHalfword
+	ld d, l
+	ld e, h
+	pop hl
+	inc hl
+	inc hl
+	ld a, d
+	or e
+	jr z, .skip_height
+	push hl
+	push de
+	ld hl, sp+$0
+	ld d, h
+	ld e, l
+	hlcoord 12, 7
+	lb bc, 2, PRINTNUM_MONEY | 4
+	call PrintNum
+	hlcoord 14, 7
+	ld [hl], $5e ; ft symbol
+	pop af
+	pop hl
+
+.skip_height
+	pop af
+	push af
+	inc hl
+	push hl
+	dec hl
+	call GetFarHalfword
+	ld d, l
+	ld e, h
+	ld a, e
+	or d
+	jr z, .skip_weight
+	push de
+	ld hl, sp+$0
+	ld d, h
+	ld e, l
+	hlcoord 11, 9
+	lb bc, 2, PRINTNUM_RIGHTALIGN | 5
+	call PrintNum
+	pop de
+
+.skip_weight
+; Page 1
+	lb bc, 5, SCREEN_WIDTH - 2
+	hlcoord 2, 11
+	call ClearBox
+	hlcoord 1, 10
+	ld bc, SCREEN_WIDTH - 1
+	ld a, $61 ; horizontal divider
+	call ByteFill
+	; page number
+	hlcoord 1, 9
+	ld [hl], $55
+	inc hl
+	ld [hl], $55
+	hlcoord 1, 10
+	ld [hl], $56 ; P.
+	inc hl
+	ld [hl], $57 ; 1
+	pop de
+	inc de
+	pop af
+	hlcoord 2, 11
+	push af
+	call FarString
+	pop bc
+	ld a, [wPokedexStatus]
+	or a
+	ret z
+
+; Page 2
+	push bc
+	push de
+	lb bc, 5, SCREEN_WIDTH - 2
+	hlcoord 2, 11
+	call ClearBox
+	hlcoord 1, 10
+	ld bc, SCREEN_WIDTH - 1
+	ld a, $61
+	call ByteFill
+	; page number
+	hlcoord 1, 9
+	ld [hl], $55
+	inc hl
+	ld [hl], $55
+	hlcoord 1, 10
+	ld [hl], $56 ; P.
+	inc hl
+	ld [hl], $58 ; 2
+	pop de
+	inc de
+	pop af
+	hlcoord 2, 11
+	call FarString
+	ret
+
+String_44331: ; 44331
+	db "#@"
+
+GetDexEntryPointer: ; 44333
+; return dex entry pointer b:de
+	push hl
+	ld hl, PokedexDataPointerTable
+	ld a, b
+	dec a
+	ld d, 0
+	ld e, a
+	add hl, de
+	add hl, de
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	push de
+	rlca
+	rlca
+	and $3
+	ld hl, .PokedexEntryBanks
+	ld d, 0
+	ld e, a
+	add hl, de
+	ld b, [hl]
+	pop de
+	pop hl
+	ret
+
+.PokedexEntryBanks: ; 44351
+
+GLOBAL PokedexEntries1
+GLOBAL PokedexEntries2
+GLOBAL PokedexEntries3
+GLOBAL PokedexEntries4
+
+	db BANK(PokedexEntries1)
+	db BANK(PokedexEntries2)
+	db BANK(PokedexEntries3)
+	db BANK(PokedexEntries4)
+
+GetDexEntryPagePointer: ; 44355
+	call GetDexEntryPointer ; b:de
+	push hl
+	ld h, d
+	ld l, e
+; skip species name
+.loop1
+	ld a, b
+	call GetFarByte
+	inc hl
+	cp "@"
+	jr nz, .loop1
+; skip height and weight
+rept 4
+	inc hl
+endr
+; if c != 1: skip entry
+	dec c
+	jr z, .done
+; skip entry
+.loop2
+	ld a, b
+	call GetFarByte
+	inc hl
+	cp "@"
+	jr nz, .loop2
+
+.done
+	ld d, h
+	ld e, l
+	pop hl
+	ret
--- a/engine/radio.asm
+++ b/engine/radio.asm
@@ -1837,7 +1837,7 @@
 BuenasPasswordCheckTime:
 	call UpdateTime
 	ld a, [hHours]
-	cp 18 ; 6 PM
+	cp NITE_HOUR
 	ret
 
 BuenasPasswordChannelName:
--- a/engine/rtc.asm
+++ b/engine/rtc.asm
@@ -50,12 +50,12 @@
 
 TimesOfDay: ; 14044
 ; hours for the time of day
-; 04-09 morn | 10-17 day | 18-03 nite
-	db 04, NITE
-	db 10, MORN
-	db 18, DAY
-	db 24, NITE
-	db -1, MORN
+; 0400-0959 morn | 1000-1759 day | 1800-0359 nite
+	db MORN_HOUR, NITE_F
+	db DAY_HOUR,  MORN_F
+	db NITE_HOUR, DAY_F
+	db MAX_HOUR,  NITE_F
+	db -1, MORN_F
 ; 1404e
 
 Unknown_1404e: ; Unreferenced
--- a/engine/save.asm
+++ b/engine/save.asm
@@ -726,16 +726,9 @@
 	ret
 ; 14f7c
 
-DefaultOptions: ; 14f7c
-	db $03 ; mid text speed
-	db $00 ; wSaveFileExists
-	db $00 ; frame 0
-	db $01 ; TextBoxFlags
-	db $40 ; gb printer: normal brightness
-	db $01 ; menu account on
-	db $00 ; ??
-	db $00 ; ??
-; 14f84
+
+INCLUDE "data/default_options.asm"
+
 
 CheckPrimarySaveFile: ; 14f84
 	ld a, BANK(s1_a008)
--- a/engine/spawn_points.asm
+++ b/engine/spawn_points.asm
@@ -1,44 +1,5 @@
 
-SpawnPoints: ; 0x152ab
-
-spawn: MACRO
-; map, y, x
-	map \1
-	db \2, \3
-ENDM
-
-	spawn KRISS_HOUSE_2F,              3,  3
-	spawn VIRIDIAN_POKECENTER_1F,      5,  3
-
-	spawn PALLET_TOWN,                 5,  6
-	spawn VIRIDIAN_CITY,              23, 26
-	spawn PEWTER_CITY,                13, 26
-	spawn CERULEAN_CITY,              19, 22
-	spawn ROUTE_10_NORTH,             11,  2
-	spawn VERMILION_CITY,              9,  6
-	spawn LAVENDER_TOWN,               5,  6
-	spawn SAFFRON_CITY,                9, 30
-	spawn CELADON_CITY,               29, 10
-	spawn FUCHSIA_CITY,               19, 28
-	spawn CINNABAR_ISLAND,            11, 12
-	spawn ROUTE_23,                    9,  6
-
-	spawn NEW_BARK_TOWN,              13,  6
-	spawn CHERRYGROVE_CITY,           29,  4
-	spawn VIOLET_CITY,                31, 26
-	spawn ROUTE_32,                   11, 74
-	spawn AZALEA_TOWN,                15, 10
-	spawn CIANWOOD_CITY,              23, 44
-	spawn GOLDENROD_CITY,             15, 28
-	spawn OLIVINE_CITY,               13, 22
-	spawn ECRUTEAK_CITY,              23, 28
-	spawn MAHOGANY_TOWN,              15, 14
-	spawn LAKE_OF_RAGE,               21, 29
-	spawn BLACKTHORN_CITY,            21, 30
-	spawn SILVER_CAVE_OUTSIDE,        23, 20
-	spawn FAST_SHIP_CABINS_SW_SSW_NW,  6,  2
-	spawn N_A,                        -1, -1
-
+INCLUDE "data/spawn_points.asm"
 
 
 LoadSpawnPoint: ; 1531f
--- a/engine/sprites.asm
+++ b/engine/sprites.asm
@@ -550,106 +550,30 @@
 	ret
 ; 8d1c4
 
-SpriteAnimSeqData: ; 8d1c4
-; entries correspond to SPRITE_ANIM_INDEX_* constants
-	; frameset sequence, tile
-; SPRITE_ANIM_INDEX_PARTY_MON
-	db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_SEQ_PARTY_MON, $00
-; SPRITE_ANIM_INDEX_01
-	db SPRITE_ANIM_FRAMESET_07, SPRITE_ANIM_SEQ_04, $00
-; SPRITE_ANIM_INDEX_NAMING_SCREEN_CURSOR
-	db SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR, SPRITE_ANIM_SEQ_NAMING_SCREEN_CURSOR, $05
-; SPRITE_ANIM_INDEX_GAMEFREAK_LOGO
-	db SPRITE_ANIM_FRAMESET_GAMEFREAK_LOGO, SPRITE_ANIM_SEQ_GAMEFREAK_LOGO, $00
-; SPRITE_ANIM_INDEX_GS_INTRO_STAR
-	db SPRITE_ANIM_FRAMESET_GS_INTRO_STAR, SPRITE_ANIM_SEQ_GS_INTRO_STAR, $06
-; SPRITE_ANIM_INDEX_GS_INTRO_SPARKLE
-	db SPRITE_ANIM_FRAMESET_GS_INTRO_SPARKLE, SPRITE_ANIM_SEQ_GS_INTRO_SPARKLE, $06
-; SPRITE_ANIM_INDEX_SLOTS_GOLEM
-	db SPRITE_ANIM_FRAMESET_SLOTS_GOLEM, SPRITE_ANIM_SEQ_SLOTS_GOLEM, $07
-; SPRITE_ANIM_INDEX_SLOTS_CHANSEY
-	db SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY, SPRITE_ANIM_SEQ_SLOTS_CHANSEY, $07
-; SPRITE_ANIM_INDEX_SLOTS_EGG
-	db SPRITE_ANIM_FRAMESET_SLOTS_EGG, SPRITE_ANIM_SEQ_SLOTS_EGG, $07
-; SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR
-	db SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR, SPRITE_ANIM_SEQ_MAIL_CURSOR, $05
-; SPRITE_ANIM_INDEX_RED_WALK
-	db SPRITE_ANIM_FRAMESET_RED_WALK, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_0B
-	db SPRITE_ANIM_FRAMESET_STILL_CURSOR, SPRITE_ANIM_SEQ_0D, $08
-; SPRITE_ANIM_INDEX_DUMMY_GAME
-	db SPRITE_ANIM_FRAMESET_STILL_CURSOR, SPRITE_ANIM_SEQ_0E, $08
-; SPRITE_ANIM_INDEX_0D
-	db SPRITE_ANIM_FRAMESET_STILL_CURSOR, SPRITE_ANIM_SEQ_0F, $08
-; SPRITE_ANIM_INDEX_TRADE_POKE_BALL
-	db SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL, SPRITE_ANIM_SEQ_TRADE_POKE_BALL, $00
-; SPRITE_ANIM_INDEX_TRADE_POOF
-	db SPRITE_ANIM_FRAMESET_TRADE_POOF, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_TRADE_TUBE_BULGE
-	db SPRITE_ANIM_FRAMESET_TRADE_TUBE_BULGE, SPRITE_ANIM_SEQ_TRADE_TUBE_BULGE, $00
-; SPRITE_ANIM_INDEX_TRADEMON_ICON
-	db SPRITE_ANIM_FRAMESET_TRADEMON_ICON, SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE, $00
-; SPRITE_ANIM_INDEX_TRADEMON_BUBBLE
-	db SPRITE_ANIM_FRAMESET_TRADEMON_BUBBLE, SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE, $00
-; SPRITE_ANIM_INDEX_EVOLUTION_BALL_OF_LIGHT
-	db SPRITE_ANIM_FRAMESET_EVOLUTION_BALL_OF_LIGHT, SPRITE_ANIM_SEQ_REVEAL_NEW_MON, $00
-; SPRITE_ANIM_INDEX_RADIO_TUNING_KNOB
-	db SPRITE_ANIM_FRAMESET_RADIO_TUNING_KNOB, SPRITE_ANIM_SEQ_RADIO_TUNING_KNOB, $00
-; SPRITE_ANIM_INDEX_MAGNET_TRAIN_RED
-	db SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_RED, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_LEAF
-	db SPRITE_ANIM_FRAMESET_LEAF, SPRITE_ANIM_SEQ_CUT_LEAVES, $00
-; SPRITE_ANIM_INDEX_CUT_TREE
-	db SPRITE_ANIM_FRAMESET_CUT_TREE, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_FLY_LEAF
-	db SPRITE_ANIM_FRAMESET_LEAF, SPRITE_ANIM_SEQ_FLY_LEAF, $00
-; SPRITE_ANIM_INDEX_EGG_CRACK
-	db SPRITE_ANIM_FRAMESET_EGG_CRACK, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_1A
-	db SPRITE_ANIM_FRAMESET_24, SPRITE_ANIM_SEQ_19, $00
-; SPRITE_ANIM_INDEX_HEADBUTT
-	db SPRITE_ANIM_FRAMESET_HEADBUTT, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_EGG_HATCH
-	db SPRITE_ANIM_FRAMESET_EGG_HATCH, SPRITE_ANIM_SEQ_REVEAL_NEW_MON, $00
-; SPRITE_ANIM_INDEX_1D
-	db SPRITE_ANIM_FRAMESET_26, SPRITE_ANIM_SEQ_1A, $00
-; SPRITE_ANIM_INDEX_BLUE_WALK
-	db SPRITE_ANIM_FRAMESET_BLUE_WALK, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_MAGNET_TRAIN_BLUE
-	db SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_BLUE, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_20
-	db SPRITE_ANIM_FRAMESET_2F, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_21
-	db SPRITE_ANIM_FRAMESET_30, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_22
-	db SPRITE_ANIM_FRAMESET_31, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_23
-	db SPRITE_ANIM_FRAMESET_32, SPRITE_ANIM_SEQ_1B, $00
-; SPRITE_ANIM_INDEX_24
-	db SPRITE_ANIM_FRAMESET_33, SPRITE_ANIM_SEQ_1C, $00
-; SPRITE_ANIM_INDEX_25
-	db SPRITE_ANIM_FRAMESET_34, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_INTRO_SUICUNE
-	db SPRITE_ANIM_FRAMESET_INTRO_SUICUNE, SPRITE_ANIM_SEQ_INTRO_SUICUNE, $00
-; SPRITE_ANIM_INDEX_INTRO_PICHU
-	db SPRITE_ANIM_FRAMESET_INTRO_PICHU, SPRITE_ANIM_SEQ_INTRO_PICHU_WOOPER, $00
-; SPRITE_ANIM_INDEX_INTRO_WOOPER
-	db SPRITE_ANIM_FRAMESET_INTRO_WOOPER, SPRITE_ANIM_SEQ_INTRO_PICHU_WOOPER, $00
-; SPRITE_ANIM_INDEX_INTRO_UNOWN
-	db SPRITE_ANIM_FRAMESET_INTRO_UNOWN_1, SPRITE_ANIM_SEQ_INTRO_UNOWN, $00
-; SPRITE_ANIM_INDEX_INTRO_UNOWN_F
-	db SPRITE_ANIM_FRAMESET_INTRO_UNOWN_F, SPRITE_ANIM_SEQ_INTRO_UNOWN_F, $00
-; SPRITE_ANIM_INDEX_INTRO_SUICUNE_AWAY
-	db SPRITE_ANIM_FRAMESET_INTRO_SUICUNE_AWAY, SPRITE_ANIM_SEQ_INTRO_SUICUNE_AWAY, $00
-; SPRITE_ANIM_INDEX_CELEBI
-	db SPRITE_ANIM_FRAMESET_CELEBI_LEFT, SPRITE_ANIM_SEQ_NULL, $00 ; 2c
-; 8d24b
 
-INCLUDE "engine/sprite_anims.asm" ; DoAnimFrame
+INCLUDE "data/sprite_anim_seqs.asm"
 
-INCLUDE "data/sprite_engine.asm"
-; SpriteAnimFrameData
-; SpriteAnimOAMData
+INCLUDE "engine/sprite_anims.asm"
+
+INCLUDE "data/sprite_anim_frames.asm"
+
+INCLUDE "data/sprite_anim_oam.asm"
+
+
+BrokenStdGFXPointers: ; Broken 2bpp pointers
+	dbbw $80, $01, .deleted ; 128-tile 2bpp at 1:672a (inside Multiply)
+	dbbw $80, $01, .deleted
+	dbbw $80, $01, .deleted
+	dbbw $80, $01, .deleted
+	dbbw $10, $37, .deleted ; 16-tile 2bpp at 37:672a (within TilesetTrainStationGFX)
+	dbbw $10, $11, .deleted ; 16-tile 2bpp at 11:672a (empty data)
+	dbbw $10, $39, .deleted ; 16-tile 2bpp at 39:672a (empty data)
+	dbbw $10, $24, .deleted ; 16-tile 2bpp at 24:672a (inside Function926f7)
+	dbbw $10, $21, .deleted ; 16-tile 2bpp at 21:672a (inside Function8671c)
+
+.deleted
+; 8e72a (23:672a)
+
 
 Sprites_Cosine: ; 8e72a
 	add $10
--- a/engine/std_scripts.asm
+++ b/engine/std_scripts.asm
@@ -1,5 +1,5 @@
 StdScripts::
-	dba PokeCenterNurseScript
+	dba PokecenterNurseScript
 	dba DifficultBookshelfScript
 	dba PictureBookshelfScript
 	dba MagazineBookshelfScript
@@ -15,7 +15,7 @@
 	dba TrashCanScript
 	dba StrengthBoulderScript
 	dba SmashRockScript
-	dba PokeCenterSignScript
+	dba PokecenterSignScript
 	dba MartSignScript
 	dba GoldenrodRocketsScript
 	dba RadioTowerRocketsScript
@@ -52,7 +52,7 @@
 	dba GameCornerCoinVendorScript
 	dba HappinessCheckScript
 
-PokeCenterNurseScript:
+PokecenterNurseScript:
 ; EVENT_WELCOMED_TO_POKECOM_CENTER is never set
 
 	opentext
@@ -236,8 +236,8 @@
 SmashRockScript:
 	farjump AskRockSmashScript
 
-PokeCenterSignScript:
-	farjumptext PokeCenterSignText
+PokecenterSignScript:
+	farjumptext PokecenterSignText
 
 MartSignScript
 	farjumptext MartSignText
@@ -1786,7 +1786,7 @@
 ReceiveTogepiEggScript: ; 0xbcdc3
 	waitsfx
 	farwritetext ReceivedItemText
-	playsound SFX_GET_EGG_FROM_DAYCARE_LADY
+	playsound SFX_GET_EGG_FROM_DAY_CARE_LADY
 	waitsfx
 	end
 ; 0xbcdcd
--- a/engine/time_capsule/conversion.asm
+++ b/engine/time_capsule/conversion.asm
@@ -144,163 +144,10 @@
 	jr .loop
 ; fb656
 
-KantoMonSpecials: ; fb656
-; The original special base stat for
-; each Kanto monster from Red/Blue.
-	db  65 ; BULBASAUR
-	db  80 ; IVYSAUR
-	db 100 ; VENUSAUR
-	db  50 ; CHARMANDER
-	db  65 ; CHARMELEON
-	db  85 ; CHARIZARD
-	db  50 ; SQUIRTLE
-	db  65 ; WARTORTLE
-	db  85 ; BLASTOISE
-	db  20 ; CATERPIE
-	db  25 ; METAPOD
-	db  80 ; BUTTERFREE
-	db  20 ; WEEDLE
-	db  25 ; KAKUNA
-	db  45 ; BEEDRILL
-	db  35 ; PIDGEY
-	db  50 ; PIDGEOTTO
-	db  70 ; PIDGEOT
-	db  25 ; RATTATA
-	db  50 ; RATICATE
-	db  31 ; SPEAROW
-	db  61 ; FEAROW
-	db  40 ; EKANS
-	db  65 ; ARBOK
-	db  50 ; PIKACHU
-	db  90 ; RAICHU
-	db  30 ; SANDSHREW
-	db  55 ; SANDSLASH
-	db  40 ; NIDORAN_F
-	db  55 ; NIDORINA
-	db  75 ; NIDOQUEEN
-	db  40 ; NIDORAN_M
-	db  55 ; NIDORINO
-	db  75 ; NIDOKING
-	db  60 ; CLEFAIRY
-	db  85 ; CLEFABLE
-	db  65 ; VULPIX
-	db 100 ; NINETALES
-	db  25 ; JIGGLYPUFF
-	db  50 ; WIGGLYTUFF
-	db  40 ; ZUBAT
-	db  75 ; GOLBAT
-	db  75 ; ODDISH
-	db  85 ; GLOOM
-	db 100 ; VILEPLUME
-	db  55 ; PARAS
-	db  80 ; PARASECT
-	db  40 ; VENONAT
-	db  90 ; VENOMOTH
-	db  45 ; DIGLETT
-	db  70 ; DUGTRIO
-	db  40 ; MEOWTH
-	db  65 ; PERSIAN
-	db  50 ; PSYDUCK
-	db  80 ; GOLDUCK
-	db  35 ; MANKEY
-	db  60 ; PRIMEAPE
-	db  50 ; GROWLITHE
-	db  80 ; ARCANINE
-	db  40 ; POLIWAG
-	db  50 ; POLIWHIRL
-	db  70 ; POLIWRATH
-	db 105 ; ABRA
-	db 120 ; KADABRA
-	db 135 ; ALAKAZAM
-	db  35 ; MACHOP
-	db  50 ; MACHOKE
-	db  65 ; MACHAMP
-	db  70 ; BELLSPROUT
-	db  85 ; WEEPINBELL
-	db 100 ; VICTREEBEL
-	db 100 ; TENTACOOL
-	db 120 ; TENTACRUEL
-	db  30 ; GEODUDE
-	db  45 ; GRAVELER
-	db  55 ; GOLEM
-	db  65 ; PONYTA
-	db  80 ; RAPIDASH
-	db  40 ; SLOWPOKE
-	db  80 ; SLOWBRO
-	db  95 ; MAGNEMITE
-	db 120 ; MAGNETON
-	db  58 ; FARFETCH_D
-	db  35 ; DODUO
-	db  60 ; DODRIO
-	db  70 ; SEEL
-	db  95 ; DEWGONG
-	db  40 ; GRIMER
-	db  65 ; MUK
-	db  45 ; SHELLDER
-	db  85 ; CLOYSTER
-	db 100 ; GASTLY
-	db 115 ; HAUNTER
-	db 130 ; GENGAR
-	db  30 ; ONIX
-	db  90 ; DROWZEE
-	db 115 ; HYPNO
-	db  25 ; KRABBY
-	db  50 ; KINGLER
-	db  55 ; VOLTORB
-	db  80 ; ELECTRODE
-	db  60 ; EXEGGCUTE
-	db 125 ; EXEGGUTOR
-	db  40 ; CUBONE
-	db  50 ; MAROWAK
-	db  35 ; HITMONLEE
-	db  35 ; HITMONCHAN
-	db  60 ; LICKITUNG
-	db  60 ; KOFFING
-	db  85 ; WEEZING
-	db  30 ; RHYHORN
-	db  45 ; RHYDON
-	db 105 ; CHANSEY
-	db 100 ; TANGELA
-	db  40 ; KANGASKHAN
-	db  70 ; HORSEA
-	db  95 ; SEADRA
-	db  50 ; GOLDEEN
-	db  80 ; SEAKING
-	db  70 ; STARYU
-	db 100 ; STARMIE
-	db 100 ; MR__MIME
-	db  55 ; SCYTHER
-	db  95 ; JYNX
-	db  85 ; ELECTABUZZ
-	db  85 ; MAGMAR
-	db  55 ; PINSIR
-	db  70 ; TAUROS
-	db  20 ; MAGIKARP
-	db 100 ; GYARADOS
-	db  95 ; LAPRAS
-	db  48 ; DITTO
-	db  65 ; EEVEE
-	db 110 ; VAPOREON
-	db 110 ; JOLTEON
-	db 110 ; FLAREON
-	db  75 ; PORYGON
-	db  90 ; OMANYTE
-	db 115 ; OMASTAR
-	db  45 ; KABUTO
-	db  70 ; KABUTOPS
-	db  60 ; AERODACTYL
-	db  65 ; SNORLAX
-	db 125 ; ARTICUNO
-	db 125 ; ZAPDOS
-	db 125 ; MOLTRES
-	db  50 ; DRATINI
-	db  70 ; DRAGONAIR
-	db 100 ; DRAGONITE
-	db 154 ; MEWTWO
-	db 100 ; MEW
-; fb6ed
 
+INCLUDE "data/time_capsule/special_stats.asm"
 
+
 INCLUDE "event/name_rater.asm"
 
 
@@ -426,257 +273,5 @@
 	ret
 ; fb91c
 
-Pokered_MonIndices: ; fb91c
-	db RHYDON
-	db KANGASKHAN
-	db NIDORAN_M
-	db CLEFAIRY
-	db SPEAROW
-	db VOLTORB
-	db NIDOKING
-	db SLOWBRO
-	db IVYSAUR
-	db EXEGGUTOR
-	db LICKITUNG
-	db EXEGGCUTE
-	db GRIMER
-	db GENGAR
-	db NIDORAN_F
-	db NIDOQUEEN
-	db CUBONE
-	db RHYHORN
-	db LAPRAS
-	db ARCANINE
-	db MEW
-	db GYARADOS
-	db SHELLDER
-	db TENTACOOL
-	db GASTLY
-	db SCYTHER
-	db STARYU
-	db BLASTOISE
-	db PINSIR
-	db TANGELA
-	db SCIZOR
-	db SHUCKLE
-	db GROWLITHE
-	db ONIX
-	db FEAROW
-	db PIDGEY
-	db SLOWPOKE
-	db KADABRA
-	db GRAVELER
-	db CHANSEY
-	db MACHOKE
-	db MR__MIME
-	db HITMONLEE
-	db HITMONCHAN
-	db ARBOK
-	db PARASECT
-	db PSYDUCK
-	db DROWZEE
-	db GOLEM
-	db HERACROSS
-	db MAGMAR
-	db HO_OH
-	db ELECTABUZZ
-	db MAGNETON
-	db KOFFING
-	db SNEASEL
-	db MANKEY
-	db SEEL
-	db DIGLETT
-	db TAUROS
-	db TEDDIURSA
-	db URSARING
-	db SLUGMA
-	db FARFETCH_D
-	db VENONAT
-	db DRAGONITE
-	db MAGCARGO
-	db SWINUB
-	db PILOSWINE
-	db DODUO
-	db POLIWAG
-	db JYNX
-	db MOLTRES
-	db ARTICUNO
-	db ZAPDOS
-	db DITTO
-	db MEOWTH
-	db KRABBY
-	db CORSOLA
-	db REMORAID
-	db OCTILLERY
-	db VULPIX
-	db NINETALES
-	db PIKACHU
-	db RAICHU
-	db DELIBIRD
-	db MANTINE
-	db DRATINI
-	db DRAGONAIR
-	db KABUTO
-	db KABUTOPS
-	db HORSEA
-	db SEADRA
-	db SKARMORY
-	db HOUNDOUR
-	db SANDSHREW
-	db SANDSLASH
-	db OMANYTE
-	db OMASTAR
-	db JIGGLYPUFF
-	db WIGGLYTUFF
-	db EEVEE
-	db FLAREON
-	db JOLTEON
-	db VAPOREON
-	db MACHOP
-	db ZUBAT
-	db EKANS
-	db PARAS
-	db POLIWHIRL
-	db POLIWRATH
-	db WEEDLE
-	db KAKUNA
-	db BEEDRILL
-	db HOUNDOOM
-	db DODRIO
-	db PRIMEAPE
-	db DUGTRIO
-	db VENOMOTH
-	db DEWGONG
-	db KINGDRA
-	db PHANPY
-	db CATERPIE
-	db METAPOD
-	db BUTTERFREE
-	db MACHAMP
-	db DONPHAN
-	db GOLDUCK
-	db HYPNO
-	db GOLBAT
-	db MEWTWO
-	db SNORLAX
-	db MAGIKARP
-	db PORYGON2
-	db STANTLER
-	db MUK
-	db SMEARGLE
-	db KINGLER
-	db CLOYSTER
-	db TYROGUE
-	db ELECTRODE
-	db CLEFABLE
-	db WEEZING
-	db PERSIAN
-	db MAROWAK
-	db HITMONTOP
-	db HAUNTER
-	db ABRA
-	db ALAKAZAM
-	db PIDGEOTTO
-	db PIDGEOT
-	db STARMIE
-	db BULBASAUR
-	db VENUSAUR
-	db TENTACRUEL
-	db SMOOCHUM
-	db GOLDEEN
-	db SEAKING
-	db ELEKID
-	db MAGBY
-	db MILTANK
-	db BLISSEY
-	db PONYTA
-	db RAPIDASH
-	db RATTATA
-	db RATICATE
-	db NIDORINO
-	db NIDORINA
-	db GEODUDE
-	db PORYGON
-	db AERODACTYL
-	db RAIKOU
-	db MAGNEMITE
-	db ENTEI
-	db SUICUNE
-	db CHARMANDER
-	db SQUIRTLE
-	db CHARMELEON
-	db WARTORTLE
-	db CHARIZARD
-	db LARVITAR
-	db PUPITAR
-	db TYRANITAR
-	db LUGIA
-	db ODDISH
-	db GLOOM
-	db VILEPLUME
-	db BELLSPROUT
-	db WEEPINBELL
-	db VICTREEBEL
-	db CHIKORITA
-	db BAYLEEF
-	db MEGANIUM
-	db CYNDAQUIL
-	db QUILAVA
-	db TYPHLOSION
-	db TOTODILE
-	db CROCONAW
-	db FERALIGATR
-	db SENTRET
-	db FURRET
-	db HOOTHOOT
-	db NOCTOWL
-	db LEDYBA
-	db LEDIAN
-	db SPINARAK
-	db ARIADOS
-	db CROBAT
-	db CHINCHOU
-	db LANTURN
-	db PICHU
-	db CLEFFA
-	db IGGLYBUFF
-	db TOGEPI
-	db TOGETIC
-	db NATU
-	db XATU
-	db MAREEP
-	db FLAAFFY
-	db AMPHAROS
-	db BELLOSSOM
-	db MARILL
-	db AZUMARILL
-	db SUDOWOODO
-	db POLITOED
-	db HOPPIP
-	db SKIPLOOM
-	db JUMPLUFF
-	db AIPOM
-	db SUNKERN
-	db SUNFLORA
-	db YANMA
-	db WOOPER
-	db QUAGSIRE
-	db ESPEON
-	db UMBREON
-	db MURKROW
-	db SLOWKING
-	db MISDREAVUS
-	db UNOWN
-	db WOBBUFFET
-	db GIRAFARIG
-	db PINECO
-	db FORRETRESS
-	db DUNSPARCE
-	db GLIGAR
-	db STEELIX
-	db SNUBBULL
-	db GRANBULL
-	db QWILFISH
-	db WOBBUFFET
-	db WOBBUFFET
-; fba18
+
+INCLUDE "data/time_capsule/mon_order.asm"
--- a/engine/timeset.asm
+++ b/engine/timeset.asm
@@ -44,7 +44,7 @@
 	ld bc, 50
 	xor a
 	call ByteFill
-	ld a, $a
+	ld a, 10 ; default hour = 10 AM
 	ld [wInitHourBuffer], a
 
 .loop
@@ -98,7 +98,7 @@
 	call SetMinutes
 	jr nc, .SetMinutesLoop
 
-	ld a, [BattleMonNick + 5]
+	ld a, [wInitMinuteBuffer]
 	ld [StringBuffer2 + 2], a
 	call .ClearScreen
 	ld hl, Text_WhoaMins
@@ -237,7 +237,7 @@
 	ret
 
 .d_down
-	ld hl, BattleMonNick + 5
+	ld hl, wInitMinuteBuffer
 	ld a, [hl]
 	and a
 	jr nz, .decrease
@@ -248,7 +248,7 @@
 	jr .finish_dpad
 
 .d_up
-	ld hl, BattleMonNick + 5
+	ld hl, wInitMinuteBuffer
 	ld a, [hl]
 	cp 59
 	jr c, .increase
@@ -271,7 +271,7 @@
 	ret
 
 DisplayMinutesWithMinString: ; 90859 (24:4859)
-	ld de, BattleMonNick + 5
+	ld de, wInitMinuteBuffer
 	call PrintTwoDigitNumberRightAlign
 	inc hl
 	ld de, String_min
@@ -355,25 +355,25 @@
 	call PrintHour
 	ld [hl], ":"
 	inc hl
-	ld de, BattleMonNick + 5
+	ld de, wInitMinuteBuffer
 	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
 	call PrintNum
 	ld b, h
 	ld c, l
 	ld a, [wInitHourBuffer]
-	cp 4
-	jr c, .NITE
-	cp 11
-	jr c, .MORN
-	cp 18
-	jr c, .DAY
-.NITE:
+	cp MORN_HOUR
+	jr c, .nite
+	cp DAY_HOUR + 1
+	jr c, .morn
+	cp NITE_HOUR
+	jr c, .day
+.nite:
 	ld hl, .sodark
 	ret
-.MORN:
+.morn:
 	ld hl, .overslept
 	ret
-.DAY:
+.day:
 	ld hl, .yikes
 	ret
 ; 908ec (24:48ec)
@@ -482,7 +482,7 @@
 	ld a, [hl]
 	and a
 	jr nz, .decrease
-	ld a, 6 + 1
+	ld a, SATURDAY + 1
 
 .decrease
 	dec a
@@ -494,7 +494,7 @@
 	ld a, [hl]
 	cp 6
 	jr c, .increase
-	ld a, 0 - 1
+	ld a, SUNDAY - 1
 
 .increase
 	inc a
@@ -531,6 +531,7 @@
 ; 909f2
 
 .WeekdayStrings: ; 909f2
+; entries correspond to CurDay constants (see constants/wram_constants.asm)
 	dw .Sunday
 	dw .Monday
 	dw .Tuesday
@@ -731,26 +732,26 @@
 
 GetTimeOfDayString: ; 90b58 (24:4b58)
 	ld a, c
-	cp 4
+	cp MORN_HOUR
 	jr c, .nite
-	cp 10
+	cp DAY_HOUR
 	jr c, .morn
-	cp 18
+	cp NITE_HOUR
 	jr c, .day
 .nite
-	ld de, .NITE
+	ld de, .nite_string
 	ret
 .morn
-	ld de, .MORN
+	ld de, .morn_string
 	ret
 .day
-	ld de, .DAY
+	ld de, .day_string
 	ret
 ; 90b71 (24:4b71)
 
-.NITE: db "NITE@"
-.MORN: db "MORN@"
-.DAY: db "DAY@"
+.nite_string: db "NITE@"
+.morn_string: db "MORN@"
+.day_string:  db "DAY@"
 ; 90b7f
 
 AdjustHourForAMorPM:
@@ -758,12 +759,12 @@
 	ld a, c
 	or a
 	jr z, .midnight
-	cp 12
+	cp NOON_HOUR
 	ret c
 	ret z
-	sub 12
+	sub NOON_HOUR
 	ret
 
 .midnight
-	ld a, 12
+	ld a, NOON_HOUR
 	ret
--- a/engine/tmhm.asm
+++ b/engine/tmhm.asm
@@ -45,69 +45,5 @@
 	ret
 ; 1167a
 
-TMHMMoves: ; 1167a
-	db DYNAMICPUNCH
-	db HEADBUTT
-	db CURSE
-	db ROLLOUT
-	db ROAR
-	db TOXIC
-	db ZAP_CANNON
-	db ROCK_SMASH
-	db PSYCH_UP
-	db HIDDEN_POWER
-	db SUNNY_DAY
-	db SWEET_SCENT
-	db SNORE
-	db BLIZZARD
-	db HYPER_BEAM
-	db ICY_WIND
-	db PROTECT
-	db RAIN_DANCE
-	db GIGA_DRAIN
-	db ENDURE
-	db FRUSTRATION
-	db SOLARBEAM
-	db IRON_TAIL
-	db DRAGONBREATH
-	db THUNDER
-	db EARTHQUAKE
-	db RETURN
-	db DIG
-	db PSYCHIC_M
-	db SHADOW_BALL
-	db MUD_SLAP
-	db DOUBLE_TEAM
-	db ICE_PUNCH
-	db SWAGGER
-	db SLEEP_TALK
-	db SLUDGE_BOMB
-	db SANDSTORM
-	db FIRE_BLAST
-	db SWIFT
-	db DEFENSE_CURL
-	db THUNDERPUNCH
-	db DREAM_EATER
-	db DETECT
-	db REST
-	db ATTRACT
-	db THIEF
-	db STEEL_WING
-	db FIRE_PUNCH
-	db FURY_CUTTER
-	db NIGHTMARE
-	db CUT
-	db FLY
-	db SURF
-	db STRENGTH
-	db FLASH
-	db WHIRLPOOL
-	db WATERFALL
 
-; Move tutor
-	db FLAMETHROWER
-	db THUNDERBOLT
-	db ICE_BEAM
-
-	db 0 ; end
-; 116b7
+INCLUDE "data/tmhm_moves.asm"
--- a/engine/wildmons.asm
+++ b/engine/wildmons.asm
@@ -271,7 +271,7 @@
 	inc hl
 	inc hl
 	call CheckOnWater
-	ld de, .WaterMonTable
+	ld de, WaterMonProbTable
 	jr z, .watermon
 	inc hl
 	inc hl
@@ -278,7 +278,7 @@
 	ld a, [TimeOfDay]
 	ld bc, $e
 	call AddNTimes
-	ld de, .GrassMonTable
+	ld de, GrassMonProbTable
 
 .watermon
 ; hl contains the pointer to the wild mon data, let's save that to the stack
@@ -357,22 +357,8 @@
 	ret
 ; 2a1cb
 
-.GrassMonTable: ; 2a1cb
-	db 30,  $0 ; 30% chance
-	db 60,  $2 ; 30% chance
-	db 80,  $4 ; 20% chance
-	db 90,  $6 ; 10% chance
-	db 95,  $8 ;  5% chance
-	db 99,  $a ;  4% chance
-	db 100, $c ;  1% chance
-; 2a1d9
+INCLUDE "data/wild/probabilities.asm"
 
-.WaterMonTable: ; 2a1d9
-	db 60,  $0 ; 60% chance
-	db 90,  $2 ; 30% chance
-	db 100, $4 ; 10% chance
-; 2a1df
-
 CheckRepelEffect:: ; 2a1df
 ; If there is no active Repel, there's no need to be here.
 	ld a, [wRepelEffect]
@@ -798,30 +784,10 @@
 	ret
 ; 2a40f
 
-RoamMaps: ; 2a40f
-; Maps that roaming monsters can be on,
-; and possible maps they can jump to.
-; Notably missing are Route 40 and
-; Route 41, which are water routes.
-	roam_map ROUTE_29, 2, ROUTE_30, ROUTE_46
-	roam_map ROUTE_30, 2, ROUTE_29, ROUTE_31
-	roam_map ROUTE_31, 3, ROUTE_30, ROUTE_32, ROUTE_36
-	roam_map ROUTE_32, 3, ROUTE_36, ROUTE_31, ROUTE_33
-	roam_map ROUTE_33, 2, ROUTE_32, ROUTE_34
-	roam_map ROUTE_34, 2, ROUTE_33, ROUTE_35
-	roam_map ROUTE_35, 2, ROUTE_34, ROUTE_36
-	roam_map ROUTE_36, 4, ROUTE_35, ROUTE_31, ROUTE_32, ROUTE_37
-	roam_map ROUTE_37, 3, ROUTE_36, ROUTE_38, ROUTE_42
-	roam_map ROUTE_38, 3, ROUTE_37, ROUTE_39, ROUTE_42
-	roam_map ROUTE_39, 1, ROUTE_38
-	roam_map ROUTE_42, 4, ROUTE_43, ROUTE_44, ROUTE_37, ROUTE_38
-	roam_map ROUTE_43, 2, ROUTE_42, ROUTE_44
-	roam_map ROUTE_44, 3, ROUTE_42, ROUTE_43, ROUTE_45
-	roam_map ROUTE_45, 2, ROUTE_44, ROUTE_46
-	roam_map ROUTE_46, 2, ROUTE_45, ROUTE_29
-	db -1
-; 2a4a0
 
+INCLUDE "data/wild/roammon_maps.asm"
+
+
 ValidateTempWildMonSpecies: ; 2a4a0
 ; Due to a development oversight, this function is called with the wild Pokemon's level, not its species, in a.
 	and a
@@ -1034,20 +1000,9 @@
 ; 2a5e9
 
 
-JohtoGrassWildMons: ; 0x2a5e9
 INCLUDE "data/wild/johto_grass.asm"
-
-JohtoWaterWildMons: ; 0x2b11d
 INCLUDE "data/wild/johto_water.asm"
-
-KantoGrassWildMons: ; 0x2b274
 INCLUDE "data/wild/kanto_grass.asm"
-
-KantoWaterWildMons: ; 0x2b7f7
 INCLUDE "data/wild/kanto_water.asm"
-
-SwarmGrassWildMons: ; 0x2b8d0
 INCLUDE "data/wild/swarm_grass.asm"
-
-SwarmWaterWildMons: ; 0x2b92f
 INCLUDE "data/wild/swarm_water.asm"
--- a/event/bug_contest_judging.asm
+++ b/event/bug_contest_judging.asm
@@ -134,80 +134,10 @@
 	jp CopyBytes
 ; 13783
 
-BugContestantPointers: ; 13783
-	dw BugContestant_BugCatcherDon ; This reverts back to the player
-	dw BugContestant_BugCatcherDon
-	dw BugContestant_BugCatcherEd
-	dw BugContestant_CooltrainerMNick
-	dw BugContestant_PokefanMWilliam
-	dw BugContestant_BugCatcherBenny
-	dw BugContestant_CamperBarry
-	dw BugContestant_PicnickerCindy
-	dw BugContestant_BugCatcherJosh
-	dw BugContestant_YoungsterSamuel
-	dw BugContestant_SchoolboyKipp
-; 13799
 
-BugContestant_BugCatcherDon:
-	db BUG_CATCHER, DON
-	dbw KAKUNA,     300
-	dbw METAPOD,    285
-	dbw CATERPIE,   226
-
-BugContestant_BugCatcherEd:
-	db BUG_CATCHER, ED
-	dbw BUTTERFREE, 286
-	dbw BUTTERFREE, 251
-	dbw CATERPIE,   237
-
-BugContestant_CooltrainerMNick:
-	db COOLTRAINERM, NICK
-	dbw SCYTHER,    357
-	dbw BUTTERFREE, 349
-	dbw PINSIR,     368
-
-BugContestant_PokefanMWilliam:
-	db POKEFANM, WILLIAM
-	dbw PINSIR,     332
-	dbw BUTTERFREE, 324
-	dbw VENONAT,    321
-
-BugContestant_BugCatcherBenny:
-	db BUG_CATCHER, BUG_CATCHER_BENNY
-	dbw BUTTERFREE, 318
-	dbw WEEDLE,     295
-	dbw CATERPIE,   285
-
-BugContestant_CamperBarry:
-	db CAMPER, BARRY
-	dbw PINSIR,     366
-	dbw VENONAT,    329
-	dbw KAKUNA,     314
-
-BugContestant_PicnickerCindy:
-	db PICNICKER, CINDY
-	dbw BUTTERFREE, 341
-	dbw METAPOD,    301
-	dbw CATERPIE,   264
-
-BugContestant_BugCatcherJosh:
-	db BUG_CATCHER, JOSH
-	dbw SCYTHER,    326
-	dbw BUTTERFREE, 292
-	dbw METAPOD,    282
-
-BugContestant_YoungsterSamuel:
-	db YOUNGSTER, SAMUEL
-	dbw WEEDLE,     270
-	dbw PINSIR,     282
-	dbw CATERPIE,   251
-
-BugContestant_SchoolboyKipp:
-	db SCHOOLBOY, KIPP
-	dbw VENONAT,    267
-	dbw PARAS,      254
-	dbw KAKUNA,     259
+INCLUDE "data/bug_contest_winners.asm"
 ; 13807
+
 
 BugContest_GetPlayersResult: ; 13807
 	ld hl, wBugContestThirdPlacePersonID
--- a/event/daycare.asm
+++ b/event/daycare.asm
@@ -21,17 +21,17 @@
 	const DAYCARETEXT_13
 
 Special_DayCareMan: ; 166d6
-	ld hl, wDaycareMan
+	ld hl, wDayCareMan
 	bit 0, [hl]
 	jr nz, .AskWithdrawMon
-	ld hl, wDaycareMan
+	ld hl, wDayCareMan
 	ld a, DAYCARETEXT_MAN_INTRO
 	call DayCareManIntroText
 	jr c, .cancel
 	call DayCareAskDepositPokemon
 	jr c, .print_text
-	callba DepositMonWithDaycareMan
-	ld hl, wDaycareMan
+	callba DepositMonWithDayCareMan
+	ld hl, wDayCareMan
 	set 0, [hl]
 	call DayCare_DepositPokemonText
 	call DayCare_InitBreeding
@@ -43,9 +43,9 @@
 	call GetPriceToRetrieveBreedmon
 	call DayCare_AskWithdrawBreedMon
 	jr c, .print_text
-	callba RetrievePokemonFromDaycareMan
+	callba RetrievePokemonFromDayCareMan
 	call DayCare_TakeMoney_PlayCry
-	ld hl, wDaycareMan
+	ld hl, wDayCareMan
 	res 0, [hl]
 	res 5, [hl]
 	jr .cancel
@@ -60,17 +60,17 @@
 ; 1672a
 
 Special_DayCareLady: ; 1672a
-	ld hl, wDaycareLady
+	ld hl, wDayCareLady
 	bit 0, [hl]
 	jr nz, .AskWithdrawMon
-	ld hl, wDaycareLady
+	ld hl, wDayCareLady
 	ld a, DAYCARETEXT_LADY_INTRO
 	call DayCareLadyIntroText
 	jr c, .cancel
 	call DayCareAskDepositPokemon
 	jr c, .print_text
-	callba DepositMonWithDaycareLady
-	ld hl, wDaycareLady
+	callba DepositMonWithDayCareLady
+	ld hl, wDayCareLady
 	set 0, [hl]
 	call DayCare_DepositPokemonText
 	call DayCare_InitBreeding
@@ -82,11 +82,11 @@
 	call GetPriceToRetrieveBreedmon
 	call DayCare_AskWithdrawBreedMon
 	jr c, .print_text
-	callba RetrievePokemonFromDaycareLady
+	callba RetrievePokemonFromDayCareLady
 	call DayCare_TakeMoney_PlayCry
-	ld hl, wDaycareLady
+	ld hl, wDayCareLady
 	res 0, [hl]
-	ld hl, wDaycareMan
+	ld hl, wDayCareMan
 	res 5, [hl]
 	jr .cancel
 
@@ -124,7 +124,7 @@
 	ld a, DAYCARETEXT_WHICH_ONE
 	call PrintDayCareText
 	ld b, PARTYMENUACTION_GIVE_MON
-	callba SelectTradeOrDaycareMon
+	callba SelectTradeOrDayCareMon
 	jr c, .Declined
 	ld a, [CurPartySpecies]
 	cp EGG
@@ -426,7 +426,7 @@
 ; 0x16936
 
 Special_DayCareManOutside: ; 16936
-	ld hl, wDaycareMan
+	ld hl, wDayCareMan
 	bit 6, [hl]
 	jr nz, .AskGiveEgg
 	ld hl, .NotYet
@@ -448,12 +448,12 @@
 	cp PARTY_LENGTH
 	jr nc, .PartyFull
 	call DayCare_GiveEgg
-	ld hl, wDaycareMan
+	ld hl, wDayCareMan
 	res 6, [hl]
 	call DayCare_InitBreeding
 	ld hl, .GotEggText
 	call PrintText
-	ld de, SFX_GET_EGG_FROM_DAYCARE_LADY
+	ld de, SFX_GET_EGG_FROM_DAY_CARE_LADY
 	call PlaySFX
 	ld c, 120
 	call DelayFrames
@@ -590,10 +590,10 @@
 ; 16a3b
 
 DayCare_InitBreeding: ; 16a3b
-	ld a, [wDaycareLady]
+	ld a, [wDayCareLady]
 	bit 0, a
 	ret z
-	ld a, [wDaycareMan]
+	ld a, [wDayCareMan]
 	bit 0, a
 	ret z
 	callab CheckBreedmonCompatibility
@@ -602,7 +602,7 @@
 	ret z
 	inc a
 	ret z
-	ld hl, wDaycareMan
+	ld hl, wDayCareMan
 	set 5, [hl]
 .loop
 	call Random
--- a/event/field_moves.asm
+++ b/event/field_moves.asm
@@ -75,7 +75,7 @@
 ; 8c893
 
 HeadbuttTreeGFX: ; 8c893
-INCBIN "gfx/ow_fx/headbutt_tree.2bpp"
+INCBIN "gfx/overworld/headbutt_tree.2bpp"
 ; 8c913
 
 HideHeadbuttTree: ; 8c913
@@ -152,11 +152,11 @@
 ; 8c98c
 
 CutTreeGFX: ; c898c
-INCBIN "gfx/ow_fx/cut_tree.2bpp"
+INCBIN "gfx/overworld/cut_tree.2bpp"
 ; c89cc
 
 CutGrassGFX: ; 8c9cc
-INCBIN "gfx/ow_fx/cut_grass.2bpp"
+INCBIN "gfx/overworld/cut_grass.2bpp"
 ; 8ca0c
 
 OWCutJumptable: ; 8ca0c
--- a/event/happiness_egg.asm
+++ b/event/happiness_egg.asm
@@ -55,11 +55,11 @@
 
 	push de
 	ld a, [de]
-	cp 100
+	cp HAPPINESS_THRESHOLD_1
 	ld e, 0
 	jr c, .ok
 	inc e
-	cp 200
+	cp HAPPINESS_THRESHOLD_2
 	jr c, .ok
 	inc e
 
@@ -66,7 +66,7 @@
 .ok
 	dec c
 	ld b, 0
-	ld hl, .Actions
+	ld hl, HappinessChanges
 	add hl, bc
 	add hl, bc
 	add hl, bc
@@ -73,7 +73,7 @@
 	ld d, 0
 	add hl, de
 	ld a, [hl]
-	cp 100
+	cp $64 ; $80?
 	pop de
 
 	ld a, [de]
@@ -102,27 +102,10 @@
 	ld [BattleMonHappiness], a
 	ret
 
-.Actions:
-	db  +5,  +3,  +2 ; Gained a level
-	db  +5,  +3,  +2 ; Vitamin
-	db  +1,  +1,  +0 ; X Item
-	db  +3,  +2,  +1 ; Battled a Gym Leader
-	db  +1,  +1,  +0 ; Learned a move
-	db  -1,  -1,  -1 ; Lost to an enemy
-	db  -5,  -5, -10 ; Fainted due to poison
-	db  -5,  -5, -10 ; Lost to a much stronger enemy
-	db  +1,  +1,  +1 ; Haircut (Y1)
-	db  +3,  +3,  +1 ; Haircut (Y2)
-	db  +5,  +5,  +2 ; Haircut (Y3)
-	db  +1,  +1,  +1 ; Haircut (O1)
-	db  +3,  +3,  +1 ; Haircut (O2)
-	db +10, +10,  +4 ; Haircut (O3)
-	db  -5,  -5, -10 ; Used Heal Powder or Energypowder (bitter)
-	db -10, -10, -15 ; Used Energy Root (bitter)
-	db -15, -15, -20 ; Used Revival Herb (bitter)
-	db  +3,  +3,  +1 ; Grooming
-	db +10,  +6,  +4 ; Gained a level in the place where it was caught
 
+INCLUDE "data/happiness_changes.asm"
+
+
 StepHappiness:: ; 725a
 ; Raise the party's happiness by 1 point every other step cycle.
 
@@ -158,36 +141,36 @@
 	jr nz, .loop
 	ret
 
-DaycareStep:: ; 7282
+DayCareStep:: ; 7282
 
-	ld a, [wDaycareMan]
+	ld a, [wDayCareMan]
 	bit 0, a
-	jr z, .daycare_lady
+	jr z, .day_care_lady
 
 	ld a, [wBreedMon1Level] ; level
-	cp 100
-	jr nc, .daycare_lady
+	cp MAX_LEVEL
+	jr nc, .day_care_lady
 	ld hl, wBreedMon1Exp + 2 ; exp
 	inc [hl]
-	jr nz, .daycare_lady
+	jr nz, .day_care_lady
 	dec hl
 	inc [hl]
-	jr nz, .daycare_lady
+	jr nz, .day_care_lady
 	dec hl
 	inc [hl]
 	ld a, [hl]
 	cp 5242880 / $10000
-	jr c, .daycare_lady
+	jr c, .day_care_lady
 	ld a, 5242880 / $10000
 	ld [hl], a
 
-.daycare_lady
-	ld a, [wDaycareLady]
+.day_care_lady
+	ld a, [wDayCareLady]
 	bit 0, a
 	jr z, .check_egg
 
 	ld a, [wBreedMon2Level] ; level
-	cp 100
+	cp MAX_LEVEL
 	jr nc, .check_egg
 	ld hl, wBreedMon2Exp + 2 ; exp
 	inc [hl]
@@ -204,7 +187,7 @@
 	ld [hl], a
 
 .check_egg
-	ld hl, wDaycareMan
+	ld hl, wDayCareMan
 	bit 5, [hl] ; egg
 	ret z
 	ld hl, wStepsToEgg
@@ -232,7 +215,7 @@
 	call Random
 	cp b
 	ret nc
-	ld hl, wDaycareMan
+	ld hl, wDayCareMan
 	res 5, [hl]
 	set 6, [hl]
 	ret
--- a/event/mom_phone.asm
+++ b/event/mom_phone.asm
@@ -80,11 +80,11 @@
 
 .check_have_2300
 	ld hl, hMoneyTemp
-	ld [hl], (2300 / $10000) ; $00
+	ld [hl], MOM_MONEY / $10000
 	inc hl
-	ld [hl], ((2300 % $10000) / $100) ; $08
+	ld [hl], MOM_MONEY / $100 % $100
 	inc hl
-	ld [hl], (2300 % $100) ; $fc
+	ld [hl], MOM_MONEY % $100
 .loop
 	ld de, MomItemTriggerBalance
 	ld bc, wMomsMoney
@@ -212,31 +212,7 @@
 	ret
 ; fd136
 
-momitem: macro
-; money to trigger, cost, kind, item
-	dt \1
-	dt \2
-	db \3, \4
-ENDM
-
-MomItems_1: ; fd136
-	momitem      0,   600, MOM_ITEM, SUPER_POTION
-	momitem      0,    90, MOM_ITEM, ANTIDOTE
-	momitem      0,   180, MOM_ITEM, POKE_BALL
-	momitem      0,   450, MOM_ITEM, ESCAPE_ROPE
-	momitem      0,   500, MOM_ITEM, GREAT_BALL
-MomItems_2: ; fd15e
-	momitem    900,   600, MOM_ITEM, SUPER_POTION
-	momitem   4000,   270, MOM_ITEM, REPEL
-	momitem   7000,   600, MOM_ITEM, SUPER_POTION
-	momitem  10000,  1800, MOM_DOLL, DECO_CHARMANDER_DOLL
-	momitem  15000,  3000, MOM_ITEM, MOON_STONE
-	momitem  19000,   600, MOM_ITEM, SUPER_POTION
-	momitem  30000,  4800, MOM_DOLL, DECO_CLEFAIRY_DOLL
-	momitem  40000,   900, MOM_ITEM, HYPER_POTION
-	momitem  50000,  8000, MOM_DOLL, DECO_PIKACHU_DOLL
-	momitem 100000, 22800, MOM_DOLL, DECO_BIG_SNORLAX_DOLL
-; fd1ae
+INCLUDE "data/mom_phone_items.asm"
 
 	db 0, 0, 0 ; XXX
 
--- a/event/overworld.asm
+++ b/event/overworld.asm
@@ -277,53 +277,9 @@
 	xor a
 	ret
 
-CutTreeBlockPointers: ; c862
-; Which tileset are we in?
-	dbw TILESET_JOHTO_1, .johto1
-	dbw TILESET_JOHTO_2, .johto2
-	dbw TILESET_KANTO, .kanto
-	dbw TILESET_PARK, .park
-	dbw TILESET_ILEX_FOREST, .ilex
-	db -1
 
-.johto1 ; Johto OW
-; Which meta tile are we facing, which should we replace it with, and which animation?
-	db $03, $02, $01 ; grass
-	db $5b, $3c, $00 ; tree
-	db $5f, $3d, $00 ; tree
-	db $63, $3f, $00 ; tree
-	db $67, $3e, $00 ; tree
-	db -1
+INCLUDE "data/field_move_blocks.asm"
 
-.johto2 ; Goldenrod area
-	db $03, $02, $01 ; grass
-	db -1
-
-.kanto ; Kanto OW
-	db $0b, $0a, $01 ; grass
-	db $32, $6d, $00 ; tree
-	db $33, $6c, $00 ; tree
-	db $34, $6f, $00 ; tree
-	db $35, $4c, $00 ; tree
-	db $60, $6e, $00 ; tree
-	db -1
-
-.park ; National Park
-	db $13, $03, $01 ; grass
-	db $03, $04, $01 ; grass
-	db -1
-
-.ilex ; Ilex Forest
-	db $0f, $17, $00
-	db -1
-
-WhirlpoolBlockPointers: ; c8a4
-	dbw TILESET_JOHTO_1, .johto
-	db -1
-
-.johto ; c8a8
-	db $07, $36, $00
-	db -1
 
 OWFlash: ; c8ac
 	call .CheckUseFlash
--- a/event/photo.asm
+++ b/event/photo.asm
@@ -214,9 +214,9 @@
 ; 16d9c
 
 UnownDexATile: ; 16d9c
-INCBIN "gfx/unknown/016d9c.1bpp"
+INCBIN "gfx/unknown/bold_a.1bpp"
 UnownDexBTile: ; 16da4
-INCBIN "gfx/unknown/016da4.1bpp"
+INCBIN "gfx/unknown/bold_b.1bpp"
 ; 16dac
 
 PlaceUnownPrinterFrontpic: ; 16dac
--- a/event/unown.asm
+++ b/event/unown.asm
@@ -61,10 +61,10 @@
 
 	call GetSecondaryMapHeaderPointer
 	ld a, h
-	cp RuinsofAlphAerodactylChamber_SecondMapHeader / $100
+	cp RuinsOfAlphAerodactylChamber_SecondMapHeader / $100
 	jr nz, .nope
 	ld a, l
-	cp RuinsofAlphAerodactylChamber_SecondMapHeader % $100
+	cp RuinsOfAlphAerodactylChamber_SecondMapHeader % $100
 	jr nz, .nope
 
 	ld de, EVENT_WALL_OPENED_IN_AERODACTYL_CHAMBER
@@ -89,10 +89,10 @@
 
 	call GetSecondaryMapHeaderPointer
 	ld a, h
-	cp RuinsofAlphKabutoChamber_SecondMapHeader / $100
+	cp RuinsOfAlphKabutoChamber_SecondMapHeader / $100
 	jr nz, .done
 	ld a, l
-	cp RuinsofAlphKabutoChamber_SecondMapHeader % $100
+	cp RuinsOfAlphKabutoChamber_SecondMapHeader % $100
 	jr nz, .done
 
 	ld de, EVENT_WALL_OPENED_IN_KABUTO_CHAMBER
@@ -222,7 +222,7 @@
 	cp $ff
 	ret z
 	cp $60
-	ld a, (1 << 3) | PAL_BG_BROWN
+	ld a, VRAM_BANK_1 | PAL_BG_BROWN
 	jr c, .got_pal
 	ld a, PAL_BG_BROWN
 
--- a/gbhw.asm
+++ b/gbhw.asm
@@ -36,9 +36,10 @@
 OAM_Y_FLIP    EQU 6
 OAM_PRIORITY  EQU 7 ; 0: OBJ above BG, 1: OBJ behind BG (colors 1-3)
 
-X_FLIP    EQU 1 << OAM_X_FLIP
-Y_FLIP    EQU 1 << OAM_Y_FLIP
-BEHIND_BG EQU 1 << OAM_PRIORITY
+VRAM_BANK_1 EQU 1 << OAM_TILE_BANK
+X_FLIP      EQU 1 << OAM_X_FLIP
+Y_FLIP      EQU 1 << OAM_Y_FLIP
+BEHIND_BG   EQU 1 << OAM_PRIORITY
 
 ; Hardware registers
 rJOYP       EQU $ff00 ; Joypad (R/W)
--- a/gfx/font.asm
+++ b/gfx/font.asm
@@ -59,7 +59,7 @@
 ; f8f34
 
 GFX_f8f34: ; unused bold letters + unown chars
-INCBIN "gfx/unknown/0f8f34.1bpp"
+INCBIN "gfx/unknown/bold_font.1bpp"
 ; f9204
 
 TextBoxSpaceGFX: ; f9204
@@ -165,13 +165,13 @@
 LoadFrame: ; fb4cc
 	ld a, [TextBoxFrame]
 	and 7
-	ld bc, TILES_PER_FRAME * LEN_1BPP_TILE
+	ld bc, LEN_1BPP_TILE * 6
 	ld hl, Frames
 	call AddNTimes
 	ld d, h
 	ld e, l
 	ld hl, VTiles2 tile "┌" ; $79
-	lb bc, BANK(Frames), TILES_PER_FRAME
+	lb bc, BANK(Frames), 6
 	call Get1bpp_2
 	ld hl, VTiles2 tile " " ; $7f
 	ld de, TextBoxSpaceGFX
--- /dev/null
+++ b/gfx/icon_pointers.asm
@@ -1,0 +1,41 @@
+IconPointers:
+; entries correspond to ICON_* constants
+	dw NullIcon
+	dw PoliwagIcon
+	dw JigglypuffIcon
+	dw DiglettIcon
+	dw PikachuIcon
+	dw StaryuIcon
+	dw FishIcon
+	dw BirdIcon
+	dw MonsterIcon
+	dw ClefairyIcon
+	dw OddishIcon
+	dw BugIcon
+	dw GhostIcon
+	dw LaprasIcon
+	dw HumanshapeIcon
+	dw FoxIcon
+	dw EquineIcon
+	dw ShellIcon
+	dw BlobIcon
+	dw SerpentIcon
+	dw VoltorbIcon
+	dw SquirtleIcon
+	dw BulbasaurIcon
+	dw CharmanderIcon
+	dw CaterpillarIcon
+	dw UnownIcon
+	dw GeodudeIcon
+	dw FighterIcon
+	dw EggIcon
+	dw JellyfishIcon
+	dw MothIcon
+	dw BatIcon
+	dw SnorlaxIcon
+	dw HoOhIcon
+	dw LugiaIcon
+	dw GyaradosIcon
+	dw SlowpokeIcon
+	dw SudowoodoIcon
+	dw BigmonIcon
--- /dev/null
+++ b/gfx/icons.asm
@@ -1,0 +1,39 @@
+NullIcon:
+PoliwagIcon:      INCBIN "gfx/icon/poliwag.2bpp" ; 0x8ec0d
+JigglypuffIcon:   INCBIN "gfx/icon/jigglypuff.2bpp" ; 0x8ec8d
+DiglettIcon:      INCBIN "gfx/icon/diglett.2bpp" ; 0x8ed0d
+PikachuIcon:      INCBIN "gfx/icon/pikachu.2bpp" ; 0x8ed8d
+StaryuIcon:       INCBIN "gfx/icon/staryu.2bpp" ; 0x8ee0d
+FishIcon:         INCBIN "gfx/icon/fish.2bpp" ; 0x8ee8d
+BirdIcon:         INCBIN "gfx/icon/bird.2bpp" ; 0x8ef0d
+MonsterIcon:      INCBIN "gfx/icon/monster.2bpp" ; 0x8ef8d
+ClefairyIcon:     INCBIN "gfx/icon/clefairy.2bpp" ; 0x8f00d
+OddishIcon:       INCBIN "gfx/icon/oddish.2bpp" ; 0x8f08d
+BugIcon:          INCBIN "gfx/icon/bug.2bpp" ; 0x8f10d
+GhostIcon:        INCBIN "gfx/icon/ghost.2bpp" ; 0x8f18d
+LaprasIcon:       INCBIN "gfx/icon/lapras.2bpp" ; 0x8f20d
+HumanshapeIcon:   INCBIN "gfx/icon/humanshape.2bpp" ; 0x8f28d
+FoxIcon:          INCBIN "gfx/icon/fox.2bpp" ; 0x8f30d
+EquineIcon:       INCBIN "gfx/icon/equine.2bpp" ; 0x8f38d
+ShellIcon:        INCBIN "gfx/icon/shell.2bpp" ; 0x8f40d
+BlobIcon:         INCBIN "gfx/icon/blob.2bpp" ; 0x8f48d
+SerpentIcon:      INCBIN "gfx/icon/serpent.2bpp" ; 0x8f50d
+VoltorbIcon:      INCBIN "gfx/icon/voltorb.2bpp" ; 0x8f58d
+SquirtleIcon:     INCBIN "gfx/icon/squirtle.2bpp" ; 0x8f60d
+BulbasaurIcon:    INCBIN "gfx/icon/bulbasaur.2bpp" ; 0x8f68d
+CharmanderIcon:   INCBIN "gfx/icon/charmander.2bpp" ; 0x8f70d
+CaterpillarIcon:  INCBIN "gfx/icon/caterpillar.2bpp" ; 0x8f78d
+UnownIcon:        INCBIN "gfx/icon/unown.2bpp" ; 0x8f80d
+GeodudeIcon:      INCBIN "gfx/icon/geodude.2bpp" ; 0x8f88d
+FighterIcon:      INCBIN "gfx/icon/fighter.2bpp" ; 0x8f90d
+EggIcon:          INCBIN "gfx/icon/egg.2bpp" ; 0x8f98d
+JellyfishIcon:    INCBIN "gfx/icon/jellyfish.2bpp" ; 0x8fa0d
+MothIcon:         INCBIN "gfx/icon/moth.2bpp" ; 0x8fa8d
+BatIcon:          INCBIN "gfx/icon/bat.2bpp" ; 0x8fb0d
+SnorlaxIcon:      INCBIN "gfx/icon/snorlax.2bpp" ; 0x8fb8d
+HoOhIcon:         INCBIN "gfx/icon/ho_oh.2bpp" ; 0x8fc0d
+LugiaIcon:        INCBIN "gfx/icon/lugia.2bpp" ; 0x8fc8d
+GyaradosIcon:     INCBIN "gfx/icon/gyarados.2bpp" ; 0x8fd0d
+SlowpokeIcon:     INCBIN "gfx/icon/slowpoke.2bpp" ; 0x8fd8d
+SudowoodoIcon:    INCBIN "gfx/icon/sudowoodo.2bpp" ; 0x8fe0d
+BigmonIcon:       INCBIN "gfx/icon/bigmon.2bpp" ; 0x8fe8d
binary files a/gfx/misc/gbc_only.2bpp.lz.4a5bba0e /dev/null differ
binary files a/gfx/misc/gbc_only.png /dev/null differ
binary files a/gfx/misc/mobile_adapter.png /dev/null differ
binary files a/gfx/misc/mystery_gift.png /dev/null differ
binary files a/gfx/misc/mystery_gift_jp.png /dev/null differ
binary files a/gfx/misc/sgb_border.png /dev/null differ
binary files a/gfx/misc/unknown_egg.2bpp.lz.a5b6cbfa /dev/null differ
binary files a/gfx/misc/unknown_egg.png /dev/null differ
binary files /dev/null b/gfx/mobile/mobile_adapter.png differ
binary files /dev/null b/gfx/mystery_gift/mystery_gift.png differ
binary files /dev/null b/gfx/mystery_gift/mystery_gift_jp.png differ
binary files a/gfx/overworld/000.png /dev/null differ
binary files a/gfx/overworld/001.png /dev/null differ
binary files a/gfx/overworld/002.png /dev/null differ
binary files a/gfx/overworld/003.png /dev/null differ
binary files a/gfx/overworld/004.png /dev/null differ
binary files a/gfx/overworld/005.png /dev/null differ
binary files a/gfx/overworld/006.png /dev/null differ
binary files a/gfx/overworld/007.png /dev/null differ
binary files a/gfx/overworld/008.png /dev/null differ
binary files a/gfx/overworld/009.png /dev/null differ
binary files a/gfx/overworld/010.png /dev/null differ
binary files a/gfx/overworld/011.png /dev/null differ
binary files a/gfx/overworld/012.png /dev/null differ
binary files a/gfx/overworld/013.png /dev/null differ
binary files a/gfx/overworld/014.png /dev/null differ
binary files a/gfx/overworld/015.png /dev/null differ
binary files a/gfx/overworld/016.png /dev/null differ
binary files a/gfx/overworld/017.png /dev/null differ
binary files a/gfx/overworld/018.png /dev/null differ
binary files a/gfx/overworld/019.png /dev/null differ
binary files a/gfx/overworld/020.png /dev/null differ
binary files a/gfx/overworld/021.png /dev/null differ
binary files a/gfx/overworld/022.png /dev/null differ
binary files a/gfx/overworld/023.png /dev/null differ
binary files a/gfx/overworld/024.png /dev/null differ
binary files a/gfx/overworld/025.png /dev/null differ
binary files a/gfx/overworld/026.png /dev/null differ
binary files a/gfx/overworld/027.png /dev/null differ
binary files a/gfx/overworld/028.png /dev/null differ
binary files a/gfx/overworld/029.png /dev/null differ
binary files a/gfx/overworld/030.png /dev/null differ
binary files a/gfx/overworld/031.png /dev/null differ
binary files a/gfx/overworld/032.png /dev/null differ
binary files a/gfx/overworld/033.png /dev/null differ
binary files a/gfx/overworld/034.png /dev/null differ
binary files a/gfx/overworld/035.png /dev/null differ
binary files a/gfx/overworld/036.png /dev/null differ
binary files a/gfx/overworld/037.png /dev/null differ
binary files a/gfx/overworld/038.png /dev/null differ
binary files a/gfx/overworld/039.png /dev/null differ
binary files a/gfx/overworld/040.png /dev/null differ
binary files a/gfx/overworld/041.png /dev/null differ
binary files a/gfx/overworld/042.png /dev/null differ
binary files a/gfx/overworld/043.png /dev/null differ
binary files a/gfx/overworld/044.png /dev/null differ
binary files a/gfx/overworld/045.png /dev/null differ
binary files a/gfx/overworld/046.png /dev/null differ
binary files a/gfx/overworld/047.png /dev/null differ
binary files a/gfx/overworld/048.png /dev/null differ
binary files a/gfx/overworld/049.png /dev/null differ
binary files a/gfx/overworld/050.png /dev/null differ
binary files a/gfx/overworld/051.png /dev/null differ
binary files a/gfx/overworld/052.png /dev/null differ
binary files a/gfx/overworld/053.png /dev/null differ
binary files a/gfx/overworld/054.png /dev/null differ
binary files a/gfx/overworld/055.png /dev/null differ
binary files a/gfx/overworld/056.png /dev/null differ
binary files a/gfx/overworld/057.png /dev/null differ
binary files a/gfx/overworld/058.png /dev/null differ
binary files a/gfx/overworld/059.png /dev/null differ
binary files a/gfx/overworld/060.png /dev/null differ
binary files a/gfx/overworld/061.png /dev/null differ
binary files a/gfx/overworld/062.png /dev/null differ
binary files a/gfx/overworld/063.png /dev/null differ
binary files a/gfx/overworld/064.png /dev/null differ
binary files a/gfx/overworld/065.png /dev/null differ
binary files a/gfx/overworld/066.png /dev/null differ
binary files a/gfx/overworld/067.png /dev/null differ
binary files a/gfx/overworld/068.png /dev/null differ
binary files a/gfx/overworld/069.png /dev/null differ
binary files a/gfx/overworld/070.png /dev/null differ
binary files a/gfx/overworld/071.png /dev/null differ
binary files a/gfx/overworld/072.png /dev/null differ
binary files a/gfx/overworld/073.png /dev/null differ
binary files a/gfx/overworld/074.png /dev/null differ
binary files a/gfx/overworld/075.png /dev/null differ
binary files a/gfx/overworld/076.png /dev/null differ
binary files a/gfx/overworld/077.png /dev/null differ
binary files a/gfx/overworld/078.png /dev/null differ
binary files a/gfx/overworld/079.png /dev/null differ
binary files a/gfx/overworld/080.png /dev/null differ
binary files a/gfx/overworld/081.png /dev/null differ
binary files a/gfx/overworld/082.png /dev/null differ
binary files a/gfx/overworld/083.png /dev/null differ
binary files a/gfx/overworld/084.png /dev/null differ
binary files a/gfx/overworld/085.png /dev/null differ
binary files a/gfx/overworld/086.png /dev/null differ
binary files a/gfx/overworld/087.png /dev/null differ
binary files a/gfx/overworld/088.png /dev/null differ
binary files a/gfx/overworld/089.png /dev/null differ
binary files a/gfx/overworld/090.png /dev/null differ
binary files a/gfx/overworld/091.png /dev/null differ
binary files a/gfx/overworld/092.png /dev/null differ
binary files a/gfx/overworld/093.png /dev/null differ
binary files a/gfx/overworld/094.png /dev/null differ
binary files a/gfx/overworld/095.png /dev/null differ
binary files a/gfx/overworld/096.png /dev/null differ
binary files a/gfx/overworld/097.png /dev/null differ
binary files a/gfx/overworld/098.png /dev/null differ
binary files a/gfx/overworld/099.png /dev/null differ
binary files a/gfx/overworld/100.png /dev/null differ
binary files a/gfx/overworld/101.png /dev/null differ
binary files /dev/null b/gfx/overworld/boulder_dust.png differ
binary files /dev/null b/gfx/overworld/chris_fish.png differ
binary files /dev/null b/gfx/overworld/cut_grass.png differ
binary files /dev/null b/gfx/overworld/cut_tree.png differ
binary files /dev/null b/gfx/overworld/fishing_rod.png differ
binary files /dev/null b/gfx/overworld/grass_rustle.png differ
binary files /dev/null b/gfx/overworld/headbutt_tree.png differ
binary files /dev/null b/gfx/overworld/heal_machine.png differ
binary files /dev/null b/gfx/overworld/kris_fish.png differ
binary files /dev/null b/gfx/overworld/shadow.png differ
--- a/gfx/overworld/sprite_headers.asm
+++ /dev/null
@@ -1,419 +1,0 @@
-; Format:
-;	Address
-;	Length, Bank
-;	Type, Palette
-
-sprite_header: MACRO
-; pointer, length, type, palette
-	dw \1
-	db \2 * 4 tiles, BANK(\1)
-	db \3, \4
-ENDM
-
-ChrisSprite: ; 14736
-	sprite_header ChrisSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 1473c
-
-ChrisBikeSprite: ; 1473c
-	sprite_header ChrisBikeSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 14742
-
-GameboyKidSprite: ; 14742
-	sprite_header GameboyKidSpriteGFX, 3, STANDING_SPRITE, PAL_OW_GREEN
-; 14748
-
-SilverSprite: ; 14748
-	sprite_header SilverSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 1474e
-
-OakSprite: ; 1474e
-	sprite_header OakSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-; 14754
-
-RedSprite: ; 14754
-	sprite_header RedSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 1475a
-
-BlueSprite: ; 1475a
-	sprite_header BlueSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 14760
-
-BillSprite: ; 14760
-	sprite_header BillSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 14766
-
-ElderSprite: ; 14766
-	sprite_header ElderSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-; 1476c
-
-JanineSprite: ; 1476c
-	sprite_header JanineSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 14772
-
-KurtSprite: ; 14772
-	sprite_header KurtSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-; 14778
-
-MomSprite: ; 14778
-	sprite_header MomSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 1477e
-
-BlaineSprite: ; 1477e
-	sprite_header BlaineSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-; 14784
-
-RedsMomSprite: ; 14784
-	sprite_header RedsMomSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 1478a
-
-DaisySprite: ; 1478a
-	sprite_header DaisySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-; 14790
-
-ElmSprite: ; 14790
-	sprite_header ElmSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-; 14796
-
-WillSprite: ; 14796
-	sprite_header WillSpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
-; 1479c
-
-FalknerSprite: ; 1479c
-	sprite_header FalknerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-; 147a2
-
-WhitneySprite: ; 147a2
-	sprite_header WhitneySpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 147a8
-
-BugsySprite: ; 147a8
-	sprite_header BugsySpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
-; 147ae
-
-MortySprite: ; 147ae
-	sprite_header MortySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-; 147b4
-
-ChuckSprite: ; 147b4
-	sprite_header ChuckSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 147ba
-
-JasmineSprite: ; 147ba
-	sprite_header JasmineSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
-; 147c0
-
-PryceSprite: ; 147c0
-	sprite_header PryceSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-; 147c6
-
-ClairSprite: ; 147c6
-	sprite_header ClairSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 147cc
-
-BrockSprite: ; 147cc
-	sprite_header BrockSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-; 147d2
-
-KarenSprite: ; 147d2
-	sprite_header KarenSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
-; 147d8
-
-BrunoSprite: ; 147d8
-	sprite_header BrunoSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 147de
-
-MistySprite: ; 147de
-	sprite_header MistySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-; 147e4
-
-LanceSprite: ; 147e4
-	sprite_header LanceSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 147ea
-
-SurgeSprite: ; 147ea
-	sprite_header SurgeSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
-; 147f0
-
-ErikaSprite: ; 147f0
-	sprite_header ErikaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
-; 147f6
-
-KogaSprite: ; 147f6
-	sprite_header KogaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-; 147fc
-
-SabrinaSprite: ; 147fc
-	sprite_header SabrinaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 14802
-
-CooltrainerMSprite: ; 14802
-	sprite_header CooltrainerMSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-; 14808
-
-CooltrainerFSprite: ; 14808
-	sprite_header CooltrainerFSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-; 1480e
-
-BugCatcherSprite: ; 1480e
-	sprite_header BugCatcherSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-; 14814
-
-TwinSprite: ; 14814
-	sprite_header TwinSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 1481a
-
-YoungsterSprite: ; 1481a
-	sprite_header YoungsterSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-; 14820
-
-LassSprite: ; 14820
-	sprite_header LassSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 14826
-
-TeacherSprite: ; 14826
-	sprite_header TeacherSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 1482c
-
-BuenaSprite: ; 1482c
-	sprite_header BuenaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-; 14832
-
-SuperNerdSprite: ; 14832
-	sprite_header SuperNerdSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-; 14838
-
-RockerSprite: ; 14838
-	sprite_header RockerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
-; 1483e
-
-PokefanMSprite: ; 1483e
-	sprite_header PokefanMSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-; 14844
-
-PokefanFSprite: ; 14844
-	sprite_header PokefanFSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-; 1484a
-
-GrampsSprite: ; 1484a
-	sprite_header GrampsSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-; 14850
-
-GrannySprite: ; 14850
-	sprite_header GrannySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-; 14856
-
-SwimmerGuySprite: ; 14856
-	sprite_header SwimmerGuySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-; 1485c
-
-SwimmerGirlSprite: ; 1485c
-	sprite_header SwimmerGirlSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-; 14862
-
-BigSnorlaxSprite: ; 14862
-	sprite_header BigSnorlaxSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
-; 14868
-
-SurfingPikachuSprite: ; 14868
-	sprite_header SurfingPikachuSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 1486e
-
-RocketSprite: ; 1486e
-	sprite_header RocketSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-; 14874
-
-RocketGirlSprite: ; 14874
-	sprite_header RocketGirlSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-; 1487a
-
-NurseSprite: ; 1487a
-	sprite_header NurseSpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
-; 14880
-
-LinkReceptionistSprite: ; 14880
-	sprite_header LinkReceptionistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 14886
-
-ClerkSprite: ; 14886
-	sprite_header ClerkSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
-; 1488c
-
-FisherSprite: ; 1488c
-	sprite_header FisherSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-; 14892
-
-FishingGuruSprite: ; 14892
-	sprite_header FishingGuruSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-; 14898
-
-ScientistSprite: ; 14898
-	sprite_header ScientistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-; 1489e
-
-KimonoGirlSprite: ; 1489e
-	sprite_header KimonoGirlSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 148a4
-
-SageSprite: ; 148a4
-	sprite_header SageSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-; 148aa
-
-UnusedGuySprite: ; 148aa
-	sprite_header UnusedGuySpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
-; 148b0
-
-GentlemanSprite: ; 148b0
-	sprite_header GentlemanSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-; 148b6
-
-BlackBeltSprite: ; 148b6
-	sprite_header BlackBeltSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-; 148bc
-
-ReceptionistSprite: ; 148bc
-	sprite_header ReceptionistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-; 148c2
-
-OfficerSprite: ; 148c2
-	sprite_header OfficerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-; 148c8
-
-CalSprite: ; 148c8
-	sprite_header CalSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-; 148ce
-
-SlowpokeSprite: ; 148ce
-	sprite_header SlowpokeSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
-; 148d4
-
-CaptainSprite: ; 148d4
-	sprite_header CaptainSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-; 148da
-
-BigLaprasSprite: ; 148da
-	sprite_header BigLaprasSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
-; 148e0
-
-GymGuySprite: ; 148e0
-	sprite_header GymGuySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-; 148e6
-
-SailorSprite: ; 148e6
-	sprite_header SailorSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-; 148ec
-
-BikerSprite: ; 148ec
-	sprite_header BikerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-; 148f2
-
-PharmacistSprite: ; 148f2
-	sprite_header PharmacistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-; 148f8
-
-MonsterSprite: ; 148f8
-	sprite_header MonsterSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 148fe
-
-FairySprite: ; 148fe
-	sprite_header FairySpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 14904
-
-BirdSprite: ; 14904
-	sprite_header BirdSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 1490a
-
-DragonSprite: ; 1490a
-	sprite_header DragonSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-; 14910
-
-BigOnixSprite: ; 14910
-	sprite_header BigOnixSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BROWN
-; 14916
-
-N64Sprite: ; 14916
-	sprite_header N64SpriteGFX, 1, STILL_SPRITE, PAL_OW_BROWN
-; 1491c
-
-SudowoodoSprite: ; 1491c
-	sprite_header SudowoodoSpriteGFX, 3, STANDING_SPRITE, PAL_OW_GREEN
-; 14922
-
-SurfSprite: ; 14922
-	sprite_header SurfSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-; 14928
-
-PokeBallSprite: ; 14928
-	sprite_header PokeBallSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
-; 1492e
-
-PokedexSprite: ; 1492e
-	sprite_header PokedexSpriteGFX, 1, STILL_SPRITE, PAL_OW_BROWN
-; 14934
-
-PaperSprite: ; 14934
-	sprite_header PaperSpriteGFX, 1, STILL_SPRITE, PAL_OW_BLUE
-; 1493a
-
-VirtualBoySprite: ; 1493a
-	sprite_header VirtualBoySpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
-; 14940
-
-OldLinkReceptionistSprite: ; 14940
-	sprite_header OldLinkReceptionistSpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
-; 14946
-
-RockSprite: ; 14946
-	sprite_header RockSpriteGFX, 1, STILL_SPRITE, PAL_OW_ROCK
-; 1494c
-
-BoulderSprite: ; 1494c
-	sprite_header BoulderSpriteGFX, 1, STILL_SPRITE, PAL_OW_ROCK
-; 14952
-
-SnesSprite: ; 14952
-	sprite_header SnesSpriteGFX, 1, STILL_SPRITE, PAL_OW_BLUE
-; 14958
-
-FamicomSprite: ; 14958
-	sprite_header FamicomSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
-; 1495e
-
-FruitTreeSprite: ; 1495e
-	sprite_header FruitTreeSpriteGFX, 1, STILL_SPRITE, PAL_OW_TREE
-; 14964
-
-GoldTrophySprite: ; 14964
-	sprite_header GoldTrophySpriteGFX, 1, STILL_SPRITE, PAL_OW_BROWN
-; 1496a
-
-SilverTrophySprite: ; 1496a
-	sprite_header SilverTrophySpriteGFX, 1, STILL_SPRITE, PAL_OW_SILVER
-; 14970
-
-KrisSprite: ; 14970
-	sprite_header KrisSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-; 14976
-
-KrisBikeSprite: ; 14976
-	sprite_header KrisBikeSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-; 1497c
-
-KurtOutsideSprite: ; 1497c
-	sprite_header KurtOutsideSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BROWN
-; 14982
-
-SuicuneSprite: ; 14982
-	sprite_header SuicuneSpriteGFX, 1, STILL_SPRITE, PAL_OW_BLUE
-; 14988
-
-EnteiSprite: ; 14988
-	sprite_header EnteiSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
-; 1498e
-
-RaikouSprite: ; 1498e
-	sprite_header RaikouSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
-; 14994
-
-StandingYoungsterSprite: ; 14994
-	sprite_header StandingYoungsterSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
-; 1499a
--- a/gfx/overworld/sprites_1.asm
+++ /dev/null
@@ -1,44 +1,0 @@
-ChrisSpriteGFX:        INCBIN "gfx/overworld/000.2bpp" ; c0000
-ChrisBikeSpriteGFX:    INCBIN "gfx/overworld/001.2bpp" ; c0180
-GameboyKidSpriteGFX:   INCBIN "gfx/overworld/002.2bpp" ; c0300
-SilverSpriteGFX:       INCBIN "gfx/overworld/003.2bpp" ; c03c0
-OakSpriteGFX:          INCBIN "gfx/overworld/004.2bpp" ; c0540
-RedSpriteGFX:          INCBIN "gfx/overworld/005.2bpp" ; c06c0
-BlueSpriteGFX:         INCBIN "gfx/overworld/006.2bpp" ; c0840
-BillSpriteGFX:         INCBIN "gfx/overworld/007.2bpp" ; c09c0
-ElderSpriteGFX:        INCBIN "gfx/overworld/008.2bpp" ; c0b40
-JanineSpriteGFX:       INCBIN "gfx/overworld/009.2bpp" ; c0cc0
-KurtSpriteGFX:         INCBIN "gfx/overworld/010.2bpp" ; c0e40
-MomSpriteGFX:          INCBIN "gfx/overworld/011.2bpp" ; c0fc0
-BlaineSpriteGFX:       INCBIN "gfx/overworld/012.2bpp" ; c1140
-RedsMomSpriteGFX:      INCBIN "gfx/overworld/013.2bpp" ; c12c0
-DaisySpriteGFX:        INCBIN "gfx/overworld/014.2bpp" ; c1440
-ElmSpriteGFX:          INCBIN "gfx/overworld/015.2bpp" ; c15c0
-WillSpriteGFX:         INCBIN "gfx/overworld/016.2bpp" ; c1740
-FalknerSpriteGFX:      INCBIN "gfx/overworld/017.2bpp" ; c1800
-WhitneySpriteGFX:      INCBIN "gfx/overworld/018.2bpp" ; c1980
-BugsySpriteGFX:        INCBIN "gfx/overworld/019.2bpp" ; c1b00
-MortySpriteGFX:        INCBIN "gfx/overworld/020.2bpp" ; c1c80
-ChuckSpriteGFX:        INCBIN "gfx/overworld/021.2bpp" ; c1e00
-JasmineSpriteGFX:      INCBIN "gfx/overworld/022.2bpp" ; c1f80
-PryceSpriteGFX:        INCBIN "gfx/overworld/023.2bpp" ; c2100
-ClairSpriteGFX:        INCBIN "gfx/overworld/024.2bpp" ; c2280
-BrockSpriteGFX:        INCBIN "gfx/overworld/025.2bpp" ; c2400
-KarenSpriteGFX:        INCBIN "gfx/overworld/026.2bpp" ; c2580
-BrunoSpriteGFX:        INCBIN "gfx/overworld/027.2bpp" ; c2640
-MistySpriteGFX:        INCBIN "gfx/overworld/028.2bpp" ; c27c0
-LanceSpriteGFX:        INCBIN "gfx/overworld/029.2bpp" ; c2940
-SurgeSpriteGFX:        INCBIN "gfx/overworld/030.2bpp" ; c2ac0
-ErikaSpriteGFX:        INCBIN "gfx/overworld/031.2bpp" ; c2c40
-KogaSpriteGFX:         INCBIN "gfx/overworld/032.2bpp" ; c2dc0
-SabrinaSpriteGFX:      INCBIN "gfx/overworld/033.2bpp" ; c2f40
-CooltrainerMSpriteGFX: INCBIN "gfx/overworld/034.2bpp" ; c30c0
-CooltrainerFSpriteGFX: INCBIN "gfx/overworld/035.2bpp" ; c3240
-BugCatcherSpriteGFX:   INCBIN "gfx/overworld/036.2bpp" ; c33c0
-TwinSpriteGFX:         INCBIN "gfx/overworld/037.2bpp" ; c3540
-YoungsterSpriteGFX:    INCBIN "gfx/overworld/038.2bpp" ; c36c0
-LassSpriteGFX:         INCBIN "gfx/overworld/039.2bpp" ; c3840
-TeacherSpriteGFX:      INCBIN "gfx/overworld/040.2bpp" ; c39c0
-BuenaSpriteGFX:        INCBIN "gfx/overworld/041.2bpp" ; c3b40
-SuperNerdSpriteGFX:    INCBIN "gfx/overworld/042.2bpp" ; c3cc0
-RockerSpriteGFX:       INCBIN "gfx/overworld/043.2bpp" ; c3e40
--- a/gfx/overworld/sprites_2.asm
+++ /dev/null
@@ -1,58 +1,0 @@
-PokefanMSpriteGFX:            INCBIN "gfx/overworld/044.2bpp" ; c4000
-PokefanFSpriteGFX:            INCBIN "gfx/overworld/045.2bpp" ; c4180
-GrampsSpriteGFX:              INCBIN "gfx/overworld/046.2bpp" ; c4300
-GrannySpriteGFX:              INCBIN "gfx/overworld/047.2bpp" ; c4480
-SwimmerGuySpriteGFX:          INCBIN "gfx/overworld/048.2bpp" ; c4600
-SwimmerGirlSpriteGFX:         INCBIN "gfx/overworld/049.2bpp" ; c4780
-BigSnorlaxSpriteGFX:          INCBIN "gfx/overworld/050.2bpp" ; c4900
-SurfingPikachuSpriteGFX:      INCBIN "gfx/overworld/051.2bpp" ; c4980
-RocketSpriteGFX:              INCBIN "gfx/overworld/052.2bpp" ; c4b00
-RocketGirlSpriteGFX:          INCBIN "gfx/overworld/053.2bpp" ; c4c80
-NurseSpriteGFX:               INCBIN "gfx/overworld/054.2bpp" ; c4e00
-LinkReceptionistSpriteGFX:    INCBIN "gfx/overworld/055.2bpp" ; c4ec0
-ClerkSpriteGFX:               INCBIN "gfx/overworld/056.2bpp" ; c5040
-FisherSpriteGFX:              INCBIN "gfx/overworld/057.2bpp" ; c51c0
-FishingGuruSpriteGFX:         INCBIN "gfx/overworld/058.2bpp" ; c5340
-ScientistSpriteGFX:           INCBIN "gfx/overworld/059.2bpp" ; c54c0
-KimonoGirlSpriteGFX:          INCBIN "gfx/overworld/060.2bpp" ; c5640
-SageSpriteGFX:                INCBIN "gfx/overworld/061.2bpp" ; c57c0
-UnusedGuySpriteGFX:           INCBIN "gfx/overworld/062.2bpp" ; c5940
-GentlemanSpriteGFX:           INCBIN "gfx/overworld/063.2bpp" ; c5ac0
-BlackBeltSpriteGFX:           INCBIN "gfx/overworld/064.2bpp" ; c5c40
-ReceptionistSpriteGFX:        INCBIN "gfx/overworld/065.2bpp" ; c5dc0
-OfficerSpriteGFX:             INCBIN "gfx/overworld/066.2bpp" ; c5f40
-CalSpriteGFX:                 INCBIN "gfx/overworld/067.2bpp" ; c60c0
-SlowpokeSpriteGFX:            INCBIN "gfx/overworld/068.2bpp" ; c6240
-CaptainSpriteGFX:             INCBIN "gfx/overworld/069.2bpp" ; c6280
-BigLaprasSpriteGFX:           INCBIN "gfx/overworld/070.2bpp" ; c6400
-GymGuySpriteGFX:              INCBIN "gfx/overworld/071.2bpp" ; c6480
-SailorSpriteGFX:              INCBIN "gfx/overworld/072.2bpp" ; c6600
-BikerSpriteGFX:               INCBIN "gfx/overworld/073.2bpp" ; c6780
-PharmacistSpriteGFX:          INCBIN "gfx/overworld/074.2bpp" ; c6900
-MonsterSpriteGFX:             INCBIN "gfx/overworld/075.2bpp" ; c6a80
-FairySpriteGFX:               INCBIN "gfx/overworld/076.2bpp" ; c6c00
-BirdSpriteGFX:                INCBIN "gfx/overworld/077.2bpp" ; c6d80
-DragonSpriteGFX:              INCBIN "gfx/overworld/078.2bpp" ; c6f00
-BigOnixSpriteGFX:             INCBIN "gfx/overworld/079.2bpp" ; c7080
-N64SpriteGFX:                 INCBIN "gfx/overworld/080.2bpp" ; c7140
-SudowoodoSpriteGFX:           INCBIN "gfx/overworld/081.2bpp" ; c7180
-SurfSpriteGFX:                INCBIN "gfx/overworld/082.2bpp" ; c7200
-PokeBallSpriteGFX:            INCBIN "gfx/overworld/083.2bpp" ; c7380
-PokedexSpriteGFX:             INCBIN "gfx/overworld/084.2bpp" ; c7500
-PaperSpriteGFX:               INCBIN "gfx/overworld/085.2bpp" ; c7680
-VirtualBoySpriteGFX:          INCBIN "gfx/overworld/086.2bpp" ; c7800
-OldLinkReceptionistSpriteGFX: INCBIN "gfx/overworld/087.2bpp" ; c7840
-RockSpriteGFX:                INCBIN "gfx/overworld/088.2bpp" ; c7880
-BoulderSpriteGFX:             INCBIN "gfx/overworld/089.2bpp" ; c78c0
-SnesSpriteGFX:                INCBIN "gfx/overworld/090.2bpp" ; c7900
-FamicomSpriteGFX:             INCBIN "gfx/overworld/091.2bpp" ; c7940
-FruitTreeSpriteGFX:           INCBIN "gfx/overworld/092.2bpp" ; c7980
-GoldTrophySpriteGFX:          INCBIN "gfx/overworld/093.2bpp" ; c79c0
-SilverTrophySpriteGFX:        INCBIN "gfx/overworld/094.2bpp" ; c7a00
-KrisSpriteGFX:                INCBIN "gfx/overworld/095.2bpp" ; c7a40
-KrisBikeSpriteGFX:            INCBIN "gfx/overworld/096.2bpp" ; c7bc0
-KurtOutsideSpriteGFX:         INCBIN "gfx/overworld/097.2bpp" ; c7d40
-SuicuneSpriteGFX:             INCBIN "gfx/overworld/098.2bpp" ; c7e00
-EnteiSpriteGFX:               INCBIN "gfx/overworld/099.2bpp" ; c7e40
-RaikouSpriteGFX:              INCBIN "gfx/overworld/100.2bpp" ; c7e80
-StandingYoungsterSpriteGFX:   INCBIN "gfx/overworld/101.2bpp" ; c7ec0
binary files /dev/null b/gfx/overworld/trainer_battle_pokeball_tiles.png differ
binary files a/gfx/ow_fx/boulder_dust.png /dev/null differ
binary files a/gfx/ow_fx/chris_fish.png /dev/null differ
binary files a/gfx/ow_fx/cut_grass.png /dev/null differ
binary files a/gfx/ow_fx/cut_tree.png /dev/null differ
binary files a/gfx/ow_fx/fishing_rod.png /dev/null differ
binary files a/gfx/ow_fx/grass_rustle.png /dev/null differ
binary files a/gfx/ow_fx/headbutt_tree.png /dev/null differ
binary files a/gfx/ow_fx/heal_machine.png /dev/null differ
binary files a/gfx/ow_fx/kris_fish.png /dev/null differ
binary files a/gfx/ow_fx/shadow.png /dev/null differ
binary files a/gfx/ow_fx/trainer_battle_pokeball_tiles.png /dev/null differ
--- a/gfx/pics.asm
+++ b/gfx/pics.asm
@@ -1,18 +1,22 @@
 INCLUDE "includes.asm"
 
 
-; Unown pic pointers are assumed to start at the same address in a different bank.
+; PicPointers and UnownPicPointers are assumed to start at the same address,
+; but in different banks. This is enforced in pokecrystal.link.
 
 SECTION "Pic Pointers", ROMX
-PicPointers:: INCLUDE "gfx/pics/pic_pointers.asm"
 
+INCLUDE "gfx/pics/pic_pointers.asm"
+
+
 SECTION "Unown Pic Pointers", ROMX
-UnownPicPointers:: INCLUDE "gfx/pics/unown_pic_pointers.asm"
 
+INCLUDE "gfx/pics/unown_pic_pointers.asm"
 
+
 SECTION "Trainer Pic Pointers", ROMX
-TrainerPicPointers:: INCLUDE "gfx/pics/trainer_pic_pointers.asm"
 
+INCLUDE "gfx/trainer_pic_pointers.asm"
 
 
 SECTION "Pics 1", ROMX
--- a/gfx/pics/pic_pointers.asm
+++ b/gfx/pics/pic_pointers.asm
@@ -1,4 +1,5 @@
-
+PicPointers::
+; entries correspond to constants/pokemon_constants.asm, two apiece
 	add_pic BulbasaurFrontpic
 	add_pic BulbasaurBackpic
 	add_pic IvysaurFrontpic
--- a/gfx/pics/trainer_pic_pointers.asm
+++ /dev/null
@@ -1,68 +1,0 @@
-
-	add_pic FalknerPic
-	add_pic WhitneyPic
-	add_pic BugsyPic
-	add_pic MortyPic
-	add_pic PrycePic
-	add_pic JasminePic
-	add_pic ChuckPic
-	add_pic ClairPic
-	add_pic Rival1Pic
-	add_pic PokemonProfPic
-	add_pic WillPic
-	add_pic CalPic
-	add_pic BrunoPic
-	add_pic KarenPic
-	add_pic KogaPic
-	add_pic ChampionPic
-	add_pic BrockPic
-	add_pic MistyPic
-	add_pic LtSurgePic
-	add_pic ScientistPic
-	add_pic ErikaPic
-	add_pic YoungsterPic
-	add_pic SchoolboyPic
-	add_pic BirdKeeperPic
-	add_pic LassPic
-	add_pic JaninePic
-	add_pic CooltrainermPic
-	add_pic CooltrainerfPic
-	add_pic BeautyPic
-	add_pic PokemaniacPic
-	add_pic GruntmPic
-	add_pic GentlemanPic
-	add_pic SkierPic
-	add_pic TeacherPic
-	add_pic SabrinaPic
-	add_pic BugCatcherPic
-	add_pic FisherPic
-	add_pic SwimmermPic
-	add_pic SwimmerfPic
-	add_pic SailorPic
-	add_pic SuperNerdPic
-	add_pic Rival2Pic
-	add_pic GuitaristPic
-	add_pic HikerPic
-	add_pic BikerPic
-	add_pic BlainePic
-	add_pic BurglarPic
-	add_pic FirebreatherPic
-	add_pic JugglerPic
-	add_pic BlackbeltTPic
-	add_pic ExecutivemPic
-	add_pic PsychicTPic
-	add_pic PicnickerPic
-	add_pic CamperPic
-	add_pic ExecutivefPic
-	add_pic SagePic
-	add_pic MediumPic
-	add_pic BoarderPic
-	add_pic PokefanmPic
-	add_pic KimonoGirlPic
-	add_pic TwinsPic
-	add_pic PokefanfPic
-	add_pic RedPic
-	add_pic BluePic
-	add_pic OfficerPic
-	add_pic GruntfPic
-	add_pic MysticalmanPic
--- a/gfx/pics/unown_pic_pointers.asm
+++ b/gfx/pics/unown_pic_pointers.asm
@@ -1,4 +1,5 @@
-
+UnownPicPointers::
+; entries correspond to Unown letters, two apiece
 	add_pic UnownAFrontpic
 	add_pic UnownABackpic
 	add_pic UnownBFrontpic
binary files /dev/null b/gfx/sgb/gbc_only.2bpp.lz.4a5bba0e differ
binary files /dev/null b/gfx/sgb/gbc_only.png differ
binary files /dev/null b/gfx/sgb/sgb_border.png differ
--- /dev/null
+++ b/gfx/sprite_headers.asm
@@ -1,0 +1,111 @@
+sprite_header: MACRO
+; pointer, length, type, palette
+	dw \1
+	db \2 * 4 tiles, BANK(\1)
+	db \3, \4
+ENDM
+
+SpriteHeaders: ; 14736
+; entries correspond to SPRITE_* constants
+	sprite_header ChrisSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 1473c
+	sprite_header ChrisBikeSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 14742
+	sprite_header GameboyKidSpriteGFX, 3, STANDING_SPRITE, PAL_OW_GREEN ; 14748
+	sprite_header SilverSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 1474e
+	sprite_header OakSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN ; 14754
+	sprite_header RedSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 1475a
+	sprite_header BlueSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 14760
+	sprite_header BillSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 14766
+	sprite_header ElderSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN ; 1476c
+	sprite_header JanineSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 14772
+	sprite_header KurtSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN ; 14778
+	sprite_header MomSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 1477e
+	sprite_header BlaineSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN ; 14784
+	sprite_header RedsMomSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 1478a
+	sprite_header DaisySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE ; 14790
+	sprite_header ElmSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN ; 14796
+	sprite_header WillSpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED ; 1479c
+	sprite_header FalknerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE ; 147a2
+	sprite_header WhitneySpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 147a8
+	sprite_header BugsySpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN ; 147ae
+	sprite_header MortySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN ; 147b4
+	sprite_header ChuckSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 147ba
+	sprite_header JasmineSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN ; 147c0
+	sprite_header PryceSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN ; 147c6
+	sprite_header ClairSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 147cc
+	sprite_header BrockSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN ; 147d2
+	sprite_header KarenSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE ; 147d8
+	sprite_header BrunoSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 147de
+	sprite_header MistySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE ; 147e4
+	sprite_header LanceSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 147ea
+	sprite_header SurgeSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN ; 147f0
+	sprite_header ErikaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN ; 147f6
+	sprite_header KogaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN ; 147fc
+	sprite_header SabrinaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 14802
+	sprite_header CooltrainerMSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE ; 14808
+	sprite_header CooltrainerFSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE ; 1480e
+	sprite_header BugCatcherSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE ; 14814
+	sprite_header TwinSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 1481a
+	sprite_header YoungsterSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE ; 14820
+	sprite_header LassSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 14826
+	sprite_header TeacherSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 1482c
+	sprite_header BuenaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE ; 14832
+	sprite_header SuperNerdSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE ; 14838
+	sprite_header RockerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN ; 1483e
+	sprite_header PokefanMSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN ; 14844
+	sprite_header PokefanFSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN ; 1484a
+	sprite_header GrampsSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN ; 14850
+	sprite_header GrannySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN ; 14856
+	sprite_header SwimmerGuySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE ; 1485c
+	sprite_header SwimmerGirlSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE ; 14862
+	sprite_header BigSnorlaxSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE ; 14868
+	sprite_header SurfingPikachuSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 1486e
+	sprite_header RocketSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN ; 14874
+	sprite_header RocketGirlSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN ; 1487a
+	sprite_header NurseSpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED ; 14880
+	sprite_header LinkReceptionistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 14886
+	sprite_header ClerkSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN ; 1488c
+	sprite_header FisherSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE ; 14892
+	sprite_header FishingGuruSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE ; 14898
+	sprite_header ScientistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE ; 1489e
+	sprite_header KimonoGirlSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 148a4
+	sprite_header SageSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN ; 148aa
+	sprite_header UnusedGuySpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED ; 148b0
+	sprite_header GentlemanSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE ; 148b6
+	sprite_header BlackBeltSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN ; 148bc
+	sprite_header ReceptionistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE ; 148c2
+	sprite_header OfficerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE ; 148c8
+	sprite_header CalSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN ; 148ce
+	sprite_header SlowpokeSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED ; 148d4
+	sprite_header CaptainSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN ; 148da
+	sprite_header BigLaprasSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE ; 148e0
+	sprite_header GymGuySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE ; 148e6
+	sprite_header SailorSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE ; 148ec
+	sprite_header BikerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN ; 148f2
+	sprite_header PharmacistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE ; 148f8
+	sprite_header MonsterSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 148fe
+	sprite_header FairySpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 14904
+	sprite_header BirdSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 1490a
+	sprite_header DragonSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED ; 14910
+	sprite_header BigOnixSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BROWN ; 14916
+	sprite_header N64SpriteGFX, 1, STILL_SPRITE, PAL_OW_BROWN ; 1491c
+	sprite_header SudowoodoSpriteGFX, 3, STANDING_SPRITE, PAL_OW_GREEN ; 14922
+	sprite_header SurfSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE ; 14928
+	sprite_header PokeBallSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED ; 1492e
+	sprite_header PokedexSpriteGFX, 1, STILL_SPRITE, PAL_OW_BROWN ; 14934
+	sprite_header PaperSpriteGFX, 1, STILL_SPRITE, PAL_OW_BLUE ; 1493a
+	sprite_header VirtualBoySpriteGFX, 1, STILL_SPRITE, PAL_OW_RED ; 14940
+	sprite_header OldLinkReceptionistSpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED ; 14946
+	sprite_header RockSpriteGFX, 1, STILL_SPRITE, PAL_OW_ROCK ; 1494c
+	sprite_header BoulderSpriteGFX, 1, STILL_SPRITE, PAL_OW_ROCK ; 14952
+	sprite_header SnesSpriteGFX, 1, STILL_SPRITE, PAL_OW_BLUE ; 14958
+	sprite_header FamicomSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED ; 1495e
+	sprite_header FruitTreeSpriteGFX, 1, STILL_SPRITE, PAL_OW_TREE ; 14964
+	sprite_header GoldTrophySpriteGFX, 1, STILL_SPRITE, PAL_OW_BROWN ; 1496a
+	sprite_header SilverTrophySpriteGFX, 1, STILL_SPRITE, PAL_OW_SILVER ; 14970
+	sprite_header KrisSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE ; 14976
+	sprite_header KrisBikeSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE ; 1497c
+	sprite_header KurtOutsideSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BROWN ; 14982
+	sprite_header SuicuneSpriteGFX, 1, STILL_SPRITE, PAL_OW_BLUE ; 14988
+	sprite_header EnteiSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED ; 1498e
+	sprite_header RaikouSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED ; 14994
+	sprite_header StandingYoungsterSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE ; 1499a
--- /dev/null
+++ b/gfx/sprites.asm
@@ -1,0 +1,108 @@
+SECTION "Sprites 1", ROMX
+
+ChrisSpriteGFX:               INCBIN "gfx/sprites/chris.2bpp" ; c0000
+ChrisBikeSpriteGFX:           INCBIN "gfx/sprites/chris_bike.2bpp" ; c0180
+GameboyKidSpriteGFX:          INCBIN "gfx/sprites/gameboy_kid.2bpp" ; c0300
+SilverSpriteGFX:              INCBIN "gfx/sprites/silver.2bpp" ; c03c0
+OakSpriteGFX:                 INCBIN "gfx/sprites/oak.2bpp" ; c0540
+RedSpriteGFX:                 INCBIN "gfx/sprites/red.2bpp" ; c06c0
+BlueSpriteGFX:                INCBIN "gfx/sprites/blue.2bpp" ; c0840
+BillSpriteGFX:                INCBIN "gfx/sprites/bill.2bpp" ; c09c0
+ElderSpriteGFX:               INCBIN "gfx/sprites/elder.2bpp" ; c0b40
+JanineSpriteGFX:              INCBIN "gfx/sprites/janine.2bpp" ; c0cc0
+KurtSpriteGFX:                INCBIN "gfx/sprites/kurt.2bpp" ; c0e40
+MomSpriteGFX:                 INCBIN "gfx/sprites/mom.2bpp" ; c0fc0
+BlaineSpriteGFX:              INCBIN "gfx/sprites/blaine.2bpp" ; c1140
+RedsMomSpriteGFX:             INCBIN "gfx/sprites/reds_mom.2bpp" ; c12c0
+DaisySpriteGFX:               INCBIN "gfx/sprites/daisy.2bpp" ; c1440
+ElmSpriteGFX:                 INCBIN "gfx/sprites/elm.2bpp" ; c15c0
+WillSpriteGFX:                INCBIN "gfx/sprites/will.2bpp" ; c1740
+FalknerSpriteGFX:             INCBIN "gfx/sprites/falkner.2bpp" ; c1800
+WhitneySpriteGFX:             INCBIN "gfx/sprites/whitney.2bpp" ; c1980
+BugsySpriteGFX:               INCBIN "gfx/sprites/bugsy.2bpp" ; c1b00
+MortySpriteGFX:               INCBIN "gfx/sprites/morty.2bpp" ; c1c80
+ChuckSpriteGFX:               INCBIN "gfx/sprites/chuck.2bpp" ; c1e00
+JasmineSpriteGFX:             INCBIN "gfx/sprites/jasmine.2bpp" ; c1f80
+PryceSpriteGFX:               INCBIN "gfx/sprites/pryce.2bpp" ; c2100
+ClairSpriteGFX:               INCBIN "gfx/sprites/clair.2bpp" ; c2280
+BrockSpriteGFX:               INCBIN "gfx/sprites/brock.2bpp" ; c2400
+KarenSpriteGFX:               INCBIN "gfx/sprites/karen.2bpp" ; c2580
+BrunoSpriteGFX:               INCBIN "gfx/sprites/bruno.2bpp" ; c2640
+MistySpriteGFX:               INCBIN "gfx/sprites/misty.2bpp" ; c27c0
+LanceSpriteGFX:               INCBIN "gfx/sprites/lance.2bpp" ; c2940
+SurgeSpriteGFX:               INCBIN "gfx/sprites/surge.2bpp" ; c2ac0
+ErikaSpriteGFX:               INCBIN "gfx/sprites/erika.2bpp" ; c2c40
+KogaSpriteGFX:                INCBIN "gfx/sprites/koga.2bpp" ; c2dc0
+SabrinaSpriteGFX:             INCBIN "gfx/sprites/sabrina.2bpp" ; c2f40
+CooltrainerMSpriteGFX:        INCBIN "gfx/sprites/cooltrainer_m.2bpp" ; c30c0
+CooltrainerFSpriteGFX:        INCBIN "gfx/sprites/cooltrainer_f.2bpp" ; c3240
+BugCatcherSpriteGFX:          INCBIN "gfx/sprites/bug_catcher.2bpp" ; c33c0
+TwinSpriteGFX:                INCBIN "gfx/sprites/twin.2bpp" ; c3540
+YoungsterSpriteGFX:           INCBIN "gfx/sprites/youngster.2bpp" ; c36c0
+LassSpriteGFX:                INCBIN "gfx/sprites/lass.2bpp" ; c3840
+TeacherSpriteGFX:             INCBIN "gfx/sprites/teacher.2bpp" ; c39c0
+BuenaSpriteGFX:               INCBIN "gfx/sprites/buena.2bpp" ; c3b40
+SuperNerdSpriteGFX:           INCBIN "gfx/sprites/super_nerd.2bpp" ; c3cc0
+RockerSpriteGFX:              INCBIN "gfx/sprites/rocker.2bpp" ; c3e40
+
+
+SECTION "Sprites 2", ROMX
+
+PokefanMSpriteGFX:            INCBIN "gfx/sprites/pokefan_m.2bpp" ; c4000
+PokefanFSpriteGFX:            INCBIN "gfx/sprites/pokefan_f.2bpp" ; c4180
+GrampsSpriteGFX:              INCBIN "gfx/sprites/gramps.2bpp" ; c4300
+GrannySpriteGFX:              INCBIN "gfx/sprites/granny.2bpp" ; c4480
+SwimmerGuySpriteGFX:          INCBIN "gfx/sprites/swimmer_guy.2bpp" ; c4600
+SwimmerGirlSpriteGFX:         INCBIN "gfx/sprites/swimmer_girl.2bpp" ; c4780
+BigSnorlaxSpriteGFX:          INCBIN "gfx/sprites/big_snorlax.2bpp" ; c4900
+SurfingPikachuSpriteGFX:      INCBIN "gfx/sprites/surfing_pikachu.2bpp" ; c4980
+RocketSpriteGFX:              INCBIN "gfx/sprites/rocket.2bpp" ; c4b00
+RocketGirlSpriteGFX:          INCBIN "gfx/sprites/rocket_girl.2bpp" ; c4c80
+NurseSpriteGFX:               INCBIN "gfx/sprites/nurse.2bpp" ; c4e00
+LinkReceptionistSpriteGFX:    INCBIN "gfx/sprites/link_receptionist.2bpp" ; c4ec0
+ClerkSpriteGFX:               INCBIN "gfx/sprites/clerk.2bpp" ; c5040
+FisherSpriteGFX:              INCBIN "gfx/sprites/fisher.2bpp" ; c51c0
+FishingGuruSpriteGFX:         INCBIN "gfx/sprites/fishing_guru.2bpp" ; c5340
+ScientistSpriteGFX:           INCBIN "gfx/sprites/scientist.2bpp" ; c54c0
+KimonoGirlSpriteGFX:          INCBIN "gfx/sprites/kimono_girl.2bpp" ; c5640
+SageSpriteGFX:                INCBIN "gfx/sprites/sage.2bpp" ; c57c0
+UnusedGuySpriteGFX:           INCBIN "gfx/sprites/unused_guy.2bpp" ; c5940
+GentlemanSpriteGFX:           INCBIN "gfx/sprites/gentleman.2bpp" ; c5ac0
+BlackBeltSpriteGFX:           INCBIN "gfx/sprites/black_belt.2bpp" ; c5c40
+ReceptionistSpriteGFX:        INCBIN "gfx/sprites/receptionist.2bpp" ; c5dc0
+OfficerSpriteGFX:             INCBIN "gfx/sprites/officer.2bpp" ; c5f40
+CalSpriteGFX:                 INCBIN "gfx/sprites/cal.2bpp" ; c60c0
+SlowpokeSpriteGFX:            INCBIN "gfx/sprites/slowpoke.2bpp" ; c6240
+CaptainSpriteGFX:             INCBIN "gfx/sprites/captain.2bpp" ; c6280
+BigLaprasSpriteGFX:           INCBIN "gfx/sprites/big_lapras.2bpp" ; c6400
+GymGuySpriteGFX:              INCBIN "gfx/sprites/gym_guy.2bpp" ; c6480
+SailorSpriteGFX:              INCBIN "gfx/sprites/sailor.2bpp" ; c6600
+BikerSpriteGFX:               INCBIN "gfx/sprites/biker.2bpp" ; c6780
+PharmacistSpriteGFX:          INCBIN "gfx/sprites/pharmacist.2bpp" ; c6900
+MonsterSpriteGFX:             INCBIN "gfx/sprites/monster.2bpp" ; c6a80
+FairySpriteGFX:               INCBIN "gfx/sprites/fairy.2bpp" ; c6c00
+BirdSpriteGFX:                INCBIN "gfx/sprites/bird.2bpp" ; c6d80
+DragonSpriteGFX:              INCBIN "gfx/sprites/dragon.2bpp" ; c6f00
+BigOnixSpriteGFX:             INCBIN "gfx/sprites/big_onix.2bpp" ; c7080
+N64SpriteGFX:                 INCBIN "gfx/sprites/n64.2bpp" ; c7140
+SudowoodoSpriteGFX:           INCBIN "gfx/sprites/sudowoodo.2bpp" ; c7180
+SurfSpriteGFX:                INCBIN "gfx/sprites/surf.2bpp" ; c7200
+PokeBallSpriteGFX:            INCBIN "gfx/sprites/poke_ball.2bpp" ; c7380
+PokedexSpriteGFX:             INCBIN "gfx/sprites/pokedex.2bpp" ; c7500
+PaperSpriteGFX:               INCBIN "gfx/sprites/paper.2bpp" ; c7680
+VirtualBoySpriteGFX:          INCBIN "gfx/sprites/virtual_boy.2bpp" ; c7800
+OldLinkReceptionistSpriteGFX: INCBIN "gfx/sprites/old_link_receptionist.2bpp" ; c7840
+RockSpriteGFX:                INCBIN "gfx/sprites/rock.2bpp" ; c7880
+BoulderSpriteGFX:             INCBIN "gfx/sprites/boulder.2bpp" ; c78c0
+SnesSpriteGFX:                INCBIN "gfx/sprites/snes.2bpp" ; c7900
+FamicomSpriteGFX:             INCBIN "gfx/sprites/famicom.2bpp" ; c7940
+FruitTreeSpriteGFX:           INCBIN "gfx/sprites/fruit_tree.2bpp" ; c7980
+GoldTrophySpriteGFX:          INCBIN "gfx/sprites/gold_trophy.2bpp" ; c79c0
+SilverTrophySpriteGFX:        INCBIN "gfx/sprites/silver_trophy.2bpp" ; c7a00
+KrisSpriteGFX:                INCBIN "gfx/sprites/kris.2bpp" ; c7a40
+KrisBikeSpriteGFX:            INCBIN "gfx/sprites/kris_bike.2bpp" ; c7bc0
+KurtOutsideSpriteGFX:         INCBIN "gfx/sprites/kurt_outside.2bpp" ; c7d40
+SuicuneSpriteGFX:             INCBIN "gfx/sprites/suicune.2bpp" ; c7e00
+EnteiSpriteGFX:               INCBIN "gfx/sprites/entei.2bpp" ; c7e40
+RaikouSpriteGFX:              INCBIN "gfx/sprites/raikou.2bpp" ; c7e80
+StandingYoungsterSpriteGFX:   INCBIN "gfx/sprites/standing_youngster.2bpp" ; c7ec0
binary files /dev/null b/gfx/sprites/big_lapras.png differ
binary files /dev/null b/gfx/sprites/big_onix.png differ
binary files /dev/null b/gfx/sprites/big_snorlax.png differ
binary files /dev/null b/gfx/sprites/biker.png differ
binary files /dev/null b/gfx/sprites/bill.png differ
binary files /dev/null b/gfx/sprites/bird.png differ
binary files /dev/null b/gfx/sprites/black_belt.png differ
binary files /dev/null b/gfx/sprites/blaine.png differ
binary files /dev/null b/gfx/sprites/blue.png differ
binary files /dev/null b/gfx/sprites/boulder.png differ
binary files /dev/null b/gfx/sprites/brock.png differ
binary files /dev/null b/gfx/sprites/bruno.png differ
binary files /dev/null b/gfx/sprites/buena.png differ
binary files /dev/null b/gfx/sprites/bug_catcher.png differ
binary files /dev/null b/gfx/sprites/bugsy.png differ
binary files /dev/null b/gfx/sprites/cal.png differ
binary files /dev/null b/gfx/sprites/captain.png differ
binary files /dev/null b/gfx/sprites/chris.png differ
binary files /dev/null b/gfx/sprites/chris_bike.png differ
binary files /dev/null b/gfx/sprites/chuck.png differ
binary files /dev/null b/gfx/sprites/clair.png differ
binary files /dev/null b/gfx/sprites/clerk.png differ
binary files /dev/null b/gfx/sprites/cooltrainer_f.png differ
binary files /dev/null b/gfx/sprites/cooltrainer_m.png differ
binary files /dev/null b/gfx/sprites/daisy.png differ
binary files /dev/null b/gfx/sprites/dragon.png differ
binary files /dev/null b/gfx/sprites/elder.png differ
binary files /dev/null b/gfx/sprites/elm.png differ
binary files /dev/null b/gfx/sprites/entei.png differ
binary files /dev/null b/gfx/sprites/erika.png differ
binary files /dev/null b/gfx/sprites/fairy.png differ
binary files /dev/null b/gfx/sprites/falkner.png differ
binary files /dev/null b/gfx/sprites/famicom.png differ
binary files /dev/null b/gfx/sprites/fisher.png differ
binary files /dev/null b/gfx/sprites/fishing_guru.png differ
binary files /dev/null b/gfx/sprites/fruit_tree.png differ
binary files /dev/null b/gfx/sprites/gameboy_kid.png differ
binary files /dev/null b/gfx/sprites/gentleman.png differ
binary files /dev/null b/gfx/sprites/gold_trophy.png differ
binary files /dev/null b/gfx/sprites/gramps.png differ
binary files /dev/null b/gfx/sprites/granny.png differ
binary files /dev/null b/gfx/sprites/gym_guy.png differ
binary files /dev/null b/gfx/sprites/janine.png differ
binary files /dev/null b/gfx/sprites/jasmine.png differ
binary files /dev/null b/gfx/sprites/karen.png differ
binary files /dev/null b/gfx/sprites/kimono_girl.png differ
binary files /dev/null b/gfx/sprites/koga.png differ
binary files /dev/null b/gfx/sprites/kris.png differ
binary files /dev/null b/gfx/sprites/kris_bike.png differ
binary files /dev/null b/gfx/sprites/kurt.png differ
binary files /dev/null b/gfx/sprites/kurt_outside.png differ
binary files /dev/null b/gfx/sprites/lance.png differ
binary files /dev/null b/gfx/sprites/lass.png differ
binary files /dev/null b/gfx/sprites/link_receptionist.png differ
binary files /dev/null b/gfx/sprites/misty.png differ
binary files /dev/null b/gfx/sprites/mom.png differ
binary files /dev/null b/gfx/sprites/monster.png differ
binary files /dev/null b/gfx/sprites/morty.png differ
binary files /dev/null b/gfx/sprites/n64.png differ
binary files /dev/null b/gfx/sprites/nurse.png differ
binary files /dev/null b/gfx/sprites/oak.png differ
binary files /dev/null b/gfx/sprites/officer.png differ
binary files /dev/null b/gfx/sprites/old_link_receptionist.png differ
binary files /dev/null b/gfx/sprites/paper.png differ
binary files /dev/null b/gfx/sprites/pharmacist.png differ
binary files /dev/null b/gfx/sprites/poke_ball.png differ
binary files /dev/null b/gfx/sprites/pokedex.png differ
binary files /dev/null b/gfx/sprites/pokefan_f.png differ
binary files /dev/null b/gfx/sprites/pokefan_m.png differ
binary files /dev/null b/gfx/sprites/pryce.png differ
binary files /dev/null b/gfx/sprites/raikou.png differ
binary files /dev/null b/gfx/sprites/receptionist.png differ
binary files /dev/null b/gfx/sprites/red.png differ
binary files /dev/null b/gfx/sprites/reds_mom.png differ
binary files /dev/null b/gfx/sprites/rock.png differ
binary files /dev/null b/gfx/sprites/rocker.png differ
binary files /dev/null b/gfx/sprites/rocket.png differ
binary files /dev/null b/gfx/sprites/rocket_girl.png differ
binary files /dev/null b/gfx/sprites/sabrina.png differ
binary files /dev/null b/gfx/sprites/sage.png differ
binary files /dev/null b/gfx/sprites/sailor.png differ
binary files /dev/null b/gfx/sprites/scientist.png differ
binary files /dev/null b/gfx/sprites/silver.png differ
binary files /dev/null b/gfx/sprites/silver_trophy.png differ
binary files /dev/null b/gfx/sprites/slowpoke.png differ
binary files /dev/null b/gfx/sprites/snes.png differ
binary files /dev/null b/gfx/sprites/standing_youngster.png differ
binary files /dev/null b/gfx/sprites/sudowoodo.png differ
binary files /dev/null b/gfx/sprites/suicune.png differ
binary files /dev/null b/gfx/sprites/super_nerd.png differ
binary files /dev/null b/gfx/sprites/surf.png differ
binary files /dev/null b/gfx/sprites/surfing_pikachu.png differ
binary files /dev/null b/gfx/sprites/surge.png differ
binary files /dev/null b/gfx/sprites/swimmer_girl.png differ
binary files /dev/null b/gfx/sprites/swimmer_guy.png differ
binary files /dev/null b/gfx/sprites/teacher.png differ
binary files /dev/null b/gfx/sprites/twin.png differ
binary files /dev/null b/gfx/sprites/unused_guy.png differ
binary files /dev/null b/gfx/sprites/virtual_boy.png differ
binary files /dev/null b/gfx/sprites/whitney.png differ
binary files /dev/null b/gfx/sprites/will.png differ
binary files /dev/null b/gfx/sprites/youngster.png differ
binary files a/gfx/tilesets/00.2bpp.lz.0c7e555a /dev/null differ
binary files a/gfx/tilesets/00.png /dev/null differ
binary files a/gfx/tilesets/01.2bpp.lz.0c7e555a /dev/null differ
binary files a/gfx/tilesets/01.png /dev/null differ
binary files a/gfx/tilesets/02.2bpp.lz.391603fb /dev/null differ
binary files a/gfx/tilesets/02.png /dev/null differ
binary files a/gfx/tilesets/03.2bpp.lz.a29f5d51 /dev/null differ
binary files a/gfx/tilesets/03.png /dev/null differ
binary files a/gfx/tilesets/04.2bpp.lz.391603fb /dev/null differ
binary files a/gfx/tilesets/04.png /dev/null differ
binary files a/gfx/tilesets/05.2bpp.lz.c848ef13 /dev/null differ
binary files a/gfx/tilesets/05.png /dev/null differ
binary files a/gfx/tilesets/06.2bpp.lz.252cbd8f /dev/null differ
binary files a/gfx/tilesets/06.png /dev/null differ
binary files a/gfx/tilesets/07.2bpp.lz.e1c4014c /dev/null differ
binary files a/gfx/tilesets/07.png /dev/null differ
binary files a/gfx/tilesets/08.2bpp.lz.f5a55006 /dev/null differ
binary files a/gfx/tilesets/08.png /dev/null differ
binary files a/gfx/tilesets/09.2bpp.lz.56b1a405 /dev/null differ
binary files a/gfx/tilesets/09.png /dev/null differ
binary files a/gfx/tilesets/10.2bpp.lz.b8d0f547 /dev/null differ
binary files a/gfx/tilesets/10.png /dev/null differ
binary files a/gfx/tilesets/11.2bpp.lz.454cfd8b /dev/null differ
binary files a/gfx/tilesets/11.png /dev/null differ
binary files a/gfx/tilesets/12.2bpp.lz.e2e94f92 /dev/null differ
binary files a/gfx/tilesets/12.png /dev/null differ
binary files a/gfx/tilesets/13.2bpp.lz.63b414d4 /dev/null differ
binary files a/gfx/tilesets/13.png /dev/null differ
binary files a/gfx/tilesets/14.2bpp.lz.71d29a2f /dev/null differ
binary files a/gfx/tilesets/14.png /dev/null differ
binary files a/gfx/tilesets/15.2bpp.lz.c1f2ed8f /dev/null differ
binary files a/gfx/tilesets/15.png /dev/null differ
binary files a/gfx/tilesets/16.2bpp.lz.dd51d079 /dev/null differ
binary files a/gfx/tilesets/16.png /dev/null differ
binary files a/gfx/tilesets/17.2bpp.lz.1600ca86 /dev/null differ
binary files a/gfx/tilesets/17.png /dev/null differ
binary files a/gfx/tilesets/18.2bpp.lz.93800351 /dev/null differ
binary files a/gfx/tilesets/18.png /dev/null differ
binary files a/gfx/tilesets/19.2bpp.lz.0c1544c1 /dev/null differ
binary files a/gfx/tilesets/19.png /dev/null differ
binary files a/gfx/tilesets/20.2bpp.lz.35e51007 /dev/null differ
binary files a/gfx/tilesets/20.png /dev/null differ
binary files a/gfx/tilesets/21.2bpp.lz.febbc4ec /dev/null differ
binary files a/gfx/tilesets/21.png /dev/null differ
binary files a/gfx/tilesets/22.2bpp.lz.467b6a2d /dev/null differ
binary files a/gfx/tilesets/22.png /dev/null differ
binary files a/gfx/tilesets/23.2bpp.lz.bc56789c /dev/null differ
binary files a/gfx/tilesets/23.png /dev/null differ
binary files a/gfx/tilesets/24.2bpp.lz.3437812a /dev/null differ
binary files a/gfx/tilesets/24.png /dev/null differ
binary files a/gfx/tilesets/25.2bpp.lz.7fcb81d6 /dev/null differ
binary files a/gfx/tilesets/25.png /dev/null differ
binary files a/gfx/tilesets/26.2bpp.lz.8b42470b /dev/null differ
binary files a/gfx/tilesets/26.png /dev/null differ
binary files a/gfx/tilesets/27.2bpp.lz.27cdd9ad /dev/null differ
binary files a/gfx/tilesets/27.png /dev/null differ
binary files a/gfx/tilesets/28.2bpp.lz.cace291c /dev/null differ
binary files a/gfx/tilesets/28.png /dev/null differ
binary files a/gfx/tilesets/29.2bpp.lz.e23bc89f /dev/null differ
binary files a/gfx/tilesets/29.png /dev/null differ
binary files a/gfx/tilesets/30.2bpp.lz.25b9c4b6 /dev/null differ
binary files a/gfx/tilesets/30.png /dev/null differ
binary files a/gfx/tilesets/31.2bpp.lz.6b0ac896 /dev/null differ
binary files a/gfx/tilesets/31.png /dev/null differ
binary files a/gfx/tilesets/32.2bpp.lz.8b42470b /dev/null differ
binary files a/gfx/tilesets/32.png /dev/null differ
binary files a/gfx/tilesets/33.2bpp.lz.8b42470b /dev/null differ
binary files a/gfx/tilesets/33.png /dev/null differ
binary files a/gfx/tilesets/34.2bpp.lz.8b42470b /dev/null differ
binary files a/gfx/tilesets/34.png /dev/null differ
binary files a/gfx/tilesets/35.2bpp.lz.8b42470b /dev/null differ
binary files a/gfx/tilesets/35.png /dev/null differ
binary files a/gfx/tilesets/36.2bpp.lz.8b42470b /dev/null differ
binary files a/gfx/tilesets/36.png /dev/null differ
binary files /dev/null b/gfx/tilesets/aerodactyl_word_room.2bpp.lz.8b42470b differ
binary files /dev/null b/gfx/tilesets/aerodactyl_word_room.png differ
binary files /dev/null b/gfx/tilesets/battle_tower.2bpp.lz.467b6a2d differ
binary files /dev/null b/gfx/tilesets/battle_tower.png differ
binary files /dev/null b/gfx/tilesets/battle_tower_outside.2bpp.lz.391603fb differ
binary files /dev/null b/gfx/tilesets/battle_tower_outside.png differ
binary files /dev/null b/gfx/tilesets/beta_word_room.2bpp.lz.8b42470b differ
binary files /dev/null b/gfx/tilesets/beta_word_room.png differ
binary files /dev/null b/gfx/tilesets/cave.2bpp.lz.3437812a differ
binary files /dev/null b/gfx/tilesets/cave.png differ
binary files /dev/null b/gfx/tilesets/celadon_mansion.2bpp.lz.63b414d4 differ
binary files /dev/null b/gfx/tilesets/celadon_mansion.png differ
binary files /dev/null b/gfx/tilesets/game_corner.2bpp.lz.71d29a2f differ
binary files /dev/null b/gfx/tilesets/game_corner.png differ
binary files /dev/null b/gfx/tilesets/gate.2bpp.lz.f5a55006 differ
binary files /dev/null b/gfx/tilesets/gate.png differ
binary files /dev/null b/gfx/tilesets/gym_1.2bpp.lz.c1f2ed8f differ
binary files /dev/null b/gfx/tilesets/gym_1.png differ
binary files /dev/null b/gfx/tilesets/ho_oh_word_room.2bpp.lz.8b42470b differ
binary files /dev/null b/gfx/tilesets/ho_oh_word_room.png differ
binary files /dev/null b/gfx/tilesets/house_1.2bpp.lz.c848ef13 differ
binary files /dev/null b/gfx/tilesets/house_1.png differ
binary files /dev/null b/gfx/tilesets/ice_path.2bpp.lz.e23bc89f differ
binary files /dev/null b/gfx/tilesets/ice_path.png differ
binary files /dev/null b/gfx/tilesets/ilex_forest.2bpp.lz.6b0ac896 differ
binary files /dev/null b/gfx/tilesets/ilex_forest.png differ
binary files /dev/null b/gfx/tilesets/johto_1.2bpp.lz.0c7e555a differ
binary files /dev/null b/gfx/tilesets/johto_1.png differ
binary files /dev/null b/gfx/tilesets/johto_2.2bpp.lz.391603fb differ
binary files /dev/null b/gfx/tilesets/johto_2.png differ
binary files /dev/null b/gfx/tilesets/kabuto_word_room.2bpp.lz.8b42470b differ
binary files /dev/null b/gfx/tilesets/kabuto_word_room.png differ
binary files /dev/null b/gfx/tilesets/kanto.2bpp.lz.a29f5d51 differ
binary files /dev/null b/gfx/tilesets/kanto.png differ
binary files /dev/null b/gfx/tilesets/kurts_house.2bpp.lz.dd51d079 differ
binary files /dev/null b/gfx/tilesets/kurts_house.png differ
binary files /dev/null b/gfx/tilesets/lab.2bpp.lz.b8d0f547 differ
binary files /dev/null b/gfx/tilesets/lab.png differ
binary files /dev/null b/gfx/tilesets/lighthouse.2bpp.lz.0c1544c1 differ
binary files /dev/null b/gfx/tilesets/lighthouse.png differ
binary files /dev/null b/gfx/tilesets/mart.2bpp.lz.e2e94f92 differ
binary files /dev/null b/gfx/tilesets/mart.png differ
binary files /dev/null b/gfx/tilesets/olivine_gym.2bpp.lz.93800351 differ
binary files /dev/null b/gfx/tilesets/olivine_gym.png differ
binary files /dev/null b/gfx/tilesets/omanyte_word_room.2bpp.lz.8b42470b differ
binary files /dev/null b/gfx/tilesets/omanyte_word_room.png differ
binary files /dev/null b/gfx/tilesets/park.2bpp.lz.7fcb81d6 differ
binary files /dev/null b/gfx/tilesets/park.png differ
binary files /dev/null b/gfx/tilesets/players_house.2bpp.lz.252cbd8f differ
binary files /dev/null b/gfx/tilesets/players_house.png differ
binary files /dev/null b/gfx/tilesets/players_house_2f.2bpp.lz.35e51007 differ
binary files /dev/null b/gfx/tilesets/players_house_2f.png differ
binary files /dev/null b/gfx/tilesets/pokecenter.2bpp.lz.e1c4014c differ
binary files /dev/null b/gfx/tilesets/pokecenter.png differ
binary files /dev/null b/gfx/tilesets/pokecom_center.2bpp.lz.febbc4ec differ
binary files /dev/null b/gfx/tilesets/pokecom_center.png differ
binary files /dev/null b/gfx/tilesets/port.2bpp.lz.56b1a405 differ
binary files /dev/null b/gfx/tilesets/port.png differ
binary files /dev/null b/gfx/tilesets/power_plant.2bpp.lz.454cfd8b differ
binary files /dev/null b/gfx/tilesets/power_plant.png differ
binary files /dev/null b/gfx/tilesets/radio_tower.2bpp.lz.27cdd9ad differ
binary files /dev/null b/gfx/tilesets/radio_tower.png differ
binary files /dev/null b/gfx/tilesets/ruins_of_alph.2bpp.lz.8b42470b differ
binary files /dev/null b/gfx/tilesets/ruins_of_alph.png differ
binary files /dev/null b/gfx/tilesets/sprout_tower.2bpp.lz.bc56789c differ
binary files /dev/null b/gfx/tilesets/sprout_tower.png differ
binary files /dev/null b/gfx/tilesets/train_station.2bpp.lz.1600ca86 differ
binary files /dev/null b/gfx/tilesets/train_station.png differ
binary files /dev/null b/gfx/tilesets/underground.2bpp.lz.cace291c differ
binary files /dev/null b/gfx/tilesets/underground.png differ
binary files /dev/null b/gfx/tilesets/whirl_islands.2bpp.lz.25b9c4b6 differ
binary files /dev/null b/gfx/tilesets/whirl_islands.png differ
--- /dev/null
+++ b/gfx/trainer_palettes.asm
@@ -1,0 +1,76 @@
+TrainerPalettes: ; b0ce
+; entries correspond to trainer classes
+
+PlayerPalette: ; b0ce
+; Chris uses the same colors as Cal
+INCLUDE "gfx/trainers/cal.pal"
+KrisPalette: ; b0d0
+; Kris shares Falkner's palette
+INCLUDE "gfx/trainers/falkner.pal"
+INCLUDE "gfx/trainers/whitney.pal"
+INCLUDE "gfx/trainers/bugsy.pal"
+INCLUDE "gfx/trainers/morty.pal"
+INCLUDE "gfx/trainers/pryce.pal"
+INCLUDE "gfx/trainers/jasmine.pal"
+INCLUDE "gfx/trainers/chuck.pal"
+INCLUDE "gfx/trainers/clair.pal"
+INCLUDE "gfx/trainers/rival1.pal"
+INCLUDE "gfx/trainers/oak.pal"
+INCLUDE "gfx/trainers/will.pal"
+INCLUDE "gfx/trainers/cal.pal"
+INCLUDE "gfx/trainers/bruno.pal"
+INCLUDE "gfx/trainers/karen.pal"
+INCLUDE "gfx/trainers/koga.pal"
+INCLUDE "gfx/trainers/champion.pal"
+INCLUDE "gfx/trainers/brock.pal"
+INCLUDE "gfx/trainers/misty.pal"
+INCLUDE "gfx/trainers/lt_surge.pal"
+INCLUDE "gfx/trainers/scientist.pal"
+INCLUDE "gfx/trainers/erika.pal"
+INCLUDE "gfx/trainers/youngster.pal"
+INCLUDE "gfx/trainers/schoolboy.pal"
+INCLUDE "gfx/trainers/bird_keeper.pal"
+INCLUDE "gfx/trainers/lass.pal"
+INCLUDE "gfx/trainers/janine.pal"
+INCLUDE "gfx/trainers/cooltrainer_m.pal"
+INCLUDE "gfx/trainers/cooltrainer_f.pal"
+INCLUDE "gfx/trainers/beauty.pal"
+INCLUDE "gfx/trainers/pokemaniac.pal"
+INCLUDE "gfx/trainers/grunt_m.pal"
+INCLUDE "gfx/trainers/gentleman.pal"
+INCLUDE "gfx/trainers/skier.pal"
+INCLUDE "gfx/trainers/teacher.pal"
+INCLUDE "gfx/trainers/sabrina.pal"
+INCLUDE "gfx/trainers/bug_catcher.pal"
+INCLUDE "gfx/trainers/fisher.pal"
+INCLUDE "gfx/trainers/swimmer_m.pal"
+INCLUDE "gfx/trainers/swimmer_f.pal"
+INCLUDE "gfx/trainers/sailor.pal"
+INCLUDE "gfx/trainers/super_nerd.pal"
+INCLUDE "gfx/trainers/rival2.pal"
+INCLUDE "gfx/trainers/guitarist.pal"
+INCLUDE "gfx/trainers/hiker.pal"
+INCLUDE "gfx/trainers/biker.pal"
+INCLUDE "gfx/trainers/blaine.pal"
+INCLUDE "gfx/trainers/burglar.pal"
+INCLUDE "gfx/trainers/firebreather.pal"
+INCLUDE "gfx/trainers/juggler.pal"
+INCLUDE "gfx/trainers/blackbelt_t.pal"
+INCLUDE "gfx/trainers/executive_m.pal"
+INCLUDE "gfx/trainers/psychic_t.pal"
+INCLUDE "gfx/trainers/picnicker.pal"
+INCLUDE "gfx/trainers/camper.pal"
+INCLUDE "gfx/trainers/executive_f.pal"
+INCLUDE "gfx/trainers/sage.pal"
+INCLUDE "gfx/trainers/medium.pal"
+INCLUDE "gfx/trainers/boarder.pal"
+INCLUDE "gfx/trainers/pokefan_m.pal"
+INCLUDE "gfx/trainers/kimono_girl.pal"
+INCLUDE "gfx/trainers/twins.pal"
+INCLUDE "gfx/trainers/pokefan_f.pal"
+INCLUDE "gfx/trainers/red.pal"
+INCLUDE "gfx/trainers/blue.pal"
+INCLUDE "gfx/trainers/officer.pal"
+INCLUDE "gfx/trainers/grunt_f.pal"
+INCLUDE "gfx/trainers/mysticalman.pal"
+; b1de
--- /dev/null
+++ b/gfx/trainer_pic_pointers.asm
@@ -1,0 +1,69 @@
+TrainerPicPointers::
+; entries correspond to trainer classes (see constants/trainer_constants.asm)
+	add_pic FalknerPic
+	add_pic WhitneyPic
+	add_pic BugsyPic
+	add_pic MortyPic
+	add_pic PrycePic
+	add_pic JasminePic
+	add_pic ChuckPic
+	add_pic ClairPic
+	add_pic Rival1Pic
+	add_pic PokemonProfPic
+	add_pic WillPic
+	add_pic CalPic
+	add_pic BrunoPic
+	add_pic KarenPic
+	add_pic KogaPic
+	add_pic ChampionPic
+	add_pic BrockPic
+	add_pic MistyPic
+	add_pic LtSurgePic
+	add_pic ScientistPic
+	add_pic ErikaPic
+	add_pic YoungsterPic
+	add_pic SchoolboyPic
+	add_pic BirdKeeperPic
+	add_pic LassPic
+	add_pic JaninePic
+	add_pic CooltrainermPic
+	add_pic CooltrainerfPic
+	add_pic BeautyPic
+	add_pic PokemaniacPic
+	add_pic GruntmPic
+	add_pic GentlemanPic
+	add_pic SkierPic
+	add_pic TeacherPic
+	add_pic SabrinaPic
+	add_pic BugCatcherPic
+	add_pic FisherPic
+	add_pic SwimmermPic
+	add_pic SwimmerfPic
+	add_pic SailorPic
+	add_pic SuperNerdPic
+	add_pic Rival2Pic
+	add_pic GuitaristPic
+	add_pic HikerPic
+	add_pic BikerPic
+	add_pic BlainePic
+	add_pic BurglarPic
+	add_pic FirebreatherPic
+	add_pic JugglerPic
+	add_pic BlackbeltTPic
+	add_pic ExecutivemPic
+	add_pic PsychicTPic
+	add_pic PicnickerPic
+	add_pic CamperPic
+	add_pic ExecutivefPic
+	add_pic SagePic
+	add_pic MediumPic
+	add_pic BoarderPic
+	add_pic PokefanmPic
+	add_pic KimonoGirlPic
+	add_pic TwinsPic
+	add_pic PokefanfPic
+	add_pic RedPic
+	add_pic BluePic
+	add_pic OfficerPic
+	add_pic GruntfPic
+	add_pic MysticalmanPic
--- a/gfx/trainers/palette_pointers.asm
+++ /dev/null
@@ -1,82 +1,0 @@
-
-TrainerPalettes: ; b0ce
-
-PlayerPalette: ; b0ce
-; The player's palette
-;	RGB 25, 18, 12
-;	RGB 22, 09, 05
-	INCLUDE "gfx/trainers/cal.pal"
-
-KrisPalette: ; b0d0
-; Kris uses Falkner's palette
-;	RGB 27, 17, 14
-;	RGB 07, 05, 31
-
-FalknerPalette:      INCLUDE "gfx/trainers/falkner.pal"
-WhitneyPalette:      INCLUDE "gfx/trainers/whitney.pal"
-BugsyPalette:        INCLUDE "gfx/trainers/bugsy.pal"
-MortyPalette:        INCLUDE "gfx/trainers/morty.pal"
-PrycePalette:        INCLUDE "gfx/trainers/pryce.pal"
-JasminePalette:      INCLUDE "gfx/trainers/jasmine.pal"
-ChuckPalette:        INCLUDE "gfx/trainers/chuck.pal"
-ClairPalette:        INCLUDE "gfx/trainers/clair.pal"
-Rival1Palette:       INCLUDE "gfx/trainers/rival1.pal"
-PokemonProfPalette:  INCLUDE "gfx/trainers/oak.pal"
-WillPalette:         INCLUDE "gfx/trainers/will.pal"
-CalPalette:          INCLUDE "gfx/trainers/cal.pal"
-BrunoPalette:        INCLUDE "gfx/trainers/bruno.pal"
-KarenPalette:        INCLUDE "gfx/trainers/karen.pal"
-KogaPalette:         INCLUDE "gfx/trainers/koga.pal"
-ChampionPalette:     INCLUDE "gfx/trainers/champion.pal"
-BrockPalette:        INCLUDE "gfx/trainers/brock.pal"
-MistyPalette:        INCLUDE "gfx/trainers/misty.pal"
-LtSurgePalette:      INCLUDE "gfx/trainers/lt_surge.pal"
-ScientistPalette:    INCLUDE "gfx/trainers/scientist.pal"
-ErikaPalette:        INCLUDE "gfx/trainers/erika.pal"
-YoungsterPalette:    INCLUDE "gfx/trainers/youngster.pal"
-SchoolboyPalette:    INCLUDE "gfx/trainers/schoolboy.pal"
-BirdKeeperPalette:   INCLUDE "gfx/trainers/bird_keeper.pal"
-LassPalette:         INCLUDE "gfx/trainers/lass.pal"
-JaninePalette:       INCLUDE "gfx/trainers/janine.pal"
-CooltrainermPalette: INCLUDE "gfx/trainers/cooltrainer_m.pal"
-CooltrainerfPalette: INCLUDE "gfx/trainers/cooltrainer_f.pal"
-BeautyPalette:       INCLUDE "gfx/trainers/beauty.pal"
-PokemaniacPalette:   INCLUDE "gfx/trainers/pokemaniac.pal"
-GruntmPalette:       INCLUDE "gfx/trainers/grunt_m.pal"
-GentlemanPalette:    INCLUDE "gfx/trainers/gentleman.pal"
-SkierPalette:        INCLUDE "gfx/trainers/skier.pal"
-TeacherPalette:      INCLUDE "gfx/trainers/teacher.pal"
-SabrinaPalette:      INCLUDE "gfx/trainers/sabrina.pal"
-BugCatcherPalette:   INCLUDE "gfx/trainers/bug_catcher.pal"
-FisherPalette:       INCLUDE "gfx/trainers/fisher.pal"
-SwimmermPalette:     INCLUDE "gfx/trainers/swimmer_m.pal"
-SwimmerfPalette:     INCLUDE "gfx/trainers/swimmer_f.pal"
-SailorPalette:       INCLUDE "gfx/trainers/sailor.pal"
-SuperNerdPalette:    INCLUDE "gfx/trainers/super_nerd.pal"
-Rival2Palette:       INCLUDE "gfx/trainers/rival2.pal"
-GuitaristPalette:    INCLUDE "gfx/trainers/guitarist.pal"
-HikerPalette:        INCLUDE "gfx/trainers/hiker.pal"
-BikerPalette:        INCLUDE "gfx/trainers/biker.pal"
-BlainePalette:       INCLUDE "gfx/trainers/blaine.pal"
-BurglarPalette:      INCLUDE "gfx/trainers/burglar.pal"
-FirebreatherPalette: INCLUDE "gfx/trainers/firebreather.pal"
-JugglerPalette:      INCLUDE "gfx/trainers/juggler.pal"
-BlackbeltTPalette:   INCLUDE "gfx/trainers/blackbelt_t.pal"
-ExecutivemPalette:   INCLUDE "gfx/trainers/executive_m.pal"
-PsychicTPalette:     INCLUDE "gfx/trainers/psychic_t.pal"
-PicnickerPalette:    INCLUDE "gfx/trainers/picnicker.pal"
-CamperPalette:       INCLUDE "gfx/trainers/camper.pal"
-ExecutivefPalette:   INCLUDE "gfx/trainers/executive_f.pal"
-SagePalette:         INCLUDE "gfx/trainers/sage.pal"
-MediumPalette:       INCLUDE "gfx/trainers/medium.pal"
-BoarderPalette:      INCLUDE "gfx/trainers/boarder.pal"
-PokefanmPalette:     INCLUDE "gfx/trainers/pokefan_m.pal"
-KimonoGirlPalette:   INCLUDE "gfx/trainers/kimono_girl.pal"
-TwinsPalette:        INCLUDE "gfx/trainers/twins.pal"
-PokefanfPalette:     INCLUDE "gfx/trainers/pokefan_f.pal"
-RedPalette:          INCLUDE "gfx/trainers/red.pal"
-BluePalette:         INCLUDE "gfx/trainers/blue.pal"
-OfficerPalette:      INCLUDE "gfx/trainers/officer.pal"
-GruntfPalette:       INCLUDE "gfx/trainers/grunt_f.pal"
-MysticalmanPalette:  INCLUDE "gfx/trainers/mysticalman.pal"
-; b1de
binary files a/gfx/unknown/016d9c.png /dev/null differ
binary files a/gfx/unknown/016da4.png /dev/null differ
binary files a/gfx/unknown/029f54.png /dev/null differ
binary files a/gfx/unknown/0488c3.png /dev/null differ
binary files a/gfx/unknown/0488cb.png /dev/null differ
binary files a/gfx/unknown/0f8f34.png /dev/null differ
binary files a/gfx/unknown/16c173.png /dev/null differ
binary files a/gfx/unknown/16c633.tilemap /dev/null differ
binary files a/gfx/unknown/16c79b.tilemap /dev/null differ
binary files a/gfx/unknown/170d16.2bpp.lz.5d6d2ad4 /dev/null differ
binary files a/gfx/unknown/170d16.png /dev/null differ
binary files a/gfx/unknown/1715a4.2bpp.lz.3eaf004f /dev/null differ
binary files a/gfx/unknown/1715a4.png /dev/null differ
binary files a/gfx/unknown/1715a4_nonmatching.png /dev/null differ
binary files a/gfx/unknown/171db1.png /dev/null differ
binary files /dev/null b/gfx/unknown/ascii_font.png differ
binary files /dev/null b/gfx/unknown/bold_a.png differ
binary files /dev/null b/gfx/unknown/bold_b.png differ
binary files /dev/null b/gfx/unknown/bold_font.png differ
binary files /dev/null b/gfx/unknown/down_arrow.png differ
binary files /dev/null b/gfx/unknown/egg_animated.2bpp.lz.3eaf004f differ
binary files /dev/null b/gfx/unknown/egg_animated.png differ
binary files /dev/null b/gfx/unknown/egg_animated_nonmatching.png differ
binary files /dev/null b/gfx/unknown/mobile_splash.attrmap differ
binary files /dev/null b/gfx/unknown/mobile_splash.png differ
binary files /dev/null b/gfx/unknown/mobile_splash.tilemap differ
binary files /dev/null b/gfx/unknown/pichu_animated.2bpp.lz.5d6d2ad4 differ
binary files /dev/null b/gfx/unknown/pichu_animated.png differ
binary files /dev/null b/gfx/unknown/unknown_egg.2bpp.lz.a5b6cbfa differ
binary files /dev/null b/gfx/unknown/unknown_egg.png differ
binary files /dev/null b/gfx/unknown/unused_border.png differ
binary files /dev/null b/gfx/unknown/up_arrow.png differ
--- a/home.asm
+++ b/home.asm
@@ -1036,21 +1036,14 @@
 ; 34e7
 
 IsHMMove:: ; 34e7
-	ld hl, .HMMoves
+	ld hl, HMMoves
 	ld de, 1
 	jp IsInArray
 
-.HMMoves:
-	db CUT
-	db FLY
-	db SURF
-	db STRENGTH
-	db FLASH
-	db WATERFALL
-	db WHIRLPOOL
-	db -1
-; 34f8
 
+INCLUDE "data/hm_moves.asm"
+
+
 GetMoveName:: ; 34f8
 	push hl
 
@@ -1711,11 +1704,11 @@
 
 ; Get BaseData
 	dec a
-	ld bc, BaseData1 - BaseData0
+	ld bc, BASE_DATA_SIZE
 	ld hl, BaseData
 	call AddNTimes
 	ld de, CurBaseData
-	ld bc, BaseData1 - BaseData0
+	ld bc, BASE_DATA_SIZE
 	call CopyBytes
 	jr .end
 
@@ -1888,8 +1881,8 @@
 	dec a
 	ld b, 0
 	add hl, bc
-	ld hl, BaseData + 0
-	ld bc, BaseData1 - BaseData0
+	ld hl, BaseData + BASE_DEX_NO
+	ld bc, BASE_DATA_SIZE
 	call AddNTimes
 	ld a, BANK(BaseData)
 	call GetFarHalfword
--- a/home/map.asm
+++ b/home/map.asm
@@ -1593,14 +1593,14 @@
 ; 2945
 
 .MovementPermissionsData: ; 2945
-	db 1 << DOWN
-	db 1 << UP
-	db 1 << LEFT
-	db 1 << RIGHT
-	db (1 << DOWN) | (1 << RIGHT)
-	db (1 << UP) | (1 << RIGHT)
-	db (1 << DOWN) | (1 << LEFT)
-	db (1 << UP) | (1 << LEFT)
+	db DOWN_MASK
+	db UP_MASK
+	db LEFT_MASK
+	db RIGHT_MASK
+	db DOWN_MASK | RIGHT_MASK
+	db UP_MASK | RIGHT_MASK
+	db DOWN_MASK | LEFT_MASK
+	db UP_MASK | LEFT_MASK
 ; 294d
 
 .UpDown:
@@ -2291,7 +2291,7 @@
 	ld a, c
 	cp MUSIC_MAHOGANY_MART
 	jr z, .mahoganymart
-	bit RADIO_TOWER_MUSIC, c
+	bit RADIO_TOWER_MUSIC_F, c
 	jr nz, .radiotower
 	callba Function8b342
 	ld e, c
@@ -2311,7 +2311,7 @@
 .clearedradiotower
 	; the rest of the byte
 	ld a, c
-	and 1 << RADIO_TOWER_MUSIC - 1
+	and RADIO_TOWER_MUSIC - 1
 	ld e, a
 	ld d, 0
 	jr .done
@@ -2374,12 +2374,12 @@
 	push bc
 
 	ld hl, Tilesets
-	ld bc, Tileset01 - Tileset00
+	ld bc, TilesetHeaderEnd - TilesetHeader
 	ld a, [wTileset]
 	call AddNTimes
 
 	ld de, TilesetBank
-	ld bc, Tileset01 - Tileset00
+	ld bc, TilesetHeaderEnd - TilesetHeader
 
 	ld a, BANK(Tilesets)
 	call FarCopyBytes
--- a/home/map_objects.asm
+++ b/home/map_objects.asm
@@ -276,9 +276,7 @@
 	ret
 
 .TimeOfDayValues_191e:
-	db 1 << MORN ; 1
-	db 1 << DAY  ; 2
-	db 1 << NITE ; 4
+	db MORN, DAY, NITE
 
 .check_hour
 	ld hl, MAPOBJECT_HOUR
--- a/items/item_names.asm
+++ b/items/item_names.asm
@@ -1,3 +1,4 @@
+ItemNames::
 	db "MASTER BALL@"
 	db "ULTRA BALL@"
 	db "BRIGHTPOWDER@"
--- a/macros.asm
+++ b/macros.asm
@@ -1,11 +1,9 @@
 INCLUDE "macros/enum.asm"
 INCLUDE "macros/basestats.asm"
-
 INCLUDE "macros/event.asm"
 INCLUDE "macros/sound.asm"
 INCLUDE "macros/text.asm"
 INCLUDE "macros/charmap.asm"
-INCLUDE "macros/move_effect.asm"
 INCLUDE "macros/move_anim.asm"
 INCLUDE "macros/movement.asm"
 INCLUDE "macros/map.asm"
@@ -224,6 +222,7 @@
 ENDM
 
 palettes EQUS "* 8"
+palette EQUS "+ 8 *"
 
 ldpixel: MACRO
 if _NARG >= 5
--- a/macros/event.asm
+++ b/macros/event.asm
@@ -287,9 +287,9 @@
 	db \1 ; time
 	endm
 
-checkmorn EQUS "checktime 1 << MORN"
-checkday  EQUS "checktime 1 << DAY"
-checknite EQUS "checktime 1 << NITE"
+checkmorn EQUS "checktime MORN"
+checkday  EQUS "checktime DAY"
+checknite EQUS "checktime NITE"
 
 	enum checkpoke_command
 checkpoke: macro
--- a/macros/map.asm
+++ b/macros/map.asm
@@ -1,66 +1,96 @@
-map: MACRO
+map: macro
+;\1: map id
 	db GROUP_\1, MAP_\1
-ENDM
+endm
 
-roam_map: MACRO
-; A map and an arbitrary number of some more maps.
+maptrigger: macro
+;\1: script pointer
+	dw \1, 0
+endm
 
-	map \1
-	db  \2
+warp_def: macro
+;\1: y: top to bottom, starts at 0
+;\2: x: left to right, starts at 0
+;\3: warp destination: starts at 1
+;\4: map id: from constants/map_constants.asm
+	db \1, \2, \3
+	map \4
+endm
 
-	rept \2
-	map \3
-	shift
-	endr
+xy_trigger: macro
+;\1: number: controlled by dotrigger/domaptrigger
+;\2: y: top to bottom, starts at 0
+;\3: x: left to right, starts at 0
+;\4: unknown1: $0
+;\5: script pointer
+;\6: unknown2: $0
+;\7: unknown3: $0
+	db \1, \2, \3, \4
+	dw \5
+	db \6, \7
+endm
 
-	db 0
-ENDM
+signpost: macro
+;\1: y: top to bottom, starts at 0
+;\2: x: left to right, starts at 0
+;\3: function: a SIGNPOST_* constant
+;\4: script pointer
+	db \1, \2, \3
+	dw \4
+endm
 
 person_event: macro
-	db \1 ; sprite
-	db \2 + 4 ; y
-	db \3 + 4 ; x
-	db \4 ; movement function
-	dn \5, \6 ; radius: y, x
-	db \7 ; clock_hour
-	db \8 ; clock_daytime
+;\1: sprite: a SPRITE_* constant
+;\2: y: top to bottom, starts at 0
+;\3: x: left to right, starts at 0
+;\4: movement function: a SPRITEMOVEDATA_* constant
+;\5, \6: movement radius: y, x
+;\7: clock hour: ???
+;\8: clock daytime: sum of MORN, DAY, and/or NITE, or 0 for always
+;\9: color: a PAL_NPC_* constant, or 0 for sprite default
+;\10: function: a PERSONTYPE_* constant
+;\11: sight range: applies to PERSONTYPE_TRAINER
+;\12: script pointer
+;\13: event flag: an EVENT_* constant, or 0 for always
+	db \1, \2 + 4, \3 + 4, \4
+	dn \5, \6
+	db \7, \8
 	shift
-	dn \8, \9 ; color_function
+	dn \8, \9
 	shift
-	db \9 ; sight_range
+	db \9
 	shift
-	dw \9 ; pointer
+	dw \9
 	shift
-	dw \9 ; event flag
-	endm
+	dw \9
+endm
 
-signpost: macro
-	db \1 ; y
-	db \2 ; x
-	db \3 ; function
-	dw \4 ; pointer
-	endm
 
-xy_trigger: macro
-	db \1 ; number
-	db \2 ; y
-	db \3 ; x
-	db \4 ; unknown1
-	dw \5 ; script
-	db \6 ; unknown2
-	db \7 ; unknown3
-	endm
+newgroup: macro
+const_value = const_value + 1
+	enum_start 1
+endm
 
-warp_def: macro
-	db \1 ; y
-	db \2 ; x
-	db \3 ; warp_to
-	map \4 ; map
-	endm
+mapgroup: macro
+;\1: map id
+;\2: height: in blocks
+;\3: width: in blocks
+GROUP_\1 EQU const_value
+	enum MAP_\1
+\1_HEIGHT EQU \2
+\1_WIDTH EQU \3
+endm
 
 
-map_header: MACRO
-	; label, tileset, permission, location, music, phone service flag, time of day, fishing group
+map_header: macro
+;\1: map label
+;\2: tileset: a TILESET_* constant
+;\3: permission: TOWN, ROUTE, INDOOR, CAVE, PERM_5, GATE, or DUNGEON
+;\4: location: from constants/landmark_constants.asm
+;\5: music: a MUSIC_* constant
+;\6: phone service flag: 1 to prevent phone calls
+;\7: time of day: a PALETTE_* constant
+;\8: fishing group: a FISHGROUP_* constant
 \1_MapHeader:
 	db BANK(\1_SecondMapHeader), \2, \3
 	dw \1_SecondMapHeader
@@ -67,11 +97,14 @@
 	db \4, \5
 	dn \6, \7
 	db \8
-ENDM
+endm
 
 
-map_header_2: MACRO
-; label, map, border block, connections
+map_header_2: macro
+;\1: map label
+;\2: map id
+;\3: border block
+;\4: connections: sum of NORTH, SOUTH, WEST, and/or EAST, or 0 for none
 \1_SecondMapHeader::
 	db \3
 	db \2_HEIGHT, \2_WIDTH
@@ -81,9 +114,9 @@
 	dw \1_MapScriptHeader
 	dw \1_MapEventHeader
 	db \4
-ENDM
+endm
 
-connection: MACRO
+connection: macro
 if "\1" == "north"
 ;\2: map id
 ;\3: map label (eventually will be rolled into map id)
@@ -151,27 +184,12 @@
 	db 0
 	dw OverworldMap + \2_WIDTH + 7
 endc
+endm
 
-ENDM
 
-mapgroup: MACRO
-GROUP_\1 EQU const_value
-	enum MAP_\1
-\1_HEIGHT EQU \2
-\1_WIDTH EQU \3
-ENDM
-
-newgroup: MACRO
-const_value = const_value + 1
-	enum_start 1
-ENDM
-
-elevfloor: MACRO
-	db \1, \2
-	map \3
-ENDM
-
-itemball: MACRO
+itemball: macro
+;\1: item: from constants/item_constants.asm
+;\2: quantity: default 1
 if _NARG == 2
 	db \1, \2
 else
@@ -179,11 +197,18 @@
 endc
 endm
 
-stonetable: MACRO
+elevfloor: macro
+;\1: floor: a FLOOR_* constant
+;\2: warp destination: starts at 1
+;\3: map id
 	db \1, \2
-	dw \3
-endm
+	map \3
+ENDM
 
-maptrigger: MACRO
-	dw \1, 0
+stonetable: macro
+;\1: warp id
+;\2: person_event id
+;\3: script pointer
+	db \1, \2
+	dw \3
 endm
--- a/macros/move_effect.asm
+++ /dev/null
@@ -1,186 +1,0 @@
-command: macro
-	enum \1_command
-\1 equs "db \1_command"
-endm
-
-	enum_start 1
-
-	command checkturn               ; 01
-	command checkobedience          ; 02
-	command usedmovetext            ; 03
-	command doturn                  ; 04
-	command critical                ; 05
-	command damagestats             ; 06
-	command stab                    ; 07
-	command damagevariation         ; 08
-	command checkhit                ; 09
-	command lowersub                ; 0a
-	command hittargetnosub          ; 0b
-	command raisesub                ; 0c
-	command failuretext             ; 0d
-	command checkfaint              ; 0e
-	command criticaltext            ; 0f
-	command supereffectivetext      ; 10
-	command checkdestinybond        ; 11
-	command buildopponentrage       ; 12
-	command poisontarget            ; 13
-	command sleeptarget             ; 14
-	command draintarget             ; 15
-	command eatdream                ; 16
-	command burntarget              ; 17
-	command freezetarget            ; 18
-	command paralyzetarget          ; 19
-	command selfdestruct            ; 1a
-	command mirrormove              ; 1b
-	command statup                  ; 1c
-	command statdown                ; 1d
-	command payday                  ; 1e
-	command conversion              ; 1f
-	command resetstats              ; 20
-	command storeenergy             ; 21
-	command unleashenergy           ; 22
-	command forceswitch             ; 23
-	command endloop                 ; 24
-	command flinchtarget            ; 25
-	command ohko                    ; 26
-	command recoil                  ; 27
-	command mist                    ; 28
-	command focusenergy             ; 29
-	command confuse                 ; 2a
-	command confusetarget           ; 2b
-	command heal                    ; 2c
-	command transform               ; 2d
-	command screen                  ; 2e
-	command poison                  ; 2f
-	command paralyze                ; 30
-	command substitute              ; 31
-	command rechargenextturn        ; 32
-	command mimic                   ; 33
-	command metronome               ; 34
-	command leechseed               ; 35
-	command splash                  ; 36
-	command disable                 ; 37
-	command cleartext               ; 38
-	command charge                  ; 39
-	command checkcharge             ; 3a
-	command traptarget              ; 3b
-	command effect0x3c              ; 3c
-	command rampage                 ; 3d
-	command checkrampage            ; 3e
-	command constantdamage          ; 3f
-	command counter                 ; 40
-	command encore                  ; 41
-	command painsplit               ; 42
-	command snore                   ; 43
-	command conversion2             ; 44
-	command lockon                  ; 45
-	command sketch                  ; 46
-	command defrostopponent         ; 47
-	command sleeptalk               ; 48
-	command destinybond             ; 49
-	command spite                   ; 4a
-	command falseswipe              ; 4b
-	command healbell                ; 4c
-	command kingsrock               ; 4d
-	command triplekick              ; 4e
-	command kickcounter             ; 4f
-	command thief                   ; 50
-	command arenatrap               ; 51
-	command nightmare               ; 52
-	command defrost                 ; 53
-	command curse                   ; 54
-	command protect                 ; 55
-	command spikes                  ; 56
-	command foresight               ; 57
-	command perishsong              ; 58
-	command startsandstorm          ; 59
-	command endure                  ; 5a
-	command checkcurl               ; 5b
-	command rolloutpower            ; 5c
-	command effect0x5d              ; 5d
-	command furycutter              ; 5e
-	command attract                 ; 5f
-	command happinesspower          ; 60
-	command present                 ; 61
-	command damagecalc              ; 62
-	command frustrationpower        ; 63
-	command safeguard               ; 64
-	command checksafeguard          ; 65
-	command getmagnitude            ; 66
-	command batonpass               ; 67
-	command pursuit                 ; 68
-	command clearhazards            ; 69
-	command healmorn                ; 6a
-	command healday                 ; 6b
-	command healnite                ; 6c
-	command hiddenpower             ; 6d
-	command startrain               ; 6e
-	command startsun                ; 6f
-	command attackup                ; 70
-	command defenseup               ; 71
-	command speedup                 ; 72
-	command specialattackup         ; 73
-	command specialdefenseup        ; 74
-	command accuracyup              ; 75
-	command evasionup               ; 76
-	command attackup2               ; 77
-	command defenseup2              ; 78
-	command speedup2                ; 79
-	command specialattackup2        ; 7a
-	command specialdefenseup2       ; 7b
-	command accuracyup2             ; 7c
-	command evasionup2              ; 7d
-	command attackdown              ; 7e
-	command defensedown             ; 7f
-	command speeddown               ; 80
-	command specialattackdown       ; 81
-	command specialdefensedown      ; 82
-	command accuracydown            ; 83
-	command evasiondown             ; 84
-	command attackdown2             ; 85
-	command defensedown2            ; 86
-	command speeddown2              ; 87
-	command specialattackdown2      ; 88
-	command specialdefensedown2     ; 89
-	command accuracydown2           ; 8a
-	command evasiondown2            ; 8b
-	command statupmessage           ; 8c
-	command statdownmessage         ; 8d
-	command statupfailtext          ; 8e
-	command statdownfailtext        ; 8f
-	command effectchance            ; 90
-	command statdownanim            ; 91
-	command statupanim              ; 92
-	command switchturn              ; 93
-	command fakeout                 ; 94
-	command bellydrum               ; 95
-	command psychup                 ; 96
-	command rage                    ; 97
-	command doubleflyingdamage      ; 98
-	command doubleundergrounddamage ; 99
-	command mirrorcoat              ; 9a
-	command checkfuturesight        ; 9b
-	command futuresight             ; 9c
-	command doubleminimizedamage    ; 9d
-	command skipsuncharge           ; 9e
-	command thunderaccuracy         ; 9f
-	command teleport                ; a0
-	command beatup                  ; a1
-	command ragedamage              ; a2
-	command resettypematchup        ; a3
-	command allstatsup              ; a4
-	command effect0xa5              ; a5
-	command raisesubnoanim          ; a6
-	command lowersubnoanim          ; a7
-	command effect0xa8              ; a8
-	command clearmissdamage         ; a9
-	command movedelay               ; aa
-	command hittarget               ; ab
-	command tristatuschance         ; ac
-	command supereffectivelooptext  ; ad
-	command startloop               ; ae
-	command curl                    ; af
-
-	enum_start -1, -1
-	command endmove
-	command endturn
--- a/macros/pals.asm
+++ b/macros/pals.asm
@@ -1,6 +1,6 @@
 tilepal: MACRO
 ; vram bank, pals
-x = \1 << 3
+x = \1 << OAM_TILE_BANK
 rept (_NARG +- 1) / 2
 	dn (x | PAL_BG_\3), (x | PAL_BG_\2)
 	shift
--- a/main.asm
+++ b/main.asm
@@ -1,5 +1,6 @@
 INCLUDE "includes.asm"
 
+
 SECTION "bank1", ROMX
 
 PlaceWaitingText:: ; 4000
@@ -246,6 +247,7 @@
 ; not used
 	ret
 
+
 SECTION "bank2", ROMX
 
 INCLUDE "engine/player_object.asm"
@@ -253,6 +255,7 @@
 INCLUDE "engine/predef.asm"
 INCLUDE "engine/color.asm"
 
+
 SECTION "bank3", ROMX
 
 CheckTime:: ; c000
@@ -269,10 +272,10 @@
 	ret
 
 TimeOfDayTable: ; c012
-	db MORN, 1 << MORN
-	db DAY,  1 << DAY
-	db NITE, 1 << NITE
-	db NITE, 1 << NITE
+	db MORN_F, MORN
+	db DAY_F,  DAY
+	db NITE_F, NITE
+	db NITE_F, NITE
 	db -1
 
 INCLUDE "engine/specials.asm"
@@ -380,6 +383,7 @@
 	text_jump UnknownText_0x1c5ea8
 	db "@"
 
+
 SECTION "bank4", ROMX
 
 INCLUDE "engine/pack.asm"
@@ -603,6 +607,7 @@
 root	set root+1
 	endr
 
+
 SECTION "bank5", ROMX
 
 INCLUDE "engine/rtc.asm"
@@ -620,26 +625,15 @@
 INCLUDE "event/photo.asm"
 INCLUDE "engine/breeding/egg.asm"
 
-SECTION "Tileset Data 1", ROMX
 
-INCLUDE "tilesets/data_1.asm"
+INCLUDE "tilesets/data.asm"
 
-SECTION "Roofs", ROMX
 
-INCLUDE "tilesets/roofs.asm"
+SECTION "Clock Reset", ROMX
 
-SECTION "Tileset Data 2", ROMX
-
-INCLUDE "tilesets/data_2.asm"
-
-SECTION "bank8", ROMX
-
 INCLUDE "engine/clock_reset.asm"
 
-SECTION "Tileset Data 3", ROMX
 
-INCLUDE "tilesets/data_3.asm"
-
 SECTION "bank9", ROMX
 
 StringBufferPointers:: ; 24000
@@ -1159,6 +1153,7 @@
 	ld b, a
 	ret
 
+
 SECTION "bankA", ROMX
 
 INCLUDE "engine/link.asm"
@@ -1183,6 +1178,7 @@
 DudeBackpic: ; 2bbaa
 INCBIN "gfx/battle/dude.2bpp.lz"
 
+
 SECTION "bankB", ROMX
 
 INCLUDE "battle/trainer_huds.asm"
@@ -1442,7 +1438,7 @@
 
 	ld de, MUSIC_JOHTO_WILD_BATTLE
 	ld a, [TimeOfDay]
-	cp NITE
+	cp NITE_F
 	jr nz, .done
 	ld de, MUSIC_JOHTO_WILD_BATTLE_NIGHT
 	jr .done
@@ -1618,334 +1614,45 @@
 	jr nz, .x2
 	ret
 
-SECTION "Tileset Data 4", ROMX
 
-INCLUDE "tilesets/data_4.asm"
-
 SECTION "Effect Commands", ROMX
 
 INCLUDE "battle/effect_commands.asm"
 
+
 SECTION "Enemy Trainers", ROMX
 
 INCLUDE "battle/ai/items.asm"
-
-AIScoring: ; 38591
 INCLUDE "battle/ai/scoring.asm"
-
-GetTrainerClassName: ; 3952d
-	ld hl, RivalName
-	ld a, c
-	cp RIVAL1
-	jr z, .rival
-
-	ld [CurSpecies], a
-	ld a, TRAINER_NAME
-	ld [wNamedObjectTypeBuffer], a
-	call GetName
-	ld de, StringBuffer1
-	ret
-
-.rival
-	ld de, StringBuffer1
-	push de
-	ld bc, NAME_LENGTH
-	call CopyBytes
-	pop de
-	ret
-
-GetOTName: ; 39550
-	ld hl, OTPlayerName
-	ld a, [wLinkMode]
-	and a
-	jr nz, .ok
-
-	ld hl, RivalName
-	ld a, c
-	cp RIVAL1
-	jr z, .ok
-
-	ld [CurSpecies], a
-	ld a, TRAINER_NAME
-	ld [wNamedObjectTypeBuffer], a
-	call GetName
-	ld hl, StringBuffer1
-
-.ok
-	ld bc, TRAINER_CLASS_NAME_LENGTH
-	ld de, OTClassName
-	push de
-	call CopyBytes
-	pop de
-	ret
-
-GetTrainerAttributes: ; 3957b
-	ld a, [TrainerClass]
-	ld c, a
-	call GetOTName
-	ld a, [TrainerClass]
-	dec a
-	ld hl, TrainerClassAttributes + TRNATTR_ITEM1
-	ld bc, NUM_TRAINER_ATTRIBUTES
-	call AddNTimes
-	ld de, wEnemyTrainerItem1
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	ld a, [hl]
-	ld [wEnemyTrainerBaseReward], a
-	ret
-
+INCLUDE "trainers/read_attributes.asm"
 INCLUDE "trainers/attributes.asm"
-
 INCLUDE "trainers/read_party.asm"
-
 INCLUDE "trainers/trainer_pointers.asm"
-
 INCLUDE "trainers/trainers.asm"
 
+
 SECTION "Battle Core", ROMX
 
 INCLUDE "battle/core.asm"
-
 INCLUDE "battle/effect_command_pointers.asm"
 
+
 SECTION "bank10", ROMX
 
 INCLUDE "engine/pokedex.asm"
-
 INCLUDE "battle/moves/moves.asm"
-
 INCLUDE "engine/evolve.asm"
 
+
 SECTION "bank11", ROMX
 
 INCLUDE "engine/fruit_trees.asm"
-
 INCLUDE "battle/ai/move.asm"
-
-AnimateDexSearchSlowpoke: ; 441cf
-	ld hl, .FrameIDs
-	ld b, 25
-.loop
-	ld a, [hli]
-
-	; Wrap around
-	cp $fe
-	jr nz, .ok
-	ld hl, .FrameIDs
-	ld a, [hli]
-.ok
-
-	ld [wDexSearchSlowpokeFrame], a
-	ld a, [hli]
-	ld c, a
-	push bc
-	push hl
-	call DoDexSearchSlowpokeFrame
-	pop hl
-	pop bc
-	call DelayFrames
-	dec b
-	jr nz, .loop
-	xor a
-	ld [wDexSearchSlowpokeFrame], a
-	call DoDexSearchSlowpokeFrame
-	ld c, 32
-	call DelayFrames
-	ret
-
-.FrameIDs: ; 441fc
-	; frame ID, duration
-	db 0, 7
-	db 1, 7
-	db 2, 7
-	db 3, 7
-	db 4, 7
-	db -2
-
-DoDexSearchSlowpokeFrame: ; 44207
-	ld a, [wDexSearchSlowpokeFrame]
-	ld hl, .SpriteData
-	ld de, Sprites
-.loop
-	ld a, [hli]
-	cp -1
-	ret z
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [wDexSearchSlowpokeFrame]
-	ld b, a
-	add a
-	add b
-	add [hl]
-	inc hl
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	jr .loop
-
-.SpriteData: ; 44228
-	dsprite 11, 0,  9, 0, $00, $00
-	dsprite 11, 0, 10, 0, $01, $00
-	dsprite 11, 0, 11, 0, $02, $00
-	dsprite 12, 0,  9, 0, $10, $00
-	dsprite 12, 0, 10, 0, $11, $00
-	dsprite 12, 0, 11, 0, $12, $00
-	dsprite 13, 0,  9, 0, $20, $00
-	dsprite 13, 0, 10, 0, $21, $00
-	dsprite 13, 0, 11, 0, $22, $00
-	db -1
-
-DisplayDexEntry: ; 4424d
-	call GetPokemonName
-	hlcoord 9, 3
-	call PlaceString ; mon species
-	ld a, [wd265]
-	ld b, a
-	call GetDexEntryPointer
-	ld a, b
-	push af
-	hlcoord 9, 5
-	call FarString ; dex species
-	ld h, b
-	ld l, c
-	push de
-; Print dex number
-	hlcoord 2, 8
-	ld a, $5c ; No
-	ld [hli], a
-	ld a, $5d ; .
-	ld [hli], a
-	ld de, wd265
-	lb bc, PRINTNUM_LEADINGZEROS | 1, 3
-	call PrintNum
-; Check to see if we caught it.  Get out of here if we haven't.
-	ld a, [wd265]
-	dec a
-	call CheckCaughtMon
-	pop hl
-	pop bc
-	ret z
-; Get the height of the Pokemon.
-	ld a, [CurPartySpecies]
-	ld [CurSpecies], a
-	inc hl
-	ld a, b
-	push af
-	push hl
-	call GetFarHalfword
-	ld d, l
-	ld e, h
-	pop hl
-	inc hl
-	inc hl
-	ld a, d
-	or e
-	jr z, .skip_height
-	push hl
-	push de
-	ld hl, sp+$0
-	ld d, h
-	ld e, l
-	hlcoord 12, 7
-	lb bc, 2, PRINTNUM_MONEY | 4
-	call PrintNum
-	hlcoord 14, 7
-	ld [hl], $5e ; ft symbol
-	pop af
-	pop hl
-
-.skip_height
-	pop af
-	push af
-	inc hl
-	push hl
-	dec hl
-	call GetFarHalfword
-	ld d, l
-	ld e, h
-	ld a, e
-	or d
-	jr z, .skip_weight
-	push de
-	ld hl, sp+$0
-	ld d, h
-	ld e, l
-	hlcoord 11, 9
-	lb bc, 2, PRINTNUM_RIGHTALIGN | 5
-	call PrintNum
-	pop de
-
-.skip_weight
-; Page 1
-	lb bc, 5, SCREEN_WIDTH - 2
-	hlcoord 2, 11
-	call ClearBox
-	hlcoord 1, 10
-	ld bc, SCREEN_WIDTH - 1
-	ld a, $61 ; horizontal divider
-	call ByteFill
-	; page number
-	hlcoord 1, 9
-	ld [hl], $55
-	inc hl
-	ld [hl], $55
-	hlcoord 1, 10
-	ld [hl], $56 ; P.
-	inc hl
-	ld [hl], $57 ; 1
-	pop de
-	inc de
-	pop af
-	hlcoord 2, 11
-	push af
-	call FarString
-	pop bc
-	ld a, [wPokedexStatus]
-	or a
-	ret z
-
-; Page 2
-	push bc
-	push de
-	lb bc, 5, SCREEN_WIDTH - 2
-	hlcoord 2, 11
-	call ClearBox
-	hlcoord 1, 10
-	ld bc, SCREEN_WIDTH - 1
-	ld a, $61
-	call ByteFill
-	; page number
-	hlcoord 1, 9
-	ld [hl], $55
-	inc hl
-	ld [hl], $55
-	hlcoord 1, 10
-	ld [hl], $56 ; P.
-	inc hl
-	ld [hl], $58 ; 2
-	pop de
-	inc de
-	pop af
-	hlcoord 2, 11
-	call FarString
-	ret
-
-String_44331: ; 44331
-	db "#@"
-
+INCLUDE "engine/pokedex_2.asm"
 INCLUDE "data/pokedex/entry_pointers.asm"
-
 INCLUDE "engine/mail.asm"
 
+
 SECTION "Crystal Unique", ROMX
 
 INCLUDE "engine/init_gender.asm"
@@ -2153,6 +1860,7 @@
 	ld [hOAMUpdate], a
 	ret
 
+
 SECTION "bank13", ROMX
 
 SwapTextboxPalettes:: ; 4c000
@@ -2244,7 +1952,6 @@
 
 INCLUDE "tilesets/palette_maps.asm"
 
-TileCollisionTable:: ; 4ce1f
 INCLUDE "tilesets/collision.asm"
 
 EmptyAllSRAMBanks: ; 4cf1f
@@ -2366,7 +2073,7 @@
 	ld c, $0
 	ret
 
-INCLUDE "engine/map_triggers.asm"
+INCLUDE "data/map_triggers.asm"
 
 _LoadMapPart:: ; 4d15b
 	ld hl, wMisc
@@ -2586,7 +2293,6 @@
 
 INCLUDE "engine/delete_save_change_clock.asm"
 
-Tilesets::
 INCLUDE "tilesets/tileset_headers.asm"
 
 FlagPredef: ; 4d7c1
@@ -3134,10 +2840,10 @@
 	ld a, [MapNumber]
 	ld c, a
 	cp MAP_POKECENTER_2F
-	jr nz, .NotPokeCenter2F
+	jr nz, .NotPokecenter2F
 	ld a, b
 	cp GROUP_POKECENTER_2F
-	jr nz, .NotPokeCenter2F
+	jr nz, .NotPokecenter2F
 
 	ld a, [BackupMapGroup]
 	ld b, a
@@ -3144,7 +2850,7 @@
 	ld a, [BackupMapNumber]
 	ld c, a
 
-.NotPokeCenter2F:
+.NotPokecenter2F:
 	call GetWorldMapLocation
 	ld b, a
 	ld a, [PlayerGender]
@@ -3201,6 +2907,7 @@
 	ret
 
 INCLUDE "engine/search2.asm"
+
 INCLUDE "engine/stats_screen.asm"
 
 CatchTutorial:: ; 4e554
@@ -3412,47 +3119,8 @@
 	ld a, [hl]
 	ret
 
-MaleTrainers: ; 4e95d
-	db BURGLAR
-	db YOUNGSTER
-	db SCHOOLBOY
-	db BIRD_KEEPER
-	db POKEMANIAC
-	db GENTLEMAN
-	db BUG_CATCHER
-	db FISHER
-	db SWIMMERM
-	db SAILOR
-	db SUPER_NERD
-	db GUITARIST
-	db HIKER
-	db FIREBREATHER
-	db BLACKBELT_T
-	db PSYCHIC_T
-	db CAMPER
-	db COOLTRAINERM
-	db BOARDER
-	db JUGGLER
-	db POKEFANM
-	db OFFICER
-	db SAGE
-	db BIKER
-	db SCIENTIST
-MaleTrainersEnd:
+INCLUDE "trainers/gendered_trainers.asm"
 
-FemaleTrainers: ; 4e976
-	db MEDIUM
-	db LASS
-	db BEAUTY
-	db SKIER
-	db TEACHER
-	db SWIMMERF
-	db PICNICKER
-	db KIMONO_GIRL
-	db POKEFANF
-	db COOLTRAINERF
-FemaleTrainersEnd:
-
 INCLUDE "battle/sliding_intro.asm"
 
 Mobile_PrintOpponentBattleMessage: ; 4ea0a
@@ -3538,6 +3206,7 @@
 
 INCLUDE "event/poke_seer.asm"
 
+
 SECTION "bank14", ROMX
 
 INCLUDE "engine/party_menu.asm"
@@ -3972,8 +3641,8 @@
 	push bc
 	ld a, [CurPartySpecies]
 	dec a
-	ld hl, BaseData + BaseGender - CurBaseData
-	ld bc, BaseData1 - BaseData
+	ld hl, BaseData + BASE_GENDER
+	ld bc, BASE_DATA_SIZE
 	call AddNTimes
 	pop bc
 
@@ -4474,26 +4143,8 @@
 	ld [hMultiplier], a
 	jp Multiply
 
-GrowthRates: ; 50efa
+INCLUDE "data/growth_rates.asm"
 
-growth_rate: MACRO
-; [1]/[2]*n**3 + [3]*n**2 + [4]*n - [5]
-	dn \1, \2
-	if \3 & $80 ; signed
-		db -\3 | $80
-	else
-		db \3
-	endc
-	db \4, \5
-ENDM
-
-	growth_rate 1, 1,   0,   0,   0 ; Medium Fast
-	growth_rate 3, 4,  10,   0,  30 ; Slightly Fast
-	growth_rate 3, 4,  20,   0,  70 ; Slightly Slow
-	growth_rate 6, 5, -15, 100, 140 ; Medium Slow
-	growth_rate 4, 5,   0,   0,   0 ; Fast
-	growth_rate 5, 4,   0,   0,   0 ; Slow
-
 _SwitchPartyMons:
 	ld a, [wd0e3]
 	dec a
@@ -4641,11 +4292,11 @@
 	ret
 
 INCLUDE "gfx/load_pics.asm"
+
 INCLUDE "engine/move_mon_wo_mail.asm"
-BaseData::
+
 INCLUDE "data/base_stats.asm"
 
-PokemonNames::
 INCLUDE "data/pokemon_names.asm"
 
 Unknown_53d84: ; unreferenced
@@ -4664,33 +4315,30 @@
 
 UnknownEggPic:: ; 53d9c
 ; Another egg pic. This is shifted up a few pixels.
-INCBIN "gfx/misc/unknown_egg.2bpp.lz"
+INCBIN "gfx/unknown/unknown_egg.2bpp.lz"
 
-SECTION "bank19", ROMX
 
+SECTION "Crystal Phone Text", ROMX
+
 INCLUDE "text/phone/extra.asm"
 
+
 SECTION "bank20", ROMX
 
 INCLUDE "engine/player_movement.asm"
-
 INCLUDE "engine/engine_flags.asm"
-
 INCLUDE "engine/variables.asm"
-
-BattleText::
 INCLUDE "text/battle.asm"
-
 INCLUDE "engine/debug.asm"
 
+
 SECTION "bank21", ROMX
 
 INCLUDE "engine/printer.asm"
-
 INCLUDE "battle/anim_gfx.asm"
-
 INCLUDE "event/halloffame.asm"
 
+
 SECTION "bank22", ROMX
 
 INCLUDE "event/kurt.asm"
@@ -4969,6 +4617,7 @@
 INCLUDE "event/battle_tower.asm"
 INCLUDE "misc/mobile_22_2.asm"
 
+
 SECTION "bank23", ROMX
 
 Predef35: ; 8c000
@@ -4995,23 +4644,24 @@
 	ret
 
 INCLUDE "engine/sprites.asm"
-
 INCLUDE "engine/mon_icons.asm"
 
+
 SECTION "bank24", ROMX
 
 INCLUDE "engine/phone.asm"
 INCLUDE "engine/timeset.asm"
 INCLUDE "engine/pokegear.asm"
-
 INCLUDE "engine/fish.asm"
 INCLUDE "engine/slot_machine.asm"
 
+
 SECTION "Phone Engine", ROMX
 
 INCLUDE "engine/more_phone_scripts.asm"
 INCLUDE "engine/buena_phone_scripts.asm"
 
+
 SECTION "Phone Text", ROMX
 
 INCLUDE "text/phone/anthony_overworld.asm"
@@ -5032,22 +4682,17 @@
 INCLUDE "text/phone/parry_overworld.asm"
 INCLUDE "text/phone/erin_overworld.asm"
 
-SECTION "Tileset Data 5", ROMX
 
-INCLUDE "tilesets/data_5.asm"
-
 SECTION "bank2E", ROMX
 
 INCLUDE "engine/events_3.asm"
-
 INCLUDE "engine/radio.asm"
-
 INCLUDE "gfx/mail.asm"
 
+
 SECTION "bank2F", ROMX
 
 INCLUDE "engine/std_scripts.asm"
-
 INCLUDE "engine/phone_scripts.asm"
 
 TalkToTrainerScript:: ; 0xbe66a
@@ -5082,18 +4727,12 @@
 AlreadyBeatenTrainerScript:
 	scripttalkafter
 
-SECTION "bank30", ROMX
+INCLUDE "gfx/sprites.asm"
 
-INCLUDE "gfx/overworld/sprites_1.asm"
 
-SECTION "bank31", ROMX
-
-INCLUDE "gfx/overworld/sprites_2.asm"
-
 SECTION "bank32", ROMX
 
 INCLUDE "battle/bg_effects.asm"
-
 INCLUDE "battle/anims.asm"
 
 LoadPoisonBGPals: ; cbcdd
@@ -5148,10 +4787,10 @@
 TheEndGFX:: ; cbd2e
 INCBIN "gfx/credits/theend.2bpp"
 
+
 SECTION "bank33", ROMX
 
 DisplayCaughtContestMonStats: ; cc000
-
 	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
@@ -5260,58 +4899,38 @@
 	ret
 
 INCLUDE "battle/anim_commands.asm"
-
 INCLUDE "battle/anim_objects.asm"
 
+
 SECTION "Pic Animations 1", ROMX
 
 INCLUDE "gfx/pics/animation.asm"
-
-; Pic animations are assembled in 3 parts:
-
-; Top-level animations:
-; 	frame #, duration: Frame 0 is the original pic (no change)
-;	setrepeat #:       Sets the number of times to repeat
-; 	dorepeat #:        Repeats from command # (starting from 0)
-; 	end
-
-; Bitmasks:
-;	Layered over the pic to designate affected tiles
-
-; Frame definitions:
-;	first byte is the bitmask used for this frame
-;	following bytes are tile ids mapped to each bit in the mask
-
-; Main animations (played everywhere)
 INCLUDE "gfx/pics/anim_pointers.asm"
 INCLUDE "gfx/pics/anims.asm"
-
-; Extra animations, appended to the main animation
-; Used in the status screen (blinking, tail wags etc.)
 INCLUDE "gfx/pics/extra_pointers.asm"
 INCLUDE "gfx/pics/extras.asm"
-
-; Unown has its own animation data despite having an entry in the main tables
 INCLUDE "gfx/pics/unown_anim_pointers.asm"
 INCLUDE "gfx/pics/unown_anims.asm"
 INCLUDE "gfx/pics/unown_extra_pointers.asm"
 INCLUDE "gfx/pics/unown_extras.asm"
-
-; Bitmasks
 INCLUDE "gfx/pics/bitmask_pointers.asm"
 INCLUDE "gfx/pics/bitmasks.asm"
 INCLUDE "gfx/pics/unown_bitmask_pointers.asm"
 INCLUDE "gfx/pics/unown_bitmasks.asm"
 
+
 SECTION "Pic Animations 2", ROMX
 
 INCLUDE "gfx/pics/frame_pointers.asm"
 INCLUDE "gfx/pics/kanto_frames.asm"
 
-SECTION "bank36", ROMX
 
-FontInversed: INCBIN "gfx/font/font_inversed.1bpp"
+SECTION "Font Inversed", ROMX
 
+FontInversed:
+INCBIN "gfx/font/font_inversed.1bpp"
+
+
 SECTION "Pic Animations 3", ROMX
 
 INCLUDE "gfx/pics/johto_frames.asm"
@@ -5318,10 +4937,7 @@
 INCLUDE "gfx/pics/unown_frame_pointers.asm"
 INCLUDE "gfx/pics/unown_frames.asm"
 
-SECTION "Tileset Data 6", ROMX
 
-INCLUDE "tilesets/data_6.asm"
-
 SECTION "bank38", ROMX
 
 RotateUnownFrontpic: ; e0000
@@ -5449,6 +5065,7 @@
 INCLUDE "engine/dummy_game.asm"
 INCLUDE "engine/billspc.asm"
 
+
 SECTION "bank39", ROMX
 
 CopyrightGFX:: ; e4000
@@ -5457,6 +5074,7 @@
 INCLUDE "engine/options_menu.asm"
 INCLUDE "engine/crystal_intro.asm"
 
+
 SECTION "bank3E", ROMX
 
 INCLUDE "gfx/font.asm"
@@ -5463,33 +5081,29 @@
 INCLUDE "engine/time_capsule/conversion.asm"
 INCLUDE "engine/unowndex.asm"
 INCLUDE "event/magikarp.asm"
-
 INCLUDE "battle/hidden_power.asm"
-
 INCLUDE "battle/misc.asm"
 
+
 SECTION "bank3F", ROMX
 
 INCLUDE "tilesets/animations.asm"
-
 INCLUDE "engine/npctrade.asm"
-
 INCLUDE "event/mom_phone.asm"
 
-SECTION "bank40", ROMX
 
+SECTION "mobile_40", ROMX
+
 INCLUDE "misc/mobile_40.asm"
 
+
 SECTION "bank41", ROMX
 
 INCLUDE "misc/gfx_41.asm"
 
 INCLUDE "engine/warp_connection.asm"
-
 INCLUDE "engine/mysterygift.asm"
-
 INCLUDE "battle/used_move_text.asm"
-
 INCLUDE "misc/mobile_41.asm"
 
 LoadOverworldFont:: ; 106594
@@ -5509,41 +5123,47 @@
 .space
 INCBIN "gfx/font/space.2bpp"
 
-SECTION "bank42", ROMX
 
+SECTION "mobile_42", ROMX
+
 INCLUDE "misc/mobile_42.asm"
 
+
 SECTION "Intro Logo", ROMX
 
 IntroLogoGFX: ; 109407
 INCBIN "gfx/intro/logo.2bpp.lz"
 
+
 SECTION "bank43", ROMX
 
 INCLUDE "misc/unused_title.asm"
-
 INCLUDE "engine/title.asm"
-
 INCLUDE "misc/mobile_45.asm"
 INCLUDE "misc/mobile_46.asm"
 
-SECTION "bank47", ROMX
 
+SECTION "battle_tower_47", ROMX
+
 INCLUDE "misc/battle_tower_47.asm"
 
+
 SECTION "bank5B", ROMX
 
 INCLUDE "misc/mobile_5b.asm"
 INCLUDE "engine/link_trade.asm"
 
-SECTION "bank5C", ROMX
 
+SECTION "mobile_5c", ROMX
+
 INCLUDE "misc/mobile_5c.asm"
 
-SECTION "bank5D", ROMX
 
-INCLUDE "text/phone/extra3.asm"
+SECTION "Crystal Phone Text 2", ROMX
 
+INCLUDE "text/phone/extra2.asm"
+
+
 SECTION "bank5E", ROMX
 
 _UpdateBattleHUDs:
@@ -5558,6 +5178,7 @@
 
 INCLUDE "misc/mobile_5f.asm"
 
+
 SECTION "Common Text 1", ROMX
 
 INCLUDE "text/stdtext.asm"
@@ -5573,25 +5194,23 @@
 INCLUDE "text/phone/ralph_overworld.asm"
 INCLUDE "text/phone/liz_overworld.asm"
 
-SECTION "bank6D", ROMX
 
+SECTION "Special Phone Text", ROMX
+
 INCLUDE "text/phone/mom.asm"
 INCLUDE "text/phone/bill.asm"
 INCLUDE "text/phone/elm.asm"
 INCLUDE "text/phone/trainers1.asm"
 
+
 SECTION "bank72", ROMX
 
-ItemNames::
 INCLUDE "items/item_names.asm"
-
 INCLUDE "items/item_descriptions.asm"
-
-MoveNames::
 INCLUDE "battle/move_names.asm"
-
 INCLUDE "engine/landmarks.asm"
 
+
 SECTION "bank77", ROMX
 
 UnownFont: ; 1dc000
@@ -5605,10 +5224,7 @@
 MobileLvIcon: ; 1dc599
 INCBIN "gfx/mobile/lv.1bpp"
 
-SECTION "Tileset Data 7", ROMX
 
-INCLUDE "tilesets/data_7.asm"
-
 SECTION "bank77_2", ROMX
 
 Function1dd6a9: ; 1dd6a9
@@ -6040,18 +5656,17 @@
 	jr nz, .loop
 	ret
 
-SECTION "Tileset Data 8", ROMX
 
-INCLUDE "tilesets/data_8.asm"
+SECTION "Battle Tower Text", ROMX
 
-SECTION "bank7B", ROMX
-
 INCLUDE "text/battle_tower.asm"
 
-SECTION "bank7C", ROMX
 
+SECTION "Battle Tower Trainer Data", ROMX
+
 INCLUDE "data/battle_tower_2.asm"
 
+
 SECTION "bank7D", ROMX
 
 	db $cc, $6b, $1e ; XXX
@@ -6097,12 +5712,15 @@
 .unknown_data
 INCBIN "unknown/1f5db4.bin"
 
+
 SECTION "bank7E", ROMX
 
-INCLUDE "data/battle_tower.asm"
-INCLUDE "data/odd_eggs.asm"
+INCLUDE "engine/battle_tower.asm"
+INCLUDE "engine/odd_eggs.asm"
 
+
 SECTION "bank7F", ROMX
+
 
 SECTION "stadium2", ROMX
 
--- a/maps.asm
+++ b/maps.asm
@@ -7,23 +7,9 @@
 INCLUDE "maps/second_map_headers.asm"
 
 
+INCLUDE "maps/blockdata.asm"
 
-SECTION "Map Blockdata 1", ROMX
 
-INCLUDE "maps/blockdata_1.asm"
-
-
-SECTION "Map Blockdata 2", ROMX
-
-INCLUDE "maps/blockdata_2.asm"
-
-
-SECTION "Map Blockdata 3", ROMX
-
-INCLUDE "maps/blockdata_3.asm"
-
-
-
 SECTION "Map Scripts 1", ROMX
 
 INCLUDE "maps/GoldenrodGym.asm"
@@ -47,21 +33,21 @@
 
 SECTION "Map Scripts 2", ROMX
 
-INCLUDE "maps/RuinsofAlphOutside.asm"
-INCLUDE "maps/RuinsofAlphHoOhChamber.asm"
-INCLUDE "maps/RuinsofAlphKabutoChamber.asm"
-INCLUDE "maps/RuinsofAlphOmanyteChamber.asm"
-INCLUDE "maps/RuinsofAlphAerodactylChamber.asm"
-INCLUDE "maps/RuinsofAlphInnerChamber.asm"
-INCLUDE "maps/RuinsofAlphResearchCenter.asm"
-INCLUDE "maps/RuinsofAlphHoOhItemRoom.asm"
-INCLUDE "maps/RuinsofAlphKabutoItemRoom.asm"
-INCLUDE "maps/RuinsofAlphOmanyteItemRoom.asm"
-INCLUDE "maps/RuinsofAlphAerodactylItemRoom.asm"
-INCLUDE "maps/RuinsofAlphHoOhWordRoom.asm"
-INCLUDE "maps/RuinsofAlphKabutoWordRoom.asm"
-INCLUDE "maps/RuinsofAlphOmanyteWordRoom.asm"
-INCLUDE "maps/RuinsofAlphAerodactylWordRoom.asm"
+INCLUDE "maps/RuinsOfAlphOutside.asm"
+INCLUDE "maps/RuinsOfAlphHoOhChamber.asm"
+INCLUDE "maps/RuinsOfAlphKabutoChamber.asm"
+INCLUDE "maps/RuinsOfAlphOmanyteChamber.asm"
+INCLUDE "maps/RuinsOfAlphAerodactylChamber.asm"
+INCLUDE "maps/RuinsOfAlphInnerChamber.asm"
+INCLUDE "maps/RuinsOfAlphResearchCenter.asm"
+INCLUDE "maps/RuinsOfAlphHoOhItemRoom.asm"
+INCLUDE "maps/RuinsOfAlphKabutoItemRoom.asm"
+INCLUDE "maps/RuinsOfAlphOmanyteItemRoom.asm"
+INCLUDE "maps/RuinsOfAlphAerodactylItemRoom.asm"
+INCLUDE "maps/RuinsOfAlphHoOhWordRoom.asm"
+INCLUDE "maps/RuinsOfAlphKabutoWordRoom.asm"
+INCLUDE "maps/RuinsOfAlphOmanyteWordRoom.asm"
+INCLUDE "maps/RuinsOfAlphAerodactylWordRoom.asm"
 INCLUDE "maps/UnionCave1F.asm"
 INCLUDE "maps/UnionCaveB1F.asm"
 INCLUDE "maps/UnionCaveB2F.asm"
@@ -88,7 +74,7 @@
 INCLUDE "maps/RadioTower5F.asm"
 INCLUDE "maps/OlivineLighthouse5F.asm"
 INCLUDE "maps/OlivineLighthouse6F.asm"
-INCLUDE "maps/GoldenrodPokeCenter1F.asm"
+INCLUDE "maps/GoldenrodPokecenter1F.asm"
 INCLUDE "maps/GoldenrodPokeComCenter2FMobile.asm"
 INCLUDE "maps/IlexForestAzaleaGate.asm"
 INCLUDE "maps/Route34IlexForestGate.asm"
@@ -102,14 +88,14 @@
 INCLUDE "maps/VioletGym.asm"
 INCLUDE "maps/EarlsPokemonAcademy.asm"
 INCLUDE "maps/VioletNicknameSpeechHouse.asm"
-INCLUDE "maps/VioletPokeCenter1F.asm"
+INCLUDE "maps/VioletPokecenter1F.asm"
 INCLUDE "maps/VioletOnixTradeHouse.asm"
-INCLUDE "maps/Route32RuinsofAlphGate.asm"
-INCLUDE "maps/Route32PokeCenter1F.asm"
-INCLUDE "maps/Route35Goldenrodgate.asm"
-INCLUDE "maps/Route35NationalParkgate.asm"
-INCLUDE "maps/Route36RuinsofAlphgate.asm"
-INCLUDE "maps/Route36NationalParkgate.asm"
+INCLUDE "maps/Route32RuinsOfAlphGate.asm"
+INCLUDE "maps/Route32Pokecenter1F.asm"
+INCLUDE "maps/Route35GoldenrodGate.asm"
+INCLUDE "maps/Route35NationalParkGate.asm"
+INCLUDE "maps/Route36RuinsOfAlphGate.asm"
+INCLUDE "maps/Route36NationalParkGate.asm"
 
 
 SECTION "Map Scripts 6", ROMX
@@ -124,7 +110,7 @@
 
 SECTION "Map Scripts 7", ROMX
 
-INCLUDE "maps/LakeofRage.asm"
+INCLUDE "maps/LakeOfRage.asm"
 INCLUDE "maps/CeladonDeptStore1F.asm"
 INCLUDE "maps/CeladonDeptStore2F.asm"
 INCLUDE "maps/CeladonDeptStore3F.asm"
@@ -137,8 +123,8 @@
 INCLUDE "maps/CeladonMansion3F.asm"
 INCLUDE "maps/CeladonMansionRoof.asm"
 INCLUDE "maps/CeladonMansionRoofHouse.asm"
-INCLUDE "maps/CeladonPokeCenter1F.asm"
-INCLUDE "maps/CeladonPokeCenter2FBeta.asm"
+INCLUDE "maps/CeladonPokecenter1F.asm"
+INCLUDE "maps/CeladonPokecenter2FBeta.asm"
 INCLUDE "maps/CeladonGameCorner.asm"
 INCLUDE "maps/CeladonGameCornerPrizeRoom.asm"
 INCLUDE "maps/CeladonGym.asm"
@@ -203,8 +189,8 @@
 INCLUDE "maps/IcePathB2FMahoganySide.asm"
 INCLUDE "maps/IcePathB2FBlackthornSide.asm"
 INCLUDE "maps/IcePathB3F.asm"
-INCLUDE "maps/LavenderPokeCenter1F.asm"
-INCLUDE "maps/LavenderPokeCenter2FBeta.asm"
+INCLUDE "maps/LavenderPokecenter1F.asm"
+INCLUDE "maps/LavenderPokecenter2FBeta.asm"
 INCLUDE "maps/MrFujisHouse.asm"
 INCLUDE "maps/LavenderTownSpeechHouse.asm"
 INCLUDE "maps/LavenderNameRater.asm"
@@ -219,7 +205,7 @@
 
 INCLUDE "maps/EcruteakHouse.asm"
 INCLUDE "maps/WiseTriosRoom.asm"
-INCLUDE "maps/EcruteakPokeCenter1F.asm"
+INCLUDE "maps/EcruteakPokecenter1F.asm"
 INCLUDE "maps/EcruteakLugiaSpeechHouse.asm"
 INCLUDE "maps/DanceTheatre.asm"
 INCLUDE "maps/EcruteakMart.asm"
@@ -230,8 +216,8 @@
 INCLUDE "maps/TrainerHouse1F.asm"
 INCLUDE "maps/TrainerHouseB1F.asm"
 INCLUDE "maps/ViridianMart.asm"
-INCLUDE "maps/ViridianPokeCenter1F.asm"
-INCLUDE "maps/ViridianPokeCenter2FBeta.asm"
+INCLUDE "maps/ViridianPokecenter1F.asm"
+INCLUDE "maps/ViridianPokecenter2FBeta.asm"
 INCLUDE "maps/Route2NuggetSpeechHouse.asm"
 INCLUDE "maps/Route2Gate.asm"
 INCLUDE "maps/VictoryRoadGate.asm"
@@ -239,7 +225,7 @@
 
 SECTION "Map Scripts 12", ROMX
 
-INCLUDE "maps/OlivinePokeCenter1F.asm"
+INCLUDE "maps/OlivinePokecenter1F.asm"
 INCLUDE "maps/OlivineGym.asm"
 INCLUDE "maps/OlivineTimsHouse.asm"
 INCLUDE "maps/OlivineHouseBeta.asm"
@@ -252,7 +238,7 @@
 INCLUDE "maps/Route39Farmhouse.asm"
 INCLUDE "maps/ManiasHouse.asm"
 INCLUDE "maps/CianwoodGym.asm"
-INCLUDE "maps/CianwoodPokeCenter1F.asm"
+INCLUDE "maps/CianwoodPokecenter1F.asm"
 INCLUDE "maps/CianwoodPharmacy.asm"
 INCLUDE "maps/CianwoodCityPhotoStudio.asm"
 INCLUDE "maps/CianwoodLugiaSpeechHouse.asm"
@@ -267,7 +253,7 @@
 
 SECTION "Map Scripts 13", ROMX
 
-INCLUDE "maps/IndigoPlateauPokeCenter1F.asm"
+INCLUDE "maps/IndigoPlateauPokecenter1F.asm"
 INCLUDE "maps/WillsRoom.asm"
 INCLUDE "maps/KogasRoom.asm"
 INCLUDE "maps/BrunosRoom.asm"
@@ -300,19 +286,19 @@
 INCLUDE "maps/CeruleanGymBadgeSpeechHouse.asm"
 INCLUDE "maps/CeruleanPoliceStation.asm"
 INCLUDE "maps/CeruleanTradeSpeechHouse.asm"
-INCLUDE "maps/CeruleanPokeCenter1F.asm"
-INCLUDE "maps/CeruleanPokeCenter2FBeta.asm"
+INCLUDE "maps/CeruleanPokecenter1F.asm"
+INCLUDE "maps/CeruleanPokecenter2FBeta.asm"
 INCLUDE "maps/CeruleanGym.asm"
 INCLUDE "maps/CeruleanMart.asm"
-INCLUDE "maps/Route10PokeCenter1F.asm"
-INCLUDE "maps/Route10PokeCenter2FBeta.asm"
+INCLUDE "maps/Route10Pokecenter1F.asm"
+INCLUDE "maps/Route10Pokecenter2FBeta.asm"
 INCLUDE "maps/PowerPlant.asm"
 INCLUDE "maps/BillsHouse.asm"
 INCLUDE "maps/FightingDojo.asm"
 INCLUDE "maps/SaffronGym.asm"
 INCLUDE "maps/SaffronMart.asm"
-INCLUDE "maps/SaffronPokeCenter1F.asm"
-INCLUDE "maps/SaffronPokeCenter2FBeta.asm"
+INCLUDE "maps/SaffronPokecenter1F.asm"
+INCLUDE "maps/SaffronPokecenter2FBeta.asm"
 INCLUDE "maps/MrPsychicsHouse.asm"
 INCLUDE "maps/SaffronTrainStation.asm"
 INCLUDE "maps/SilphCo1F.asm"
@@ -344,7 +330,7 @@
 INCLUDE "maps/DragonsDenB1F.asm"
 INCLUDE "maps/DragonShrine.asm"
 INCLUDE "maps/TohjoFalls.asm"
-INCLUDE "maps/AzaleaPokeCenter1F.asm"
+INCLUDE "maps/AzaleaPokecenter1F.asm"
 INCLUDE "maps/CharcoalKiln.asm"
 INCLUDE "maps/AzaleaMart.asm"
 INCLUDE "maps/KurtsHouse.asm"
@@ -356,8 +342,8 @@
 INCLUDE "maps/MahoganyTown.asm"
 INCLUDE "maps/Route32.asm"
 INCLUDE "maps/VermilionHouseFishingSpeechHouse.asm"
-INCLUDE "maps/VermilionPokeCenter1F.asm"
-INCLUDE "maps/VermilionPokeCenter2FBeta.asm"
+INCLUDE "maps/VermilionPokecenter1F.asm"
+INCLUDE "maps/VermilionPokecenter2FBeta.asm"
 INCLUDE "maps/PokemonFanClub.asm"
 INCLUDE "maps/VermilionMagnetTrainSpeechHouse.asm"
 INCLUDE "maps/VermilionMart.asm"
@@ -365,7 +351,7 @@
 INCLUDE "maps/VermilionGym.asm"
 INCLUDE "maps/Route6SaffronGate.asm"
 INCLUDE "maps/Route6UndergroundEntrance.asm"
-INCLUDE "maps/PokeCenter2F.asm"
+INCLUDE "maps/Pokecenter2F.asm"
 INCLUDE "maps/TradeCenter.asm"
 INCLUDE "maps/Colosseum.asm"
 INCLUDE "maps/TimeCapsule.asm"
@@ -382,18 +368,18 @@
 INCLUDE "maps/BlackthornDragonSpeechHouse.asm"
 INCLUDE "maps/BlackthornEmysHouse.asm"
 INCLUDE "maps/BlackthornMart.asm"
-INCLUDE "maps/BlackthornPokeCenter1F.asm"
+INCLUDE "maps/BlackthornPokecenter1F.asm"
 INCLUDE "maps/MoveDeletersHouse.asm"
 INCLUDE "maps/FuchsiaMart.asm"
 INCLUDE "maps/SafariZoneMainOffice.asm"
 INCLUDE "maps/FuchsiaGym.asm"
 INCLUDE "maps/FuchsiaBillSpeechHouse.asm"
-INCLUDE "maps/FuchsiaPokeCenter1F.asm"
-INCLUDE "maps/FuchsiaPokeCenter2FBeta.asm"
+INCLUDE "maps/FuchsiaPokecenter1F.asm"
+INCLUDE "maps/FuchsiaPokecenter2FBeta.asm"
 INCLUDE "maps/SafariZoneWardensHome.asm"
 INCLUDE "maps/Route15FuchsiaGate.asm"
 INCLUDE "maps/CherrygroveMart.asm"
-INCLUDE "maps/CherrygrovePokeCenter1F.asm"
+INCLUDE "maps/CherrygrovePokecenter1F.asm"
 INCLUDE "maps/CherrygroveGymSpeechHouse.asm"
 INCLUDE "maps/GuideGentsHouse.asm"
 INCLUDE "maps/CherrygroveEvolutionSpeechHouse.asm"
@@ -409,10 +395,10 @@
 INCLUDE "maps/SaffronCity.asm"
 INCLUDE "maps/MahoganyRedGyaradosSpeechHouse.asm"
 INCLUDE "maps/MahoganyGym.asm"
-INCLUDE "maps/MahoganyPokeCenter1F.asm"
+INCLUDE "maps/MahoganyPokecenter1F.asm"
 INCLUDE "maps/Route42EcruteakGate.asm"
-INCLUDE "maps/LakeofRageHiddenPowerHouse.asm"
-INCLUDE "maps/LakeofRageMagikarpHouse.asm"
+INCLUDE "maps/LakeOfRageHiddenPowerHouse.asm"
+INCLUDE "maps/LakeOfRageMagikarpHouse.asm"
 INCLUDE "maps/Route43MahoganyGate.asm"
 INCLUDE "maps/Route43Gate.asm"
 INCLUDE "maps/RedsHouse1F.asm"
@@ -443,8 +429,8 @@
 INCLUDE "maps/PewterNidoranSpeechHouse.asm"
 INCLUDE "maps/PewterGym.asm"
 INCLUDE "maps/PewterMart.asm"
-INCLUDE "maps/PewterPokeCenter1F.asm"
-INCLUDE "maps/PewterPokeCenter2FBeta.asm"
+INCLUDE "maps/PewterPokecenter1F.asm"
+INCLUDE "maps/PewterPokecenter2FBeta.asm"
 INCLUDE "maps/PewterSnoozeSpeechHouse.asm"
 
 
@@ -474,8 +460,8 @@
 INCLUDE "maps/Route15.asm"
 INCLUDE "maps/VermilionCity.asm"
 INCLUDE "maps/Route9.asm"
-INCLUDE "maps/CinnabarPokeCenter1F.asm"
-INCLUDE "maps/CinnabarPokeCenter2FBeta.asm"
+INCLUDE "maps/CinnabarPokecenter1F.asm"
+INCLUDE "maps/CinnabarPokecenter2FBeta.asm"
 INCLUDE "maps/Route19FuchsiaGate.asm"
 INCLUDE "maps/SeafoamGym.asm"
 
@@ -502,7 +488,7 @@
 INCLUDE "maps/Route4.asm"
 INCLUDE "maps/Route10South.asm"
 INCLUDE "maps/Route23.asm"
-INCLUDE "maps/SilverCavePokeCenter1F.asm"
+INCLUDE "maps/SilverCavePokecenter1F.asm"
 INCLUDE "maps/Route28FamousSpeechHouse.asm"
 
 
--- a/maps/AzaleaGym.asm
+++ b/maps/AzaleaGym.asm
@@ -14,7 +14,7 @@
 .MapCallbacks:
 	db 0
 
-BugsyScript:
+AzaleaGymBugsyScript:
 	faceplayer
 	opentext
 	checkevent EVENT_BEAT_BUGSY
@@ -380,10 +380,10 @@
 
 .PersonEvents:
 	db 7
-	person_event SPRITE_BUGSY, 7, 5, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, BugsyScript, -1
-	person_event SPRITE_BUG_CATCHER, 3, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 2, TrainerBug_catcherbenny, -1
-	person_event SPRITE_BUG_CATCHER, 8, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 3, TrainerBug_catcherAl, -1
-	person_event SPRITE_BUG_CATCHER, 2, 0, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 3, TrainerBug_catcherJosh, -1
-	person_event SPRITE_TWIN, 10, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerTwinsAmyandmay1, -1
-	person_event SPRITE_TWIN, 10, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerTwinsAmyandmay2, -1
-	person_event SPRITE_GYM_GUY, 13, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, AzaleaGymGuyScript, -1
+	person_event SPRITE_BUGSY, 7, 5, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, AzaleaGymBugsyScript, -1
+	person_event SPRITE_BUG_CATCHER, 3, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 2, TrainerBug_catcherbenny, -1
+	person_event SPRITE_BUG_CATCHER, 8, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 3, TrainerBug_catcherAl, -1
+	person_event SPRITE_BUG_CATCHER, 2, 0, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 3, TrainerBug_catcherJosh, -1
+	person_event SPRITE_TWIN, 10, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 1, TrainerTwinsAmyandmay1, -1
+	person_event SPRITE_TWIN, 10, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 1, TrainerTwinsAmyandmay2, -1
+	person_event SPRITE_GYM_GUY, 13, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, AzaleaGymGuyScript, -1
--- a/maps/AzaleaMart.asm
+++ b/maps/AzaleaMart.asm
@@ -10,19 +10,19 @@
 .MapCallbacks:
 	db 0
 
-ClerkScript_0x18e040:
+AzaleaMartClerkScript:
 	opentext
 	pokemart MARTTYPE_STANDARD, MART_AZALEA
 	closetext
 	end
 
-CooltrainerMScript_0x18e047:
-	jumptextfaceplayer UnknownText_0x18e04d
+AzaleaMartCooltrainerMScript:
+	jumptextfaceplayer AzaleaMartCooltrainerMText
 
-BugCatcherScript_0x18e04a:
-	jumptextfaceplayer UnknownText_0x18e0b6
+AzaleaMartBugCatcherScript:
+	jumptextfaceplayer AzaleaMartBugCatcherText
 
-UnknownText_0x18e04d:
+AzaleaMartCooltrainerMText:
 	text "There's no GREAT"
 	line "BALL here. #"
 
@@ -34,7 +34,7 @@
 	cont "his custom BALLS."
 	done
 
-UnknownText_0x18e0b6:
+AzaleaMartBugCatcherText:
 	text "A GREAT BALL is"
 	line "better for catch-"
 	cont "ing #MON than a"
@@ -62,6 +62,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_CLERK, 3, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ClerkScript_0x18e040, -1
-	person_event SPRITE_COOLTRAINER_M, 5, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x18e047, -1
-	person_event SPRITE_BUG_CATCHER, 2, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, BugCatcherScript_0x18e04a, -1
+	person_event SPRITE_CLERK, 3, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, AzaleaMartClerkScript, -1
+	person_event SPRITE_COOLTRAINER_M, 5, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, AzaleaMartCooltrainerMScript, -1
+	person_event SPRITE_BUG_CATCHER, 2, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, AzaleaMartBugCatcherScript, -1
--- a/maps/AzaleaPokeCenter1F.asm
+++ /dev/null
@@ -1,102 +1,0 @@
-const_value set 2
-	const AZALEAPOKECENTER1F_NURSE
-	const AZALEAPOKECENTER1F_GENTLEMAN
-	const AZALEAPOKECENTER1F_FISHING_GURU
-	const AZALEAPOKECENTER1F_POKEFAN_F
-
-AzaleaPokeCenter1F_MapScriptHeader:
-.MapTriggers:
-	db 1
-
-	; triggers
-	dw UnknownScript_0x18db27, 0
-
-.MapCallbacks:
-	db 0
-
-UnknownScript_0x18db27:
-	end
-
-NurseScript_0x18db28:
-	jumpstd pokecenternurse
-
-GentlemanScript_0x18db2b:
-	jumptextfaceplayer UnknownText_0x18db34
-
-FishingGuruScript_0x18db2e:
-	jumptextfaceplayer UnknownText_0x18dbee
-
-PokefanFScript_0x18db31:
-	jumptextfaceplayer UnknownText_0x18dc19
-
-UnknownText_0x18db34:
-	text "Do your #MON"
-	line "know HM moves?"
-
-	para "Those moves can"
-	line "be used even if"
-
-	para "your #MON has"
-	line "fainted."
-	done
-
-UnknownText_0x18db88:
-	text "This BILL guy"
-	line "created the system"
-
-	para "for storing"
-	line "#MON in a PC."
-
-	para "BILL's PC can"
-	line "store up to 20"
-	cont "#MON per BOX."
-	done
-
-UnknownText_0x18dbee:
-	text "BILL's PC can"
-	line "store up to 20"
-	cont "#MON per BOX."
-	done
-
-UnknownText_0x18dc19:
-	text "Do you know about"
-	line "APRICORNS?"
-
-	para "Crack one open,"
-	line "hollow it out and"
-
-	para "fit it with a"
-	line "special device."
-
-	para "Then you can catch"
-	line "#MON with it."
-
-	para "Before # BALLS"
-	line "were invented,"
-
-	para "everyone used"
-	line "APRICORNS."
-	done
-
-AzaleaPokeCenter1F_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 3
-	warp_def $7, $3, 1, AZALEA_TOWN
-	warp_def $7, $4, 1, AZALEA_TOWN
-	warp_def $7, $0, 1, POKECENTER_2F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 4
-	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x18db28, -1
-	person_event SPRITE_GENTLEMAN, 6, 9, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x18db2b, -1
-	person_event SPRITE_FISHING_GURU, 1, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FishingGuruScript_0x18db2e, -1
-	person_event SPRITE_POKEFAN_F, 4, 1, SPRITEMOVEDATA_WANDER, 2, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, PokefanFScript_0x18db31, -1
--- /dev/null
+++ b/maps/AzaleaPokecenter1F.asm
@@ -1,0 +1,100 @@
+const_value set 2
+	const AZALEAPOKECENTER1F_NURSE
+	const AZALEAPOKECENTER1F_GENTLEMAN
+	const AZALEAPOKECENTER1F_FISHING_GURU
+	const AZALEAPOKECENTER1F_POKEFAN_F
+
+AzaleaPokecenter1F_MapScriptHeader:
+.MapTriggers:
+	db 1
+	maptrigger .DummyTrigger
+
+.MapCallbacks:
+	db 0
+
+.DummyTrigger:
+	end
+
+AzaleaPokecenter1FNurseScript:
+	jumpstd pokecenternurse
+
+AzaleaPokecenter1FGentlemanScript:
+	jumptextfaceplayer AzaleaPokecenter1FGentlemanText
+
+AzaleaPokecenter1FFishingGuruScript:
+	jumptextfaceplayer AzaleaPokecenter1FFishingGuruText
+
+AzaleaPokecenter1FPokefanFScript:
+	jumptextfaceplayer AzaleaPokecenter1FPokefanFText
+
+AzaleaPokecenter1FGentlemanText:
+	text "Do your #MON"
+	line "know HM moves?"
+
+	para "Those moves can"
+	line "be used even if"
+
+	para "your #MON has"
+	line "fainted."
+	done
+
+AzaleaPokecenter1FUnusedText:
+	text "This BILL guy"
+	line "created the system"
+
+	para "for storing"
+	line "#MON in a PC."
+
+	para "BILL's PC can"
+	line "store up to 20"
+	cont "#MON per BOX."
+	done
+
+AzaleaPokecenter1FFishingGuruText:
+	text "BILL's PC can"
+	line "store up to 20"
+	cont "#MON per BOX."
+	done
+
+AzaleaPokecenter1FPokefanFText:
+	text "Do you know about"
+	line "APRICORNS?"
+
+	para "Crack one open,"
+	line "hollow it out and"
+
+	para "fit it with a"
+	line "special device."
+
+	para "Then you can catch"
+	line "#MON with it."
+
+	para "Before # BALLS"
+	line "were invented,"
+
+	para "everyone used"
+	line "APRICORNS."
+	done
+
+AzaleaPokecenter1F_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 3
+	warp_def $7, $3, 1, AZALEA_TOWN
+	warp_def $7, $4, 1, AZALEA_TOWN
+	warp_def $7, $0, 1, POKECENTER_2F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 4
+	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, AzaleaPokecenter1FNurseScript, -1
+	person_event SPRITE_GENTLEMAN, 6, 9, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, AzaleaPokecenter1FGentlemanScript, -1
+	person_event SPRITE_FISHING_GURU, 1, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, AzaleaPokecenter1FFishingGuruScript, -1
+	person_event SPRITE_POKEFAN_F, 4, 1, SPRITEMOVEDATA_WANDER, 2, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, AzaleaPokecenter1FPokefanFScript, -1
--- a/maps/AzaleaTown.asm
+++ b/maps/AzaleaTown.asm
@@ -15,25 +15,21 @@
 AzaleaTown_MapScriptHeader:
 .MapTriggers:
 	db 3
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
+	maptrigger .DummyTrigger2
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-	maptrigger .Trigger2
-
 .MapCallbacks:
 	db 1
-
-	; callbacks
 	dbw MAPCALLBACK_NEWMAP, .Flypoint
 
-.Trigger0:
+.DummyTrigger0:
 	end
 
-.Trigger1:
+.DummyTrigger1:
 	end
 
-.Trigger2:
+.DummyTrigger2:
 	end
 
 .Flypoint:
@@ -112,10 +108,10 @@
 	end
 
 AzaleaTownRocket1Script:
-	jumptextfaceplayer GoodSamaritanRocketText
+	jumptextfaceplayer AzaleaTownRocket1Text
 
 AzaleaTownRocket2Script:
-	jumptextfaceplayer TastySlowpokeTailRocketText
+	jumptextfaceplayer AzaleaTownRocket2Text
 
 AzaleaTownGrampsScript:
 	faceplayer
@@ -159,15 +155,15 @@
 	closetext
 	end
 
-AzaleaTown_CelebiEventScript:
-	applymovement PLAYER, Movement_PlayerWalksOutOfKurtsHouse
+AzaleaTownCelebiTrigger:
+	applymovement PLAYER, AzaleaTownPlayerLeavesKurtsHouseMovement
 	opentext
-	writetext IlexForestIsRestlessText
+	writetext AzaleaTownKurtText1
 	buttonsound
 	spriteface AZALEATOWN_KURT_OUTSIDE, RIGHT
-	writetext HeresTheGSBallBackText
+	writetext AzaleaTownKurtText2
 	buttonsound
-	writetext PleaseInvestigateIlexForestText
+	writetext AzaleaTownKurtText3
 	waitbutton
 	verbosegiveitem GS_BALL
 	spriteface AZALEATOWN_KURT_OUTSIDE, LEFT
@@ -181,7 +177,7 @@
 AzaleaTownKurtScript:
 	faceplayer
 	opentext
-	writetext PleaseInvestigateIlexForestText
+	writetext AzaleaTownKurtText3
 	waitbutton
 	spriteface AZALEATOWN_KURT_OUTSIDE, LEFT
 	closetext
@@ -205,7 +201,7 @@
 AzaleaTownIlextForestSign:
 	jumptext AzaleaTownIlexForestSignText
 
-AzaleaTownPokeCenterSign:
+AzaleaTownPokecenterSign:
 	jumpstd pokecentersign
 
 AzaleaTownMartSign:
@@ -217,7 +213,6 @@
 AzaleaTownHiddenFullHeal:
 	dwb EVENT_AZALEA_TOWN_HIDDEN_FULL_HEAL, FULL_HEAL
 
-
 AzaleaTownRivalBattleApproachMovement1:
 	step LEFT
 	step LEFT
@@ -244,7 +239,7 @@
 	step LEFT
 	step_end
 
-Movement_PlayerWalksOutOfKurtsHouse:
+AzaleaTownPlayerLeavesKurtsHouseMovement:
 	step LEFT
 	step LEFT
 	step UP
@@ -314,7 +309,7 @@
 	line "you were lying."
 	done
 
-GoodSamaritanRocketText:
+AzaleaTownRocket1Text:
 	text "It's unsafe to go"
 	line "in there, so I'm"
 	cont "standing guard."
@@ -323,7 +318,7 @@
 	line "Samaritan?"
 	done
 
-TastySlowpokeTailRocketText:
+AzaleaTownRocket2Text:
 	text "Do you know about"
 	line "SLOWPOKETAIL? I"
 	cont "heard it's tasty!"
@@ -392,7 +387,7 @@
 	text "WOOSTER: Gugyoo…"
 	done
 
-IlexForestIsRestlessText:
+AzaleaTownKurtText1:
 	text "ILEX FOREST is"
 	line "restless!"
 
@@ -399,12 +394,12 @@
 	para "What is going on?"
 	done
 
-HeresTheGSBallBackText:
+AzaleaTownKurtText2:
 	text "<PLAYER>, here's"
 	line "your GS BALL back!"
 	done
 
-PleaseInvestigateIlexForestText:
+AzaleaTownKurtText3:
 	text "Could you go see"
 	line "why ILEX FOREST is"
 	cont "so restless?"
@@ -479,7 +474,7 @@
 	db 3
 	xy_trigger 1, $a, $5, $0, AzaleaTownRivalBattleTrigger1, $0, $0
 	xy_trigger 1, $b, $5, $0, AzaleaTownRivalBattleTrigger2, $0, $0
-	xy_trigger 2, $6, $9, $0, AzaleaTown_CelebiEventScript, $0, $0
+	xy_trigger 2, $6, $9, $0, AzaleaTownCelebiTrigger, $0, $0
 
 .Signposts:
 	db 9
@@ -488,7 +483,7 @@
 	signpost 15, 14, SIGNPOST_READ, AzaleaGymSign
 	signpost 7, 29, SIGNPOST_READ, SlowpokeWellSign
 	signpost 13, 19, SIGNPOST_READ, CharcoalKilnSign
-	signpost 9, 16, SIGNPOST_READ, AzaleaTownPokeCenterSign
+	signpost 9, 16, SIGNPOST_READ, AzaleaTownPokecenterSign
 	signpost 5, 22, SIGNPOST_READ, AzaleaTownMartSign
 	signpost 9, 3, SIGNPOST_READ, AzaleaTownIlextForestSign
 	signpost 6, 31, SIGNPOST_ITEM, AzaleaTownHiddenFullHeal
@@ -497,8 +492,8 @@
 	db 12
 	person_event SPRITE_AZALEA_ROCKET, 9, 31, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, AzaleaTownRocket1Script, EVENT_AZALEA_TOWN_SLOWPOKETAIL_ROCKET
 	person_event SPRITE_GRAMPS, 9, 21, SPRITEMOVEDATA_WANDER, 2, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, AzaleaTownGrampsScript, -1
-	person_event SPRITE_TEACHER, 13, 15, SPRITEMOVEDATA_WALK_UP_DOWN, 2, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, AzaleaTownTeacherScript, -1
-	person_event SPRITE_YOUNGSTER, 9, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, AzaleaTownYoungsterScript, -1
+	person_event SPRITE_TEACHER, 13, 15, SPRITEMOVEDATA_WALK_UP_DOWN, 2, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, AzaleaTownTeacherScript, -1
+	person_event SPRITE_YOUNGSTER, 9, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, AzaleaTownYoungsterScript, -1
 	person_event SPRITE_SLOWPOKE, 17, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, AzaleaTownSlowpokeScript, EVENT_AZALEA_TOWN_SLOWPOKES
 	person_event SPRITE_SLOWPOKE, 9, 18, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, AzaleaTownSlowpokeScript, EVENT_AZALEA_TOWN_SLOWPOKES
 	person_event SPRITE_SLOWPOKE, 9, 29, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, AzaleaTownSlowpokeScript, EVENT_AZALEA_TOWN_SLOWPOKES
--- a/maps/BattleTower1F.asm
+++ b/maps/BattleTower1F.asm
@@ -8,8 +8,6 @@
 BattleTower1F_MapScriptHeader:
 .MapTriggers:
 	db 2
-
-	; triggers
 	maptrigger .Trigger0
 	maptrigger .Trigger1
 
@@ -815,7 +813,7 @@
 .PersonEvents:
 	db 5
 	person_event SPRITE_RECEPTIONIST, 6, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ReceptionistScript_0x9e3e2, -1
-	person_event SPRITE_YOUNGSTER, 9, 14, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x9e55d, -1
-	person_event SPRITE_COOLTRAINER_F, 9, 4, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x9e568, -1
-	person_event SPRITE_BUG_CATCHER, 3, 1, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, BugCatcherScript_0x9e56b, -1
+	person_event SPRITE_YOUNGSTER, 9, 14, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x9e55d, -1
+	person_event SPRITE_COOLTRAINER_F, 9, 4, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x9e568, -1
+	person_event SPRITE_BUG_CATCHER, 3, 1, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, BugCatcherScript_0x9e56b, -1
 	person_event SPRITE_GRANNY, 3, 14, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GrannyScript_0x9e56e, -1
--- a/maps/BattleTowerBattleRoom.asm
+++ b/maps/BattleTowerBattleRoom.asm
@@ -5,10 +5,8 @@
 BattleTowerBattleRoom_MapScriptHeader:
 .MapTriggers:
 	db 2
-
-	; triggers
-	dw .EnterBattleRoom, 0
-	dw .DummyTrigger, 0
+	maptrigger .EnterBattleRoom
+	maptrigger .DummyTrigger
 
 .MapCallbacks:
 	db 0
--- a/maps/BattleTowerElevator.asm
+++ b/maps/BattleTowerElevator.asm
@@ -4,8 +4,6 @@
 BattleTowerElevator_MapScriptHeader:
 .MapTriggers:
 	db 2
-
-	; triggers
 	maptrigger .Trigger0
 	maptrigger .Trigger1
 
--- a/maps/BattleTowerHallway.asm
+++ b/maps/BattleTowerHallway.asm
@@ -4,8 +4,6 @@
 BattleTowerHallway_MapScriptHeader:
 .MapTriggers:
 	db 2
-
-	; triggers
 	maptrigger .Trigger0
 	maptrigger .Trigger1
 
--- a/maps/BattleTowerOutside.asm
+++ b/maps/BattleTowerOutside.asm
@@ -10,8 +10,6 @@
 
 .MapCallbacks:
 	db 2
-
-	; callbacks
 	dbw MAPCALLBACK_TILES, .Callback1
 	dbw MAPCALLBACK_OBJECTS, .Callback2
 
@@ -148,7 +146,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_STANDING_YOUNGSTER, 12, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, BattleTowerOutsideYoungsterScript, -1
-	person_event SPRITE_BUENA, 11, 13, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, BattleTowerOutsideBuenaScript, -1
+	person_event SPRITE_STANDING_YOUNGSTER, 12, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, BattleTowerOutsideYoungsterScript, -1
+	person_event SPRITE_BUENA, 11, 13, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, BattleTowerOutsideBuenaScript, -1
 	person_event SPRITE_SAILOR, 18, 12, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BattleTowerOutsideSailorScript, EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
-	person_event SPRITE_LASS, 24, 12, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, ObjectEvent, -1
+	person_event SPRITE_LASS, 24, 12, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, ObjectEvent, -1
--- a/maps/BetaAlphRuinUnsolvedPuzzleRoom.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-

,+
\ No newline at end of file
--- /dev/null
+++ b/maps/BetaRuinsOfAlphUnsolvedPuzzleRoom.blk
@@ -1,0 +1,1 @@
+

,+
\ No newline at end of file
--- /dev/null
+++ b/maps/BetaSSAquaInsideCutOut.blk
@@ -1,0 +1,1 @@
+
\ No newline at end of file
--- a/maps/BetaSsAquaInsideCutOut.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-
\ No newline at end of file
--- a/maps/BillsHouse.asm
+++ b/maps/BillsHouse.asm
@@ -370,4 +370,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_GRAMPS, 3, 2, SPRITEMOVEDATA_STANDING_UP, 2, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, BillsGrandpa, -1
+	person_event SPRITE_GRAMPS, 3, 2, SPRITEMOVEDATA_STANDING_UP, 2, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, BillsGrandpa, -1
--- a/maps/BlackthornCity.asm
+++ b/maps/BlackthornCity.asm
@@ -15,8 +15,6 @@
 
 .MapCallbacks:
 	db 2
-
-	; callbacks
 	dbw MAPCALLBACK_NEWMAP, .FlyPoint
 	dbw MAPCALLBACK_OBJECTS, .Santos
 
@@ -140,7 +138,7 @@
 BlackthornCityTrainerTips:
 	jumptext BlackthornCityTrainerTipsText
 
-BlackthornCityPokeCenterSign:
+BlackthornCityPokecenterSign:
 	jumpstd pokecentersign
 
 BlackthornCityMartSign:
@@ -340,16 +338,16 @@
 	signpost 3, 21, SIGNPOST_READ, DragonDensSign
 	signpost 25, 5, SIGNPOST_READ, BlackthornCityTrainerTips
 	signpost 29, 16, SIGNPOST_READ, BlackthornCityMartSign
-	signpost 29, 22, SIGNPOST_READ, BlackthornCityPokeCenterSign
+	signpost 29, 22, SIGNPOST_READ, BlackthornCityPokecenterSign
 
 .PersonEvents:
 	db 9
-	person_event SPRITE_SUPER_NERD, 12, 18, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, BlackthornSuperNerdScript, EVENT_BLACKTHORN_CITY_SUPER_NERD_BLOCKS_GYM
-	person_event SPRITE_SUPER_NERD, 12, 19, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, BlackthornSuperNerdScript, EVENT_BLACKTHORN_CITY_SUPER_NERD_DOES_NOT_BLOCK_GYM
+	person_event SPRITE_SUPER_NERD, 12, 18, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, BlackthornSuperNerdScript, EVENT_BLACKTHORN_CITY_SUPER_NERD_BLOCKS_GYM
+	person_event SPRITE_SUPER_NERD, 12, 19, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, BlackthornSuperNerdScript, EVENT_BLACKTHORN_CITY_SUPER_NERD_DOES_NOT_BLOCK_GYM
 	person_event SPRITE_GRAMPS, 2, 20, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BlackthornGramps1Script, EVENT_BLACKTHORN_CITY_GRAMPS_BLOCKS_DRAGONS_DEN
 	person_event SPRITE_GRAMPS, 2, 21, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BlackthornGramps2Script, EVENT_BLACKTHORN_CITY_GRAMPS_NOT_BLOCKING_DRAGONS_DEN
-	person_event SPRITE_BLACK_BELT, 31, 24, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, BlackthornBlackBeltScript, -1
-	person_event SPRITE_COOLTRAINER_F, 25, 9, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, BlackthornCooltrainerF1Script, -1
+	person_event SPRITE_BLACK_BELT, 31, 24, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, BlackthornBlackBeltScript, -1
+	person_event SPRITE_COOLTRAINER_F, 25, 9, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, BlackthornCooltrainerF1Script, -1
 	person_event SPRITE_YOUNGSTER, 15, 13, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BlackthornYoungsterScript, -1
 	person_event SPRITE_YOUNGSTER, 20, 22, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SantosScript, EVENT_BLACKTHORN_CITY_SANTOS_OF_SATURDAY
-	person_event SPRITE_COOLTRAINER_F, 19, 35, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, BlackthornCooltrainerF2Script, -1
+	person_event SPRITE_COOLTRAINER_F, 19, 35, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, BlackthornCooltrainerF2Script, -1
--- a/maps/BlackthornDragonSpeechHouse.asm
+++ b/maps/BlackthornDragonSpeechHouse.asm
@@ -63,4 +63,4 @@
 .PersonEvents:
 	db 2
 	person_event SPRITE_GRANNY, 3, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GrannyScript_0x195949, -1
-	person_event SPRITE_EKANS, 5, 5, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, Dratini, -1
+	person_event SPRITE_EKANS, 5, 5, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, Dratini, -1
--- a/maps/BlackthornEmysHouse.asm
+++ b/maps/BlackthornEmysHouse.asm
@@ -11,7 +11,7 @@
 Emy:
 	faceplayer
 	opentext
-	trade $3
+	trade NPCTRADE_EMY
 	waitbutton
 	closetext
 	end
@@ -38,4 +38,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_LASS, 3, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, Emy, -1
+	person_event SPRITE_LASS, 3, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, Emy, -1
--- a/maps/BlackthornGym1F.asm
+++ b/maps/BlackthornGym1F.asm
@@ -11,8 +11,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
 	dbw MAPCALLBACK_TILES, .Boulders
 
 .Boulders:
@@ -100,7 +98,7 @@
 CooltrainermPaulScript:
 	end_if_just_battled
 	opentext
-	writetext CooltrainermPaulAfterText
+	writetext CooltrainermPaulAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -111,7 +109,7 @@
 CooltrainermMikeScript:
 	end_if_just_battled
 	opentext
-	writetext CooltrainermMikeAfterText
+	writetext CooltrainermMikeAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -122,7 +120,7 @@
 CooltrainerfLolaScript:
 	end_if_just_battled
 	opentext
-	writetext CooltrainerfLolaAfterText
+	writetext CooltrainerfLolaAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -300,7 +298,7 @@
 	line "lost?"
 	done
 
-CooltrainermPaulAfterText:
+CooltrainermPaulAfterBattleText:
 	text "LANCE told you"
 	line "that he'd like to"
 
@@ -318,7 +316,7 @@
 	text "That's odd."
 	done
 
-CooltrainermMikeAfterText:
+CooltrainermMikeAfterBattleText:
 	text "I know my short-"
 	line "comings now."
 
@@ -344,7 +342,7 @@
 	text "Way to go!"
 	done
 
-CooltrainerfLolaAfterText:
+CooltrainerfLolaAfterBattleText:
 	text "Dragons are weak"
 	line "against dragon-"
 	cont "type moves."
@@ -412,8 +410,8 @@
 
 .PersonEvents:
 	db 5
-	person_event SPRITE_CLAIR, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, BlackthornGymClairScript, -1
-	person_event SPRITE_COOLTRAINER_M, 6, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainermMike, -1
-	person_event SPRITE_COOLTRAINER_M, 14, 1, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainermPaul, -1
-	person_event SPRITE_COOLTRAINER_F, 2, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerCooltrainerfLola, -1
-	person_event SPRITE_GYM_GUY, 15, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, BlackthornGymGuyScript, -1
+	person_event SPRITE_CLAIR, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, BlackthornGymClairScript, -1
+	person_event SPRITE_COOLTRAINER_M, 6, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainermMike, -1
+	person_event SPRITE_COOLTRAINER_M, 14, 1, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainermPaul, -1
+	person_event SPRITE_COOLTRAINER_F, 2, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 1, TrainerCooltrainerfLola, -1
+	person_event SPRITE_GYM_GUY, 15, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, BlackthornGymGuyScript, -1
--- a/maps/BlackthornGym2F.asm
+++ b/maps/BlackthornGym2F.asm
@@ -14,8 +14,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
 	dbw MAPCALLBACK_CMDQUEUE, .Boulders
 
 .Boulders:
@@ -68,7 +66,7 @@
 CooltrainermCodyScript:
 	end_if_just_battled
 	opentext
-	writetext CooltrainermCodyAfterText
+	writetext CooltrainermCodyAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -79,7 +77,7 @@
 CooltrainerfFranScript:
 	end_if_just_battled
 	opentext
-	writetext CooltrainerfFranAfterText
+	writetext CooltrainerfFranAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -95,7 +93,7 @@
 	line "had a dragon!"
 	done
 
-CooltrainermCodyAfterText:
+CooltrainermCodyAfterBattleText:
 	text "Members of our"
 	line "dragon-user clan"
 
@@ -119,7 +117,7 @@
 	text "Awww… I lost…"
 	done
 
-CooltrainerfFranAfterText:
+CooltrainerfFranAfterBattleText:
 	text "Uh-oh… CLAIR is"
 	line "going to be mad…"
 	done
@@ -149,8 +147,8 @@
 
 .PersonEvents:
 	db 8
-	person_event SPRITE_COOLTRAINER_M, 1, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerCooltrainermCody, -1
-	person_event SPRITE_COOLTRAINER_F, 11, 4, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerCooltrainerfFran, -1
+	person_event SPRITE_COOLTRAINER_M, 1, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 1, TrainerCooltrainermCody, -1
+	person_event SPRITE_COOLTRAINER_F, 11, 4, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 1, TrainerCooltrainerfFran, -1
 	person_event SPRITE_BOULDER, 2, 8, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BlackthornGymBoulder, EVENT_BOULDER_IN_BLACKTHORN_GYM_1
 	person_event SPRITE_BOULDER, 3, 2, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BlackthornGymBoulder, EVENT_BOULDER_IN_BLACKTHORN_GYM_2
 	person_event SPRITE_BOULDER, 16, 6, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BlackthornGymBoulder, EVENT_BOULDER_IN_BLACKTHORN_GYM_3
--- a/maps/BlackthornMart.asm
+++ b/maps/BlackthornMart.asm
@@ -65,4 +65,4 @@
 	db 3
 	person_event SPRITE_CLERK, 3, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ClerkScript_0x195a5d, -1
 	person_event SPRITE_COOLTRAINER_M, 6, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x195a64, -1
-	person_event SPRITE_BLACK_BELT, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, BlackBeltScript_0x195a67, -1
+	person_event SPRITE_BLACK_BELT, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, BlackBeltScript_0x195a67, -1
--- a/maps/BlackthornPokeCenter1F.asm
+++ /dev/null
@@ -1,73 +1,0 @@
-const_value set 2
-	const BLACKTHORNPOKECENTER1F_NURSE
-	const BLACKTHORNPOKECENTER1F_GENTLEMAN
-	const BLACKTHORNPOKECENTER1F_TWIN
-	const BLACKTHORNPOKECENTER1F_COOLTRAINER_M
-
-BlackthornPokeCenter1F_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-NurseScript_0x195b79:
-	jumpstd pokecenternurse
-
-GentlemanScript_0x195b7c:
-	jumptextfaceplayer UnknownText_0x195b85
-
-TwinScript_0x195b7f:
-	jumptextfaceplayer UnknownText_0x195bfd
-
-CooltrainerMScript_0x195b82:
-	jumpstd happinesschecknpc
-
-UnknownText_0x195b85:
-	text "Deep inside far-"
-	line "off INDIGO PLATEAU"
-
-	para "is the #MON"
-	line "LEAGUE."
-
-	para "I hear the best"
-	line "trainers gather"
-
-	para "there from around"
-	line "the country."
-	done
-
-UnknownText_0x195bfd:
-	text "There was this"
-	line "move I just had"
-
-	para "to teach my #-"
-	line "MON."
-
-	para "So I got the MOVE"
-	line "DELETER to make it"
-	cont "forget an HM move."
-	done
-
-BlackthornPokeCenter1F_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 3
-	warp_def $7, $3, 5, BLACKTHORN_CITY
-	warp_def $7, $4, 5, BLACKTHORN_CITY
-	warp_def $7, $0, 1, POKECENTER_2F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 4
-	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x195b79, -1
-	person_event SPRITE_GENTLEMAN, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x195b7c, -1
-	person_event SPRITE_TWIN, 4, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, TwinScript_0x195b7f, -1
-	person_event SPRITE_COOLTRAINER_M, 6, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x195b82, -1
--- /dev/null
+++ b/maps/BlackthornPokecenter1F.asm
@@ -1,0 +1,73 @@
+const_value set 2
+	const BLACKTHORNPOKECENTER1F_NURSE
+	const BLACKTHORNPOKECENTER1F_GENTLEMAN
+	const BLACKTHORNPOKECENTER1F_TWIN
+	const BLACKTHORNPOKECENTER1F_COOLTRAINER_M
+
+BlackthornPokecenter1F_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+NurseScript_0x195b79:
+	jumpstd pokecenternurse
+
+GentlemanScript_0x195b7c:
+	jumptextfaceplayer UnknownText_0x195b85
+
+TwinScript_0x195b7f:
+	jumptextfaceplayer UnknownText_0x195bfd
+
+CooltrainerMScript_0x195b82:
+	jumpstd happinesschecknpc
+
+UnknownText_0x195b85:
+	text "Deep inside far-"
+	line "off INDIGO PLATEAU"
+
+	para "is the #MON"
+	line "LEAGUE."
+
+	para "I hear the best"
+	line "trainers gather"
+
+	para "there from around"
+	line "the country."
+	done
+
+UnknownText_0x195bfd:
+	text "There was this"
+	line "move I just had"
+
+	para "to teach my #-"
+	line "MON."
+
+	para "So I got the MOVE"
+	line "DELETER to make it"
+	cont "forget an HM move."
+	done
+
+BlackthornPokecenter1F_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 3
+	warp_def $7, $3, 5, BLACKTHORN_CITY
+	warp_def $7, $4, 5, BLACKTHORN_CITY
+	warp_def $7, $0, 1, POKECENTER_2F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 4
+	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x195b79, -1
+	person_event SPRITE_GENTLEMAN, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x195b7c, -1
+	person_event SPRITE_TWIN, 4, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, TwinScript_0x195b7f, -1
+	person_event SPRITE_COOLTRAINER_M, 6, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x195b82, -1
--- a/maps/BrunosRoom.asm
+++ b/maps/BrunosRoom.asm
@@ -4,23 +4,18 @@
 BrunosRoom_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .LockDoor
+	maptrigger .DummyTrigger
 
-	; triggers
-	dw .Trigger0, 0
-	dw .Trigger1, 0
-
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_TILES, .BrunosRoomDoors
 
-.Trigger0:
+.LockDoor:
 	priorityjump .BrunosDoorLocksBehindYou
 	end
 
-.Trigger1:
+.DummyTrigger:
 	end
 
 .BrunosRoomDoors:
@@ -148,4 +143,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_BRUNO, 7, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, BrunoScript_Battle, -1
+	person_event SPRITE_BRUNO, 7, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, BrunoScript_Battle, -1
--- a/maps/BurnedTower1F.asm
+++ b/maps/BurnedTower1F.asm
@@ -8,27 +8,22 @@
 BurnedTower1F_MapScriptHeader:
 .MapTriggers:
 	db 3
+	maptrigger .EusineTrigger
+	maptrigger .DummyTrigger1
+	maptrigger .DummyTrigger2
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-	maptrigger .Trigger2
-
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_TILES, .HoleAndLadder
 
-.Trigger0:
-	priorityjump .EusineTrigger
+.EusineTrigger:
+	priorityjump .MeetEusine
 	end
 
-.Trigger1:
+.DummyTrigger1:
 	end
 
-.Trigger2:
+.DummyTrigger2:
 	end
 
 .HoleAndLadder:
@@ -42,7 +37,7 @@
 .Done:
 	return
 
-.EusineTrigger:
+.MeetEusine:
 	spriteface BURNEDTOWER1F_EUSINE, DOWN
 	showemote EMOTE_SHOCK, BURNEDTOWER1F_EUSINE, 15
 	applymovement BURNEDTOWER1F_EUSINE, BurnedTower1FEusineMovement
@@ -317,7 +312,7 @@
 .PersonEvents:
 	db 5
 	person_event SPRITE_ROCK, 4, 15, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BurnedTower1FRock, -1
-	person_event SPRITE_SUPER_NERD, 12, 12, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, BurnedTower1FEusineScript, EVENT_BURNED_TOWER_1F_EUSINE
+	person_event SPRITE_SUPER_NERD, 12, 12, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, BurnedTower1FEusineScript, EVENT_BURNED_TOWER_1F_EUSINE
 	person_event SPRITE_SILVER, 9, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 3, ObjectEvent, EVENT_RIVAL_BURNED_TOWER
-	person_event SPRITE_MORTY, 14, 14, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, BurnedTower1FMortyScript, EVENT_BURNED_TOWER_MORTY
+	person_event SPRITE_MORTY, 14, 14, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, BurnedTower1FMortyScript, EVENT_BURNED_TOWER_MORTY
 	person_event SPRITE_POKE_BALL, 2, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, BurnedTower1FHPUp, EVENT_BURNED_TOWER_1F_HP_UP
--- a/maps/BurnedTowerB1F.asm
+++ b/maps/BurnedTowerB1F.asm
@@ -12,25 +12,20 @@
 BurnedTowerB1F_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
 
-	; triggers
-	dw .Trigger0, 0
-	dw .Trigger1, 0
-
 .MapCallbacks:
 	db 1
+	dbw MAPCALLBACK_TILES, .LadderCallback
 
-	; callbacks
-
-	dbw MAPCALLBACK_TILES, BurnedTowerB1FLadderCallback
-
-.Trigger0:
+.DummyTrigger0:
 	end
 
-.Trigger1:
+.DummyTrigger1:
 	end
 
-BurnedTowerB1FLadderCallback:
+.LadderCallback:
 	checkevent EVENT_RELEASED_THE_BEASTS
 	iftrue .NoChange
 	changeblock $6, $e, $2
@@ -263,11 +258,11 @@
 .PersonEvents:
 	db 9
 	person_event SPRITE_BOULDER, 8, 17, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BurnedTowerB1FBoulder, -1
-	person_event SPRITE_RAIKOU, 3, 7, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_1
-	person_event SPRITE_ENTEI, 3, 12, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_1
-	person_event SPRITE_SUICUNE, 4, 10, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_1
-	person_event SPRITE_RAIKOU, 3, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_SILVER, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_2
-	person_event SPRITE_ENTEI, 3, 12, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_SILVER, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_2
-	person_event SPRITE_SUICUNE, 4, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_SILVER, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_2
+	person_event SPRITE_RAIKOU, 3, 7, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_1
+	person_event SPRITE_ENTEI, 3, 12, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_1
+	person_event SPRITE_SUICUNE, 4, 10, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_1
+	person_event SPRITE_RAIKOU, 3, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_SILVER, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_2
+	person_event SPRITE_ENTEI, 3, 12, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_SILVER, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_2
+	person_event SPRITE_SUICUNE, 4, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_SILVER, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_2
 	person_event SPRITE_POKE_BALL, 4, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, BurnedTowerB1FTMEndure, EVENT_BURNED_TOWER_B1F_TM_ENDURE
-	person_event SPRITE_SUPER_NERD, 12, 10, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, BurnedTowerB1FEusine, EVENT_EUSINE_IN_BURNED_TOWER
+	person_event SPRITE_SUPER_NERD, 12, 10, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, BurnedTowerB1FEusine, EVENT_EUSINE_IN_BURNED_TOWER
--- a/maps/CeladonCafe.asm
+++ b/maps/CeladonCafe.asm
@@ -226,8 +226,8 @@
 
 .PersonEvents:
 	db 5
-	person_event SPRITE_SUPER_NERD, 3, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, CeladonCafeChef, -1
+	person_event SPRITE_SUPER_NERD, 3, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, CeladonCafeChef, -1
 	person_event SPRITE_FISHER, 6, 4, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CeladonCafeFisher1, -1
-	person_event SPRITE_FISHER, 7, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, CeladonCafeFisher2, -1
+	person_event SPRITE_FISHER, 7, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, CeladonCafeFisher2, -1
 	person_event SPRITE_FISHER, 2, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CeladonCafeFisher3, -1
 	person_event SPRITE_TEACHER, 3, 4, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CeladonCafeTeacher, -1
--- a/maps/CeladonCity.asm
+++ b/maps/CeladonCity.asm
@@ -15,8 +15,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
 	dbw MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
@@ -73,7 +71,7 @@
 CeladonCityTrainerTips:
 	jumptext CeladonCityTrainerTipsText
 
-CeladonCityPokeCenterSign:
+CeladonCityPokecenterSign:
 	jumpstd pokecentersign
 
 CeladonCityHiddenPpUp:
@@ -263,17 +261,17 @@
 	signpost 9, 13, SIGNPOST_READ, CeladonCityMansionSign
 	signpost 21, 19, SIGNPOST_READ, CeladonCityGameCornerSign
 	signpost 21, 29, SIGNPOST_READ, CeladonCityTrainerTips
-	signpost 9, 30, SIGNPOST_READ, CeladonCityPokeCenterSign
+	signpost 9, 30, SIGNPOST_READ, CeladonCityPokecenterSign
 	signpost 21, 37, SIGNPOST_ITEM, CeladonCityHiddenPpUp
 
 .PersonEvents:
 	db 9
-	person_event SPRITE_FISHER, 11, 26, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, FisherScript_0x1a9f43, -1
-	person_event SPRITE_POLIWAG, 11, 27, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, CeladonCityPoliwrath, -1
-	person_event SPRITE_TEACHER, 24, 20, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, TeacherScript_0x1a9f50, -1
-	person_event SPRITE_GRAMPS, 16, 14, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, GrampsScript_0x1a9f53, -1
-	person_event SPRITE_GRAMPS, 31, 8, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, GrampsScript_0x1a9f56, -1
-	person_event SPRITE_YOUNGSTER, 13, 18, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x1a9f59, -1
-	person_event SPRITE_YOUNGSTER, 33, 24, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x1a9f5c, -1
-	person_event SPRITE_TEACHER, 14, 6, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, TeacherScript_0x1a9f5f, -1
-	person_event SPRITE_LASS, 22, 7, SPRITEMOVEDATA_WALK_UP_DOWN, 2, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, LassScript_0x1a9f62, -1
+	person_event SPRITE_FISHER, 11, 26, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, FisherScript_0x1a9f43, -1
+	person_event SPRITE_POLIWAG, 11, 27, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, CeladonCityPoliwrath, -1
+	person_event SPRITE_TEACHER, 24, 20, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, TeacherScript_0x1a9f50, -1
+	person_event SPRITE_GRAMPS, 16, 14, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, GrampsScript_0x1a9f53, -1
+	person_event SPRITE_GRAMPS, 31, 8, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, GrampsScript_0x1a9f56, -1
+	person_event SPRITE_YOUNGSTER, 13, 18, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x1a9f59, -1
+	person_event SPRITE_YOUNGSTER, 33, 24, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x1a9f5c, -1
+	person_event SPRITE_TEACHER, 14, 6, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, TeacherScript_0x1a9f5f, -1
+	person_event SPRITE_LASS, 22, 7, SPRITEMOVEDATA_WALK_UP_DOWN, 2, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, LassScript_0x1a9f62, -1
--- a/maps/CeladonDeptStore1F.asm
+++ b/maps/CeladonDeptStore1F.asm
@@ -94,6 +94,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_RECEPTIONIST, 1, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, ReceptionistScript_0x709e0, -1
+	person_event SPRITE_RECEPTIONIST, 1, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, ReceptionistScript_0x709e0, -1
 	person_event SPRITE_GENTLEMAN, 4, 11, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x709e3, -1
-	person_event SPRITE_TEACHER, 3, 5, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, TeacherScript_0x709e6, -1
+	person_event SPRITE_TEACHER, 3, 5, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, TeacherScript_0x709e6, -1
--- a/maps/CeladonDeptStore2F.asm
+++ b/maps/CeladonDeptStore2F.asm
@@ -88,7 +88,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_CLERK, 5, 13, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ClerkScript_0x70bad, -1
-	person_event SPRITE_CLERK, 5, 14, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ClerkScript_0x70bb5, -1
-	person_event SPRITE_POKEFAN_M, 2, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x70bbd, -1
-	person_event SPRITE_YOUNGSTER, 2, 6, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x70bc0, -1
+	person_event SPRITE_CLERK, 5, 13, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, ClerkScript_0x70bad, -1
+	person_event SPRITE_CLERK, 5, 14, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, ClerkScript_0x70bb5, -1
+	person_event SPRITE_POKEFAN_M, 2, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x70bbd, -1
+	person_event SPRITE_YOUNGSTER, 2, 6, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x70bc0, -1
--- a/maps/CeladonDeptStore3F.asm
+++ b/maps/CeladonDeptStore3F.asm
@@ -114,8 +114,8 @@
 
 .PersonEvents:
 	db 5
-	person_event SPRITE_CLERK, 1, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ClerkScript_0x70d29, -1
-	person_event SPRITE_YOUNGSTER, 4, 6, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x70d31, -1
-	person_event SPRITE_GAMEBOY_KID, 1, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, GameboyKidScript_0x70d34, -1
-	person_event SPRITE_GAMEBOY_KID, 1, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, GameboyKidScript_0x70d3f, -1
-	person_event SPRITE_SUPER_NERD, 4, 13, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x70d4a, -1
+	person_event SPRITE_CLERK, 1, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, ClerkScript_0x70d29, -1
+	person_event SPRITE_YOUNGSTER, 4, 6, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x70d31, -1
+	person_event SPRITE_GAMEBOY_KID, 1, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, GameboyKidScript_0x70d34, -1
+	person_event SPRITE_GAMEBOY_KID, 1, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, GameboyKidScript_0x70d3f, -1
+	person_event SPRITE_SUPER_NERD, 4, 13, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x70d4a, -1
--- a/maps/CeladonDeptStore4F.asm
+++ b/maps/CeladonDeptStore4F.asm
@@ -70,6 +70,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_CLERK, 5, 13, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ClerkScript_0x70f0d, -1
-	person_event SPRITE_SUPER_NERD, 6, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x70f15, -1
+	person_event SPRITE_CLERK, 5, 13, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, ClerkScript_0x70f0d, -1
+	person_event SPRITE_SUPER_NERD, 6, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x70f15, -1
 	person_event SPRITE_YOUNGSTER, 2, 8, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x70f18, -1
--- a/maps/CeladonDeptStore5F.asm
+++ b/maps/CeladonDeptStore5F.asm
@@ -91,8 +91,8 @@
 
 .PersonEvents:
 	db 5
-	person_event SPRITE_CLERK, 5, 7, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ClerkScript_0x71004, -1
-	person_event SPRITE_CLERK, 5, 8, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ClerkScript_0x7100c, -1
-	person_event SPRITE_GENTLEMAN, 5, 13, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x71014, -1
-	person_event SPRITE_SAILOR, 4, 3, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, SailorScript_0x71017, -1
-	person_event SPRITE_TEACHER, 7, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, TeacherScript_0x7101a, -1
+	person_event SPRITE_CLERK, 5, 7, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, ClerkScript_0x71004, -1
+	person_event SPRITE_CLERK, 5, 8, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, ClerkScript_0x7100c, -1
+	person_event SPRITE_GENTLEMAN, 5, 13, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x71014, -1
+	person_event SPRITE_SAILOR, 4, 3, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, SailorScript_0x71017, -1
+	person_event SPRITE_TEACHER, 7, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, TeacherScript_0x7101a, -1
--- a/maps/CeladonDeptStore6F.asm
+++ b/maps/CeladonDeptStore6F.asm
@@ -8,9 +8,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_TILES, .Callback
 
 .Callback:
@@ -173,4 +170,4 @@
 .PersonEvents:
 	db 2
 	person_event SPRITE_SUPER_NERD, 2, 9, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x7117a, -1
-	person_event SPRITE_YOUNGSTER, 5, 12, SPRITEMOVEDATA_WANDER, 1, 2, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x7117d, -1
+	person_event SPRITE_YOUNGSTER, 5, 12, SPRITEMOVEDATA_WANDER, 1, 2, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x7117d, -1
--- a/maps/CeladonDeptStoreElevator.asm
+++ b/maps/CeladonDeptStoreElevator.asm
@@ -20,12 +20,12 @@
 
 Elevator_0x713be:
 	db 6 ; floors
-	elevfloor _1F,  4, CELADON_DEPT_STORE_1F
-	elevfloor _2F,  3, CELADON_DEPT_STORE_2F
-	elevfloor _3F,  3, CELADON_DEPT_STORE_3F
-	elevfloor _4F,  3, CELADON_DEPT_STORE_4F
-	elevfloor _5F,  3, CELADON_DEPT_STORE_5F
-	elevfloor _6F,  2, CELADON_DEPT_STORE_6F
+	elevfloor FLOOR_1F, 4, CELADON_DEPT_STORE_1F
+	elevfloor FLOOR_2F, 3, CELADON_DEPT_STORE_2F
+	elevfloor FLOOR_3F, 3, CELADON_DEPT_STORE_3F
+	elevfloor FLOOR_4F, 3, CELADON_DEPT_STORE_4F
+	elevfloor FLOOR_5F, 3, CELADON_DEPT_STORE_5F
+	elevfloor FLOOR_6F, 2, CELADON_DEPT_STORE_6F
 	db $ff ; end
 
 
--- a/maps/CeladonGameCorner.asm
+++ b/maps/CeladonGameCorner.asm
@@ -336,12 +336,12 @@
 
 .PersonEvents:
 	db 9
-	person_event SPRITE_CLERK, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, ClerkScript_0x7211d, -1
-	person_event SPRITE_RECEPTIONIST, 2, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, ReceptionistScript_0x72120, -1
-	person_event SPRITE_POKEFAN_M, 10, 14, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x72123, -1
-	person_event SPRITE_TEACHER, 7, 17, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, TeacherScript_0x7212e, -1
-	person_event SPRITE_FISHING_GURU, 7, 11, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, FishingGuruScript_0x72139, -1
-	person_event SPRITE_FISHER, 10, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, 2, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, FisherScript_0x72144, -1
-	person_event SPRITE_FISHER, 10, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, 4, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, FisherScript_0x72144, -1
-	person_event SPRITE_GYM_GUY, 3, 11, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CeladonGymGuyScript, -1
-	person_event SPRITE_GRAMPS, 8, 2, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, GrampsScript_0x72190, -1
+	person_event SPRITE_CLERK, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, ClerkScript_0x7211d, -1
+	person_event SPRITE_RECEPTIONIST, 2, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, ReceptionistScript_0x72120, -1
+	person_event SPRITE_POKEFAN_M, 10, 14, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x72123, -1
+	person_event SPRITE_TEACHER, 7, 17, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, TeacherScript_0x7212e, -1
+	person_event SPRITE_FISHING_GURU, 7, 11, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, FishingGuruScript_0x72139, -1
+	person_event SPRITE_FISHER, 10, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, DAY, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, FisherScript_0x72144, -1
+	person_event SPRITE_FISHER, 10, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, NITE, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, FisherScript_0x72144, -1
+	person_event SPRITE_GYM_GUY, 3, 11, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, CeladonGymGuyScript, -1
+	person_event SPRITE_GRAMPS, 8, 2, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, GrampsScript_0x72190, -1
--- a/maps/CeladonGameCornerPrizeRoom.asm
+++ b/maps/CeladonGameCornerPrizeRoom.asm
@@ -288,5 +288,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_GENTLEMAN, 2, 0, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CeladonGameCornerPrizeRoomGentlemanScript, -1
-	person_event SPRITE_PHARMACIST, 4, 4, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, CeladonGameCornerPrizeRoomPharmacistScript, -1
+	person_event SPRITE_GENTLEMAN, 2, 0, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, CeladonGameCornerPrizeRoomGentlemanScript, -1
+	person_event SPRITE_PHARMACIST, 4, 4, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, CeladonGameCornerPrizeRoomPharmacistScript, -1
--- a/maps/CeladonGym.asm
+++ b/maps/CeladonGym.asm
@@ -55,7 +55,7 @@
 LassMichelleScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x72e30
+	writetext LassMichelleAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -66,7 +66,7 @@
 PicnickerTanyaScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x72e8e
+	writetext PicnickerTanyaAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -77,7 +77,7 @@
 BeautyJuliaScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x72f01
+	writetext BeautyJuliaAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -88,7 +88,7 @@
 TwinsJoandzoe1Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x72f70
+	writetext TwinsJoandzoe1AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -99,7 +99,7 @@
 TwinsJoandzoe2Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x72fc0
+	writetext TwinsJoandzoe2AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -199,7 +199,7 @@
 	text "Oh, bleah!"
 	done
 
-UnknownText_0x72e30:
+LassMichelleAfterBattleText:
 	text "I just got care-"
 	line "less, that's all!"
 	done
@@ -214,7 +214,7 @@
 	text "Oh, that's it?"
 	done
 
-UnknownText_0x72e8e:
+PicnickerTanyaAfterBattleText:
 	text "Oh, look at all"
 	line "your BADGES. No"
 
@@ -232,7 +232,7 @@
 	text "How annoying!"
 	done
 
-UnknownText_0x72f01:
+BeautyJuliaAfterBattleText:
 	text "How do I go about"
 	line "becoming ladylike"
 	cont "like ERIKA?"
@@ -248,7 +248,7 @@
 	text "Oh… We lost…"
 	done
 
-UnknownText_0x72f70:
+TwinsJoandzoe1AfterBattleText:
 	text "ERIKA will get you"
 	line "back for us!"
 	done
@@ -262,7 +262,7 @@
 	text "We couldn't win…"
 	done
 
-UnknownText_0x72fc0:
+TwinsJoandzoe2AfterBattleText:
 	text "ERIKA is much,"
 	line "much stronger!"
 	done
@@ -286,9 +286,9 @@
 
 .PersonEvents:
 	db 6
-	person_event SPRITE_ERIKA, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, ErikaScript_0x72a6a, -1
-	person_event SPRITE_LASS, 8, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 2, TrainerLassMichelle, -1
-	person_event SPRITE_LASS, 8, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 2, TrainerPicnickerTanya, -1
-	person_event SPRITE_BUENA, 5, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 2, TrainerBeautyJulia, -1
-	person_event SPRITE_TWIN, 10, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerTwinsJoandzoe1, -1
-	person_event SPRITE_TWIN, 10, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerTwinsJoandzoe2, -1
+	person_event SPRITE_ERIKA, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, ErikaScript_0x72a6a, -1
+	person_event SPRITE_LASS, 8, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 2, TrainerLassMichelle, -1
+	person_event SPRITE_LASS, 8, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 2, TrainerPicnickerTanya, -1
+	person_event SPRITE_BUENA, 5, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 2, TrainerBeautyJulia, -1
+	person_event SPRITE_TWIN, 10, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 1, TrainerTwinsJoandzoe1, -1
+	person_event SPRITE_TWIN, 10, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 1, TrainerTwinsJoandzoe2, -1
--- a/maps/CeladonMansion1F.asm
+++ b/maps/CeladonMansion1F.asm
@@ -100,4 +100,4 @@
 	person_event SPRITE_GRANNY, 5, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CeladonMansionManager, -1
 	person_event SPRITE_GROWLITHE, 6, 2, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CeladonMansion1FMeowth, -1
 	person_event SPRITE_CLEFAIRY, 4, 3, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CeladonMansion1FClefairy, -1
-	person_event SPRITE_GROWLITHE, 4, 4, SPRITEMOVEDATA_POKEMON, 0, 2, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, CeladonMansion1FNidoranF, -1
+	person_event SPRITE_GROWLITHE, 4, 4, SPRITEMOVEDATA_POKEMON, 0, 2, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, CeladonMansion1FNidoranF, -1
--- a/maps/CeladonMansion3F.asm
+++ b/maps/CeladonMansion3F.asm
@@ -212,7 +212,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_COOLTRAINER_M, 6, 3, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x71670, -1
-	person_event SPRITE_GYM_GUY, 4, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, GymGuyScript_0x71696, -1
-	person_event SPRITE_SUPER_NERD, 7, 0, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x716bc, -1
-	person_event SPRITE_FISHER, 4, 0, SPRITEMOVEDATA_STANDING_UP, 0, 2, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, FisherScript_0x716bf, -1
+	person_event SPRITE_COOLTRAINER_M, 6, 3, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x71670, -1
+	person_event SPRITE_GYM_GUY, 4, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, GymGuyScript_0x71696, -1
+	person_event SPRITE_SUPER_NERD, 7, 0, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x716bc, -1
+	person_event SPRITE_FISHER, 4, 0, SPRITEMOVEDATA_STANDING_UP, 0, 2, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, FisherScript_0x716bf, -1
--- a/maps/CeladonMansionRoof.asm
+++ b/maps/CeladonMansionRoof.asm
@@ -52,4 +52,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_FISHER, 5, 7, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, FisherScript_0x71a39, -1
+	person_event SPRITE_FISHER, 5, 7, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, FisherScript_0x71a39, -1
--- a/maps/CeladonMansionRoofHouse.asm
+++ b/maps/CeladonMansionRoofHouse.asm
@@ -133,4 +133,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_PHARMACIST, 2, 3, SPRITEMOVEDATA_STANDING_DOWN, 2, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, PharmacistScript_0x71afd, -1
+	person_event SPRITE_PHARMACIST, 2, 3, SPRITEMOVEDATA_STANDING_DOWN, 2, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, PharmacistScript_0x71afd, -1
--- a/maps/CeladonPokeCenter1F.asm
+++ /dev/null
@@ -1,170 +1,0 @@
-const_value set 2
-	const CELADONPOKECENTER1F_NURSE
-	const CELADONPOKECENTER1F_GENTLEMAN
-	const CELADONPOKECENTER1F_PHARMACIST
-	const CELADONPOKECENTER1F_COOLTRAINER_F
-	const CELADONPOKECENTER1F_EUSINE
-
-CeladonPokeCenter1F_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-NurseScript_0x71e22:
-	jumpstd pokecenternurse
-
-GentlemanScript_0x71e25:
-	jumpstd happinesschecknpc
-
-CooltrainerFScript_0x71e28:
-	jumptextfaceplayer UnknownText_0x71e70
-
-PharmacistScript_0x71e2b:
-	jumptextfaceplayer UnknownText_0x71ec1
-
-CeladonEusine:
-	faceplayer
-	opentext
-	writetext CeladonEusineText1
-	buttonsound
-	writebyte SUICUNE
-	special SpecialMonCheck
-	iffalse .NoSuicune
-	special SpecialBeastsCheck
-	iftrue .HoOh
-	writetext NoBeastsText
-	waitbutton
-.NoSuicune:
-	closetext
-	end
-
-.HoOh:
-	writetext EusineLeavesCeladonText
-	waitbutton
-	closetext
-	checkcode VAR_FACING
-	if_equal $1, .Location1
-	applymovement CELADONPOKECENTER1F_EUSINE, .Movement1
-	jump .Continue
-
-.Location1:
-	applymovement CELADONPOKECENTER1F_EUSINE, .Movement2
-.Continue:
-	disappear CELADONPOKECENTER1F_EUSINE
-	playsound SFX_EXIT_BUILDING
-	waitsfx
-	end
-
-.Movement2:
-	step LEFT
-	step DOWN
-	step DOWN
-	step DOWN
-	step DOWN
-	step_end
-
-.Movement1:
-	step DOWN
-	step DOWN
-	step DOWN
-	step DOWN
-	step_end
-
-UnknownText_0x71e70:
-	text "ERIKA is a master"
-	line "of grass #MON."
-
-	para "She'll make you"
-	line "pay if you don't"
-	cont "watch yourself."
-	done
-
-UnknownText_0x71ec1:
-	text "TEAM ROCKET's"
-	line "hideout is in the"
-
-	para "basement of the"
-	line "GAME CORNER."
-
-	para "Oh, wait. That was"
-	line "three years ago."
-	done
-
-CeladonEusineText1:
-	text "EUSINE: Hi!"
-
-	para "I'm back visiting"
-	line "my hometown."
-
-	para "It's been quite a"
-	line "while."
-	done
-
-EusineLeavesCeladonText:
-	text "<PLAYER>, have you"
-	line "heard?"
-
-	para "There have been"
-	line "fresh rumors of a"
-
-	para "rainbow-colored"
-	line "#MON appearing"
-	cont "at TIN TOWER."
-
-	para "I've just had my"
-	line "party healed, so"
-
-	para "now I'm headed to"
-	line "ECRUTEAK."
-
-	para "I'll be seeing"
-	line "you, <PLAYER>!"
-	done
-
-NoBeastsText:
-	text "Oh, by the way,"
-	line "<PLAYER>."
-
-	para "Have you caught"
-	line "the legendary"
-
-	para "#MON RAIKOU and"
-	line "ENTEI?"
-
-	para $56, $56, $56
-
-	para "Okay…"
-
-	para "If you catch even"
-	line "one, I hope that"
-	cont "you'll inform me."
-
-	para "I'm counting on"
-	line "you, <PLAYER>!"
-	done
-
-CeladonPokeCenter1F_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 3
-	warp_def $7, $3, 5, CELADON_CITY
-	warp_def $7, $4, 5, CELADON_CITY
-	warp_def $7, $0, 1, POKECENTER_2F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 5
-	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x71e22, -1
-	person_event SPRITE_GENTLEMAN, 5, 1, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x71e25, -1
-	person_event SPRITE_PHARMACIST, 3, 0, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, PharmacistScript_0x71e2b, -1
-	person_event SPRITE_COOLTRAINER_F, 6, 8, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x71e28, -1
-	person_event SPRITE_SUPER_NERD, 3, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, CeladonEusine, EVENT_SET_WHEN_FOUGHT_HO_OH
--- a/maps/CeladonPokeCenter2FBeta.asm
+++ /dev/null
@@ -1,23 +1,0 @@
-CeladonPokeCenter2FBeta_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-CeladonPokeCenter2FBeta_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 1
-	warp_def $7, $0, 3, CELADON_POKECENTER_1F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 0
--- /dev/null
+++ b/maps/CeladonPokecenter1F.asm
@@ -1,0 +1,170 @@
+const_value set 2
+	const CELADONPOKECENTER1F_NURSE
+	const CELADONPOKECENTER1F_GENTLEMAN
+	const CELADONPOKECENTER1F_PHARMACIST
+	const CELADONPOKECENTER1F_COOLTRAINER_F
+	const CELADONPOKECENTER1F_EUSINE
+
+CeladonPokecenter1F_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+NurseScript_0x71e22:
+	jumpstd pokecenternurse
+
+GentlemanScript_0x71e25:
+	jumpstd happinesschecknpc
+
+CooltrainerFScript_0x71e28:
+	jumptextfaceplayer UnknownText_0x71e70
+
+PharmacistScript_0x71e2b:
+	jumptextfaceplayer UnknownText_0x71ec1
+
+CeladonEusine:
+	faceplayer
+	opentext
+	writetext CeladonEusineText1
+	buttonsound
+	writebyte SUICUNE
+	special SpecialMonCheck
+	iffalse .NoSuicune
+	special SpecialBeastsCheck
+	iftrue .HoOh
+	writetext NoBeastsText
+	waitbutton
+.NoSuicune:
+	closetext
+	end
+
+.HoOh:
+	writetext EusineLeavesCeladonText
+	waitbutton
+	closetext
+	checkcode VAR_FACING
+	if_equal $1, .Location1
+	applymovement CELADONPOKECENTER1F_EUSINE, .Movement1
+	jump .Continue
+
+.Location1:
+	applymovement CELADONPOKECENTER1F_EUSINE, .Movement2
+.Continue:
+	disappear CELADONPOKECENTER1F_EUSINE
+	playsound SFX_EXIT_BUILDING
+	waitsfx
+	end
+
+.Movement2:
+	step LEFT
+	step DOWN
+	step DOWN
+	step DOWN
+	step DOWN
+	step_end
+
+.Movement1:
+	step DOWN
+	step DOWN
+	step DOWN
+	step DOWN
+	step_end
+
+UnknownText_0x71e70:
+	text "ERIKA is a master"
+	line "of grass #MON."
+
+	para "She'll make you"
+	line "pay if you don't"
+	cont "watch yourself."
+	done
+
+UnknownText_0x71ec1:
+	text "TEAM ROCKET's"
+	line "hideout is in the"
+
+	para "basement of the"
+	line "GAME CORNER."
+
+	para "Oh, wait. That was"
+	line "three years ago."
+	done
+
+CeladonEusineText1:
+	text "EUSINE: Hi!"
+
+	para "I'm back visiting"
+	line "my hometown."
+
+	para "It's been quite a"
+	line "while."
+	done
+
+EusineLeavesCeladonText:
+	text "<PLAYER>, have you"
+	line "heard?"
+
+	para "There have been"
+	line "fresh rumors of a"
+
+	para "rainbow-colored"
+	line "#MON appearing"
+	cont "at TIN TOWER."
+
+	para "I've just had my"
+	line "party healed, so"
+
+	para "now I'm headed to"
+	line "ECRUTEAK."
+
+	para "I'll be seeing"
+	line "you, <PLAYER>!"
+	done
+
+NoBeastsText:
+	text "Oh, by the way,"
+	line "<PLAYER>."
+
+	para "Have you caught"
+	line "the legendary"
+
+	para "#MON RAIKOU and"
+	line "ENTEI?"
+
+	para $56, $56, $56
+
+	para "Okay…"
+
+	para "If you catch even"
+	line "one, I hope that"
+	cont "you'll inform me."
+
+	para "I'm counting on"
+	line "you, <PLAYER>!"
+	done
+
+CeladonPokecenter1F_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 3
+	warp_def $7, $3, 5, CELADON_CITY
+	warp_def $7, $4, 5, CELADON_CITY
+	warp_def $7, $0, 1, POKECENTER_2F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 5
+	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x71e22, -1
+	person_event SPRITE_GENTLEMAN, 5, 1, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x71e25, -1
+	person_event SPRITE_PHARMACIST, 3, 0, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, PharmacistScript_0x71e2b, -1
+	person_event SPRITE_COOLTRAINER_F, 6, 8, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x71e28, -1
+	person_event SPRITE_SUPER_NERD, 3, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, CeladonEusine, EVENT_SET_WHEN_FOUGHT_HO_OH
--- /dev/null
+++ b/maps/CeladonPokecenter2FBeta.asm
@@ -1,0 +1,23 @@
+CeladonPokecenter2FBeta_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+CeladonPokecenter2FBeta_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 1
+	warp_def $7, $0, 3, CELADON_POKECENTER_1F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 0
--- a/maps/CeruleanCity.asm
+++ b/maps/CeruleanCity.asm
@@ -12,8 +12,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
 	dbw MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
@@ -142,7 +140,7 @@
 CeruleanLockedDoor:
 	jumptext CeruleanLockedDoorText
 
-CeruleanCityPokeCenterSign:
+CeruleanCityPokecenterSign:
 	jumpstd pokecentersign
 
 CeruleanCityMartSign:
@@ -301,15 +299,15 @@
 	signpost 17, 25, SIGNPOST_READ, CeruleanPoliceSign
 	signpost 7, 23, SIGNPOST_READ, CeruleanCapeSign
 	signpost 29, 14, SIGNPOST_READ, CeruleanLockedDoor
-	signpost 21, 20, SIGNPOST_READ, CeruleanCityPokeCenterSign
+	signpost 21, 20, SIGNPOST_READ, CeruleanCityPokecenterSign
 	signpost 29, 26, SIGNPOST_READ, CeruleanCityMartSign
 	signpost 12, 2, SIGNPOST_ITEM, CeruleanCityHiddenBerserkGene
 
 .PersonEvents:
 	db 6
-	person_event SPRITE_COOLTRAINER_M, 23, 15, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x184009, -1
-	person_event SPRITE_SUPER_NERD, 15, 23, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x18401d, -1
+	person_event SPRITE_COOLTRAINER_M, 23, 15, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x184009, -1
+	person_event SPRITE_SUPER_NERD, 15, 23, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x18401d, -1
 	person_event SPRITE_SLOWPOKE, 24, 20, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CeruleanCitySlowbro, -1
-	person_event SPRITE_COOLTRAINER_F, 24, 21, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x18402a, -1
-	person_event SPRITE_FISHER, 26, 30, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, FisherScript_0x18404a, -1
-	person_event SPRITE_YOUNGSTER, 12, 6, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x184064, -1
+	person_event SPRITE_COOLTRAINER_F, 24, 21, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x18402a, -1
+	person_event SPRITE_FISHER, 26, 30, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, FisherScript_0x18404a, -1
+	person_event SPRITE_YOUNGSTER, 12, 6, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 1, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x184064, -1
--- a/maps/CeruleanGym.asm
+++ b/maps/CeruleanGym.asm
@@ -9,22 +9,20 @@
 CeruleanGym_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .GruntRunsOut
 
-	; triggers
-	dw UnknownScript_0x1883d9, 0
-	dw UnknownScript_0x1883da, 0
-
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x1883d9:
+.DummyTrigger0:
 	end
 
-UnknownScript_0x1883da:
-	priorityjump UnknownScript_0x1883de
+.GruntRunsOut:
+	priorityjump .GruntRunsOutScript
 	end
 
-UnknownScript_0x1883de:
+.GruntRunsOutScript:
 	applymovement CERULEANGYM_ROCKET, MovementData_0x1884e3
 	playsound SFX_TACKLE
 	applymovement CERULEANGYM_ROCKET, MovementData_0x1884eb
@@ -93,7 +91,7 @@
 SwimmerfDianaScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x188856
+	writetext SwimmerfDianaAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -104,7 +102,7 @@
 SwimmerfBrianaScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1888c0
+	writetext SwimmerfBrianaAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -115,7 +113,7 @@
 SwimmermParkerScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x188943
+	writetext SwimmermParkerAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -299,7 +297,7 @@
 	line "the winner!"
 	done
 
-UnknownText_0x188856:
+SwimmerfDianaAfterBattleText:
 	text "I'll be swimming"
 	line "quietly."
 	done
@@ -315,7 +313,7 @@
 	line "disposed of me…"
 	done
 
-UnknownText_0x1888c0:
+SwimmerfBrianaAfterBattleText:
 	text "Don't be too smug"
 	line "about beating me."
 
@@ -335,7 +333,7 @@
 	text "This can't be…"
 	done
 
-UnknownText_0x188943:
+SwimmermParkerAfterBattleText:
 	text "MISTY has gotten"
 	line "much better in the"
 	cont "past few years."
@@ -386,8 +384,8 @@
 .PersonEvents:
 	db 6
 	person_event SPRITE_ROCKET, 10, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_CERULEAN_GYM_ROCKET
-	person_event SPRITE_MISTY, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, MistyScript_0x188432, EVENT_TRAINERS_IN_CERULEAN_GYM
-	person_event SPRITE_SWIMMER_GIRL, 6, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerSwimmerfDiana, EVENT_TRAINERS_IN_CERULEAN_GYM
-	person_event SPRITE_SWIMMER_GIRL, 9, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 1, TrainerSwimmerfBriana, EVENT_TRAINERS_IN_CERULEAN_GYM
-	person_event SPRITE_SWIMMER_GUY, 9, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerSwimmermParker, EVENT_TRAINERS_IN_CERULEAN_GYM
-	person_event SPRITE_GYM_GUY, 13, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, CeruleanGymGuyScript, EVENT_TRAINERS_IN_CERULEAN_GYM
+	person_event SPRITE_MISTY, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, MistyScript_0x188432, EVENT_TRAINERS_IN_CERULEAN_GYM
+	person_event SPRITE_SWIMMER_GIRL, 6, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 3, TrainerSwimmerfDiana, EVENT_TRAINERS_IN_CERULEAN_GYM
+	person_event SPRITE_SWIMMER_GIRL, 9, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 1, TrainerSwimmerfBriana, EVENT_TRAINERS_IN_CERULEAN_GYM
+	person_event SPRITE_SWIMMER_GUY, 9, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerSwimmermParker, EVENT_TRAINERS_IN_CERULEAN_GYM
+	person_event SPRITE_GYM_GUY, 13, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, CeruleanGymGuyScript, EVENT_TRAINERS_IN_CERULEAN_GYM
--- a/maps/CeruleanMart.asm
+++ b/maps/CeruleanMart.asm
@@ -63,5 +63,5 @@
 .PersonEvents:
 	db 3
 	person_event SPRITE_CLERK, 3, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CeruleanMart_Clerk, -1
-	person_event SPRITE_COOLTRAINER_M, 6, 1, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, CeruleanMart_CooltrainerM, -1
-	person_event SPRITE_COOLTRAINER_F, 2, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CeruleanMart_CooltrainerF, -1
+	person_event SPRITE_COOLTRAINER_M, 6, 1, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, CeruleanMart_CooltrainerM, -1
+	person_event SPRITE_COOLTRAINER_F, 2, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, CeruleanMart_CooltrainerF, -1
--- a/maps/CeruleanPokeCenter1F.asm
+++ /dev/null
@@ -1,85 +1,0 @@
-const_value set 2
-	const CERULEANPOKECENTER1F_NURSE
-	const CERULEANPOKECENTER1F_SUPER_NERD
-	const CERULEANPOKECENTER1F_GYM_GUY
-
-CeruleanPokeCenter1F_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-NurseScript_0x18820f:
-	jumpstd pokecenternurse
-
-SuperNerdScript_0x188212:
-	special Mobile_DummyReturnFalse
-	iftrue .mobile
-	jumptextfaceplayer UnknownText_0x188221
-
-.mobile
-	jumptextfaceplayer UnknownText_0x18828c
-
-GymGuyScript_0x18821e:
-	jumptextfaceplayer UnknownText_0x1882ff
-
-UnknownText_0x188221:
-	text "For battles, I'd"
-	line "much rather use"
-
-	para "#MON I've been"
-	line "raising, even if"
-
-	para "they're weaker"
-	line "than some newly"
-	cont "caught #MON."
-	done
-
-UnknownText_0x18828c:
-	text "Do you battle by"
-	line "mobile phone?"
-
-	para "If time runs out"
-	line "during a battle,"
-
-	para "waiting to see who"
-	line "won is really"
-	cont "nerve wracking."
-	done
-
-UnknownText_0x1882ff:
-	text "The MAGNET TRAIN"
-	line "travels at over"
-
-	para "340 mph. It goes"
-	line "between KANTO and"
-
-	para "JOHTO in almost no"
-	line "time at all."
-
-	para "It really makes"
-	line "JOHTO accessible."
-	done
-
-CeruleanPokeCenter1F_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 3
-	warp_def $7, $3, 4, CERULEAN_CITY
-	warp_def $7, $4, 4, CERULEAN_CITY
-	warp_def $7, $0, 1, POKECENTER_2F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 3
-	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x18820f, -1
-	person_event SPRITE_SUPER_NERD, 4, 8, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x188212, -1
-	person_event SPRITE_GYM_GUY, 5, 1, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, GymGuyScript_0x18821e, -1
--- a/maps/CeruleanPokeCenter2FBeta.asm
+++ /dev/null
@@ -1,23 +1,0 @@
-CeruleanPokeCenter2FBeta_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-CeruleanPokeCenter2FBeta_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 1
-	warp_def $7, $0, 1, CERULEAN_POKECENTER_1F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 0
--- /dev/null
+++ b/maps/CeruleanPokecenter1F.asm
@@ -1,0 +1,85 @@
+const_value set 2
+	const CERULEANPOKECENTER1F_NURSE
+	const CERULEANPOKECENTER1F_SUPER_NERD
+	const CERULEANPOKECENTER1F_GYM_GUY
+
+CeruleanPokecenter1F_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+NurseScript_0x18820f:
+	jumpstd pokecenternurse
+
+SuperNerdScript_0x188212:
+	special Mobile_DummyReturnFalse
+	iftrue .mobile
+	jumptextfaceplayer UnknownText_0x188221
+
+.mobile
+	jumptextfaceplayer UnknownText_0x18828c
+
+GymGuyScript_0x18821e:
+	jumptextfaceplayer UnknownText_0x1882ff
+
+UnknownText_0x188221:
+	text "For battles, I'd"
+	line "much rather use"
+
+	para "#MON I've been"
+	line "raising, even if"
+
+	para "they're weaker"
+	line "than some newly"
+	cont "caught #MON."
+	done
+
+UnknownText_0x18828c:
+	text "Do you battle by"
+	line "mobile phone?"
+
+	para "If time runs out"
+	line "during a battle,"
+
+	para "waiting to see who"
+	line "won is really"
+	cont "nerve wracking."
+	done
+
+UnknownText_0x1882ff:
+	text "The MAGNET TRAIN"
+	line "travels at over"
+
+	para "340 mph. It goes"
+	line "between KANTO and"
+
+	para "JOHTO in almost no"
+	line "time at all."
+
+	para "It really makes"
+	line "JOHTO accessible."
+	done
+
+CeruleanPokecenter1F_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 3
+	warp_def $7, $3, 4, CERULEAN_CITY
+	warp_def $7, $4, 4, CERULEAN_CITY
+	warp_def $7, $0, 1, POKECENTER_2F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 3
+	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x18820f, -1
+	person_event SPRITE_SUPER_NERD, 4, 8, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x188212, -1
+	person_event SPRITE_GYM_GUY, 5, 1, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, GymGuyScript_0x18821e, -1
--- /dev/null
+++ b/maps/CeruleanPokecenter2FBeta.asm
@@ -1,0 +1,23 @@
+CeruleanPokecenter2FBeta_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+CeruleanPokecenter2FBeta_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 1
+	warp_def $7, $0, 1, CERULEAN_POKECENTER_1F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 0
--- a/maps/CeruleanPoliceStation.asm
+++ b/maps/CeruleanPoliceStation.asm
@@ -60,6 +60,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_FISHING_GURU, 1, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, FishingGuruScript_0x18804a, -1
-	person_event SPRITE_POKEFAN_F, 4, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, PokefanFScript_0x18804d, -1
-	person_event SPRITE_DIGLETT, 5, 3, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, CeruleanDiglett, -1
+	person_event SPRITE_FISHING_GURU, 1, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, FishingGuruScript_0x18804a, -1
+	person_event SPRITE_POKEFAN_F, 4, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, PokefanFScript_0x18804d, -1
+	person_event SPRITE_DIGLETT, 5, 3, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, CeruleanDiglett, -1
--- a/maps/CeruleanTradeSpeechHouse.asm
+++ b/maps/CeruleanTradeSpeechHouse.asm
@@ -70,7 +70,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_GRANNY, 4, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, GrannyScript_0x188133, -1
-	person_event SPRITE_GRAMPS, 2, 1, SPRITEMOVEDATA_WANDER, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, GrampsScript_0x188136, -1
-	person_event SPRITE_RHYDON, 2, 5, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, RhydonScript_0x188139, -1
+	person_event SPRITE_GRANNY, 4, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, GrannyScript_0x188133, -1
+	person_event SPRITE_GRAMPS, 2, 1, SPRITEMOVEDATA_WANDER, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, GrampsScript_0x188136, -1
+	person_event SPRITE_RHYDON, 2, 5, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, RhydonScript_0x188139, -1
 	person_event SPRITE_ZUBAT, 6, 5, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ZubatScript_0x188143, -1
--- a/maps/CharcoalKiln.asm
+++ b/maps/CharcoalKiln.asm
@@ -170,4 +170,4 @@
 	db 3
 	person_event SPRITE_BLACK_BELT, 3, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CharcoalKilnBoss, EVENT_CHARCOAL_KILN_BOSS
 	person_event SPRITE_YOUNGSTER, 3, 5, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CharcoalKilnApprentice, EVENT_CHARCOAL_KILN_APPRENTICE
-	person_event SPRITE_MOLTRES, 6, 5, SPRITEMOVEDATA_POKEMON, 2, 2, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, CharcoalKilnFarfetchd, EVENT_CHARCOAL_KILN_FARFETCH_D
+	person_event SPRITE_MOLTRES, 6, 5, SPRITEMOVEDATA_POKEMON, 2, 2, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, CharcoalKilnFarfetchd, EVENT_CHARCOAL_KILN_FARFETCH_D
--- a/maps/CherrygroveCity.asm
+++ b/maps/CherrygroveCity.asm
@@ -8,21 +8,17 @@
 CherrygroveCity_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-
 .MapCallbacks:
 	db 1
-
-	; callbacks
 	dbw MAPCALLBACK_NEWMAP, .FlyPoint
 
-.Trigger0:
+.DummyTrigger0:
 	end
 
-.Trigger1:
+.DummyTrigger1:
 	end
 
 .FlyPoint:
@@ -44,7 +40,7 @@
 	follow CHERRYGROVECITY_GRAMPS, PLAYER
 	applymovement CHERRYGROVECITY_GRAMPS, GuideGentMovement1
 	opentext
-	writetext GuideGentPokeCenterText
+	writetext GuideGentPokecenterText
 	waitbutton
 	closetext
 	applymovement CHERRYGROVECITY_GRAMPS, GuideGentMovement2
@@ -235,7 +231,7 @@
 GuideGentsHouseSign:
 	jumptext GuideGentsHouseSignText
 
-CherrygroveCityPokeCenterSign:
+CherrygroveCityPokecenterSign:
 	jumpstd pokecentersign
 
 CherrygroveCityMartSign:
@@ -358,7 +354,7 @@
 	line "Follow me!"
 	done
 
-GuideGentPokeCenterText:
+GuideGentPokecenterText:
 	text "This is a #MON"
 	line "CENTER. They heal"
 
@@ -572,12 +568,12 @@
 	signpost 8, 30, SIGNPOST_READ, CherrygroveCitySign
 	signpost 9, 23, SIGNPOST_READ, GuideGentsHouseSign
 	signpost 3, 24, SIGNPOST_READ, CherrygroveCityMartSign
-	signpost 3, 30, SIGNPOST_READ, CherrygroveCityPokeCenterSign
+	signpost 3, 30, SIGNPOST_READ, CherrygroveCityPokecenterSign
 
 .PersonEvents:
 	db 5
 	person_event SPRITE_GRAMPS, 6, 32, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CherrygroveCityGuideGent, EVENT_GUIDE_GENT_IN_HIS_HOUSE
 	person_event SPRITE_SILVER, 6, 39, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_RIVAL_CHERRYGROVE_CITY
-	person_event SPRITE_TEACHER, 12, 27, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, CherrygroveTeacherScript, -1
-	person_event SPRITE_YOUNGSTER, 7, 23, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CherrygroveYoungsterScript, -1
-	person_event SPRITE_FISHER, 12, 7, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, MysticWaterGuy, -1
+	person_event SPRITE_TEACHER, 12, 27, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, CherrygroveTeacherScript, -1
+	person_event SPRITE_YOUNGSTER, 7, 23, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, CherrygroveYoungsterScript, -1
+	person_event SPRITE_FISHER, 12, 7, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, MysticWaterGuy, -1
--- a/maps/CherrygroveEvolutionSpeechHouse.asm
+++ b/maps/CherrygroveEvolutionSpeechHouse.asm
@@ -60,5 +60,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_LASS, 5, 3, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x196cb9, -1
-	person_event SPRITE_YOUNGSTER, 5, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x196cb2, -1
+	person_event SPRITE_LASS, 5, 3, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x196cb9, -1
+	person_event SPRITE_YOUNGSTER, 5, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x196cb2, -1
--- a/maps/CherrygroveGymSpeechHouse.asm
+++ b/maps/CherrygroveGymSpeechHouse.asm
@@ -64,4 +64,4 @@
 .PersonEvents:
 	db 2
 	person_event SPRITE_POKEFAN_M, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x196ae1, -1
-	person_event SPRITE_BUG_CATCHER, 5, 5, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, BugCatcherScript_0x196ae4, -1
+	person_event SPRITE_BUG_CATCHER, 5, 5, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, BugCatcherScript_0x196ae4, -1
--- a/maps/CherrygroveMart.asm
+++ b/maps/CherrygroveMart.asm
@@ -90,4 +90,4 @@
 	db 3
 	person_event SPRITE_CLERK, 3, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ClerkScript_0x19680a, -1
 	person_event SPRITE_COOLTRAINER_M, 6, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x19681d, -1
-	person_event SPRITE_YOUNGSTER, 5, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x196831, -1
+	person_event SPRITE_YOUNGSTER, 5, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x196831, -1
--- a/maps/CherrygrovePokeCenter1F.asm
+++ /dev/null
@@ -1,92 +1,0 @@
-const_value set 2
-	const CHERRYGROVEPOKECENTER1F_NURSE
-	const CHERRYGROVEPOKECENTER1F_FISHER
-	const CHERRYGROVEPOKECENTER1F_GENTLEMAN
-	const CHERRYGROVEPOKECENTER1F_TEACHER
-
-CherrygrovePokeCenter1F_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-NurseScript_0x19696d:
-	jumpstd pokecenternurse
-
-FisherScript_0x196970:
-	jumptextfaceplayer UnknownText_0x19698a
-
-GentlemanScript_0x196973:
-	jumptextfaceplayer UnknownText_0x1969c8
-
-TeacherScript_0x196976:
-	faceplayer
-	opentext
-	checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
-	iftrue UnknownScript_0x196984
-	writetext UnknownText_0x1969f1
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x196984:
-	writetext UnknownText_0x196a46
-	waitbutton
-	closetext
-	end
-
-UnknownText_0x19698a:
-	text "It's great. I can"
-	line "store any number"
-
-	para "of #MON, and"
-	line "it's all free."
-	done
-
-UnknownText_0x1969c8:
-	text "That PC is free"
-	line "for any trainer"
-	cont "to use."
-	done
-
-UnknownText_0x1969f1:
-	text "The COMMUNICATION"
-	line "CENTER upstairs"
-	cont "was just built."
-
-	para "But they're still"
-	line "finishing it up."
-	done
-
-UnknownText_0x196a46:
-	text "The COMMUNICATION"
-	line "CENTER upstairs"
-	cont "was just built."
-
-	para "I traded #MON"
-	line "there already!"
-	done
-
-CherrygrovePokeCenter1F_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 3
-	warp_def $7, $3, 2, CHERRYGROVE_CITY
-	warp_def $7, $4, 2, CHERRYGROVE_CITY
-	warp_def $7, $0, 1, POKECENTER_2F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 4
-	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x19696d, -1
-	person_event SPRITE_FISHER, 3, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, FisherScript_0x196970, -1
-	person_event SPRITE_GENTLEMAN, 6, 8, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x196973, -1
-	person_event SPRITE_TEACHER, 6, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, TeacherScript_0x196976, -1
--- /dev/null
+++ b/maps/CherrygrovePokecenter1F.asm
@@ -1,0 +1,92 @@
+const_value set 2
+	const CHERRYGROVEPOKECENTER1F_NURSE
+	const CHERRYGROVEPOKECENTER1F_FISHER
+	const CHERRYGROVEPOKECENTER1F_GENTLEMAN
+	const CHERRYGROVEPOKECENTER1F_TEACHER
+
+CherrygrovePokecenter1F_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+NurseScript_0x19696d:
+	jumpstd pokecenternurse
+
+FisherScript_0x196970:
+	jumptextfaceplayer UnknownText_0x19698a
+
+GentlemanScript_0x196973:
+	jumptextfaceplayer UnknownText_0x1969c8
+
+TeacherScript_0x196976:
+	faceplayer
+	opentext
+	checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
+	iftrue UnknownScript_0x196984
+	writetext UnknownText_0x1969f1
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x196984:
+	writetext UnknownText_0x196a46
+	waitbutton
+	closetext
+	end
+
+UnknownText_0x19698a:
+	text "It's great. I can"
+	line "store any number"
+
+	para "of #MON, and"
+	line "it's all free."
+	done
+
+UnknownText_0x1969c8:
+	text "That PC is free"
+	line "for any trainer"
+	cont "to use."
+	done
+
+UnknownText_0x1969f1:
+	text "The COMMUNICATION"
+	line "CENTER upstairs"
+	cont "was just built."
+
+	para "But they're still"
+	line "finishing it up."
+	done
+
+UnknownText_0x196a46:
+	text "The COMMUNICATION"
+	line "CENTER upstairs"
+	cont "was just built."
+
+	para "I traded #MON"
+	line "there already!"
+	done
+
+CherrygrovePokecenter1F_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 3
+	warp_def $7, $3, 2, CHERRYGROVE_CITY
+	warp_def $7, $4, 2, CHERRYGROVE_CITY
+	warp_def $7, $0, 1, POKECENTER_2F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 4
+	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x19696d, -1
+	person_event SPRITE_FISHER, 3, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, FisherScript_0x196970, -1
+	person_event SPRITE_GENTLEMAN, 6, 8, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x196973, -1
+	person_event SPRITE_TEACHER, 6, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, TeacherScript_0x196976, -1
--- a/maps/CianwoodCity.asm
+++ b/maps/CianwoodCity.asm
@@ -15,21 +15,17 @@
 CianwoodCity_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-
 .MapCallbacks:
 	db 1
-
-	; callbacks
 	dbw MAPCALLBACK_NEWMAP, .FlyPointAndSuicune
 
-.Trigger0:
+.DummyTrigger0:
 	end
 
-.Trigger1:
+.DummyTrigger1:
 	end
 
 .FlyPointAndSuicune:
@@ -142,7 +138,7 @@
 CianwoodPokeSeerSign:
 	jumptext CianwoodPokeSeerSignText
 
-CianwoodPokeCenterSign:
+CianwoodPokecenterSign:
 	jumpstd pokecentersign
 
 CianwoodCityRock:
@@ -406,7 +402,7 @@
 	db 8
 	signpost 34, 20, SIGNPOST_READ, CianwoodCitySign
 	signpost 45, 7, SIGNPOST_READ, CianwoodGymSign
-	signpost 43, 24, SIGNPOST_READ, CianwoodPokeCenterSign
+	signpost 43, 24, SIGNPOST_READ, CianwoodPokecenterSign
 	signpost 47, 19, SIGNPOST_READ, CianwoodPharmacySign
 	signpost 32, 8, SIGNPOST_READ, CianwoodPhotoStudioSign
 	signpost 24, 8, SIGNPOST_READ, CianwoodPokeSeerSign
@@ -415,7 +411,7 @@
 
 .PersonEvents:
 	db 12
-	person_event SPRITE_STANDING_YOUNGSTER, 37, 21, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, CianwoodCityYoungster, -1
+	person_event SPRITE_STANDING_YOUNGSTER, 37, 21, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, CianwoodCityYoungster, -1
 	person_event SPRITE_POKEFAN_M, 33, 17, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CianwoodCityPokefanM, -1
 	person_event SPRITE_LASS, 42, 14, SPRITEMOVEDATA_WALK_UP_DOWN, 2, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CianwoodCityLass, -1
 	person_event SPRITE_ROCK, 16, 8, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CianwoodCityRock, -1
@@ -425,5 +421,5 @@
 	person_event SPRITE_ROCK, 27, 10, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CianwoodCityRock, -1
 	person_event SPRITE_ROCK, 19, 4, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CianwoodCityRock, -1
 	person_event SPRITE_POKEFAN_F, 46, 10, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CianwoodCityChucksWife, -1
-	person_event SPRITE_SUPER_NERD, 21, 11, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_CIANWOOD_CITY_EUSINE
-	person_event SPRITE_SUICUNE, 14, 10, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_SAW_SUICUNE_AT_CIANWOOD_CITY
+	person_event SPRITE_SUPER_NERD, 21, 11, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_CIANWOOD_CITY_EUSINE
+	person_event SPRITE_SUICUNE, 14, 10, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_SAW_SUICUNE_AT_CIANWOOD_CITY
--- a/maps/CianwoodCityPhotoStudio.asm
+++ b/maps/CianwoodCityPhotoStudio.asm
@@ -65,4 +65,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_FISHING_GURU, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, FishingGuruScript_0x9e0e0, -1
+	person_event SPRITE_FISHING_GURU, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, FishingGuruScript_0x9e0e0, -1
--- a/maps/CianwoodGym.asm
+++ b/maps/CianwoodGym.asm
@@ -324,11 +324,11 @@
 
 .PersonEvents:
 	db 9
-	person_event SPRITE_CHUCK, 1, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, ChuckScript_0x9d60f, -1
-	person_event SPRITE_BLACK_BELT, 12, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 3, TrainerBlackbeltYoshi, -1
-	person_event SPRITE_BLACK_BELT, 12, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 3, TrainerBlackbeltLao, -1
-	person_event SPRITE_BLACK_BELT, 9, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 2, TrainerBlackbeltNob, -1
-	person_event SPRITE_BLACK_BELT, 5, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 1, TrainerBlackbeltLung, -1
+	person_event SPRITE_CHUCK, 1, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, ChuckScript_0x9d60f, -1
+	person_event SPRITE_BLACK_BELT, 12, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 3, TrainerBlackbeltYoshi, -1
+	person_event SPRITE_BLACK_BELT, 12, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 3, TrainerBlackbeltLao, -1
+	person_event SPRITE_BLACK_BELT, 9, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 2, TrainerBlackbeltNob, -1
+	person_event SPRITE_BLACK_BELT, 5, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 1, TrainerBlackbeltLung, -1
 	person_event SPRITE_BOULDER, 1, 5, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CianwoodGymBoulder, -1
 	person_event SPRITE_BOULDER, 7, 3, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CianwoodGymBoulder, -1
 	person_event SPRITE_BOULDER, 7, 4, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CianwoodGymBoulder, -1
--- a/maps/CianwoodLugiaSpeechHouse.asm
+++ b/maps/CianwoodLugiaSpeechHouse.asm
@@ -81,5 +81,5 @@
 .PersonEvents:
 	db 3
 	person_event SPRITE_TEACHER, 4, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, TeacherScript_0x9e1b0, -1
-	person_event SPRITE_LASS, 5, 6, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x9e1b3, -1
-	person_event SPRITE_TWIN, 2, 0, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, TwinScript_0x9e1b6, -1
+	person_event SPRITE_LASS, 5, 6, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x9e1b3, -1
+	person_event SPRITE_TWIN, 2, 0, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, TwinScript_0x9e1b6, -1
--- a/maps/CianwoodPharmacy.asm
+++ b/maps/CianwoodPharmacy.asm
@@ -4,14 +4,12 @@
 CianwoodPharmacy_MapScriptHeader:
 .MapTriggers:
 	db 1
+	maptrigger .DummyTrigger
 
-	; triggers
-	dw CianwoodPharmacyTrigger, 0
-
 .MapCallbacks:
 	db 0
 
-CianwoodPharmacyTrigger:
+.DummyTrigger:
 	end
 
 CianwoodPharmacist:
@@ -93,4 +91,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_PHARMACIST, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CianwoodPharmacist, -1
+	person_event SPRITE_PHARMACIST, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, CianwoodPharmacist, -1
--- a/maps/CianwoodPokeCenter1F.asm
+++ /dev/null
@@ -1,155 +1,0 @@
-const_value set 2
-	const CIANWOODPOKECENTER1F_NURSE
-	const CIANWOODPOKECENTER1F_LASS
-	const CIANWOODPOKECENTER1F_GYM_GUY
-	const CIANWOODPOKECENTER1F_SUPER_NERD
-
-CianwoodPokeCenter1F_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-NurseScript_0x9dbcf:
-	jumpstd pokecenternurse
-
-LassScript_0x9dbd2:
-	jumptextfaceplayer UnknownText_0x9dbed
-
-CianwoodGymGuyScript:
-	faceplayer
-	checkevent EVENT_BEAT_CHUCK
-	iftrue .CianwoodGymGuyWinScript
-	opentext
-	writetext CianwoodGymGuyText
-	waitbutton
-	closetext
-	end
-
-.CianwoodGymGuyWinScript:
-	opentext
-	writetext CianwoodGymGuyWinText
-	waitbutton
-	closetext
-	end
-
-SuperNerdScript_0x9dbea:
-	jumptextfaceplayer UnknownText_0x9ded7
-
-UnknownText_0x9dbed:
-	text "Did you meet the"
-	line "#MANIAC?"
-
-	para "He's always brag-"
-	line "ging about his"
-	cont "rare #MON."
-	done
-
-CianwoodGymGuyText:
-	text "The #MON GYM"
-	line "trainers here are"
-	cont "macho bullies."
-
-	para "If I stick around,"
-	line "they might come"
-	cont "after me."
-
-	para "Here's some ad-"
-	line "vice: the GYM"
-
-	para "LEADER uses the"
-	line "fighting-type."
-
-	para "So you should"
-	line "confound him with"
-	cont "psychic #MON."
-
-	para "Wipe out his #-"
-	line "MON before they"
-
-	para "can use their"
-	line "physical strength."
-
-	para "And those boulders"
-	line "in the middle of"
-	cont "the GYM?"
-
-	para "If you don't move"
-	line "them correctly,"
-
-	para "you won't reach"
-	line "the GYM LEADER."
-
-	para "If you get stuck,"
-	line "go outside."
-	done
-
-CianwoodGymGuyWinText:
-	text "<PLAYER>! You won!"
-	line "I could tell by"
-	cont "looking at you!"
-	done
-
-UnknownText_0x9ddf2:
-	text "Don't you get the"
-	line "urge to show off"
-
-	para "your #MON to"
-	line "friends?"
-
-	para "I wish I could"
-	line "show the #MON I"
-
-	para "raised to my pal"
-	line "in VIOLET."
-	done
-
-UnknownText_0x9de66:
-	text "I've been battling"
-	line "my pal in VIOLET"
-
-	para "using a MOBILE"
-	line "ADAPTER link."
-
-	para "I'm down 5-7"
-	line "against him. I've"
-	cont "gotta crank it up!"
-	done
-
-UnknownText_0x9ded7:
-	text "I love showing off"
-	line "the #MON that"
-
-	para "I've raised."
-	line "Don't you?"
-
-	para "I'm going to get"
-	line "into a bunch of"
-
-	para "battles, and show"
-	line "off my #MON!"
-	done
-
-CianwoodPokeCenter1F_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 3
-	warp_def $7, $3, 3, CIANWOOD_CITY
-	warp_def $7, $4, 3, CIANWOOD_CITY
-	warp_def $7, $0, 1, POKECENTER_2F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 4
-	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x9dbcf, -1
-	person_event SPRITE_LASS, 5, 1, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x9dbd2, -1
-	person_event SPRITE_GYM_GUY, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CianwoodGymGuyScript, -1
-	person_event SPRITE_SUPER_NERD, 6, 8, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x9dbea, -1
--- /dev/null
+++ b/maps/CianwoodPokecenter1F.asm
@@ -1,0 +1,155 @@
+const_value set 2
+	const CIANWOODPOKECENTER1F_NURSE
+	const CIANWOODPOKECENTER1F_LASS
+	const CIANWOODPOKECENTER1F_GYM_GUY
+	const CIANWOODPOKECENTER1F_SUPER_NERD
+
+CianwoodPokecenter1F_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+NurseScript_0x9dbcf:
+	jumpstd pokecenternurse
+
+LassScript_0x9dbd2:
+	jumptextfaceplayer UnknownText_0x9dbed
+
+CianwoodGymGuyScript:
+	faceplayer
+	checkevent EVENT_BEAT_CHUCK
+	iftrue .CianwoodGymGuyWinScript
+	opentext
+	writetext CianwoodGymGuyText
+	waitbutton
+	closetext
+	end
+
+.CianwoodGymGuyWinScript:
+	opentext
+	writetext CianwoodGymGuyWinText
+	waitbutton
+	closetext
+	end
+
+SuperNerdScript_0x9dbea:
+	jumptextfaceplayer UnknownText_0x9ded7
+
+UnknownText_0x9dbed:
+	text "Did you meet the"
+	line "#MANIAC?"
+
+	para "He's always brag-"
+	line "ging about his"
+	cont "rare #MON."
+	done
+
+CianwoodGymGuyText:
+	text "The #MON GYM"
+	line "trainers here are"
+	cont "macho bullies."
+
+	para "If I stick around,"
+	line "they might come"
+	cont "after me."
+
+	para "Here's some ad-"
+	line "vice: the GYM"
+
+	para "LEADER uses the"
+	line "fighting-type."
+
+	para "So you should"
+	line "confound him with"
+	cont "psychic #MON."
+
+	para "Wipe out his #-"
+	line "MON before they"
+
+	para "can use their"
+	line "physical strength."
+
+	para "And those boulders"
+	line "in the middle of"
+	cont "the GYM?"
+
+	para "If you don't move"
+	line "them correctly,"
+
+	para "you won't reach"
+	line "the GYM LEADER."
+
+	para "If you get stuck,"
+	line "go outside."
+	done
+
+CianwoodGymGuyWinText:
+	text "<PLAYER>! You won!"
+	line "I could tell by"
+	cont "looking at you!"
+	done
+
+UnknownText_0x9ddf2:
+	text "Don't you get the"
+	line "urge to show off"
+
+	para "your #MON to"
+	line "friends?"
+
+	para "I wish I could"
+	line "show the #MON I"
+
+	para "raised to my pal"
+	line "in VIOLET."
+	done
+
+UnknownText_0x9de66:
+	text "I've been battling"
+	line "my pal in VIOLET"
+
+	para "using a MOBILE"
+	line "ADAPTER link."
+
+	para "I'm down 5-7"
+	line "against him. I've"
+	cont "gotta crank it up!"
+	done
+
+UnknownText_0x9ded7:
+	text "I love showing off"
+	line "the #MON that"
+
+	para "I've raised."
+	line "Don't you?"
+
+	para "I'm going to get"
+	line "into a bunch of"
+
+	para "battles, and show"
+	line "off my #MON!"
+	done
+
+CianwoodPokecenter1F_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 3
+	warp_def $7, $3, 3, CIANWOOD_CITY
+	warp_def $7, $4, 3, CIANWOOD_CITY
+	warp_def $7, $0, 1, POKECENTER_2F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 4
+	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x9dbcf, -1
+	person_event SPRITE_LASS, 5, 1, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x9dbd2, -1
+	person_event SPRITE_GYM_GUY, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, CianwoodGymGuyScript, -1
+	person_event SPRITE_SUPER_NERD, 6, 8, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x9dbea, -1
--- a/maps/CinnabarIsland.asm
+++ b/maps/CinnabarIsland.asm
@@ -7,8 +7,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
 	dbw MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
@@ -33,7 +31,7 @@
 CinnabarIslandSign:
 	jumptext CinnabarIslandSignText
 
-CinnabarIslandPokeCenterSign:
+CinnabarIslandPokecenterSign:
 	jumpstd pokecentersign
 
 CinnabarIslandHiddenRareCandy:
@@ -142,7 +140,7 @@
 
 .Signposts:
 	db 4
-	signpost 11, 12, SIGNPOST_READ, CinnabarIslandPokeCenterSign
+	signpost 11, 12, SIGNPOST_READ, CinnabarIslandPokecenterSign
 	signpost 11, 9, SIGNPOST_READ, CinnabarIslandGymSign
 	signpost 7, 7, SIGNPOST_READ, CinnabarIslandSign
 	signpost 1, 9, SIGNPOST_ITEM, CinnabarIslandHiddenRareCandy
--- a/maps/CinnabarPokeCenter1F.asm
+++ /dev/null
@@ -1,57 +1,0 @@
-const_value set 2
-	const CINNABARPOKECENTER1F_NURSE
-	const CINNABARPOKECENTER1F_COOLTRAINER_F
-	const CINNABARPOKECENTER1F_FISHER
-
-CinnabarPokeCenter1F_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-NurseScript_0x1ab32c:
-	jumpstd pokecenternurse
-
-CooltrainerFScript_0x1ab32f:
-	jumptextfaceplayer UnknownText_0x1ab335
-
-FisherScript_0x1ab332:
-	jumptextfaceplayer UnknownText_0x1ab37f
-
-UnknownText_0x1ab335:
-	text "CINNABAR GYM's"
-	line "BLAINE apparently"
-
-	para "lives alone in the"
-	line "SEAFOAM ISLANDS"
-	cont "cave…"
-	done
-
-UnknownText_0x1ab37f:
-	text "It's been a year"
-	line "since the volcano"
-	cont "erupted."
-	done
-
-CinnabarPokeCenter1F_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 3
-	warp_def $7, $3, 1, CINNABAR_ISLAND
-	warp_def $7, $4, 1, CINNABAR_ISLAND
-	warp_def $7, $0, 1, POKECENTER_2F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 3
-	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x1ab32c, -1
-	person_event SPRITE_COOLTRAINER_F, 6, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x1ab32f, -1
-	person_event SPRITE_FISHER, 4, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, FisherScript_0x1ab332, -1
--- a/maps/CinnabarPokeCenter2FBeta.asm
+++ /dev/null
@@ -1,23 +1,0 @@
-CinnabarPokeCenter2FBeta_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-CinnabarPokeCenter2FBeta_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 1
-	warp_def $7, $0, 3, CINNABAR_POKECENTER_1F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 0
--- /dev/null
+++ b/maps/CinnabarPokecenter1F.asm
@@ -1,0 +1,57 @@
+const_value set 2
+	const CINNABARPOKECENTER1F_NURSE
+	const CINNABARPOKECENTER1F_COOLTRAINER_F
+	const CINNABARPOKECENTER1F_FISHER
+
+CinnabarPokecenter1F_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+NurseScript_0x1ab32c:
+	jumpstd pokecenternurse
+
+CooltrainerFScript_0x1ab32f:
+	jumptextfaceplayer UnknownText_0x1ab335
+
+FisherScript_0x1ab332:
+	jumptextfaceplayer UnknownText_0x1ab37f
+
+UnknownText_0x1ab335:
+	text "CINNABAR GYM's"
+	line "BLAINE apparently"
+
+	para "lives alone in the"
+	line "SEAFOAM ISLANDS"
+	cont "cave…"
+	done
+
+UnknownText_0x1ab37f:
+	text "It's been a year"
+	line "since the volcano"
+	cont "erupted."
+	done
+
+CinnabarPokecenter1F_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 3
+	warp_def $7, $3, 1, CINNABAR_ISLAND
+	warp_def $7, $4, 1, CINNABAR_ISLAND
+	warp_def $7, $0, 1, POKECENTER_2F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 3
+	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x1ab32c, -1
+	person_event SPRITE_COOLTRAINER_F, 6, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x1ab32f, -1
+	person_event SPRITE_FISHER, 4, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, FisherScript_0x1ab332, -1
--- /dev/null
+++ b/maps/CinnabarPokecenter2FBeta.asm
@@ -1,0 +1,23 @@
+CinnabarPokecenter2FBeta_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+CinnabarPokecenter2FBeta_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 1
+	warp_def $7, $0, 3, CINNABAR_POKECENTER_1F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 0
--- a/maps/Colosseum.asm
+++ b/maps/Colosseum.asm
@@ -5,32 +5,26 @@
 Colosseum_MapScriptHeader:
 .MapTriggers:
 	db 3
+	maptrigger .InitializeColosseum
+	maptrigger .DummyTrigger1
+	maptrigger .DummyTrigger2
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-	maptrigger .Trigger2
-
 .MapCallbacks:
 	db 2
+	dbw MAPCALLBACK_OBJECTS, .SetWhichChris
+	dbw MAPCALLBACK_NEWMAP, .PreparePokecenter2F
 
-	; callbacks
-
-	dbw MAPCALLBACK_OBJECTS, ColosseumScript_SetWhichChris
-
-	dbw MAPCALLBACK_NEWMAP, ColosseumScript_InitializeCB
-
-.Trigger0:
-	priorityjump ColosseumScript_Initialize
+.InitializeColosseum:
+	priorityjump .InitializeAndPreparePokecenter2F
 	end
 
-.Trigger1:
+.DummyTrigger1:
 	end
 
-.Trigger2:
+.DummyTrigger2:
 	end
 
-ColosseumScript_SetWhichChris:
+.SetWhichChris:
 	special Special_CableClubCheckWhichChris
 	iffalse .Chris2
 	disappear COLOSSEUM_CHRIS2
@@ -42,11 +36,11 @@
 	appear COLOSSEUM_CHRIS2
 	return
 
-ColosseumScript_InitializeCB:
+.PreparePokecenter2F:
 	domaptrigger POKECENTER_2F, $2
 	return
 
-ColosseumScript_Initialize:
+.InitializeAndPreparePokecenter2F:
 	dotrigger $1
 	domaptrigger POKECENTER_2F, $2
 	end
--- a/maps/CopycatsHouse1F.asm
+++ b/maps/CopycatsHouse1F.asm
@@ -91,5 +91,5 @@
 .PersonEvents:
 	db 3
 	person_event SPRITE_POKEFAN_M, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x18ad13, -1
-	person_event SPRITE_POKEFAN_F, 4, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, PokefanFScript_0x18ad16, -1
+	person_event SPRITE_POKEFAN_F, 4, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, PokefanFScript_0x18ad16, -1
 	person_event SPRITE_CLEFAIRY, 6, 6, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ClefairyScript_0x18ad2a, -1
--- a/maps/CopycatsHouse2F.asm
+++ b/maps/CopycatsHouse2F.asm
@@ -12,9 +12,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_OBJECTS, .Callback
 
 .Callback:
@@ -381,9 +378,9 @@
 
 .PersonEvents:
 	db 6
-	person_event SPRITE_COPYCAT, 3, 4, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, Copycat, EVENT_COPYCAT_1
-	person_event SPRITE_MOLTRES, 4, 6, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, CopycatsDodrio, -1
-	person_event SPRITE_FAIRY, 1, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CopycatsHouse2FDoll, EVENT_COPYCATS_HOUSE_2F_DOLL
-	person_event SPRITE_MONSTER, 1, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, CopycatsHouse2FDoll, -1
-	person_event SPRITE_BIRD, 1, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, CopycatsHouse2FDoll, -1
-	person_event SPRITE_COPYCAT, 3, 4, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, Copycat, EVENT_COPYCAT_2
+	person_event SPRITE_COPYCAT, 3, 4, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, Copycat, EVENT_COPYCAT_1
+	person_event SPRITE_MOLTRES, 4, 6, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, CopycatsDodrio, -1
+	person_event SPRITE_FAIRY, 1, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, CopycatsHouse2FDoll, EVENT_COPYCATS_HOUSE_2F_DOLL
+	person_event SPRITE_MONSTER, 1, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, CopycatsHouse2FDoll, -1
+	person_event SPRITE_BIRD, 1, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, CopycatsHouse2FDoll, -1
+	person_event SPRITE_COPYCAT, 3, 4, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, Copycat, EVENT_COPYCAT_2
--- a/maps/DanceTheatre.asm
+++ b/maps/DanceTheatre.asm
@@ -22,7 +22,7 @@
 Kimono_girlNaoko2Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x99579
+	writetext Kimono_girlNaoko2AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -33,7 +33,7 @@
 Kimono_girlSayoScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x9960b
+	writetext Kimono_girlSayoAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -44,7 +44,7 @@
 Kimono_girlZukiScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x99688
+	writetext Kimono_girlZukiAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -55,7 +55,7 @@
 Kimono_girlKuniScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x99714
+	writetext Kimono_girlKuniAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -66,7 +66,7 @@
 Kimono_girlMikiScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x997a8
+	writetext Kimono_girlMikiAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -148,7 +148,7 @@
 	line "strong."
 	done
 
-UnknownText_0x99579:
+Kimono_girlNaoko2AfterBattleText:
 	text "I enjoyed that"
 	line "bout. I would like"
 	cont "to see you again."
@@ -167,7 +167,7 @@
 	line "I almost had you."
 	done
 
-UnknownText_0x9960b:
+Kimono_girlSayoAfterBattleText:
 	text "Rhythm is impor-"
 	line "tant for both"
 
@@ -188,7 +188,7 @@
 	line "#MON left…"
 	done
 
-UnknownText_0x99688:
+Kimono_girlZukiAfterBattleText:
 	text "I put a different"
 	line "flower in my bar-"
 	cont "rette every month."
@@ -205,7 +205,7 @@
 	line "than you look."
 	done
 
-UnknownText_0x99714:
+Kimono_girlKuniAfterBattleText:
 	text "I trained a lot,"
 	line "so I thought I was"
 
@@ -224,7 +224,7 @@
 	line "at #MON too."
 	done
 
-UnknownText_0x997a8:
+Kimono_girlMikiAfterBattleText:
 	text "I can keep dancing"
 	line "because there are"
 
@@ -356,12 +356,12 @@
 
 .PersonEvents:
 	db 9
-	person_event SPRITE_KIMONO_GIRL, 2, 0, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 0, TrainerKimono_girlNaoko2, -1
-	person_event SPRITE_KIMONO_GIRL, 1, 2, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 0, TrainerKimono_girlSayo, -1
-	person_event SPRITE_KIMONO_GIRL, 2, 6, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 0, TrainerKimono_girlZuki, -1
-	person_event SPRITE_KIMONO_GIRL, 1, 9, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 0, TrainerKimono_girlKuni, -1
-	person_event SPRITE_KIMONO_GIRL, 2, 11, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 0, TrainerKimono_girlMiki, -1
+	person_event SPRITE_KIMONO_GIRL, 2, 0, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 0, TrainerKimono_girlNaoko2, -1
+	person_event SPRITE_KIMONO_GIRL, 1, 2, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 0, TrainerKimono_girlSayo, -1
+	person_event SPRITE_KIMONO_GIRL, 2, 6, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 0, TrainerKimono_girlZuki, -1
+	person_event SPRITE_KIMONO_GIRL, 1, 9, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 0, TrainerKimono_girlKuni, -1
+	person_event SPRITE_KIMONO_GIRL, 2, 11, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 0, TrainerKimono_girlMiki, -1
 	person_event SPRITE_GENTLEMAN, 10, 7, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x994c6, -1
-	person_event SPRITE_RHYDON, 8, 6, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, RhydonScript_0x9951b, -1
-	person_event SPRITE_COOLTRAINER_M, 10, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x99525, -1
+	person_event SPRITE_RHYDON, 8, 6, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, RhydonScript_0x9951b, -1
+	person_event SPRITE_COOLTRAINER_M, 10, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x99525, -1
 	person_event SPRITE_GRANNY, 6, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GrannyScript_0x99528, -1
--- a/maps/DayCare.asm
+++ b/maps/DayCare.asm
@@ -8,21 +8,18 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_OBJECTS, .EggCheckCallback
 
 .EggCheckCallback:
-	checkflag ENGINE_DAYCARE_MAN_HAS_EGG
-	iftrue .PutDaycareManOutside
-	clearevent EVENT_DAYCARE_MAN_IN_DAYCARE
-	setevent EVENT_DAYCARE_MAN_ON_ROUTE_34
+	checkflag ENGINE_DAY_CARE_MAN_HAS_EGG
+	iftrue .PutDayCareManOutside
+	clearevent EVENT_DAY_CARE_MAN_IN_DAY_CARE
+	setevent EVENT_DAY_CARE_MAN_ON_ROUTE_34
 	return
 
-.PutDaycareManOutside:
-	setevent EVENT_DAYCARE_MAN_IN_DAYCARE
-	clearevent EVENT_DAYCARE_MAN_ON_ROUTE_34
+.PutDayCareManOutside:
+	setevent EVENT_DAY_CARE_MAN_IN_DAY_CARE
+	clearevent EVENT_DAY_CARE_MAN_ON_ROUTE_34
 	return
 
 DayCareManScript_Inside:
@@ -62,7 +59,7 @@
 DayCareLadyScript:
 	faceplayer
 	opentext
-	checkflag ENGINE_DAYCARE_MAN_HAS_EGG
+	checkflag ENGINE_DAY_CARE_MAN_HAS_EGG
 	iftrue .HusbandWasLookingForYou
 	special Special_DayCareLady
 	waitbutton
@@ -179,5 +176,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_GRAMPS, 3, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, DayCareManScript_Inside, EVENT_DAYCARE_MAN_IN_DAYCARE
-	person_event SPRITE_GRANNY, 3, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, DayCareLadyScript, -1
+	person_event SPRITE_GRAMPS, 3, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, DayCareManScript_Inside, EVENT_DAY_CARE_MAN_IN_DAY_CARE
+	person_event SPRITE_GRANNY, 3, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, DayCareLadyScript, -1
--- a/maps/DragonShrine.asm
+++ b/maps/DragonShrine.asm
@@ -7,22 +7,20 @@
 DragonShrine_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DragonShrineTest
+	maptrigger .DummyTrigger
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-
 .MapCallbacks:
 	db 0
 
-.Trigger0:
-	priorityjump DragonShrineTestScript
+.DragonShrineTest:
+	priorityjump .DragonShrineTestScript
 	end
 
-.Trigger1:
+.DummyTrigger:
 	end
 
-DragonShrineTestScript:
+.DragonShrineTestScript:
 	applymovement PLAYER, MovementData_0x18d2bf
 	applymovement DRAGONSHRINE_ELDER1, MovementData_0x18d2c7
 	opentext
@@ -272,10 +270,10 @@
 	db $40 ; flags
 	db 04, 08 ; start coords
 	db 11, 19 ; end coords
-	dw MenuData2_0x18d21d
+	dw .MenuData2
 	db 1 ; default option
 
-MenuData2_0x18d21d:
+.MenuData2:
 	db $81 ; flags
 	db 3 ; items
 	db "Pal@"
@@ -287,10 +285,10 @@
 	db $40 ; flags
 	db 04, 09 ; start coords
 	db 11, 19 ; end coords
-	dw MenuData2_0x18d23c
+	dw .MenuData2
 	db 1 ; default option
 
-MenuData2_0x18d23c:
+.MenuData2:
 	db $81 ; flags
 	db 3 ; items
 	db "Strategy@"
@@ -302,10 +300,10 @@
 	db $40 ; flags
 	db 04, 05 ; start coords
 	db 11, 19 ; end coords
-	dw MenuData2_0x18d260
+	dw .MenuData2
 	db 1 ; default option
 
-MenuData2_0x18d260:
+.MenuData2:
 	db $81 ; flags
 	db 3 ; items
 	db "Weak person@"
@@ -317,10 +315,10 @@
 	db $40 ; flags
 	db 04, 08 ; start coords
 	db 11, 19 ; end coords
-	dw MenuData2_0x18d28b
+	dw .MenuData2
 	db 1 ; default option
 
-MenuData2_0x18d28b:
+.MenuData2:
 	db $81 ; flags
 	db 3 ; items
 	db "Love@"
@@ -332,10 +330,10 @@
 	db $40 ; flags
 	db 04, 12 ; start coords
 	db 11, 19 ; end coords
-	dw MenuData2_0x18d2ad
+	dw .MenuData2
 	db 1 ; default option
 
-MenuData2_0x18d2ad:
+.MenuData2:
 	db $81 ; flags
 	db 3 ; items
 	db "Tough@"
@@ -690,4 +688,4 @@
 	person_event SPRITE_ELDER, 1, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ElderScript_0x18d1a5, EVENT_GAVE_KURT_APRICORNS
 	person_event SPRITE_ELDER, 4, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ElderScript_0x18d205, EVENT_GAVE_KURT_APRICORNS
 	person_event SPRITE_ELDER, 4, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ElderScript_0x18d20d, EVENT_GAVE_KURT_APRICORNS
-	person_event SPRITE_CLAIR, 8, 4, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_DRAGON_SHRINE_CLAIR
+	person_event SPRITE_CLAIR, 8, 4, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_DRAGON_SHRINE_CLAIR
--- a/maps/DragonsDenB1F.asm
+++ b/maps/DragonsDenB1F.asm
@@ -12,22 +12,17 @@
 DragonsDenB1F_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_NEWMAP, .CheckSilver
 
-.Trigger0:
+.DummyTrigger0:
 	end
 
-.Trigger1:
+.DummyTrigger1:
 	end
 
 .CheckSilver:
@@ -94,7 +89,7 @@
 CooltrainermDarinScript:
 	end_if_just_battled
 	opentext
-	writetext CooltrainermDarinAfterText
+	writetext CooltrainermDarinAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -105,7 +100,7 @@
 CooltrainerfCaraScript:
 	end_if_just_battled
 	opentext
-	writetext CooltrainerfCaraAfterText
+	writetext CooltrainerfCaraAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -116,7 +111,7 @@
 TwinsLeaandpia1Script:
 	end_if_just_battled
 	opentext
-	writetext TrinsLeaandpia1AfterText
+	writetext TwinsLeaandpia1AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -127,7 +122,7 @@
 TwinsLeaandpia2Script:
 	end_if_just_battled
 	opentext
-	writetext TrinsLeaandpia2AfterText
+	writetext TwinsLeaandpia2AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -332,7 +327,7 @@
 	text "S-strong!"
 	done
 
-CooltrainermDarinAfterText:
+CooltrainermDarinAfterBattleText:
 	text "The SHRINE ahead"
 	line "is home to the"
 
@@ -352,7 +347,7 @@
 	text "Oh yikes, I lost!"
 	done
 
-CooltrainerfCaraAfterText:
+CooltrainerfCaraAfterBattleText:
 	text "Soon I'm going to"
 	line "get permission"
 
@@ -378,7 +373,7 @@
 	text "Ouchies."
 	done
 
-TrinsLeaandpia1AfterText:
+TwinsLeaandpia1AfterBattleText:
 	text "It was like having"
 	line "to battle LANCE."
 	done
@@ -391,7 +386,7 @@
 	text "Meanie."
 	done
 
-TrinsLeaandpia2AfterText:
+TwinsLeaandpia2AfterBattleText:
 	text "We'll tell on you."
 
 	para "MASTER will be"
@@ -434,11 +429,11 @@
 .PersonEvents:
 	db 9
 	person_event SPRITE_POKE_BALL, 16, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, PokeBallScript_0x18c95a, EVENT_DRAGONS_DEN_B1F_DRAGON_FANG
-	person_event SPRITE_CLAIR, 30, 14, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_DRAGONS_DEN_CLAIR
+	person_event SPRITE_CLAIR, 30, 14, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_DRAGONS_DEN_CLAIR
 	person_event SPRITE_SILVER, 23, 20, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SilverScript_0x18c97e, EVENT_RIVAL_DRAGONS_DEN
-	person_event SPRITE_COOLTRAINER_M, 8, 20, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 4, TrainerCooltrainermDarin, -1
-	person_event SPRITE_COOLTRAINER_F, 8, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainerfCara, -1
-	person_event SPRITE_TWIN, 17, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerTwinsLeaandpia1, -1
-	person_event SPRITE_TWIN, 18, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerTwinsLeaandpia2, -1
+	person_event SPRITE_COOLTRAINER_M, 8, 20, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 4, TrainerCooltrainermDarin, -1
+	person_event SPRITE_COOLTRAINER_F, 8, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainerfCara, -1
+	person_event SPRITE_TWIN, 17, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 1, TrainerTwinsLeaandpia1, -1
+	person_event SPRITE_TWIN, 18, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 1, TrainerTwinsLeaandpia2, -1
 	person_event SPRITE_POKE_BALL, 4, 30, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, DragonsDenB1FCalcium, EVENT_DRAGONS_DEN_B1F_CALCIUM
 	person_event SPRITE_POKE_BALL, 20, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, DragonsDenB1FMaxElixer, EVENT_DRAGONS_DEN_B1F_MAX_ELIXER
--- a/maps/EarlsPokemonAcademy.asm
+++ b/maps/EarlsPokemonAcademy.asm
@@ -66,7 +66,7 @@
 	opentext
 	writetext AcademyBlackboardText
 .Loop:
-	loadmenudata .MenuHeader
+	loadmenudata .BlackboardMenuData
 	_2dmenu
 	closewindow
 	if_equal $1, .Poison
@@ -102,14 +102,14 @@
 	waitbutton
 	jump .Loop
 
-.MenuHeader:
+.BlackboardMenuData:
 	db $40 ; flags
 	db 00, 00 ; start coords
 	db 08, 11 ; end coords
-	dw .Data
+	dw .MenuData2
 	db 1 ; default option
 
-.Data:
+.MenuData2:
 	db $80 ; flags
 	dn 3, 2 ; rows, columns
 	db 5 ; spacing
@@ -433,9 +433,9 @@
 
 .PersonEvents:
 	db 6
-	person_event SPRITE_FISHER, 2, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, AcademyEarl, EVENT_EARLS_ACADEMY_EARL
-	person_event SPRITE_YOUNGSTER, 5, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x68a83, -1
+	person_event SPRITE_FISHER, 2, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, AcademyEarl, EVENT_EARLS_ACADEMY_EARL
+	person_event SPRITE_YOUNGSTER, 5, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x68a83, -1
 	person_event SPRITE_GAMEBOY_KID, 11, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GameboyKidScript_0x68a86, -1
-	person_event SPRITE_GAMEBOY_KID, 11, 4, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, GameboyKidScript_0x68a91, -1
+	person_event SPRITE_GAMEBOY_KID, 11, 4, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, GameboyKidScript_0x68a91, -1
 	person_event SPRITE_YOUNGSTER, 7, 4, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x68a9c, -1
 	person_event SPRITE_POKEDEX, 4, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, AcademyNotebook, -1
--- a/maps/EcruteakCity.asm
+++ b/maps/EcruteakCity.asm
@@ -13,8 +13,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
 	dbw MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
@@ -83,7 +81,7 @@
 BurnedTowerSign:
 	jumptext BurnedTowerSignText
 
-EcruteakCityPokeCenterSign:
+EcruteakCityPokecenterSign:
 	jumpstd pokecentersign
 
 EcruteakCityMartSign:
@@ -293,7 +291,7 @@
 	signpost 28, 8, SIGNPOST_READ, EcruteakGymSign
 	signpost 21, 21, SIGNPOST_READ, EcruteakDanceTheaterSign
 	signpost 10, 2, SIGNPOST_READ, BurnedTowerSign
-	signpost 27, 24, SIGNPOST_READ, EcruteakCityPokeCenterSign
+	signpost 27, 24, SIGNPOST_READ, EcruteakCityPokecenterSign
 	signpost 21, 30, SIGNPOST_READ, EcruteakCityMartSign
 	signpost 14, 23, SIGNPOST_ITEM, EcruteakCityHiddenHyperPotion
 
@@ -301,8 +299,8 @@
 	db 7
 	person_event SPRITE_GRAMPS, 15, 18, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GrampsScript_0x1a4009, -1
 	person_event SPRITE_GRAMPS, 21, 20, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GrampsScript_0x1a400c, -1
-	person_event SPRITE_LASS, 29, 21, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, LassScript_0x1a4012, -1
+	person_event SPRITE_LASS, 29, 21, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, LassScript_0x1a4012, -1
 	person_event SPRITE_LASS, 9, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, LassScript_0x1a4015, -1
-	person_event SPRITE_FISHER, 22, 9, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, FisherScript_0x1a4029, -1
-	person_event SPRITE_YOUNGSTER, 14, 10, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x1a403d, -1
-	person_event SPRITE_GRAMPS, 7, 3, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, GrampsScript_0x1a400f, EVENT_ECRUTEAK_CITY_GRAMPS
+	person_event SPRITE_FISHER, 22, 9, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, FisherScript_0x1a4029, -1
+	person_event SPRITE_YOUNGSTER, 14, 10, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x1a403d, -1
+	person_event SPRITE_GRAMPS, 7, 3, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, GrampsScript_0x1a400f, EVENT_ECRUTEAK_CITY_GRAMPS
--- a/maps/EcruteakGym.asm
+++ b/maps/EcruteakGym.asm
@@ -10,19 +10,17 @@
 EcruteakGym_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .ForcedToLeave
+	maptrigger .DummyTrigger
 
-	; triggers
-	dw UnknownScript_0x99d53, 0
-	dw UnknownScript_0x99d57, 0
-
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x99d53:
+.ForcedToLeave:
 	priorityjump EcruteakGymClosed
 	end
 
-UnknownScript_0x99d57:
+.DummyTrigger:
 	end
 
 MortyScript_0x99d58:
@@ -105,7 +103,7 @@
 SageJeffreyScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x9a263
+	writetext SageJeffreyAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -116,7 +114,7 @@
 SagePingScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x9a2b7
+	writetext SagePingAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -127,7 +125,7 @@
 MediumMarthaScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x9a318
+	writetext MediumMarthaAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -138,7 +136,7 @@
 MediumGraceScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x9a38a
+	writetext MediumGraceAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -297,7 +295,7 @@
 	line "experienced both."
 	done
 
-UnknownText_0x9a263:
+SageJeffreyAfterBattleText:
 	text "Where did #MON"
 	line "come from?"
 	done
@@ -312,7 +310,7 @@
 	text "Ah! Well done!"
 	done
 
-UnknownText_0x9a2b7:
+SagePingAfterBattleText:
 	text "We use only ghost-"
 	line "type #MON."
 
@@ -329,7 +327,7 @@
 	text "I, I, I lost!"
 	done
 
-UnknownText_0x9a318:
+MediumMarthaAfterBattleText:
 	text "The one who wants"
 	line "to win most--will!"
 	done
@@ -346,7 +344,7 @@
 	text "Wha-what?"
 	done
 
-UnknownText_0x9a38a:
+MediumGraceAfterBattleText:
 	text "Fine. I shall tell"
 	line "you the secret of"
 
@@ -438,10 +436,10 @@
 
 .PersonEvents:
 	db 7
-	person_event SPRITE_MORTY, 1, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, MortyScript_0x99d58, -1
-	person_event SPRITE_SAGE, 7, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerSageJeffrey, -1
-	person_event SPRITE_SAGE, 13, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerSagePing, -1
-	person_event SPRITE_GRANNY, 5, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 1, TrainerMediumMartha, -1
-	person_event SPRITE_GRANNY, 9, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 1, TrainerMediumGrace, -1
-	person_event SPRITE_GYM_GUY, 15, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, EcruteakGymGuyScript, -1
-	person_event SPRITE_GRAMPS, 14, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_ECRUTEAK_GYM_GRAMPS
+	person_event SPRITE_MORTY, 1, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, MortyScript_0x99d58, -1
+	person_event SPRITE_SAGE, 7, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 1, TrainerSageJeffrey, -1
+	person_event SPRITE_SAGE, 13, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerSagePing, -1
+	person_event SPRITE_GRANNY, 5, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 1, TrainerMediumMartha, -1
+	person_event SPRITE_GRANNY, 9, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 1, TrainerMediumGrace, -1
+	person_event SPRITE_GYM_GUY, 15, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, EcruteakGymGuyScript, -1
+	person_event SPRITE_GRAMPS, 14, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_ECRUTEAK_GYM_GRAMPS
--- a/maps/EcruteakHouse.asm
+++ b/maps/EcruteakHouse.asm
@@ -7,22 +7,17 @@
 EcruteakHouse_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_OBJECTS, .InitializeSages
 
-.Trigger0:
+.DummyTrigger0:
 	end
 
-.Trigger1:
+.DummyTrigger1:
 	end
 
 .InitializeSages:
--- a/maps/EcruteakItemfinderHouse.asm
+++ b/maps/EcruteakItemfinderHouse.asm
@@ -180,5 +180,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_COOLTRAINER_M, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x9a5fb, -1
+	person_event SPRITE_COOLTRAINER_M, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x9a5fb, -1
 	person_event SPRITE_POKEDEX, 3, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, PokedexScript_0x9a620, -1
--- a/maps/EcruteakMart.asm
+++ b/maps/EcruteakMart.asm
@@ -63,5 +63,5 @@
 .PersonEvents:
 	db 3
 	person_event SPRITE_CLERK, 3, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ClerkScript_0x99c3b, -1
-	person_event SPRITE_SUPER_NERD, 2, 5, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x99c42, -1
+	person_event SPRITE_SUPER_NERD, 2, 5, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x99c42, -1
 	person_event SPRITE_GRANNY, 6, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GrannyScript_0x99c45, -1
--- a/maps/EcruteakPokeCenter1F.asm
+++ /dev/null
@@ -1,233 +1,0 @@
-const_value set 2
-	const ECRUTEAKPOKECENTER1F_NURSE
-	const ECRUTEAKPOKECENTER1F_POKEFAN_M
-	const ECRUTEAKPOKECENTER1F_COOLTRAINER_F
-	const ECRUTEAKPOKECENTER1F_GYM_GUY
-	const ECRUTEAKPOKECENTER1F_BILL
-
-EcruteakPokeCenter1F_MapScriptHeader:
-.MapTriggers:
-	db 2
-
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-
-.MapCallbacks:
-	db 0
-
-.Trigger0:
-	priorityjump .BillActivatesTimeCapsule
-	end
-
-.Trigger1:
-	end
-
-.BillActivatesTimeCapsule:
-	pause 30
-	playsound SFX_EXIT_BUILDING
-	appear ECRUTEAKPOKECENTER1F_BILL
-	waitsfx
-	applymovement ECRUTEAKPOKECENTER1F_BILL, EcruteakPokeCenter1FBillMovement1
-	applymovement PLAYER, EcruteakPokeCenter1FPlayerMovement1
-	spriteface ECRUTEAKPOKECENTER1F_NURSE, UP
-	pause 10
-	spriteface ECRUTEAKPOKECENTER1F_NURSE, DOWN
-	pause 30
-	spriteface ECRUTEAKPOKECENTER1F_NURSE, UP
-	pause 10
-	spriteface ECRUTEAKPOKECENTER1F_NURSE, DOWN
-	pause 20
-	spriteface ECRUTEAKPOKECENTER1F_BILL, DOWN
-	pause 10
-	opentext
-	writetext EcruteakPokeCenter1F_BillText1
-	buttonsound
-	jump .PointlessJump
-
-.PointlessJump:
-	writetext EcruteakPokeCenter1F_BillText2
-	waitbutton
-	closetext
-	spriteface PLAYER, DOWN
-	applymovement ECRUTEAKPOKECENTER1F_BILL, EcruteakPokeCenter1FBillMovement2
-	playsound SFX_EXIT_BUILDING
-	disappear ECRUTEAKPOKECENTER1F_BILL
-	clearevent EVENT_MET_BILL
-	setflag ENGINE_TIME_CAPSULE
-	dotrigger $1
-	waitsfx
-	end
-
-EcruteakPokeCenter1FNurseScript:
-	jumpstd pokecenternurse
-
-EcruteakPokeCenter1FPokefanMScript:
-	special Mobile_DummyReturnFalse
-	iftrue .mobile
-	jumptextfaceplayer EcruteakPokeCenter1FPokefanMText
-
-.mobile
-	jumptextfaceplayer EcruteakPokeCenter1FPokefanMTextMobile
-
-EcruteakPokeCenter1FCooltrainerFScript:
-	jumptextfaceplayer EcruteakPokeCenter1FCooltrainerFText
-
-EcruteakPokeCenter1FGymGuyScript:
-	jumptextfaceplayer EcruteakPokeCenter1FGymGuyText
-
-EcruteakPokeCenter1FBillMovement1:
-	step UP
-	step UP
-	step UP
-	step UP
-	step RIGHT
-	step RIGHT
-	step RIGHT
-	turn_head UP
-	step_end
-
-EcruteakPokeCenter1FBillMovement2:
-	step RIGHT
-	step DOWN
-	step DOWN
-	step DOWN
-	step DOWN
-	step_end
-
-EcruteakPokeCenter1FPlayerMovement1:
-	step UP
-	step UP
-	step UP
-	step_end
-
-EcruteakPokeCenter1F_BillText1:
-	text "Hi, I'm BILL. And"
-	line "who are you?"
-
-	para "Hmm, <PLAYER>, huh?"
-	line "You've come at the"
-	cont "right time."
-	done
-
-EcruteakPokeCenter1F_BillText2:
-	text "I just finished"
-	line "adjustments on my"
-	cont "TIME CAPSULE."
-
-	para "You know that"
-	line "#MON can be"
-	cont "traded, right?"
-
-	para "My TIME CAPSULE"
-	line "was developed to"
-
-	para "enable trades with"
-	line "the past."
-
-	para "But you can't send"
-	line "anything that"
-
-	para "didn't exist in"
-	line "the past."
-
-	para "If you did, the PC"
-	line "in the past would"
-	cont "have a breakdown."
-
-	para "So you have to"
-	line "remove anything"
-
-	para "that wasn't around"
-	line "in the past."
-
-	para "Put simply, no"
-	line "sending new moves"
-
-	para "or new #MON in"
-	line "the TIME CAPSULE."
-
-	para "Don't you worry."
-	line "I'm done with the"
-	cont "adjustments."
-
-	para "Tomorrow, TIME"
-	line "CAPSULES will be"
-
-	para "running at all"
-	line "#MON CENTERS."
-
-	para "I have to hurry on"
-	line "back to GOLDENROD"
-	cont "and see my folks."
-
-	para "Buh-bye!"
-	done
-
-EcruteakPokeCenter1FPokefanMText:
-	text "The way the KIMONO"
-	line "GIRLS dance is"
-
-	para "marvelous. Just"
-	line "like the way they"
-	cont "use their #MON."
-	done
-
-EcruteakPokeCenter1FPokefanMTextMobile:
-	text "You must be hoping"
-	line "to battle more"
-
-	para "people, right?"
-	line "There's apparently"
-
-	para "some place where"
-	line "trainers gather."
-
-	para "Where, you ask?"
-
-	para "It's a little past"
-	line "OLIVINE CITY."
-	done
-
-EcruteakPokeCenter1FCooltrainerFText:
-	text "MORTY, the GYM"
-	line "LEADER, is soooo"
-	cont "cool."
-
-	para "His #MON are"
-	line "really tough too."
-	done
-
-EcruteakPokeCenter1FGymGuyText:
-	text "LAKE OF RAGE…"
-
-	para "The appearance of"
-	line "a GYARADOS swarm…"
-
-	para "I smell a conspir-"
-	line "acy. I know it!"
-	done
-
-EcruteakPokeCenter1F_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 3
-	warp_def $7, $3, 6, ECRUTEAK_CITY
-	warp_def $7, $4, 6, ECRUTEAK_CITY
-	warp_def $7, $0, 1, POKECENTER_2F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 5
-	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, EcruteakPokeCenter1FNurseScript, -1
-	person_event SPRITE_POKEFAN_M, 6, 7, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, EcruteakPokeCenter1FPokefanMScript, -1
-	person_event SPRITE_COOLTRAINER_F, 4, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, EcruteakPokeCenter1FCooltrainerFScript, -1
-	person_event SPRITE_GYM_GUY, 1, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, EcruteakPokeCenter1FGymGuyScript, -1
-	person_event SPRITE_BILL, 7, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_ECRUTEAK_POKE_CENTER_BILL
--- /dev/null
+++ b/maps/EcruteakPokecenter1F.asm
@@ -1,0 +1,231 @@
+const_value set 2
+	const ECRUTEAKPOKECENTER1F_NURSE
+	const ECRUTEAKPOKECENTER1F_POKEFAN_M
+	const ECRUTEAKPOKECENTER1F_COOLTRAINER_F
+	const ECRUTEAKPOKECENTER1F_GYM_GUY
+	const ECRUTEAKPOKECENTER1F_BILL
+
+EcruteakPokecenter1F_MapScriptHeader:
+.MapTriggers:
+	db 2
+	maptrigger .MeetBill
+	maptrigger .DummyTrigger
+
+.MapCallbacks:
+	db 0
+
+.MeetBill:
+	priorityjump .BillActivatesTimeCapsule
+	end
+
+.DummyTrigger:
+	end
+
+.BillActivatesTimeCapsule:
+	pause 30
+	playsound SFX_EXIT_BUILDING
+	appear ECRUTEAKPOKECENTER1F_BILL
+	waitsfx
+	applymovement ECRUTEAKPOKECENTER1F_BILL, EcruteakPokecenter1FBillMovement1
+	applymovement PLAYER, EcruteakPokecenter1FPlayerMovement1
+	spriteface ECRUTEAKPOKECENTER1F_NURSE, UP
+	pause 10
+	spriteface ECRUTEAKPOKECENTER1F_NURSE, DOWN
+	pause 30
+	spriteface ECRUTEAKPOKECENTER1F_NURSE, UP
+	pause 10
+	spriteface ECRUTEAKPOKECENTER1F_NURSE, DOWN
+	pause 20
+	spriteface ECRUTEAKPOKECENTER1F_BILL, DOWN
+	pause 10
+	opentext
+	writetext EcruteakPokecenter1F_BillText1
+	buttonsound
+	jump .PointlessJump
+
+.PointlessJump:
+	writetext EcruteakPokecenter1F_BillText2
+	waitbutton
+	closetext
+	spriteface PLAYER, DOWN
+	applymovement ECRUTEAKPOKECENTER1F_BILL, EcruteakPokecenter1FBillMovement2
+	playsound SFX_EXIT_BUILDING
+	disappear ECRUTEAKPOKECENTER1F_BILL
+	clearevent EVENT_MET_BILL
+	setflag ENGINE_TIME_CAPSULE
+	dotrigger $1
+	waitsfx
+	end
+
+EcruteakPokecenter1FNurseScript:
+	jumpstd pokecenternurse
+
+EcruteakPokecenter1FPokefanMScript:
+	special Mobile_DummyReturnFalse
+	iftrue .mobile
+	jumptextfaceplayer EcruteakPokecenter1FPokefanMText
+
+.mobile
+	jumptextfaceplayer EcruteakPokecenter1FPokefanMTextMobile
+
+EcruteakPokecenter1FCooltrainerFScript:
+	jumptextfaceplayer EcruteakPokecenter1FCooltrainerFText
+
+EcruteakPokecenter1FGymGuyScript:
+	jumptextfaceplayer EcruteakPokecenter1FGymGuyText
+
+EcruteakPokecenter1FBillMovement1:
+	step UP
+	step UP
+	step UP
+	step UP
+	step RIGHT
+	step RIGHT
+	step RIGHT
+	turn_head UP
+	step_end
+
+EcruteakPokecenter1FBillMovement2:
+	step RIGHT
+	step DOWN
+	step DOWN
+	step DOWN
+	step DOWN
+	step_end
+
+EcruteakPokecenter1FPlayerMovement1:
+	step UP
+	step UP
+	step UP
+	step_end
+
+EcruteakPokecenter1F_BillText1:
+	text "Hi, I'm BILL. And"
+	line "who are you?"
+
+	para "Hmm, <PLAYER>, huh?"
+	line "You've come at the"
+	cont "right time."
+	done
+
+EcruteakPokecenter1F_BillText2:
+	text "I just finished"
+	line "adjustments on my"
+	cont "TIME CAPSULE."
+
+	para "You know that"
+	line "#MON can be"
+	cont "traded, right?"
+
+	para "My TIME CAPSULE"
+	line "was developed to"
+
+	para "enable trades with"
+	line "the past."
+
+	para "But you can't send"
+	line "anything that"
+
+	para "didn't exist in"
+	line "the past."
+
+	para "If you did, the PC"
+	line "in the past would"
+	cont "have a breakdown."
+
+	para "So you have to"
+	line "remove anything"
+
+	para "that wasn't around"
+	line "in the past."
+
+	para "Put simply, no"
+	line "sending new moves"
+
+	para "or new #MON in"
+	line "the TIME CAPSULE."
+
+	para "Don't you worry."
+	line "I'm done with the"
+	cont "adjustments."
+
+	para "Tomorrow, TIME"
+	line "CAPSULES will be"
+
+	para "running at all"
+	line "#MON CENTERS."
+
+	para "I have to hurry on"
+	line "back to GOLDENROD"
+	cont "and see my folks."
+
+	para "Buh-bye!"
+	done
+
+EcruteakPokecenter1FPokefanMText:
+	text "The way the KIMONO"
+	line "GIRLS dance is"
+
+	para "marvelous. Just"
+	line "like the way they"
+	cont "use their #MON."
+	done
+
+EcruteakPokecenter1FPokefanMTextMobile:
+	text "You must be hoping"
+	line "to battle more"
+
+	para "people, right?"
+	line "There's apparently"
+
+	para "some place where"
+	line "trainers gather."
+
+	para "Where, you ask?"
+
+	para "It's a little past"
+	line "OLIVINE CITY."
+	done
+
+EcruteakPokecenter1FCooltrainerFText:
+	text "MORTY, the GYM"
+	line "LEADER, is soooo"
+	cont "cool."
+
+	para "His #MON are"
+	line "really tough too."
+	done
+
+EcruteakPokecenter1FGymGuyText:
+	text "LAKE OF RAGE…"
+
+	para "The appearance of"
+	line "a GYARADOS swarm…"
+
+	para "I smell a conspir-"
+	line "acy. I know it!"
+	done
+
+EcruteakPokecenter1F_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 3
+	warp_def $7, $3, 6, ECRUTEAK_CITY
+	warp_def $7, $4, 6, ECRUTEAK_CITY
+	warp_def $7, $0, 1, POKECENTER_2F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 5
+	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, EcruteakPokecenter1FNurseScript, -1
+	person_event SPRITE_POKEFAN_M, 6, 7, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, EcruteakPokecenter1FPokefanMScript, -1
+	person_event SPRITE_COOLTRAINER_F, 4, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, EcruteakPokecenter1FCooltrainerFScript, -1
+	person_event SPRITE_GYM_GUY, 1, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, EcruteakPokecenter1FGymGuyScript, -1
+	person_event SPRITE_BILL, 7, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_ECRUTEAK_POKE_CENTER_BILL
--- a/maps/ElmsHouse.asm
+++ b/maps/ElmsHouse.asm
@@ -103,5 +103,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_TEACHER, 5, 1, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, ElmsWife, -1
+	person_event SPRITE_TEACHER, 5, 1, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, ElmsWife, -1
 	person_event SPRITE_BUG_CATCHER, 4, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ElmsSon, -1
--- a/maps/ElmsLab.asm
+++ b/maps/ElmsLab.asm
@@ -9,42 +9,37 @@
 ElmsLab_MapScriptHeader:
 .MapTriggers:
 	db 6
+	maptrigger .MeetElm
+	maptrigger .DummyTrigger1
+	maptrigger .DummyTrigger2
+	maptrigger .DummyTrigger3
+	maptrigger .DummyTrigger4
+	maptrigger .DummyTrigger5
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-	maptrigger .Trigger2
-	maptrigger .Trigger3
-	maptrigger .Trigger4
-	maptrigger .Trigger5
-
 .MapCallbacks:
 	db 1
+	dbw MAPCALLBACK_OBJECTS, .MoveElmCallback
 
-	; callbacks
-
-	dbw MAPCALLBACK_OBJECTS, .Callback_MoveElm
-
-.Trigger0:
-	priorityjump ElmsLab_AutowalkUpToElm
+.MeetElm:
+	priorityjump .WalkUpToElm
 	end
 
-.Trigger1:
+.DummyTrigger1:
 	end
 
-.Trigger2:
+.DummyTrigger2:
 	end
 
-.Trigger3:
+.DummyTrigger3:
 	end
 
-.Trigger4:
+.DummyTrigger4:
 	end
 
-.Trigger5:
+.DummyTrigger5:
 	end
 
-.Callback_MoveElm:
+.MoveElmCallback:
 	checktriggers
 	iftrue .Skip
 	moveperson ELMSLAB_ELM, $3, $4
@@ -51,19 +46,19 @@
 .Skip:
 	return
 
-ElmsLab_AutowalkUpToElm:
+.WalkUpToElm:
 	applymovement PLAYER, ElmsLab_WalkUpToElmMovement
 	showemote EMOTE_SHOCK, ELMSLAB_ELM, 15
 	spriteface ELMSLAB_ELM, RIGHT
 	opentext
 	writetext ElmText_Intro
-ElmsLab_RefuseLoop:
+.MustSayYes:
 	yesorno
-	iftrue ElmsLab_ElmGetsEmail
+	iftrue .ElmGetsEmail
 	writetext ElmText_Refused
-	jump ElmsLab_RefuseLoop
+	jump .MustSayYes
 
-ElmsLab_ElmGetsEmail:
+.ElmGetsEmail:
 	writetext ElmText_Accepted
 	buttonsound
 	writetext ElmText_ResearchAmbitions
@@ -1417,8 +1412,8 @@
 .PersonEvents:
 	db 6
 	person_event SPRITE_ELM, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ProfElmScript, -1
-	person_event SPRITE_SCIENTIST, 9, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ElmsAideScript, EVENT_ELMS_AIDE_IN_LAB
+	person_event SPRITE_SCIENTIST, 9, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, ElmsAideScript, EVENT_ELMS_AIDE_IN_LAB
 	person_event SPRITE_POKE_BALL, 3, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CyndaquilPokeBallScript, EVENT_CYNDAQUIL_POKEBALL_IN_ELMS_LAB
 	person_event SPRITE_POKE_BALL, 3, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, TotodilePokeBallScript, EVENT_TOTODILE_POKEBALL_IN_ELMS_LAB
 	person_event SPRITE_POKE_BALL, 3, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ChikoritaPokeBallScript, EVENT_CHIKORITA_POKEBALL_IN_ELMS_LAB
-	person_event SPRITE_OFFICER, 3, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, CopScript, EVENT_COP_IN_ELMS_LAB
+	person_event SPRITE_OFFICER, 3, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, CopScript, EVENT_COP_IN_ELMS_LAB
--- a/maps/FastShip1F.asm
+++ b/maps/FastShip1F.asm
@@ -7,26 +7,24 @@
 FastShip1F_MapScriptHeader:
 .MapTriggers:
 	db 3
+	maptrigger .DummyTrigger0
+	maptrigger .EnterFastShip
+	maptrigger .DummyTrigger2
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-	maptrigger .Trigger2
-
 .MapCallbacks:
 	db 0
 
-.Trigger0:
+.DummyTrigger0:
 	end
 
-.Trigger1:
-	priorityjump .PriorityJump2
+.EnterFastShip:
+	priorityjump .EnterFastShipScript
 	end
 
-.Trigger2:
+.DummyTrigger2:
 	end
 
-.PriorityJump2:
+.EnterFastShipScript:
 	applymovement FASTSHIP1F_SAILOR1, MovementData_0x7520e
 	applymovement PLAYER, MovementData_0x75217
 	applymovement FASTSHIP1F_SAILOR1, MovementData_0x75211
--- a/maps/FastShipB1F.asm
+++ b/maps/FastShipB1F.asm
@@ -15,18 +15,16 @@
 FastShipB1F_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
 
-	; triggers
-	dw UnknownScript_0x7673a, 0
-	dw UnknownScript_0x7673b, 0
-
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x7673a:
+.DummyTrigger0:
 	end
 
-UnknownScript_0x7673b:
+.DummyTrigger1:
 	end
 
 UnknownScript_0x7673c:
@@ -101,7 +99,7 @@
 SailorJeffScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x76a38
+	writetext SailorJeffAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -112,7 +110,7 @@
 PicnickerDebraScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x76a99
+	writetext PicnickerDebraAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -123,7 +121,7 @@
 JugglerFritzScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x76b02
+	writetext JugglerFritzAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -134,7 +132,7 @@
 SailorGarrettScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x76b7a
+	writetext SailorGarrettAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -145,7 +143,7 @@
 FisherJonahScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x76c22
+	writetext FisherJonahAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -156,7 +154,7 @@
 BlackbeltWaiScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x76c9e
+	writetext BlackbeltWaiAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -167,7 +165,7 @@
 SailorKennethScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x76d5f
+	writetext SailorKennethAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -178,7 +176,7 @@
 TeacherShirleyScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x76de1
+	writetext TeacherShirleyAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -189,7 +187,7 @@
 SchoolboyNateScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x76e3d
+	writetext SchoolboyNateAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -200,7 +198,7 @@
 SchoolboyRickyScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x76eb6
+	writetext SchoolboyRickyAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -278,7 +276,7 @@
 	line "break's over!"
 	done
 
-UnknownText_0x76a38:
+SailorJeffAfterBattleText:
 	text "I guess I can't"
 	line "win if I don't get"
 	cont "serious."
@@ -294,7 +292,7 @@
 	line "strong!"
 	done
 
-UnknownText_0x76a99:
+PicnickerDebraAfterBattleText:
 	text "SAFFRON, CELADON…"
 	line "I hear there are"
 
@@ -312,7 +310,7 @@
 	line "more…"
 	done
 
-UnknownText_0x76b02:
+JugglerFritzAfterBattleText:
 	text "No more ships for"
 	line "me. Next time,"
 
@@ -330,7 +328,7 @@
 	line "field…"
 	done
 
-UnknownText_0x76b7a:
+SailorGarrettAfterBattleText:
 	text "We get different"
 	line "passengers from"
 
@@ -352,7 +350,7 @@
 	line "anymore…"
 	done
 
-UnknownText_0x76c22:
+FisherJonahAfterBattleText:
 	text "I plan to fish off"
 	line "VERMILION's pier."
 	done
@@ -370,7 +368,7 @@
 	line "over!"
 	done
 
-UnknownText_0x76c9e:
+BlackbeltWaiAfterBattleText:
 	text "I couldn't find"
 	line "the KARATE KING in"
 	cont "JOHTO."
@@ -393,7 +391,7 @@
 	line "ing is obvious…"
 	done
 
-UnknownText_0x76d5f:
+SailorKennethAfterBattleText:
 	text "Eight BADGES!"
 	line "They must prove"
 
@@ -413,7 +411,7 @@
 	text "Aaack!"
 	done
 
-UnknownText_0x76de1:
+TeacherShirleyAfterBattleText:
 	text "We're on a field"
 	line "trip to the RUINS"
 	cont "outside VIOLET."
@@ -428,7 +426,7 @@
 	text "Yaargh!"
 	done
 
-UnknownText_0x76e3d:
+SchoolboyNateAfterBattleText:
 	text "Radios pick up"
 	line "strange signals"
 	cont "inside the RUINS."
@@ -444,7 +442,7 @@
 	text "I was done in!"
 	done
 
-UnknownText_0x76eb6:
+SchoolboyRickyAfterBattleText:
 	text "I read that there"
 	line "are four of those"
 	cont "stone panels."
@@ -470,15 +468,15 @@
 
 .PersonEvents:
 	db 12
-	person_event SPRITE_SAILOR, 6, 30, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, SailorScript_0x76767, EVENT_FAST_SHIP_B1F_SAILOR_LEFT
-	person_event SPRITE_SAILOR, 6, 31, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, SailorScript_0x76767, EVENT_FAST_SHIP_B1F_SAILOR_RIGHT
-	person_event SPRITE_SAILOR, 11, 9, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerSailorJeff, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
-	person_event SPRITE_LASS, 4, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 1, TrainerPicnickerDebra, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
-	person_event SPRITE_SUPER_NERD, 9, 26, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerJugglerFritz, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
-	person_event SPRITE_SAILOR, 4, 17, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 4, TrainerSailorGarrett, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
-	person_event SPRITE_FISHER, 8, 25, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerFisherJonah, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
-	person_event SPRITE_BLACK_BELT, 11, 15, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 3, TrainerBlackbeltWai, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
-	person_event SPRITE_SAILOR, 4, 23, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 4, TrainerSailorKenneth, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
-	person_event SPRITE_TEACHER, 11, 9, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerTeacherShirley, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
-	person_event SPRITE_YOUNGSTER, 9, 14, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerSchoolboyNate, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
-	person_event SPRITE_YOUNGSTER, 11, 14, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerSchoolboyRicky, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+	person_event SPRITE_SAILOR, 6, 30, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, SailorScript_0x76767, EVENT_FAST_SHIP_B1F_SAILOR_LEFT
+	person_event SPRITE_SAILOR, 6, 31, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, SailorScript_0x76767, EVENT_FAST_SHIP_B1F_SAILOR_RIGHT
+	person_event SPRITE_SAILOR, 11, 9, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerSailorJeff, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+	person_event SPRITE_LASS, 4, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 1, TrainerPicnickerDebra, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+	person_event SPRITE_SUPER_NERD, 9, 26, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 1, TrainerJugglerFritz, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+	person_event SPRITE_SAILOR, 4, 17, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 4, TrainerSailorGarrett, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	person_event SPRITE_FISHER, 8, 25, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 3, TrainerFisherJonah, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	person_event SPRITE_BLACK_BELT, 11, 15, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 3, TrainerBlackbeltWai, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	person_event SPRITE_SAILOR, 4, 23, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 4, TrainerSailorKenneth, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+	person_event SPRITE_TEACHER, 11, 9, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerTeacherShirley, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+	person_event SPRITE_YOUNGSTER, 9, 14, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 1, TrainerSchoolboyNate, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+	person_event SPRITE_YOUNGSTER, 11, 14, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 1, TrainerSchoolboyRicky, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
--- a/maps/FastShipCabins_NNW_NNE_NE.asm
+++ b/maps/FastShipCabins_NNW_NNE_NE.asm
@@ -20,7 +20,7 @@
 CooltrainermSeanScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x7567b
+	writetext CooltrainermSeanAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -31,7 +31,7 @@
 CooltrainerfCarolScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x756f7
+	writetext CooltrainerfCarolAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -42,7 +42,7 @@
 PokemaniacEthanScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x7574b
+	writetext PokemaniacEthanAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -53,7 +53,7 @@
 HikerNolandScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x757d4
+	writetext HikerNolandAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -64,7 +64,7 @@
 GentlemanEdwardScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x75937
+	writetext GentlemanEdwardAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -75,7 +75,7 @@
 BurglarCoreyScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x75996
+	writetext BurglarCoreyAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -142,7 +142,7 @@
 	text "I wanted to win!"
 	done
 
-UnknownText_0x7567b:
+CooltrainermSeanAfterBattleText:
 	text "Trainers from"
 	line "JOHTO can battle"
 
@@ -160,7 +160,7 @@
 	line "ent between us?"
 	done
 
-UnknownText_0x756f7:
+CooltrainerfCarolAfterBattleText:
 	text "I'm going to beat"
 	line "you someday!"
 	done
@@ -175,7 +175,7 @@
 	text "Gyaaaah!"
 	done
 
-UnknownText_0x7574b:
+PokemaniacEthanAfterBattleText:
 	text "LILY's nice, but"
 	line "MARY's the best!"
 
@@ -194,7 +194,7 @@
 	line "handle!"
 	done
 
-UnknownText_0x757d4:
+HikerNolandAfterBattleText:
 	text "I wonder if there"
 	line "are any mountains"
 
@@ -240,7 +240,7 @@
 	line "it…"
 	done
 
-UnknownText_0x75937:
+GentlemanEdwardAfterBattleText:
 	text "I give up."
 	line "You don't have to"
 
@@ -258,7 +258,7 @@
 	line "I lost!"
 	done
 
-UnknownText_0x75996:
+BurglarCoreyAfterBattleText:
 	text "I found a pretty"
 	line "coin here."
 
@@ -287,10 +287,10 @@
 
 .PersonEvents:
 	db 7
-	person_event SPRITE_COOLTRAINER_M, 3, 4, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 2, TrainerCooltrainermSean, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
-	person_event SPRITE_COOLTRAINER_F, 5, 1, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainerfCarol, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
-	person_event SPRITE_SUPER_NERD, 5, 1, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerPokemaniacEthan, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
-	person_event SPRITE_POKEFAN_M, 17, 4, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 3, TrainerHikerNoland, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
-	person_event SPRITE_SAILOR, 26, 4, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, SailorScript_0x755f1, EVENT_FAST_SHIP_CABINS_NNW_NNE_NE_SAILOR
-	person_event SPRITE_GENTLEMAN, 30, 7, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerGentlemanEdward, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
-	person_event SPRITE_PHARMACIST, 30, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 4, TrainerBurglarCorey, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+	person_event SPRITE_COOLTRAINER_M, 3, 4, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 2, TrainerCooltrainermSean, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	person_event SPRITE_COOLTRAINER_F, 5, 1, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainerfCarol, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	person_event SPRITE_SUPER_NERD, 5, 1, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerPokemaniacEthan, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+	person_event SPRITE_POKEFAN_M, 17, 4, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 3, TrainerHikerNoland, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+	person_event SPRITE_SAILOR, 26, 4, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, SailorScript_0x755f1, EVENT_FAST_SHIP_CABINS_NNW_NNE_NE_SAILOR
+	person_event SPRITE_GENTLEMAN, 30, 7, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 1, TrainerGentlemanEdward, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	person_event SPRITE_PHARMACIST, 30, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 4, TrainerBurglarCorey, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
--- a/maps/FastShipCabins_SE_SSE_CaptainsCabin.asm
+++ b/maps/FastShipCabins_SE_SSE_CaptainsCabin.asm
@@ -146,7 +146,7 @@
 PokefanmColinScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x7635b
+	writetext PokefanmColinAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -157,7 +157,7 @@
 TwinsMegandpeg1Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x763c2
+	writetext TwinsMegandpeg1AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -168,7 +168,7 @@
 TwinsMegandpeg2Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x76428
+	writetext TwinsMegandpeg2AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -179,7 +179,7 @@
 PsychicRodneyScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x76497
+	writetext PsychicRodneyAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -190,7 +190,7 @@
 PokefanmJeremyScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x7651c
+	writetext PokefanmJeremyAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -201,7 +201,7 @@
 PokefanfGeorgiaScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x76596
+	writetext PokefanfGeorgiaAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -212,7 +212,7 @@
 SupernerdShawnScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x7660f
+	writetext SupernerdShawnAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -347,7 +347,7 @@
 	text "You're strong!"
 	done
 
-UnknownText_0x7635b:
+PokefanmColinAfterBattleText:
 	text "You're traveling"
 	line "all alone?"
 
@@ -365,7 +365,7 @@
 	text "Oh! We lost!"
 	done
 
-UnknownText_0x763c2:
+TwinsMegandpeg1AfterBattleText:
 	text "Baby is a rude"
 	line "name to call us"
 	cont "girls!"
@@ -382,7 +382,7 @@
 	text "Oh! We lost!"
 	done
 
-UnknownText_0x76428:
+TwinsMegandpeg2AfterBattleText:
 	text "Sometimes, kids"
 	line "are smarter than"
 	cont "grown-ups!"
@@ -399,7 +399,7 @@
 	line "thing!"
 	done
 
-UnknownText_0x76497:
+PsychicRodneyAfterBattleText:
 	text "I get it. You can"
 	line "hear JOHTO's radio"
 	cont "on the FAST SHIP."
@@ -416,7 +416,7 @@
 	line "ful #MON!"
 	done
 
-UnknownText_0x7651c:
+PokefanmJeremyAfterBattleText:
 	text "I must go to the"
 	line "#MON SALON and"
 	cont "fix them up nice!"
@@ -433,7 +433,7 @@
 	line "to do?"
 	done
 
-UnknownText_0x76596:
+PokefanfGeorgiaAfterBattleText:
 	text "Oh, yes! I have to"
 	line "get my #MON out"
 	cont "of DAY-CARE!"
@@ -450,7 +450,7 @@
 	line "Please!"
 	done
 
-UnknownText_0x7660f:
+SupernerdShawnAfterBattleText:
 	text "You should use the"
 	line "right BALLS to fit"
 	cont "the situation."
@@ -484,14 +484,14 @@
 
 .PersonEvents:
 	db 11
-	person_event SPRITE_CAPTAIN, 25, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, CaptainScript_0x75ea7, -1
-	person_event SPRITE_GENTLEMAN, 17, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x75f1f, EVENT_FAST_SHIP_CABINS_SE_SSE_GENTLEMAN
+	person_event SPRITE_CAPTAIN, 25, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, CaptainScript_0x75ea7, -1
+	person_event SPRITE_GENTLEMAN, 17, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x75f1f, EVENT_FAST_SHIP_CABINS_SE_SSE_GENTLEMAN
 	person_event SPRITE_TWIN, 17, 3, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, TwinScript_0x75f6d, EVENT_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_TWIN_1
 	person_event SPRITE_TWIN, 25, 2, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, TwinScript_0x75ebb, EVENT_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_TWIN_2
-	person_event SPRITE_POKEFAN_M, 6, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 5, TrainerPokefanmColin, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
-	person_event SPRITE_TWIN, 4, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerTwinsMegandpeg1, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
-	person_event SPRITE_TWIN, 4, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerTwinsMegandpeg2, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
-	person_event SPRITE_SUPER_NERD, 5, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 5, TrainerPsychicRodney, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
-	person_event SPRITE_POKEFAN_M, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerPokefanmJeremy, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
-	person_event SPRITE_POKEFAN_F, 5, 5, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerPokefanfGeorgia, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
-	person_event SPRITE_SUPER_NERD, 15, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 2, TrainerSupernerdShawn, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	person_event SPRITE_POKEFAN_M, 6, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 5, TrainerPokefanmColin, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+	person_event SPRITE_TWIN, 4, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 1, TrainerTwinsMegandpeg1, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+	person_event SPRITE_TWIN, 4, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 1, TrainerTwinsMegandpeg2, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+	person_event SPRITE_SUPER_NERD, 5, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 5, TrainerPsychicRodney, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	person_event SPRITE_POKEFAN_M, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerPokefanmJeremy, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+	person_event SPRITE_POKEFAN_F, 5, 5, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 1, TrainerPokefanfGeorgia, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+	person_event SPRITE_SUPER_NERD, 15, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 2, TrainerSupernerdShawn, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
--- a/maps/FastShipCabins_SW_SSW_NW.asm
+++ b/maps/FastShipCabins_SW_SSW_NW.asm
@@ -17,7 +17,7 @@
 FirebreatherLyleScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x75b52
+	writetext FirebreatherLyleAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -28,7 +28,7 @@
 Bug_catcherKenScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x75bd5
+	writetext Bug_catcherKenAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -39,7 +39,7 @@
 BeautyCassieScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x75c43
+	writetext BeautyCassieAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -124,7 +124,7 @@
 	line "flame's tiny…"
 	done
 
-UnknownText_0x75b52:
+FirebreatherLyleAfterBattleText:
 	text "I guess fire is"
 	line "weak on the sea."
 
@@ -143,7 +143,7 @@
 	line "You're tough!"
 	done
 
-UnknownText_0x75bd5:
+Bug_catcherKenAfterBattleText:
 	text "You can find lots"
 	line "of #MON in the"
 	cont "trees of JOHTO!"
@@ -159,7 +159,7 @@
 	text "My heart weeps…"
 	done
 
-UnknownText_0x75c43:
+BeautyCassieAfterBattleText:
 	text "A voyage is best"
 	line "for getting over"
 	cont "a broken heart."
@@ -245,7 +245,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_FISHER, 15, 1, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 2, TrainerFirebreatherLyle, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
-	person_event SPRITE_BUG_CATCHER, 15, 6, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 2, TrainerBug_catcherKen, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
-	person_event SPRITE_BUENA, 26, 1, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerBeautyCassie, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
-	person_event SPRITE_ROCKER, 28, 3, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 2, TrainerGuitaristClyde, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+	person_event SPRITE_FISHER, 15, 1, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 2, TrainerFirebreatherLyle, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+	person_event SPRITE_BUG_CATCHER, 15, 6, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 2, TrainerBug_catcherKen, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+	person_event SPRITE_BUENA, 26, 1, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerBeautyCassie, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	person_event SPRITE_ROCKER, 28, 3, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 2, TrainerGuitaristClyde, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
--- a/maps/FightingDojo.asm
+++ b/maps/FightingDojo.asm
@@ -61,5 +61,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_BLACK_BELT, 4, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, FightingDojoBlackBelt, -1
+	person_event SPRITE_BLACK_BELT, 4, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, FightingDojoBlackBelt, -1
 	person_event SPRITE_POKE_BALL, 1, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, FightingDojoFocusBand, EVENT_PICKED_UP_FOCUS_BAND
--- a/maps/FuchsiaBillSpeechHouse.asm
+++ b/maps/FuchsiaBillSpeechHouse.asm
@@ -44,5 +44,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_POKEFAN_F, 3, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, PokefanFScript_0x1963bd, -1
+	person_event SPRITE_POKEFAN_F, 3, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, PokefanFScript_0x1963bd, -1
 	person_event SPRITE_YOUNGSTER, 4, 6, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x1963c0, -1
--- a/maps/FuchsiaCity.asm
+++ b/maps/FuchsiaCity.asm
@@ -10,8 +10,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
 	dbw MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
@@ -45,7 +43,7 @@
 NoLitteringSign:
 	jumptext NoLitteringSignText
 
-FuchsiaCityPokeCenterSign:
+FuchsiaCityPokecenterSign:
 	jumpstd pokecentersign
 
 FuchsiaCityMartSign:
@@ -155,12 +153,12 @@
 	signpost 29, 27, SIGNPOST_READ, WardensHomeSign
 	signpost 5, 17, SIGNPOST_READ, SafariZoneClosedSign
 	signpost 15, 13, SIGNPOST_READ, NoLitteringSign
-	signpost 27, 20, SIGNPOST_READ, FuchsiaCityPokeCenterSign
+	signpost 27, 20, SIGNPOST_READ, FuchsiaCityPokecenterSign
 	signpost 13, 6, SIGNPOST_READ, FuchsiaCityMartSign
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_YOUNGSTER, 18, 23, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, FuchsiaCityYoungster, -1
-	person_event SPRITE_POKEFAN_M, 8, 13, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, FuchsiaCityPokefanM, -1
-	person_event SPRITE_TEACHER, 14, 16, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, FuchsiaCityTeacher, -1
+	person_event SPRITE_YOUNGSTER, 18, 23, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, FuchsiaCityYoungster, -1
+	person_event SPRITE_POKEFAN_M, 8, 13, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, FuchsiaCityPokefanM, -1
+	person_event SPRITE_TEACHER, 14, 16, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, FuchsiaCityTeacher, -1
 	person_event SPRITE_FRUIT_TREE, 1, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FuchsiaCityFruitTree, -1
--- a/maps/FuchsiaGym.asm
+++ b/maps/FuchsiaGym.asm
@@ -399,9 +399,9 @@
 
 .PersonEvents:
 	db 6
-	person_event SPRITE_JANINE, 10, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, FuchsiaGymJanineScript, -1
-	person_event SPRITE_FUCHSIA_GYM_1, 7, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, LassAliceScript, -1
-	person_event SPRITE_FUCHSIA_GYM_2, 11, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, LassLindaScript, -1
-	person_event SPRITE_FUCHSIA_GYM_3, 4, 9, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, PicnickerCindyScript, -1
-	person_event SPRITE_FUCHSIA_GYM_4, 2, 4, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, CamperBarryScript, -1
-	person_event SPRITE_GYM_GUY, 15, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, FuchsiaGymGuyScript, -1
+	person_event SPRITE_JANINE, 10, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, FuchsiaGymJanineScript, -1
+	person_event SPRITE_FUCHSIA_GYM_1, 7, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, LassAliceScript, -1
+	person_event SPRITE_FUCHSIA_GYM_2, 11, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, LassLindaScript, -1
+	person_event SPRITE_FUCHSIA_GYM_3, 4, 9, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, PicnickerCindyScript, -1
+	person_event SPRITE_FUCHSIA_GYM_4, 2, 4, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, CamperBarryScript, -1
+	person_event SPRITE_GYM_GUY, 15, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, FuchsiaGymGuyScript, -1
--- a/maps/FuchsiaMart.asm
+++ b/maps/FuchsiaMart.asm
@@ -55,5 +55,5 @@
 .PersonEvents:
 	db 3
 	person_event SPRITE_CLERK, 3, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ClerkScript_0x195ce8, -1
-	person_event SPRITE_FISHER, 2, 3, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, FisherScript_0x195cef, -1
-	person_event SPRITE_COOLTRAINER_F, 6, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x195cf2, -1
+	person_event SPRITE_FISHER, 2, 3, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, FisherScript_0x195cef, -1
+	person_event SPRITE_COOLTRAINER_F, 6, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x195cf2, -1
--- a/maps/FuchsiaPokeCenter1F.asm
+++ /dev/null
@@ -1,114 +1,0 @@
-const_value set 2
-	const FUCHSIAPOKECENTER1F_NURSE
-	const FUCHSIAPOKECENTER1F_COOLTRAINER_M
-	const FUCHSIAPOKECENTER1F_COOLTRAINER_F
-	const FUCHSIAPOKECENTER1F_JANINE_IMPERSONATOR
-
-FuchsiaPokeCenter1F_MapScriptHeader:
-.MapTriggers:
-	db 1
-
-	; triggers
-	dw UnknownScript_0x196458, 0
-
-.MapCallbacks:
-	db 0
-
-UnknownScript_0x196458:
-	end
-
-NurseScript_0x196459:
-	jumpstd pokecenternurse
-
-CooltrainerMScript_0x19645c:
-	jumptextfaceplayer UnknownText_0x196494
-
-CooltrainerFScript_0x19645f:
-	jumptextfaceplayer UnknownText_0x1964dc
-
-JanineImpersonatorScript_0x196462:
-	faceplayer
-	opentext
-	writetext UnknownText_0x19652e
-	waitbutton
-	closetext
-	applymovement FUCHSIAPOKECENTER1F_JANINE_IMPERSONATOR, MovementData_0x196486
-	faceplayer
-	variablesprite SPRITE_JANINE_IMPERSONATOR, SPRITE_JANINE
-	special MapCallbackSprites_LoadUsedSpritesGFX
-	opentext
-	writetext UnknownText_0x19654e
-	waitbutton
-	closetext
-	applymovement FUCHSIAPOKECENTER1F_JANINE_IMPERSONATOR, MovementData_0x196486
-	faceplayer
-	variablesprite SPRITE_JANINE_IMPERSONATOR, SPRITE_LASS
-	special MapCallbackSprites_LoadUsedSpritesGFX
-	end
-
-MovementData_0x196486:
-	turn_head DOWN
-	turn_head LEFT
-	turn_head UP
-	turn_head RIGHT
-	turn_head DOWN
-	turn_head LEFT
-	turn_head UP
-	turn_head RIGHT
-	turn_head DOWN
-	turn_head LEFT
-	turn_head UP
-	turn_head RIGHT
-	turn_head DOWN
-	step_end
-
-UnknownText_0x196494:
-	text "Hey! You have a"
-	line "brand new kind of"
-	cont "#DEX."
-
-	para "Did PROF.OAK give"
-	line "that to you?"
-	done
-
-UnknownText_0x1964dc:
-	text "I got quite a"
-	line "shock at the GYM."
-
-	para "There were all"
-	line "these girls who"
-	cont "looked identical."
-	done
-
-UnknownText_0x19652e:
-	text "I'm JANINE! Hocus-"
-	line "pocus… Poof!"
-	done
-
-UnknownText_0x19654e:
-	text "See? I look just"
-	line "like her now!"
-	done
-
-FuchsiaPokeCenter1F_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 3
-	warp_def $7, $3, 5, FUCHSIA_CITY
-	warp_def $7, $4, 5, FUCHSIA_CITY
-	warp_def $7, $0, 1, POKECENTER_2F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 4
-	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, NurseScript_0x196459, -1
-	person_event SPRITE_COOLTRAINER_M, 4, 8, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x19645c, -1
-	person_event SPRITE_COOLTRAINER_F, 4, 1, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x19645f, -1
-	person_event SPRITE_JANINE_IMPERSONATOR, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, JanineImpersonatorScript_0x196462, -1
--- a/maps/FuchsiaPokeCenter2FBeta.asm
+++ /dev/null
@@ -1,23 +1,0 @@
-FuchsiaPokeCenter2FBeta_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-FuchsiaPokeCenter2FBeta_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 1
-	warp_def $7, $0, 3, FUCHSIA_POKECENTER_1F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 0
--- /dev/null
+++ b/maps/FuchsiaPokecenter1F.asm
@@ -1,0 +1,112 @@
+const_value set 2
+	const FUCHSIAPOKECENTER1F_NURSE
+	const FUCHSIAPOKECENTER1F_COOLTRAINER_M
+	const FUCHSIAPOKECENTER1F_COOLTRAINER_F
+	const FUCHSIAPOKECENTER1F_JANINE_IMPERSONATOR
+
+FuchsiaPokecenter1F_MapScriptHeader:
+.MapTriggers:
+	db 1
+	maptrigger .DummyTrigger
+
+.MapCallbacks:
+	db 0
+
+.DummyTrigger:
+	end
+
+NurseScript_0x196459:
+	jumpstd pokecenternurse
+
+CooltrainerMScript_0x19645c:
+	jumptextfaceplayer UnknownText_0x196494
+
+CooltrainerFScript_0x19645f:
+	jumptextfaceplayer UnknownText_0x1964dc
+
+JanineImpersonatorScript_0x196462:
+	faceplayer
+	opentext
+	writetext UnknownText_0x19652e
+	waitbutton
+	closetext
+	applymovement FUCHSIAPOKECENTER1F_JANINE_IMPERSONATOR, MovementData_0x196486
+	faceplayer
+	variablesprite SPRITE_JANINE_IMPERSONATOR, SPRITE_JANINE
+	special MapCallbackSprites_LoadUsedSpritesGFX
+	opentext
+	writetext UnknownText_0x19654e
+	waitbutton
+	closetext
+	applymovement FUCHSIAPOKECENTER1F_JANINE_IMPERSONATOR, MovementData_0x196486
+	faceplayer
+	variablesprite SPRITE_JANINE_IMPERSONATOR, SPRITE_LASS
+	special MapCallbackSprites_LoadUsedSpritesGFX
+	end
+
+MovementData_0x196486:
+	turn_head DOWN
+	turn_head LEFT
+	turn_head UP
+	turn_head RIGHT
+	turn_head DOWN
+	turn_head LEFT
+	turn_head UP
+	turn_head RIGHT
+	turn_head DOWN
+	turn_head LEFT
+	turn_head UP
+	turn_head RIGHT
+	turn_head DOWN
+	step_end
+
+UnknownText_0x196494:
+	text "Hey! You have a"
+	line "brand new kind of"
+	cont "#DEX."
+
+	para "Did PROF.OAK give"
+	line "that to you?"
+	done
+
+UnknownText_0x1964dc:
+	text "I got quite a"
+	line "shock at the GYM."
+
+	para "There were all"
+	line "these girls who"
+	cont "looked identical."
+	done
+
+UnknownText_0x19652e:
+	text "I'm JANINE! Hocus-"
+	line "pocus… Poof!"
+	done
+
+UnknownText_0x19654e:
+	text "See? I look just"
+	line "like her now!"
+	done
+
+FuchsiaPokecenter1F_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 3
+	warp_def $7, $3, 5, FUCHSIA_CITY
+	warp_def $7, $4, 5, FUCHSIA_CITY
+	warp_def $7, $0, 1, POKECENTER_2F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 4
+	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, NurseScript_0x196459, -1
+	person_event SPRITE_COOLTRAINER_M, 4, 8, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x19645c, -1
+	person_event SPRITE_COOLTRAINER_F, 4, 1, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x19645f, -1
+	person_event SPRITE_JANINE_IMPERSONATOR, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, JanineImpersonatorScript_0x196462, -1
--- /dev/null
+++ b/maps/FuchsiaPokecenter2FBeta.asm
@@ -1,0 +1,23 @@
+FuchsiaPokecenter2FBeta_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+FuchsiaPokecenter2FBeta_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 1
+	warp_def $7, $0, 3, FUCHSIA_POKECENTER_1F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 0
--- a/maps/GoldenrodBikeShop.asm
+++ b/maps/GoldenrodBikeShop.asm
@@ -128,4 +128,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_CLERK, 2, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, ClerkScript_0x54750, -1
+	person_event SPRITE_CLERK, 2, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, ClerkScript_0x54750, -1
--- a/maps/GoldenrodBillsHouse.asm
+++ b/maps/GoldenrodBillsHouse.asm
@@ -264,4 +264,4 @@
 	db 3
 	person_event SPRITE_BILL, 3, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BillsHouseBill, EVENT_MET_BILL
 	person_event SPRITE_POKEFAN_F, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BillsMom, -1
-	person_event SPRITE_TWIN, 4, 5, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, BillsSister, -1
+	person_event SPRITE_TWIN, 4, 5, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, BillsSister, -1
--- a/maps/GoldenrodCity.asm
+++ b/maps/GoldenrodCity.asm
@@ -21,8 +21,6 @@
 
 .MapCallbacks:
 	db 2
-
-	; callbacks
 	dbw MAPCALLBACK_NEWMAP, .FlyPointAndFloria
 	dbw MAPCALLBACK_OBJECTS, .MoveTutor
 
@@ -268,7 +266,7 @@
 GoldenrodCityUndergroundSignSouth:
 	jumptext GoldenrodCityUndergroundSignSouthText
 
-GoldenrodCityPokeCenterSign:
+GoldenrodCityPokecenterSign:
 	jumpstd pokecentersign
 
 GoldenrodCityFlowerShopSign:
@@ -593,7 +591,7 @@
 	signpost 7, 12, SIGNPOST_READ, GoldenrodCityNameRaterSign
 	signpost 6, 8, SIGNPOST_READ, GoldenrodCityUndergroundSignNorth
 	signpost 30, 12, SIGNPOST_READ, GoldenrodCityUndergroundSignSouth
-	signpost 27, 16, SIGNPOST_UP, GoldenrodCityPokeCenterSign
+	signpost 27, 16, SIGNPOST_UP, GoldenrodCityPokecenterSign
 	signpost 6, 30, SIGNPOST_READ, GoldenrodCityFlowerShopSign
 
 .PersonEvents:
@@ -600,10 +598,10 @@
 	db 15
 	person_event SPRITE_POKEFAN_M, 18, 7, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x1989e3, EVENT_GOLDENROD_CITY_CIVILIANS
 	person_event SPRITE_YOUNGSTER, 17, 30, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x1989e6, EVENT_GOLDENROD_CITY_CIVILIANS
-	person_event SPRITE_COOLTRAINER_F, 16, 12, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x1989e9, EVENT_GOLDENROD_CITY_CIVILIANS
+	person_event SPRITE_COOLTRAINER_F, 16, 12, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x1989e9, EVENT_GOLDENROD_CITY_CIVILIANS
 	person_event SPRITE_COOLTRAINER_F, 26, 20, SPRITEMOVEDATA_WANDER, 2, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x1989fd, EVENT_GOLDENROD_CITY_CIVILIANS
-	person_event SPRITE_YOUNGSTER, 17, 19, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x198a11, EVENT_GOLDENROD_CITY_CIVILIANS
-	person_event SPRITE_LASS, 10, 17, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x198a14, EVENT_GOLDENROD_CITY_CIVILIANS
+	person_event SPRITE_YOUNGSTER, 17, 19, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x198a11, EVENT_GOLDENROD_CITY_CIVILIANS
+	person_event SPRITE_LASS, 10, 17, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x198a14, EVENT_GOLDENROD_CITY_CIVILIANS
 	person_event SPRITE_GRAMPS, 27, 11, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GrampsScript_0x198a17, EVENT_GOLDENROD_CITY_CIVILIANS
 	person_event SPRITE_ROCKET, 16, 4, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, RocketScript_0x198a1a, EVENT_GOLDENROD_CITY_ROCKET_SCOUT
 	person_event SPRITE_ROCKET, 20, 28, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, RocketScript_0x198a29, EVENT_GOLDENROD_CITY_ROCKET_TAKEOVER
@@ -612,4 +610,4 @@
 	person_event SPRITE_ROCKET, 20, 29, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, RocketScript_0x198a32, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_ROCKET, 7, 29, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, RocketScript_0x198a35, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_ROCKET, 10, 31, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, RocketScript_0x198a38, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
-	person_event SPRITE_POKEFAN_M, 22, 12, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, MoveTutor, EVENT_GOLDENROD_CITY_MOVE_TUTOR
+	person_event SPRITE_POKEFAN_M, 22, 12, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, MoveTutor, EVENT_GOLDENROD_CITY_MOVE_TUTOR
--- a/maps/GoldenrodDeptStore1F.asm
+++ b/maps/GoldenrodDeptStore1F.asm
@@ -101,5 +101,5 @@
 	db 4
 	person_event SPRITE_RECEPTIONIST, 1, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ReceptionistScript_0x55981, -1
 	person_event SPRITE_POKEFAN_F, 4, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, PokefanFScript_0x55987, -1
-	person_event SPRITE_BUG_CATCHER, 5, 5, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, BugCatcherScript_0x5598a, -1
+	person_event SPRITE_BUG_CATCHER, 5, 5, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, BugCatcherScript_0x5598a, -1
 	person_event SPRITE_GENTLEMAN, 5, 11, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x55984, -1
--- a/maps/GoldenrodDeptStore2F.asm
+++ b/maps/GoldenrodDeptStore2F.asm
@@ -123,5 +123,5 @@
 	person_event SPRITE_CLERK, 5, 13, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ClerkScript_0x55b5d, -1
 	person_event SPRITE_CLERK, 6, 13, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ClerkScript_0x55b65, -1
 	person_event SPRITE_YOUNGSTER, 6, 9, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x55b6d, -1
-	person_event SPRITE_COOLTRAINER_F, 2, 6, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x55b70, -1
+	person_event SPRITE_COOLTRAINER_F, 2, 6, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x55b70, -1
 	person_event SPRITE_GENTLEMAN, 6, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x55b73, -1
--- a/maps/GoldenrodDeptStore3F.asm
+++ b/maps/GoldenrodDeptStore3F.asm
@@ -77,5 +77,5 @@
 .PersonEvents:
 	db 3
 	person_event SPRITE_CLERK, 1, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ClerkScript_0x55db8, -1
-	person_event SPRITE_SUPER_NERD, 5, 12, SPRITEMOVEDATA_SPINRANDOM_FAST, 1, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x55dc0, -1
+	person_event SPRITE_SUPER_NERD, 5, 12, SPRITEMOVEDATA_SPINRANDOM_FAST, 1, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x55dc0, -1
 	person_event SPRITE_ROCKER, 5, 2, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, RockerScript_0x55dc3, -1
--- a/maps/GoldenrodDeptStore5F.asm
+++ b/maps/GoldenrodDeptStore5F.asm
@@ -12,9 +12,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_OBJECTS, .CheckIfSunday
 
 .CheckIfSunday:
@@ -129,7 +126,7 @@
 Mike:
 	faceplayer
 	opentext
-	trade $0
+	trade NPCTRADE_MIKE
 	waitbutton
 	closetext
 	end
@@ -244,5 +241,5 @@
 	person_event SPRITE_LASS, 6, 3, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, LassScript_0x56130, -1
 	person_event SPRITE_COOLTRAINER_M, 3, 6, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Mike, -1
 	person_event SPRITE_POKEFAN_M, 5, 13, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, 0, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x5613a, -1
-	person_event SPRITE_TWIN, 1, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, Carrie, -1
-	person_event SPRITE_RECEPTIONIST, 5, 7, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, ReceptionistScript_0x560ce, EVENT_GOLDENROD_DEPT_STORE_5F_HAPPINESS_EVENT_LADY
+	person_event SPRITE_TWIN, 1, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, Carrie, -1
+	person_event SPRITE_RECEPTIONIST, 5, 7, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, ReceptionistScript_0x560ce, EVENT_GOLDENROD_DEPT_STORE_5F_HAPPINESS_EVENT_LADY
--- a/maps/GoldenrodDeptStore6F.asm
+++ b/maps/GoldenrodDeptStore6F.asm
@@ -173,5 +173,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_LASS, 2, 10, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x564bf, -1
-	person_event SPRITE_SUPER_NERD, 2, 8, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x564c2, -1
+	person_event SPRITE_LASS, 2, 10, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x564bf, -1
+	person_event SPRITE_SUPER_NERD, 2, 8, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x564c2, -1
--- a/maps/GoldenrodDeptStoreB1F.asm
+++ b/maps/GoldenrodDeptStoreB1F.asm
@@ -14,11 +14,7 @@
 
 .MapCallbacks:
 	db 2
-
-	; callbacks
-
 	dbw MAPCALLBACK_TILES, UnknownScript_0x7d781
-
 	dbw MAPCALLBACK_NEWMAP, UnknownScript_0x7d7ac
 
 UnknownScript_0x7d781:
@@ -135,7 +131,7 @@
 	person_event SPRITE_POKE_BALL, 2, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, GoldenrodDeptStoreB1FAmuletCoin, EVENT_GOLDENROD_DEPT_STORE_B1F_AMULET_COIN
 	person_event SPRITE_POKE_BALL, 3, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, GoldenrodDeptStoreB1FBurnHeal, EVENT_GOLDENROD_DEPT_STORE_B1F_BURN_HEAL
 	person_event SPRITE_POKE_BALL, 15, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, GoldenrodDeptStoreB1FUltraBall, EVENT_GOLDENROD_DEPT_STORE_B1F_ULTRA_BALL
-	person_event SPRITE_BLACK_BELT, 10, 9, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, BlackBeltScript_0x7d7b0, -1
-	person_event SPRITE_BLACK_BELT, 8, 4, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, BlackBeltScript_0x7d7b3, -1
-	person_event SPRITE_BLACK_BELT, 13, 6, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, BlackBeltScript_0x7d7b6, -1
-	person_event SPRITE_MACHOP, 7, 7, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, MachopScript_0x7d7b9, -1
+	person_event SPRITE_BLACK_BELT, 10, 9, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, BlackBeltScript_0x7d7b0, -1
+	person_event SPRITE_BLACK_BELT, 8, 4, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, BlackBeltScript_0x7d7b3, -1
+	person_event SPRITE_BLACK_BELT, 13, 6, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, BlackBeltScript_0x7d7b6, -1
+	person_event SPRITE_MACHOP, 7, 7, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, MachopScript_0x7d7b9, -1
--- a/maps/GoldenrodDeptStoreElevator.asm
+++ b/maps/GoldenrodDeptStoreElevator.asm
@@ -46,13 +46,13 @@
 
 Elevator_0x566e0:
 	db 7 ; floors
-	elevfloor _B1F, 2, GOLDENROD_DEPT_STORE_B1F
-	elevfloor _1F,  4, GOLDENROD_DEPT_STORE_1F
-	elevfloor _2F,  3, GOLDENROD_DEPT_STORE_2F
-	elevfloor _3F,  3, GOLDENROD_DEPT_STORE_3F
-	elevfloor _4F,  3, GOLDENROD_DEPT_STORE_4F
-	elevfloor _5F,  3, GOLDENROD_DEPT_STORE_5F
-	elevfloor _6F,  2, GOLDENROD_DEPT_STORE_6F
+	elevfloor FLOOR_B1F, 2, GOLDENROD_DEPT_STORE_B1F
+	elevfloor FLOOR_1F,  4, GOLDENROD_DEPT_STORE_1F
+	elevfloor FLOOR_2F,  3, GOLDENROD_DEPT_STORE_2F
+	elevfloor FLOOR_3F,  3, GOLDENROD_DEPT_STORE_3F
+	elevfloor FLOOR_4F,  3, GOLDENROD_DEPT_STORE_4F
+	elevfloor FLOOR_5F,  3, GOLDENROD_DEPT_STORE_5F
+	elevfloor FLOOR_6F,  2, GOLDENROD_DEPT_STORE_6F
 	db -1 ; end
 
 
--- a/maps/GoldenrodDeptStoreRoof.asm
+++ b/maps/GoldenrodDeptStoreRoof.asm
@@ -14,11 +14,7 @@
 
 .MapCallbacks:
 	db 2
-
-	; callbacks
-
 	dbw MAPCALLBACK_TILES, .CheckSaleChangeBlock
-
 	dbw MAPCALLBACK_OBJECTS, .CheckSaleChangeClerk
 
 .CheckSaleChangeBlock:
@@ -236,10 +232,10 @@
 .PersonEvents:
 	db 8
 	person_event SPRITE_CLERK, 4, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ClerkScript_0x5673f, EVENT_GOLDENROD_SALE_OFF
-	person_event SPRITE_POKEFAN_F, 3, 10, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, PokefanFScript_0x56746, -1
-	person_event SPRITE_FISHER, 1, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, FisherScript_0x56749, -1
-	person_event SPRITE_TWIN, 4, 3, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, TwinScript_0x56754, EVENT_GOLDENROD_SALE_ON
-	person_event SPRITE_SUPER_NERD, 6, 14, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x56757, EVENT_GOLDENROD_SALE_ON
+	person_event SPRITE_POKEFAN_F, 3, 10, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, PokefanFScript_0x56746, -1
+	person_event SPRITE_FISHER, 1, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, FisherScript_0x56749, -1
+	person_event SPRITE_TWIN, 4, 3, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, TwinScript_0x56754, EVENT_GOLDENROD_SALE_ON
+	person_event SPRITE_SUPER_NERD, 6, 14, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x56757, EVENT_GOLDENROD_SALE_ON
 	person_event SPRITE_POKEFAN_M, 0, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x5676a, EVENT_GOLDENROD_SALE_OFF
-	person_event SPRITE_TEACHER, 3, 5, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, TeacherScript_0x5676d, EVENT_GOLDENROD_SALE_OFF
-	person_event SPRITE_BUG_CATCHER, 6, 1, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, BugCatcherScript_0x56770, EVENT_GOLDENROD_SALE_OFF
+	person_event SPRITE_TEACHER, 3, 5, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, TeacherScript_0x5676d, EVENT_GOLDENROD_SALE_OFF
+	person_event SPRITE_BUG_CATCHER, 6, 1, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, BugCatcherScript_0x56770, EVENT_GOLDENROD_SALE_OFF
--- a/maps/GoldenrodFlowerShop.asm
+++ b/maps/GoldenrodFlowerShop.asm
@@ -177,4 +177,4 @@
 .PersonEvents:
 	db 2
 	person_event SPRITE_TEACHER, 4, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FlowerShopTeacherScript, -1
-	person_event SPRITE_LASS, 6, 5, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, FlowerShopFloriaScript, EVENT_FLORIA_AT_FLOWER_SHOP
+	person_event SPRITE_LASS, 6, 5, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, FlowerShopFloriaScript, EVENT_FLORIA_AT_FLOWER_SHOP
--- a/maps/GoldenrodGameCorner.asm
+++ b/maps/GoldenrodGameCorner.asm
@@ -18,9 +18,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_OBJECTS, .Callback
 
 .Callback:
@@ -493,15 +490,15 @@
 
 .PersonEvents:
 	db 12
-	person_event SPRITE_CLERK, 2, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, GoldenrodGmeCornerCoinVendorScript, -1
-	person_event SPRITE_RECEPTIONIST, 2, 16, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, GoldenrodGmeCornerTMVendorScript, -1
-	person_event SPRITE_RECEPTIONIST, 2, 18, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerPrizeMonVendorScript, -1
-	person_event SPRITE_PHARMACIST, 7, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, (1 << DAY), (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerPharmacistScript, -1
-	person_event SPRITE_PHARMACIST, 7, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, (1 << NITE), (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerPharmacistScript, -1
-	person_event SPRITE_POKEFAN_M, 10, 11, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerPokefanM1Script, -1
-	person_event SPRITE_COOLTRAINER_M, 8, 14, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerCooltrainerMScript, -1
-	person_event SPRITE_POKEFAN_F, 6, 17, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerPokefanFScript, -1
-	person_event SPRITE_COOLTRAINER_F, 3, 10, SPRITEMOVEDATA_WANDER, 1, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerCooltrainerFScript, -1
-	person_event SPRITE_GENTLEMAN, 10, 5, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerGentlemanScript, -1
-	person_event SPRITE_POKEFAN_M, 9, 2, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerPokefanM2Script, -1
-	person_event SPRITE_POKEFAN_M, 10, 17, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerPokefanM3Script, EVENT_GOLDENROD_GAME_CORNER_MOVE_TUTOR
+	person_event SPRITE_CLERK, 2, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, GoldenrodGmeCornerCoinVendorScript, -1
+	person_event SPRITE_RECEPTIONIST, 2, 16, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, GoldenrodGmeCornerTMVendorScript, -1
+	person_event SPRITE_RECEPTIONIST, 2, 18, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerPrizeMonVendorScript, -1
+	person_event SPRITE_PHARMACIST, 7, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, DAY, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerPharmacistScript, -1
+	person_event SPRITE_PHARMACIST, 7, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, NITE, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerPharmacistScript, -1
+	person_event SPRITE_POKEFAN_M, 10, 11, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerPokefanM1Script, -1
+	person_event SPRITE_COOLTRAINER_M, 8, 14, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerCooltrainerMScript, -1
+	person_event SPRITE_POKEFAN_F, 6, 17, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerPokefanFScript, -1
+	person_event SPRITE_COOLTRAINER_F, 3, 10, SPRITEMOVEDATA_WANDER, 1, 2, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerCooltrainerFScript, -1
+	person_event SPRITE_GENTLEMAN, 10, 5, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerGentlemanScript, -1
+	person_event SPRITE_POKEFAN_M, 9, 2, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerPokefanM2Script, -1
+	person_event SPRITE_POKEFAN_M, 10, 17, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, GoldenrodGameCornerPokefanM3Script, EVENT_GOLDENROD_GAME_CORNER_MOVE_TUTOR
--- a/maps/GoldenrodGym.asm
+++ b/maps/GoldenrodGym.asm
@@ -9,18 +9,16 @@
 GoldenrodGym_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
 
-	; triggers
-	dw UnknownScript_0x5400a, 0
-	dw UnknownScript_0x5400b, 0
-
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x5400a:
+.DummyTrigger0:
 	end
 
-UnknownScript_0x5400b:
+.DummyTrigger1:
 	end
 
 WhitneyScript_0x5400c:
@@ -100,7 +98,7 @@
 LassCarrieScript:
 	end_if_just_battled
 	opentext
-	writetext LassCarrieOWText
+	writetext LassCarrieAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -124,7 +122,7 @@
 LassBridgetScript:
 	end_if_just_battled
 	opentext
-	writetext LassBridgetOWText
+	writetext LassBridgetAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -135,7 +133,7 @@
 BeautyVictoriaScript:
 	end_if_just_battled
 	opentext
-	writetext BeautyVictoriaOWText
+	writetext BeautyVictoriaAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -146,7 +144,7 @@
 BeautySamanthaScript:
 	end_if_just_battled
 	opentext
-	writetext BeautySamanthaOWText
+	writetext BeautySamanthaAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -285,7 +283,7 @@
 	line "you were weak…"
 	done
 
-LassCarrieOWText:
+LassCarrieAfterBattleText:
 	text "Do my #MON"
 	line "think I'm cute?"
 	done
@@ -303,7 +301,7 @@
 	text "Oh, no, no, no!"
 	done
 
-LassBridgetOWText:
+LassBridgetAfterBattleText:
 	text "I'm trying to beat"
 	line "WHITNEY, but…"
 	cont "It's depressing."
@@ -339,7 +337,7 @@
 	line "it's over?"
 	done
 
-BeautyVictoriaOWText:
+BeautyVictoriaAfterBattleText:
 	text "Wow, you must be"
 	line "good to beat me!"
 	cont "Keep it up!"
@@ -356,7 +354,7 @@
 	line "I'm so sorry!"
 	done
 
-BeautySamanthaOWText:
+BeautySamanthaAfterBattleText:
 	text "I taught MEOWTH"
 	line "moves for taking"
 	cont "on any type…"
@@ -401,9 +399,9 @@
 
 .PersonEvents:
 	db 6
-	person_event SPRITE_WHITNEY, 3, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, WhitneyScript_0x5400c, -1
-	person_event SPRITE_LASS, 13, 9, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 4, TrainerLassCarrie, -1
-	person_event SPRITE_LASS, 6, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerLassBridget, -1
-	person_event SPRITE_BUENA, 2, 0, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerBeautyVictoria, -1
-	person_event SPRITE_BUENA, 5, 19, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerBeautySamantha, -1
-	person_event SPRITE_GYM_GUY, 15, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, GoldenrodGymGuyScript, -1
+	person_event SPRITE_WHITNEY, 3, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, WhitneyScript_0x5400c, -1
+	person_event SPRITE_LASS, 13, 9, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 4, TrainerLassCarrie, -1
+	person_event SPRITE_LASS, 6, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 1, TrainerLassBridget, -1
+	person_event SPRITE_BUENA, 2, 0, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerBeautyVictoria, -1
+	person_event SPRITE_BUENA, 5, 19, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerBeautySamantha, -1
+	person_event SPRITE_GYM_GUY, 15, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, GoldenrodGymGuyScript, -1
--- a/maps/GoldenrodHappinessRater.asm
+++ b/maps/GoldenrodHappinessRater.asm
@@ -156,6 +156,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_TEACHER, 4, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, TeacherScript_0x54953, -1
+	person_event SPRITE_TEACHER, 4, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, TeacherScript_0x54953, -1
 	person_event SPRITE_POKEFAN_M, 3, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x54997, -1
-	person_event SPRITE_TWIN, 6, 5, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, TwinScript_0x5499a, -1
+	person_event SPRITE_TWIN, 6, 5, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, TwinScript_0x5499a, -1
--- a/maps/GoldenrodMagnetTrainStation.asm
+++ b/maps/GoldenrodMagnetTrainStation.asm
@@ -5,14 +5,12 @@
 GoldenrodMagnetTrainStation_MapScriptHeader:
 .MapTriggers:
 	db 1
+	maptrigger .DummyTrigger
 
-	; triggers
-	maptrigger .Trigger0
-
 .MapCallbacks:
 	db 0
 
-.Trigger0:
+.DummyTrigger:
 	end
 
 OfficerScript_0x550ec:
--- a/maps/GoldenrodPPSpeechHouse.asm
+++ b/maps/GoldenrodPPSpeechHouse.asm
@@ -71,5 +71,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_FISHER, 4, 2, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, FisherScript_0x5564a, -1
+	person_event SPRITE_FISHER, 4, 2, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, FisherScript_0x5564a, -1
 	person_event SPRITE_LASS, 3, 5, SPRITEMOVEDATA_STANDING_LEFT, 1, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, LassScript_0x5564d, -1
--- a/maps/GoldenrodPokeCenter1F.asm
+++ /dev/null
@@ -1,832 +1,0 @@
-const_value set 2
-	const GOLDENRODPOKECENTER1F_NURSE
-	const GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
-	const GOLDENRODPOKECENTER1F_GAMEBOY_KID
-	const GOLDENRODPOKECENTER1F_LASS
-	const GOLDENRODPOKECENTER1F_POKEFAN_F
-
-GoldenrodPokeCenter1F_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-NurseScript_0x60f91:
-	jumpstd pokecenternurse
-
-GoldenrodPokeCenter1F_GSBallTriggerLeft:
-	writebyte BATTLETOWERACTION_CHECKMOBILEEVENT
-	special BattleTowerAction
-	if_equal MOBILE_EVENT_OBJECT_GS_BALL, .gsball
-	end
-
-.gsball
-	checkevent EVENT_GOT_GS_BALL_FROM_POKECOM_CENTER
-	iftrue .cancel
-	playsound SFX_EXIT_BUILDING
-	moveperson GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST, $0, $7
-	disappear GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
-	appear GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
-	playmusic MUSIC_SHOW_ME_AROUND
-	applymovement GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST, MovementData_0x6105a
-	spriteface PLAYER, UP
-	opentext
-	writetext UnknownText_0x622f0
-	waitbutton
-	verbosegiveitem GS_BALL
-	setevent EVENT_GOT_GS_BALL_FROM_POKECOM_CENTER
-	setevent EVENT_CAN_GIVE_GS_BALL_TO_KURT
-	writetext UnknownText_0x62359
-	waitbutton
-	closetext
-	applymovement GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST, MovementData_0x61060
-	special RestartMapMusic
-	disappear GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
-	playsound SFX_EXIT_BUILDING
-.cancel
-	end
-
-GoldenrodPokeCenter1F_GSBallTriggerRight:
-	writebyte BATTLETOWERACTION_CHECKMOBILEEVENT
-	special BattleTowerAction
-	if_equal MOBILE_EVENT_OBJECT_GS_BALL, .gsball
-	end
-
-.gsball
-	checkevent EVENT_GOT_GS_BALL_FROM_POKECOM_CENTER
-	iftrue .cancel
-	playsound SFX_EXIT_BUILDING
-	moveperson GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST, $0, $7
-	disappear GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
-	appear GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
-	playmusic MUSIC_SHOW_ME_AROUND
-	applymovement GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST, MovementData_0x61065
-	spriteface PLAYER, UP
-	opentext
-	writetext UnknownText_0x622f0
-	waitbutton
-	verbosegiveitem GS_BALL
-	setevent EVENT_GOT_GS_BALL_FROM_POKECOM_CENTER
-	setevent EVENT_CAN_GIVE_GS_BALL_TO_KURT
-	writetext UnknownText_0x62359
-	waitbutton
-	closetext
-	applymovement GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST, MovementData_0x6106c
-	special RestartMapMusic
-	disappear GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
-	playsound SFX_EXIT_BUILDING
-.cancel
-	end
-
-GameboyKidScript_0x6101e:
-	jumptextfaceplayer UnknownText_0x62105
-
-LassScript_0x61021:
-	jumptextfaceplayer UnknownText_0x62260
-
-PokefanFScript_0x61024:
-	faceplayer
-	opentext
-	writetext UnknownText_0x623fb
-	waitbutton
-	writetext UnknownText_0x6248c
-	yesorno
-	iffalse UnknownScript_0x6104b
-	takeitem EON_MAIL
-	iffalse UnknownScript_0x6104b
-	writetext UnknownText_0x62549
-	waitbutton
-	writetext UnknownText_0x624a4
-	waitbutton
-	verbosegiveitem REVIVE
-	iffalse UnknownScript_0x61051
-	writetext UnknownText_0x624e9
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x6104b:
-	writetext UnknownText_0x62509
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x61051:
-	giveitem EON_MAIL
-	writetext UnknownText_0x6252a
-	waitbutton
-	closetext
-	end
-
-MovementData_0x6105a:
-	step UP
-	step RIGHT
-	step RIGHT
-	step RIGHT
-	turn_head DOWN
-	step_end
-
-MovementData_0x61060:
-	step LEFT
-	step LEFT
-	step LEFT
-	step DOWN
-	step_end
-
-MovementData_0x61065:
-	step UP
-	step RIGHT
-	step RIGHT
-	step RIGHT
-	step RIGHT
-	turn_head DOWN
-	step_end
-
-MovementData_0x6106c:
-	step LEFT
-	step LEFT
-	step LEFT
-	step LEFT
-	step DOWN
-	step_end
-
-; unused
-UnknownText_0x61072:
-	text "Hello! Welcome to"
-	line "#COM CENTER"
-	cont "TRADE CORNER."
-
-	para "You can trade"
-	line "#MON with other"
-	cont "people far away."
-	done
-
-UnknownText_0x610ce:
-	text "To make a trade,"
-	line "we must hold your"
-	cont "#MON."
-
-	para "Would you like to"
-	line "trade?"
-	done
-
-UnknownText_0x61111:
-	text "What kind of"
-	line "#MON do you"
-	cont "want in return?"
-	done
-
-UnknownText_0x6113b:
-	text "Fine. We will try"
-	line "to trade your"
-
-	para "@"
-	text_from_ram StringBuffer3
-	text " for"
-	line "@"
-	text_from_ram StringBuffer4
-	text "."
-
-	para "We'll have to hold"
-	line "your #MON"
-	cont "during the trade."
-
-	para "Please wait while"
-	line "we prepare the"
-	cont "room for it."
-	done
-
-UnknownText_0x611c9:
-	text "Fine. We will try"
-	line "to trade your"
-
-	para "@"
-	text_from_ram StringBuffer3
-	text " for a"
-	line "#MON that you"
-	cont "have never seen."
-
-	para "We'll have to hold"
-	line "your #MON"
-	cont "during the trade."
-
-	para "Please wait while"
-	line "we prepare the"
-	cont "room for it."
-	done
-
-UnknownText_0x61271:
-	text "Your trade #MON"
-	line "has been received."
-
-	para "It will take time"
-	line "to find a trade"
-
-	para "partner. Please"
-	line "come back later."
-	done
-
-UnknownText_0x612d8:
-	text "Oh? You have only"
-	line "one #MON in"
-	cont "your party. "
-
-	para "Please come back"
-	line "once you've in-"
-	cont "creased the size"
-	cont "of your party."
-	done
-
-UnknownText_0x61344:
-	text "We hope to see you"
-	line "again."
-	done
-
-UnknownText_0x6135f:
-	text "Communication"
-	line "error…"
-	done
-
-UnknownText_0x61375:
-	text "If we accept that"
-	line "#MON, what will"
-	cont "you battle with?"
-	done
-
-UnknownText_0x613a9:
-	text "Sorry. We can't"
-	line "accept an EGG."
-	done
-
-UnknownText_0x613c8:
-	text "Sorry, but your"
-	line "#MON appears to"
-
-	para "be abnormal. We"
-	line "can't accept it."
-	done
-
-UnknownText_0x61409:
-	text "Oh? Aren't we"
-	line "already holding a"
-	cont "#MON of yours?"
-	done
-
-UnknownText_0x61438:
-	text "We'll check the"
-	line "rooms."
-
-	para "Please wait."
-	done
-
-UnknownText_0x6145c:
-	text "Thank you for your"
-	line "patience."
-
-	para "A trade partner"
-	line "has been found."
-	done
-
-UnknownText_0x6149a:
-	text "It's your new"
-	line "partner."
-
-	para "Please take care"
-	line "of it with love."
-
-	para "We hope to see you"
-	line "again."
-	done
-
-UnknownText_0x614ed:
-	text "Uh-oh. Your party"
-	line "is already full."
-
-	para "Please come back"
-	line "when you have room"
-	cont "in your party."
-	done
-
-UnknownText_0x61544:
-	text "It's unfortunate,"
-	line "but no one has"
-
-	para "come forward as a"
-	line "trade partner."
-
-	para "Would you like"
-	line "your #MON back?"
-	done
-
-UnknownText_0x615a5:
-	text "We have returned"
-	line "your #MON."
-	done
-
-UnknownText_0x615c2:
-	text "It's unfortunate,"
-	line "but no one has"
-
-	para "come forward as a"
-	line "trade partner."
-
-	para "We've held your"
-	line "#MON for a long"
-
-	para "time. As a result,"
-	line "it is very lonely."
-
-	para "Sorry, but we must"
-	line "return it to you."
-	done
-
-UnknownText_0x6166e:
-	text "We hope to see you"
-	line "again."
-	done
-
-UnknownText_0x61689:
-	text "Fine. We will"
-	line "continue to hold"
-	cont "your #MON."
-	done
-
-UnknownText_0x616b4:
-	text "Oh? You left your"
-	line "#MON with us"
-	cont "only recently."
-
-	para "Please come back"
-	line "later."
-	done
-
-UnknownText_0x616fb:
-	text "We'll SAVE before"
-	line "connecting to the"
-	cont "CENTER."
-	done
-
-UnknownText_0x61727:
-	text "Which #MON do"
-	line "you want to trade?"
-	done
-
-UnknownText_0x61749:
-	text "Sorry, but we must"
-	line "cancel the trade."
-	done
-
-UnknownText_0x6176f:
-	text "Oh!"
-
-	para "I see you have an"
-	line "EGG TICKET!"
-
-	para "It's a coupon that"
-	line "special people can"
-
-	para "redeem for a"
-	line "special #MON!"
-	done
-
-UnknownText_0x617d2:
-	text "Let me give you a"
-	line "quick briefing."
-
-	para "Trades held at the"
-	line "TRADE CORNER are"
-
-	para "between two"
-	line "trainers who don't"
-
-	para "know each other's"
-	line "identity."
-
-	para "As a result, it"
-	line "may take time."
-
-	para "However, an ODD"
-	line "EGG is available"
-	cont "just for you."
-
-	para "It will be sent to"
-	line "you right away."
-
-	para "Please choose one"
-	line "of the rooms in"
-
-	para "the CENTER."
-	line "An ODD EGG will be"
-
-	para "sent from the"
-	line "chosen room."
-	done
-
-UnknownText_0x6191f:
-	text "Please wait a"
-	line "moment."
-	done
-
-UnknownText_0x61936:
-	text "Thank you for"
-	line "waiting."
-
-	para "We received your"
-	line "ODD EGG."
-
-	para "Here it is!"
-
-	para "Please raise it"
-	line "with loving care."
-	done
-
-UnknownText_0x61996:
-	text "I'm awfully sorry."
-
-	para "The EGG TICKET"
-	line "exchange service"
-	cont "isn't running now."
-	done
-
-UnknownText_0x619db:
-	text "It's a #MON"
-	line "NEWS MACHINE."
-	done
-
-UnknownText_0x619f5:
-	text "What would you"
-	line "like to do?"
-	done
-
-UnknownText_0x61a11:
-	text "#MON NEWS is"
-	line "news compiled from"
-
-	para "the SAVE files of"
-	line "#MON trainers."
-
-	para "When reading the"
-	line "NEWS, your SAVE"
-
-	para "file may be sent"
-	line "out."
-
-	para "The SAVE file data"
-	line "will contain your"
-
-	para "adventure log and"
-	line "mobile profile."
-
-	para "Your phone number"
-	line "will not be sent."
-
-	para "The contents of"
-	line "the NEWS will vary"
-
-	para "depending on the"
-	line "SAVE files sent by"
-
-	para "you and the other"
-	line "#MON trainers."
-
-	para "You might even be"
-	line "in the NEWS!"
-	done
-
-UnknownText_0x61b7c:
-	text "Would you like to"
-	line "get the NEWS?"
-	done
-
-UnknownText_0x61b9d:
-	text "Reading the latest"
-	line "NEWS… Please wait."
-	done
-
-UnknownText_0x61bc4:
-	text "There is no old"
-	line "NEWS…"
-	done
-
-UnknownText_0x61bdb:
-	text "The NEWS data is"
-	line "corrupted."
-
-	para "Please download"
-	line "the NEWS again."
-	done
-
-UnknownText_0x61c18:
-	text "We're making"
-	line "preparations."
-
-	para "Please come back"
-	line "later."
-	done
-
-UnknownText_0x61c4b:
-	text "We will SAVE your"
-	line "progress before"
-
-	para "starting the NEWS"
-	line "MACHINE."
-	done
-
-UnknownText_0x61c89:
-	text "Whoa, this #MON"
-	line "CENTER is huge."
-
-	para "They just built"
-	line "this place. They"
-
-	para "installed lots of"
-	line "new machines too."
-	done
-
-UnknownText_0x61cef:
-	text "I thought up a fun"
-	line "new thing for the"
-	cont "TRADE CORNER!"
-
-	para "I make a PIDGEY"
-	line "hold MAIL, then"
-
-	para "put it up for"
-	line "trade for another"
-	cont "one!"
-
-	para "If everyone did"
-	line "that, MAIL could"
-
-	para "be traded with all"
-	line "sorts of people!"
-
-	para "I call it PIDGEY"
-	line "MAIL!"
-
-	para "If it becomes"
-	line "popular, I might"
-
-	para "make lots of new"
-	line "friends!"
-	done
-
-UnknownText_0x61dfd:
-	text "They said you can"
-	line "trade #MON with"
-
-	para "total strangers up"
-	line "here."
-
-	para "But they're still"
-	line "adjusting things."
-	done
-
-UnknownText_0x61e5c:
-	text "Some girl I don't"
-	line "know sent me her"
-
-	para "HOPPIP."
-	line "You should trade"
-
-	para "for a #MON that"
-	line "you want."
-	done
-
-UnknownText_0x61eb2:
-	text "I received a"
-	line "female HOPPIP, but"
-	cont "its named STANLEY!"
-
-	para "That's my dad's"
-	line "name!"
-	done
-
-UnknownText_0x61efa:
-	text "What is the NEWS"
-	line "MACHINE?"
-
-	para "Does it get news"
-	line "from a wider area"
-	cont "than the radio?"
-	done
-
-UnknownText_0x61f48:
-	text "The #COM CENTER"
-	line "will link with all"
-
-	para "#MON CENTERS in"
-	line "a wireless net."
-
-	para "That must mean"
-	line "I'll be able to"
-
-	para "link with all"
-	line "sorts of people."
-	done
-
-UnknownText_0x61fc9:
-	text "The machines here"
-	line "can't be used yet."
-
-	para "Still, it's nice"
-	line "coming to a trendy"
-
-	para "place before other"
-	line "people."
-	done
-
-UnknownText_0x6202c:
-	text "My friend was in"
-	line "the NEWS a while"
-
-	para "back. I was really"
-	line "surprised!"
-	done
-
-UnknownText_0x6206d:
-	text "I get anxious if I"
-	line "don't check out"
-	cont "the latest NEWS!"
-	done
-
-UnknownText_0x620a1:
-	text "If I get in the"
-	line "NEWS and become"
-
-	para "famous, I bet I'll"
-	line "be adored."
-
-	para "I wonder how I"
-	line "could get in the"
-	cont "NEWS?"
-	done
-
-UnknownText_0x62105:
-	text "The COLOSSEUM"
-	line "upstairs is for"
-	cont "link battles."
-
-	para "Battle records are"
-	line "posted on the"
-
-	para "wall, so I can't"
-	line "afford to lose."
-	done
-
-UnknownText_0x62173:
-	text "I came over here"
-	line "when I got word"
-
-	para "that GOLDENROD's"
-	line "#MON CENTER has"
-
-	para "new machines that"
-	line "no one's ever seen"
-	cont "before."
-
-	para "But it looks like"
-	line "they're still busy"
-
-	para "with all their"
-	line "preparations…"
-	done
-
-UnknownText_0x62222:
-	text "Just seeing all"
-	line "these new things"
-
-	para "here makes me feel"
-	line "younger!"
-	done
-
-UnknownText_0x62260:
-	text "A higher level"
-	line "#MON doesn't"
-	cont "always win."
-
-	para "After all, it may"
-	line "have a type dis-"
-	cont "advantage."
-
-	para "I don't think"
-	line "there is a single"
-
-	para "#MON that is"
-	line "the toughest."
-	done
-
-UnknownText_0x622f0:
-	text "<PLAYER>, isn't it?"
-
-	para "Congratulations!"
-
-	para "As a special deal,"
-	line "a GS BALL has been"
-	cont "sent just for you!"
-
-	para "Please accept it!"
-	done
-
-UnknownText_0x62359:
-	text "Please do come"
-	line "again!"
-	done
-
-UnknownText_0x62370:
-	text "#COM CENTER"
-	line "1F INFORMATION"
-
-	para "Left:"
-	line "ADMINISTRATION"
-
-	para "Center:"
-	line "TRADE CORNER"
-
-	para "Right:"
-	line "#MON NEWS"
-	done
-
-UnknownText_0x623c7:
-	text "It's a #MON"
-	line "NEWS MACHINE!"
-
-	para "It's not in"
-	line "operation yet…"
-	done
-
-UnknownText_0x623fb:
-	text "Oh my, your pack"
-	line "looks so heavy!"
-
-	para "Oh! Do you happen"
-	line "to have something"
-	cont "named EON MAIL?"
-
-	para "My daughter is"
-	line "after one."
-
-	para "You can part with"
-	line "one, can't you?"
-	done
-
-UnknownText_0x6248c:
-	text "Give away an EON"
-	line "MAIL?"
-	done
-
-UnknownText_0x624a4:
-	text "Oh, that's great!"
-	line "Thank you, honey!"
-
-	para "Here, this is for"
-	line "you in return!"
-	done
-
-UnknownText_0x624e9:
-	text "My daughter will"
-	line "be delighted!"
-	done
-
-UnknownText_0x62509:
-	text "Oh? You don't have"
-	line "one? Too bad."
-	done
-
-UnknownText_0x6252a:
-	text "Oh… Well, another"
-	line "time, then."
-	done
-
-UnknownText_0x62549:
-	text "<PLAYER> gave away"
-	line "the EON MAIL."
-	done
-
-GoldenrodPokeCenter1F_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 4
-	warp_def $7, $3, 15, GOLDENROD_CITY
-	warp_def $7, $4, 15, GOLDENROD_CITY
-	warp_def $6, $0, 1, GOLDENROD_POKECOM_CENTER_2F_MOBILE
-	warp_def $7, $0, 1, POKECENTER_2F
-
-.XYTriggers:
-	db 2
-	xy_trigger 0, $7, $3, $0, GoldenrodPokeCenter1F_GSBallTriggerLeft, $0, $0
-	xy_trigger 0, $7, $4, $0, GoldenrodPokeCenter1F_GSBallTriggerRight, $0, $0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 5
-	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x60f91, -1
-	person_event SPRITE_LINK_RECEPTIONIST, 8, 16, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ObjectEvent, -1
-	person_event SPRITE_GAMEBOY_KID, 1, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, GameboyKidScript_0x6101e, -1
-	person_event SPRITE_LASS, 4, 1, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, LassScript_0x61021, -1
-	person_event SPRITE_POKEFAN_F, 5, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, PokefanFScript_0x61024, -1
--- a/maps/GoldenrodPokeComCenter2FMobile.asm
+++ b/maps/GoldenrodPokeComCenter2FMobile.asm
@@ -53,10 +53,10 @@
 	db $40 ; flags
 	db 00, 00 ; start coords
 	db 08, 15 ; end coords
-	dw MenuData2_0x6260a
+	dw .MenuData2
 	db 1 ; default option
 
-MenuData2_0x6260a:
+.MenuData2:
 	db $80 ; flags
 	db 3 ; items
 	db "# つうしん クラブ@" ; # COM CLUB
@@ -98,10 +98,10 @@
 	db $40 ; flags
 	db 00, 00 ; start coords
 	db 08, 15 ; end coords
-	dw MenuData2_0x62654
+	dw .MenuData2
 	db 1 ; default option
 
-MenuData2_0x62654:
+.MenuData2:
 	db $80 ; flags
 	db 3 ; items
 	db "でんわ", $1f,"つかうとき@" ; Use phone
@@ -288,6 +288,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_SCIENTIST, 28, 4, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, ScientistScript_0x625d1, -1
-	person_event SPRITE_SCIENTIST, 27, 7, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ScientistScript_0x625d4, -1
-	person_event SPRITE_SCIENTIST, 29, 7, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, ScientistScript_0x625d7, -1
+	person_event SPRITE_SCIENTIST, 28, 4, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, ScientistScript_0x625d1, -1
+	person_event SPRITE_SCIENTIST, 27, 7, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, ScientistScript_0x625d4, -1
+	person_event SPRITE_SCIENTIST, 29, 7, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, ScientistScript_0x625d7, -1
--- /dev/null
+++ b/maps/GoldenrodPokecenter1F.asm
@@ -1,0 +1,832 @@
+const_value set 2
+	const GOLDENRODPOKECENTER1F_NURSE
+	const GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
+	const GOLDENRODPOKECENTER1F_GAMEBOY_KID
+	const GOLDENRODPOKECENTER1F_LASS
+	const GOLDENRODPOKECENTER1F_POKEFAN_F
+
+GoldenrodPokecenter1F_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+NurseScript_0x60f91:
+	jumpstd pokecenternurse
+
+GoldenrodPokecenter1F_GSBallTriggerLeft:
+	writebyte BATTLETOWERACTION_CHECKMOBILEEVENT
+	special BattleTowerAction
+	if_equal MOBILE_EVENT_OBJECT_GS_BALL, .gsball
+	end
+
+.gsball
+	checkevent EVENT_GOT_GS_BALL_FROM_POKECOM_CENTER
+	iftrue .cancel
+	playsound SFX_EXIT_BUILDING
+	moveperson GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST, $0, $7
+	disappear GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
+	appear GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
+	playmusic MUSIC_SHOW_ME_AROUND
+	applymovement GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST, MovementData_0x6105a
+	spriteface PLAYER, UP
+	opentext
+	writetext UnknownText_0x622f0
+	waitbutton
+	verbosegiveitem GS_BALL
+	setevent EVENT_GOT_GS_BALL_FROM_POKECOM_CENTER
+	setevent EVENT_CAN_GIVE_GS_BALL_TO_KURT
+	writetext UnknownText_0x62359
+	waitbutton
+	closetext
+	applymovement GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST, MovementData_0x61060
+	special RestartMapMusic
+	disappear GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
+	playsound SFX_EXIT_BUILDING
+.cancel
+	end
+
+GoldenrodPokecenter1F_GSBallTriggerRight:
+	writebyte BATTLETOWERACTION_CHECKMOBILEEVENT
+	special BattleTowerAction
+	if_equal MOBILE_EVENT_OBJECT_GS_BALL, .gsball
+	end
+
+.gsball
+	checkevent EVENT_GOT_GS_BALL_FROM_POKECOM_CENTER
+	iftrue .cancel
+	playsound SFX_EXIT_BUILDING
+	moveperson GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST, $0, $7
+	disappear GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
+	appear GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
+	playmusic MUSIC_SHOW_ME_AROUND
+	applymovement GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST, MovementData_0x61065
+	spriteface PLAYER, UP
+	opentext
+	writetext UnknownText_0x622f0
+	waitbutton
+	verbosegiveitem GS_BALL
+	setevent EVENT_GOT_GS_BALL_FROM_POKECOM_CENTER
+	setevent EVENT_CAN_GIVE_GS_BALL_TO_KURT
+	writetext UnknownText_0x62359
+	waitbutton
+	closetext
+	applymovement GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST, MovementData_0x6106c
+	special RestartMapMusic
+	disappear GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
+	playsound SFX_EXIT_BUILDING
+.cancel
+	end
+
+GameboyKidScript_0x6101e:
+	jumptextfaceplayer UnknownText_0x62105
+
+LassScript_0x61021:
+	jumptextfaceplayer UnknownText_0x62260
+
+PokefanFScript_0x61024:
+	faceplayer
+	opentext
+	writetext UnknownText_0x623fb
+	waitbutton
+	writetext UnknownText_0x6248c
+	yesorno
+	iffalse UnknownScript_0x6104b
+	takeitem EON_MAIL
+	iffalse UnknownScript_0x6104b
+	writetext UnknownText_0x62549
+	waitbutton
+	writetext UnknownText_0x624a4
+	waitbutton
+	verbosegiveitem REVIVE
+	iffalse UnknownScript_0x61051
+	writetext UnknownText_0x624e9
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x6104b:
+	writetext UnknownText_0x62509
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x61051:
+	giveitem EON_MAIL
+	writetext UnknownText_0x6252a
+	waitbutton
+	closetext
+	end
+
+MovementData_0x6105a:
+	step UP
+	step RIGHT
+	step RIGHT
+	step RIGHT
+	turn_head DOWN
+	step_end
+
+MovementData_0x61060:
+	step LEFT
+	step LEFT
+	step LEFT
+	step DOWN
+	step_end
+
+MovementData_0x61065:
+	step UP
+	step RIGHT
+	step RIGHT
+	step RIGHT
+	step RIGHT
+	turn_head DOWN
+	step_end
+
+MovementData_0x6106c:
+	step LEFT
+	step LEFT
+	step LEFT
+	step LEFT
+	step DOWN
+	step_end
+
+; unused
+UnknownText_0x61072:
+	text "Hello! Welcome to"
+	line "#COM CENTER"
+	cont "TRADE CORNER."
+
+	para "You can trade"
+	line "#MON with other"
+	cont "people far away."
+	done
+
+UnknownText_0x610ce:
+	text "To make a trade,"
+	line "we must hold your"
+	cont "#MON."
+
+	para "Would you like to"
+	line "trade?"
+	done
+
+UnknownText_0x61111:
+	text "What kind of"
+	line "#MON do you"
+	cont "want in return?"
+	done
+
+UnknownText_0x6113b:
+	text "Fine. We will try"
+	line "to trade your"
+
+	para "@"
+	text_from_ram StringBuffer3
+	text " for"
+	line "@"
+	text_from_ram StringBuffer4
+	text "."
+
+	para "We'll have to hold"
+	line "your #MON"
+	cont "during the trade."
+
+	para "Please wait while"
+	line "we prepare the"
+	cont "room for it."
+	done
+
+UnknownText_0x611c9:
+	text "Fine. We will try"
+	line "to trade your"
+
+	para "@"
+	text_from_ram StringBuffer3
+	text " for a"
+	line "#MON that you"
+	cont "have never seen."
+
+	para "We'll have to hold"
+	line "your #MON"
+	cont "during the trade."
+
+	para "Please wait while"
+	line "we prepare the"
+	cont "room for it."
+	done
+
+UnknownText_0x61271:
+	text "Your trade #MON"
+	line "has been received."
+
+	para "It will take time"
+	line "to find a trade"
+
+	para "partner. Please"
+	line "come back later."
+	done
+
+UnknownText_0x612d8:
+	text "Oh? You have only"
+	line "one #MON in"
+	cont "your party. "
+
+	para "Please come back"
+	line "once you've in-"
+	cont "creased the size"
+	cont "of your party."
+	done
+
+UnknownText_0x61344:
+	text "We hope to see you"
+	line "again."
+	done
+
+UnknownText_0x6135f:
+	text "Communication"
+	line "error…"
+	done
+
+UnknownText_0x61375:
+	text "If we accept that"
+	line "#MON, what will"
+	cont "you battle with?"
+	done
+
+UnknownText_0x613a9:
+	text "Sorry. We can't"
+	line "accept an EGG."
+	done
+
+UnknownText_0x613c8:
+	text "Sorry, but your"
+	line "#MON appears to"
+
+	para "be abnormal. We"
+	line "can't accept it."
+	done
+
+UnknownText_0x61409:
+	text "Oh? Aren't we"
+	line "already holding a"
+	cont "#MON of yours?"
+	done
+
+UnknownText_0x61438:
+	text "We'll check the"
+	line "rooms."
+
+	para "Please wait."
+	done
+
+UnknownText_0x6145c:
+	text "Thank you for your"
+	line "patience."
+
+	para "A trade partner"
+	line "has been found."
+	done
+
+UnknownText_0x6149a:
+	text "It's your new"
+	line "partner."
+
+	para "Please take care"
+	line "of it with love."
+
+	para "We hope to see you"
+	line "again."
+	done
+
+UnknownText_0x614ed:
+	text "Uh-oh. Your party"
+	line "is already full."
+
+	para "Please come back"
+	line "when you have room"
+	cont "in your party."
+	done
+
+UnknownText_0x61544:
+	text "It's unfortunate,"
+	line "but no one has"
+
+	para "come forward as a"
+	line "trade partner."
+
+	para "Would you like"
+	line "your #MON back?"
+	done
+
+UnknownText_0x615a5:
+	text "We have returned"
+	line "your #MON."
+	done
+
+UnknownText_0x615c2:
+	text "It's unfortunate,"
+	line "but no one has"
+
+	para "come forward as a"
+	line "trade partner."
+
+	para "We've held your"
+	line "#MON for a long"
+
+	para "time. As a result,"
+	line "it is very lonely."
+
+	para "Sorry, but we must"
+	line "return it to you."
+	done
+
+UnknownText_0x6166e:
+	text "We hope to see you"
+	line "again."
+	done
+
+UnknownText_0x61689:
+	text "Fine. We will"
+	line "continue to hold"
+	cont "your #MON."
+	done
+
+UnknownText_0x616b4:
+	text "Oh? You left your"
+	line "#MON with us"
+	cont "only recently."
+
+	para "Please come back"
+	line "later."
+	done
+
+UnknownText_0x616fb:
+	text "We'll SAVE before"
+	line "connecting to the"
+	cont "CENTER."
+	done
+
+UnknownText_0x61727:
+	text "Which #MON do"
+	line "you want to trade?"
+	done
+
+UnknownText_0x61749:
+	text "Sorry, but we must"
+	line "cancel the trade."
+	done
+
+UnknownText_0x6176f:
+	text "Oh!"
+
+	para "I see you have an"
+	line "EGG TICKET!"
+
+	para "It's a coupon that"
+	line "special people can"
+
+	para "redeem for a"
+	line "special #MON!"
+	done
+
+UnknownText_0x617d2:
+	text "Let me give you a"
+	line "quick briefing."
+
+	para "Trades held at the"
+	line "TRADE CORNER are"
+
+	para "between two"
+	line "trainers who don't"
+
+	para "know each other's"
+	line "identity."
+
+	para "As a result, it"
+	line "may take time."
+
+	para "However, an ODD"
+	line "EGG is available"
+	cont "just for you."
+
+	para "It will be sent to"
+	line "you right away."
+
+	para "Please choose one"
+	line "of the rooms in"
+
+	para "the CENTER."
+	line "An ODD EGG will be"
+
+	para "sent from the"
+	line "chosen room."
+	done
+
+UnknownText_0x6191f:
+	text "Please wait a"
+	line "moment."
+	done
+
+UnknownText_0x61936:
+	text "Thank you for"
+	line "waiting."
+
+	para "We received your"
+	line "ODD EGG."
+
+	para "Here it is!"
+
+	para "Please raise it"
+	line "with loving care."
+	done
+
+UnknownText_0x61996:
+	text "I'm awfully sorry."
+
+	para "The EGG TICKET"
+	line "exchange service"
+	cont "isn't running now."
+	done
+
+UnknownText_0x619db:
+	text "It's a #MON"
+	line "NEWS MACHINE."
+	done
+
+UnknownText_0x619f5:
+	text "What would you"
+	line "like to do?"
+	done
+
+UnknownText_0x61a11:
+	text "#MON NEWS is"
+	line "news compiled from"
+
+	para "the SAVE files of"
+	line "#MON trainers."
+
+	para "When reading the"
+	line "NEWS, your SAVE"
+
+	para "file may be sent"
+	line "out."
+
+	para "The SAVE file data"
+	line "will contain your"
+
+	para "adventure log and"
+	line "mobile profile."
+
+	para "Your phone number"
+	line "will not be sent."
+
+	para "The contents of"
+	line "the NEWS will vary"
+
+	para "depending on the"
+	line "SAVE files sent by"
+
+	para "you and the other"
+	line "#MON trainers."
+
+	para "You might even be"
+	line "in the NEWS!"
+	done
+
+UnknownText_0x61b7c:
+	text "Would you like to"
+	line "get the NEWS?"
+	done
+
+UnknownText_0x61b9d:
+	text "Reading the latest"
+	line "NEWS… Please wait."
+	done
+
+UnknownText_0x61bc4:
+	text "There is no old"
+	line "NEWS…"
+	done
+
+UnknownText_0x61bdb:
+	text "The NEWS data is"
+	line "corrupted."
+
+	para "Please download"
+	line "the NEWS again."
+	done
+
+UnknownText_0x61c18:
+	text "We're making"
+	line "preparations."
+
+	para "Please come back"
+	line "later."
+	done
+
+UnknownText_0x61c4b:
+	text "We will SAVE your"
+	line "progress before"
+
+	para "starting the NEWS"
+	line "MACHINE."
+	done
+
+UnknownText_0x61c89:
+	text "Whoa, this #MON"
+	line "CENTER is huge."
+
+	para "They just built"
+	line "this place. They"
+
+	para "installed lots of"
+	line "new machines too."
+	done
+
+UnknownText_0x61cef:
+	text "I thought up a fun"
+	line "new thing for the"
+	cont "TRADE CORNER!"
+
+	para "I make a PIDGEY"
+	line "hold MAIL, then"
+
+	para "put it up for"
+	line "trade for another"
+	cont "one!"
+
+	para "If everyone did"
+	line "that, MAIL could"
+
+	para "be traded with all"
+	line "sorts of people!"
+
+	para "I call it PIDGEY"
+	line "MAIL!"
+
+	para "If it becomes"
+	line "popular, I might"
+
+	para "make lots of new"
+	line "friends!"
+	done
+
+UnknownText_0x61dfd:
+	text "They said you can"
+	line "trade #MON with"
+
+	para "total strangers up"
+	line "here."
+
+	para "But they're still"
+	line "adjusting things."
+	done
+
+UnknownText_0x61e5c:
+	text "Some girl I don't"
+	line "know sent me her"
+
+	para "HOPPIP."
+	line "You should trade"
+
+	para "for a #MON that"
+	line "you want."
+	done
+
+UnknownText_0x61eb2:
+	text "I received a"
+	line "female HOPPIP, but"
+	cont "its named STANLEY!"
+
+	para "That's my dad's"
+	line "name!"
+	done
+
+UnknownText_0x61efa:
+	text "What is the NEWS"
+	line "MACHINE?"
+
+	para "Does it get news"
+	line "from a wider area"
+	cont "than the radio?"
+	done
+
+UnknownText_0x61f48:
+	text "The #COM CENTER"
+	line "will link with all"
+
+	para "#MON CENTERS in"
+	line "a wireless net."
+
+	para "That must mean"
+	line "I'll be able to"
+
+	para "link with all"
+	line "sorts of people."
+	done
+
+UnknownText_0x61fc9:
+	text "The machines here"
+	line "can't be used yet."
+
+	para "Still, it's nice"
+	line "coming to a trendy"
+
+	para "place before other"
+	line "people."
+	done
+
+UnknownText_0x6202c:
+	text "My friend was in"
+	line "the NEWS a while"
+
+	para "back. I was really"
+	line "surprised!"
+	done
+
+UnknownText_0x6206d:
+	text "I get anxious if I"
+	line "don't check out"
+	cont "the latest NEWS!"
+	done
+
+UnknownText_0x620a1:
+	text "If I get in the"
+	line "NEWS and become"
+
+	para "famous, I bet I'll"
+	line "be adored."
+
+	para "I wonder how I"
+	line "could get in the"
+	cont "NEWS?"
+	done
+
+UnknownText_0x62105:
+	text "The COLOSSEUM"
+	line "upstairs is for"
+	cont "link battles."
+
+	para "Battle records are"
+	line "posted on the"
+
+	para "wall, so I can't"
+	line "afford to lose."
+	done
+
+UnknownText_0x62173:
+	text "I came over here"
+	line "when I got word"
+
+	para "that GOLDENROD's"
+	line "#MON CENTER has"
+
+	para "new machines that"
+	line "no one's ever seen"
+	cont "before."
+
+	para "But it looks like"
+	line "they're still busy"
+
+	para "with all their"
+	line "preparations…"
+	done
+
+UnknownText_0x62222:
+	text "Just seeing all"
+	line "these new things"
+
+	para "here makes me feel"
+	line "younger!"
+	done
+
+UnknownText_0x62260:
+	text "A higher level"
+	line "#MON doesn't"
+	cont "always win."
+
+	para "After all, it may"
+	line "have a type dis-"
+	cont "advantage."
+
+	para "I don't think"
+	line "there is a single"
+
+	para "#MON that is"
+	line "the toughest."
+	done
+
+UnknownText_0x622f0:
+	text "<PLAYER>, isn't it?"
+
+	para "Congratulations!"
+
+	para "As a special deal,"
+	line "a GS BALL has been"
+	cont "sent just for you!"
+
+	para "Please accept it!"
+	done
+
+UnknownText_0x62359:
+	text "Please do come"
+	line "again!"
+	done
+
+UnknownText_0x62370:
+	text "#COM CENTER"
+	line "1F INFORMATION"
+
+	para "Left:"
+	line "ADMINISTRATION"
+
+	para "Center:"
+	line "TRADE CORNER"
+
+	para "Right:"
+	line "#MON NEWS"
+	done
+
+UnknownText_0x623c7:
+	text "It's a #MON"
+	line "NEWS MACHINE!"
+
+	para "It's not in"
+	line "operation yet…"
+	done
+
+UnknownText_0x623fb:
+	text "Oh my, your pack"
+	line "looks so heavy!"
+
+	para "Oh! Do you happen"
+	line "to have something"
+	cont "named EON MAIL?"
+
+	para "My daughter is"
+	line "after one."
+
+	para "You can part with"
+	line "one, can't you?"
+	done
+
+UnknownText_0x6248c:
+	text "Give away an EON"
+	line "MAIL?"
+	done
+
+UnknownText_0x624a4:
+	text "Oh, that's great!"
+	line "Thank you, honey!"
+
+	para "Here, this is for"
+	line "you in return!"
+	done
+
+UnknownText_0x624e9:
+	text "My daughter will"
+	line "be delighted!"
+	done
+
+UnknownText_0x62509:
+	text "Oh? You don't have"
+	line "one? Too bad."
+	done
+
+UnknownText_0x6252a:
+	text "Oh… Well, another"
+	line "time, then."
+	done
+
+UnknownText_0x62549:
+	text "<PLAYER> gave away"
+	line "the EON MAIL."
+	done
+
+GoldenrodPokecenter1F_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 4
+	warp_def $7, $3, 15, GOLDENROD_CITY
+	warp_def $7, $4, 15, GOLDENROD_CITY
+	warp_def $6, $0, 1, GOLDENROD_POKECOM_CENTER_2F_MOBILE
+	warp_def $7, $0, 1, POKECENTER_2F
+
+.XYTriggers:
+	db 2
+	xy_trigger 0, $7, $3, $0, GoldenrodPokecenter1F_GSBallTriggerLeft, $0, $0
+	xy_trigger 0, $7, $4, $0, GoldenrodPokecenter1F_GSBallTriggerRight, $0, $0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 5
+	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x60f91, -1
+	person_event SPRITE_LINK_RECEPTIONIST, 8, 16, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, ObjectEvent, -1
+	person_event SPRITE_GAMEBOY_KID, 1, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, GameboyKidScript_0x6101e, -1
+	person_event SPRITE_LASS, 4, 1, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, LassScript_0x61021, -1
+	person_event SPRITE_POKEFAN_F, 5, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, PokefanFScript_0x61024, -1
--- a/maps/HallOfFame.asm
+++ b/maps/HallOfFame.asm
@@ -4,22 +4,20 @@
 HallOfFame_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .EnterHallOfFame
+	maptrigger .DummyTrigger
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-
 .MapCallbacks:
 	db 0
 
-.Trigger0:
-	priorityjump HallOfFameScript
+.EnterHallOfFame:
+	priorityjump .EnterHallOfFameScript
 	end
 
-.Trigger1:
+.DummyTrigger:
 	end
 
-HallOfFameScript:
+.EnterHallOfFameScript:
 	follow HALLOFFAME_LANCE, PLAYER
 	applymovement HALLOFFAME_LANCE, HallOfFame_WalkUpWithLance
 	stopfollow
--- a/maps/IcePathB1F.asm
+++ b/maps/IcePathB1F.asm
@@ -11,9 +11,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_CMDQUEUE, .SetUpStoneTable
 
 .SetUpStoneTable:
--- a/maps/IlexForest.asm
+++ b/maps/IlexForest.asm
@@ -17,9 +17,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_OBJECTS, .FarfetchdCallback
 
 .FarfetchdCallback:
@@ -396,7 +393,7 @@
 Bug_catcherWayneScript:
 	end_if_just_battled
 	opentext
-	writetext Bug_catcherWayneAfterText
+	writetext Bug_catcherWayneAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -929,7 +926,7 @@
 	line "#MON before…"
 	done
 
-Bug_catcherWayneAfterText:
+Bug_catcherWayneAfterBattleText:
 	text "A #MON I've"
 	line "never seen before"
 
@@ -965,14 +962,14 @@
 
 .PersonEvents:
 	db 11
-	person_event SPRITE_BIRD, 31, 14, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, IlexForestFarfetchdScript, EVENT_ILEX_FOREST_FARFETCHD
-	person_event SPRITE_YOUNGSTER, 28, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, IlexForestCharcoalApprenticeScript, EVENT_ILEX_FOREST_APPRENTICE
+	person_event SPRITE_BIRD, 31, 14, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, IlexForestFarfetchdScript, EVENT_ILEX_FOREST_FARFETCHD
+	person_event SPRITE_YOUNGSTER, 28, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, IlexForestCharcoalApprenticeScript, EVENT_ILEX_FOREST_APPRENTICE
 	person_event SPRITE_BLACK_BELT, 28, 5, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, IlexForestCharcoalMasterScript, EVENT_ILEX_FOREST_CHARCOAL_MASTER
 	person_event SPRITE_ROCKER, 14, 15, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, IlexForestHeadbuttGuyScript, -1
 	person_event SPRITE_POKE_BALL, 32, 20, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, IlexForestRevive, EVENT_ILEX_FOREST_REVIVE
 	person_event SPRITE_KURT, 29, 8, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_ILEX_FOREST_KURT
-	person_event SPRITE_LASS, 24, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, IlexForestLassScript, EVENT_ILEX_FOREST_LASS
-	person_event SPRITE_YOUNGSTER, 1, 12, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 0, TrainerBug_catcherWayne, -1
+	person_event SPRITE_LASS, 24, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, IlexForestLassScript, EVENT_ILEX_FOREST_LASS
+	person_event SPRITE_YOUNGSTER, 1, 12, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 0, TrainerBug_catcherWayne, -1
 	person_event SPRITE_POKE_BALL, 17, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, IlexForestXAttack, EVENT_ILEX_FOREST_X_ATTACK
 	person_event SPRITE_POKE_BALL, 7, 17, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, IlexForestAntidote, EVENT_ILEX_FOREST_ANTIDOTE
 	person_event SPRITE_POKE_BALL, 1, 27, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, IlexForestEther, EVENT_ILEX_FOREST_ETHER
--- a/maps/IlexForestAzaleaGate.asm
+++ b/maps/IlexForestAzaleaGate.asm
@@ -49,5 +49,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_OFFICER, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, OfficerScript_0x62c7a, -1
-	person_event SPRITE_GRANNY, 3, 1, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, GrannyScript_0x62c7d, -1
+	person_event SPRITE_OFFICER, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, OfficerScript_0x62c7a, -1
+	person_event SPRITE_GRANNY, 3, 1, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, GrannyScript_0x62c7d, -1
--- a/maps/IndigoPlateauPokeCenter1F.asm
+++ /dev/null
@@ -1,336 +1,0 @@
-const_value set 2
-	const INDIGOPLATEAUPOKECENTER1F_NURSE
-	const INDIGOPLATEAUPOKECENTER1F_CLERK
-	const INDIGOPLATEAUPOKECENTER1F_COOLTRAINER_M
-	const INDIGOPLATEAUPOKECENTER1F_SILVER
-	const INDIGOPLATEAUPOKECENTER1F_GRAMPS
-	const INDIGOPLATEAUPOKECENTER1F_ABRA
-
-IndigoPlateauPokeCenter1F_MapScriptHeader:
-.MapTriggers:
-	db 1
-
-	; triggers
-	dw UnknownScript_0x180009, 0
-
-.MapCallbacks:
-	db 1
-
-	; callbacks
-
-	dbw MAPCALLBACK_NEWMAP, UnknownScript_0x18000a
-
-UnknownScript_0x180009:
-	end
-
-UnknownScript_0x18000a:
-	domaptrigger WILLS_ROOM, $0
-	domaptrigger KOGAS_ROOM, $0
-	domaptrigger BRUNOS_ROOM, $0
-	domaptrigger KARENS_ROOM, $0
-	domaptrigger LANCES_ROOM, $0
-	domaptrigger HALL_OF_FAME, $0
-	clearevent EVENT_WILLS_ROOM_ENTRANCE_CLOSED
-	clearevent EVENT_WILLS_ROOM_EXIT_OPEN
-	clearevent EVENT_KOGAS_ROOM_ENTRANCE_CLOSED
-	clearevent EVENT_KOGAS_ROOM_EXIT_OPEN
-	clearevent EVENT_BRUNOS_ROOM_ENTRANCE_CLOSED
-	clearevent EVENT_BRUNOS_ROOM_EXIT_OPEN
-	clearevent EVENT_KARENS_ROOM_ENTRANCE_CLOSED
-	clearevent EVENT_KARENS_ROOM_EXIT_OPEN
-	clearevent EVENT_LANCES_ROOM_ENTRANCE_CLOSED
-	clearevent EVENT_LANCES_ROOM_EXIT_OPEN
-	clearevent EVENT_BEAT_ELITE_4_WILL
-	clearevent EVENT_BEAT_ELITE_4_KOGA
-	clearevent EVENT_BEAT_ELITE_4_BRUNO
-	clearevent EVENT_BEAT_ELITE_4_KAREN
-	clearevent EVENT_BEAT_CHAMPION_LANCE
-	setevent EVENT_LANCES_ROOM_OAK_AND_MARY
-	return
-
-PlateauRivalBattle1:
-	checkevent EVENT_BEAT_RIVAL_IN_MT_MOON
-	iffalse PlateauRivalScriptDone
-	checkflag ENGINE_INDIGO_PLATEAU_RIVAL_FIGHT
-	iftrue PlateauRivalScriptDone
-	checkcode VAR_WEEKDAY
-	if_equal SUNDAY, PlateauRivalScriptDone
-	if_equal TUESDAY, PlateauRivalScriptDone
-	if_equal THURSDAY, PlateauRivalScriptDone
-	if_equal FRIDAY, PlateauRivalScriptDone
-	if_equal SATURDAY, PlateauRivalScriptDone
-	moveperson INDIGOPLATEAUPOKECENTER1F_SILVER, $11, $9
-	appear INDIGOPLATEAUPOKECENTER1F_SILVER
-	spriteface PLAYER, DOWN
-	showemote EMOTE_SHOCK, PLAYER, 15
-	special Special_FadeOutMusic
-	pause 15
-	applymovement INDIGOPLATEAUPOKECENTER1F_SILVER, PlateauRivalMovement1
-	playmusic MUSIC_RIVAL_ENCOUNTER
-	spriteface PLAYER, RIGHT
-	jump PlateauRivalBattleCommon
-
-PlateauRivalBattle2:
-	checkevent EVENT_BEAT_RIVAL_IN_MT_MOON
-	iffalse PlateauRivalScriptDone
-	checkflag ENGINE_INDIGO_PLATEAU_RIVAL_FIGHT
-	iftrue PlateauRivalScriptDone
-	checkcode VAR_WEEKDAY
-	if_equal SUNDAY, PlateauRivalScriptDone
-	if_equal TUESDAY, PlateauRivalScriptDone
-	if_equal THURSDAY, PlateauRivalScriptDone
-	if_equal FRIDAY, PlateauRivalScriptDone
-	if_equal SATURDAY, PlateauRivalScriptDone
-	appear INDIGOPLATEAUPOKECENTER1F_SILVER
-	spriteface PLAYER, DOWN
-	showemote EMOTE_SHOCK, PLAYER, 15
-	special Special_FadeOutMusic
-	pause 15
-	applymovement INDIGOPLATEAUPOKECENTER1F_SILVER, PlateauRivalMovement2
-	playmusic MUSIC_RIVAL_ENCOUNTER
-	spriteface PLAYER, LEFT
-PlateauRivalBattleCommon:
-	opentext
-	writetext PlateauRivalText1
-	waitbutton
-	closetext
-	setevent EVENT_INDIGO_PLATEAU_POKECENTER_RIVAL
-	checkevent EVENT_GOT_TOTODILE_FROM_ELM
-	iftrue .Totodile
-	checkevent EVENT_GOT_CHIKORITA_FROM_ELM
-	iftrue .Chikorita
-	; Cyndaquil
-	winlosstext PlateauRivalWinText, PlateauRivalLoseText
-	setlasttalked INDIGOPLATEAUPOKECENTER1F_SILVER
-	loadtrainer RIVAL2, RIVAL2_2_TOTODILE
-	startbattle
-	dontrestartmapmusic
-	reloadmapafterbattle
-	jump PlateauRivalPostBattle
-
-.Totodile:
-	winlosstext PlateauRivalWinText, PlateauRivalLoseText
-	setlasttalked INDIGOPLATEAUPOKECENTER1F_SILVER
-	loadtrainer RIVAL2, RIVAL2_2_CHIKORITA
-	startbattle
-	dontrestartmapmusic
-	reloadmapafterbattle
-	jump PlateauRivalPostBattle
-
-.Chikorita:
-	winlosstext PlateauRivalWinText, PlateauRivalLoseText
-	setlasttalked INDIGOPLATEAUPOKECENTER1F_SILVER
-	loadtrainer RIVAL2, RIVAL2_2_CYNDAQUIL
-	startbattle
-	dontrestartmapmusic
-	reloadmapafterbattle
-	jump PlateauRivalPostBattle
-
-PlateauRivalPostBattle:
-	playmusic MUSIC_RIVAL_AFTER
-	opentext
-	writetext PlateauRivalText2
-	waitbutton
-	closetext
-	spriteface PLAYER, DOWN
-	applymovement INDIGOPLATEAUPOKECENTER1F_SILVER, PlateauRivalLeavesMovement
-	disappear INDIGOPLATEAUPOKECENTER1F_SILVER
-	dotrigger $0
-	playmapmusic
-	setflag ENGINE_INDIGO_PLATEAU_RIVAL_FIGHT
-PlateauRivalScriptDone:
-	end
-
-NurseScript_0x18012c:
-	jumpstd pokecenternurse
-
-ClerkScript_0x18012f:
-	opentext
-	pokemart MARTTYPE_STANDARD, MART_INDIGO_PLATEAU
-	closetext
-	end
-
-CooltrainerMScript_0x180136:
-	jumptextfaceplayer UnknownText_0x180178
-
-TeleportGuyScript:
-	faceplayer
-	opentext
-	writetext TeleportGuyText1
-	yesorno
-	iffalse .No
-	writetext TeleportGuyYesText
-	waitbutton
-	closetext
-	playsound SFX_WARP_TO
-	special FadeOutPalettes
-	waitsfx
-	warp NEW_BARK_TOWN, $d, $6
-	end
-
-.No:
-	writetext TeleportGuyNoText
-	waitbutton
-	closetext
-	end
-
-AbraScript:
-	opentext
-	writetext AbraText
-	cry ABRA
-	waitbutton
-	closetext
-	end
-
-PlateauRivalMovement1:
-	step UP
-	step UP
-	step UP
-	step UP
-	step UP
-	turn_head LEFT
-	step_end
-
-PlateauRivalMovement2:
-	step UP
-	step UP
-	step UP
-	step UP
-	step UP
-	turn_head RIGHT
-	step_end
-
-PlateauRivalLeavesMovement:
-	step DOWN
-	step DOWN
-	step DOWN
-	step DOWN
-	step DOWN
-	step_end
-
-UnknownText_0x180178:
-	text "At the #MON"
-	line "LEAGUE, you'll get"
-
-	para "tested by the"
-	line "ELITE FOUR."
-
-	para "You have to beat"
-	line "them all. If you"
-
-	para "lose, you have to"
-	line "start all over!"
-	done
-
-PlateauRivalText1:
-	text "Hold it."
-
-	para "You're going to"
-	line "take the #MON"
-
-	para "LEAGUE challenge"
-	line "now?"
-
-	para "That's not going"
-	line "to happen."
-
-	para "My super-well-"
-	line "trained #MON"
-
-	para "are going to pound"
-	line "you."
-
-	para "<PLAYER>!"
-	line "I challenge you!"
-	done
-
-PlateauRivalWinText:
-	text "…"
-
-	para "OK--I lost…"
-	done
-
-PlateauRivalText2:
-	text "…Darn… I still"
-	line "can't win…"
-
-	para "I… I have to think"
-	line "more about my"
-	cont "#MON…"
-
-	para "Humph! Try not to"
-	line "lose!"
-	done
-
-PlateauRivalLoseText:
-	text "…"
-
-	para "Whew…"
-	line "With my partners,"
-
-	para "I'm going to be"
-	line "the CHAMPION!"
-	done
-
-TeleportGuyText1:
-	text "Ah! You're chal-"
-	line "lenging the ELITE"
-
-	para "FOUR? Are you sure"
-	line "you're ready?"
-
-	para "If you need to"
-	line "train some more,"
-
-	para "my ABRA can help"
-	line "you."
-
-	para "It can TELEPORT"
-	line "you home."
-
-	para "Would you like to"
-	line "go home now?"
-	done
-
-TeleportGuyYesText:
-	text "OK, OK. Picture"
-	line "your house in your"
-	cont "mind…"
-	done
-
-TeleportGuyNoText:
-	text "OK, OK. The best"
-	line "of luck to you!"
-	done
-
-AbraText:
-	text "ABRA: Aabra…"
-	done
-
-IndigoPlateauPokeCenter1F_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 4
-	warp_def $d, $5, 1, ROUTE_23
-	warp_def $d, $6, 2, ROUTE_23
-	warp_def $d, $0, 1, POKECENTER_2F
-	warp_def $3, $e, 1, WILLS_ROOM
-
-.XYTriggers:
-	db 2
-	xy_trigger 0, $4, $10, $0, PlateauRivalBattle1, $0, $0
-	xy_trigger 0, $4, $11, $0, PlateauRivalBattle2, $0, $0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 6
-	person_event SPRITE_NURSE, 7, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x18012c, -1
-	person_event SPRITE_CLERK, 7, 11, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ClerkScript_0x18012f, -1
-	person_event SPRITE_COOLTRAINER_M, 11, 11, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x180136, -1
-	person_event SPRITE_SILVER, 9, 16, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_INDIGO_PLATEAU_POKECENTER_RIVAL
-	person_event SPRITE_GRAMPS, 9, 1, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, TeleportGuyScript, EVENT_TELEPORT_GUY
-	person_event SPRITE_JYNX, 9, 0, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, AbraScript, EVENT_TELEPORT_GUY
--- a/maps/IndigoPlateauPokeCenter1F.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-*,'
\ No newline at end of file
--- /dev/null
+++ b/maps/IndigoPlateauPokecenter1F.asm
@@ -1,0 +1,331 @@
+const_value set 2
+	const INDIGOPLATEAUPOKECENTER1F_NURSE
+	const INDIGOPLATEAUPOKECENTER1F_CLERK
+	const INDIGOPLATEAUPOKECENTER1F_COOLTRAINER_M
+	const INDIGOPLATEAUPOKECENTER1F_SILVER
+	const INDIGOPLATEAUPOKECENTER1F_GRAMPS
+	const INDIGOPLATEAUPOKECENTER1F_ABRA
+
+IndigoPlateauPokecenter1F_MapScriptHeader:
+.MapTriggers:
+	db 1
+	maptrigger .DummyTrigger
+
+.MapCallbacks:
+	db 1
+	dbw MAPCALLBACK_NEWMAP, .PrepareElite4
+
+.DummyTrigger:
+	end
+
+.PrepareElite4:
+	domaptrigger WILLS_ROOM, $0
+	domaptrigger KOGAS_ROOM, $0
+	domaptrigger BRUNOS_ROOM, $0
+	domaptrigger KARENS_ROOM, $0
+	domaptrigger LANCES_ROOM, $0
+	domaptrigger HALL_OF_FAME, $0
+	clearevent EVENT_WILLS_ROOM_ENTRANCE_CLOSED
+	clearevent EVENT_WILLS_ROOM_EXIT_OPEN
+	clearevent EVENT_KOGAS_ROOM_ENTRANCE_CLOSED
+	clearevent EVENT_KOGAS_ROOM_EXIT_OPEN
+	clearevent EVENT_BRUNOS_ROOM_ENTRANCE_CLOSED
+	clearevent EVENT_BRUNOS_ROOM_EXIT_OPEN
+	clearevent EVENT_KARENS_ROOM_ENTRANCE_CLOSED
+	clearevent EVENT_KARENS_ROOM_EXIT_OPEN
+	clearevent EVENT_LANCES_ROOM_ENTRANCE_CLOSED
+	clearevent EVENT_LANCES_ROOM_EXIT_OPEN
+	clearevent EVENT_BEAT_ELITE_4_WILL
+	clearevent EVENT_BEAT_ELITE_4_KOGA
+	clearevent EVENT_BEAT_ELITE_4_BRUNO
+	clearevent EVENT_BEAT_ELITE_4_KAREN
+	clearevent EVENT_BEAT_CHAMPION_LANCE
+	setevent EVENT_LANCES_ROOM_OAK_AND_MARY
+	return
+
+PlateauRivalBattle1:
+	checkevent EVENT_BEAT_RIVAL_IN_MT_MOON
+	iffalse PlateauRivalScriptDone
+	checkflag ENGINE_INDIGO_PLATEAU_RIVAL_FIGHT
+	iftrue PlateauRivalScriptDone
+	checkcode VAR_WEEKDAY
+	if_equal SUNDAY, PlateauRivalScriptDone
+	if_equal TUESDAY, PlateauRivalScriptDone
+	if_equal THURSDAY, PlateauRivalScriptDone
+	if_equal FRIDAY, PlateauRivalScriptDone
+	if_equal SATURDAY, PlateauRivalScriptDone
+	moveperson INDIGOPLATEAUPOKECENTER1F_SILVER, $11, $9
+	appear INDIGOPLATEAUPOKECENTER1F_SILVER
+	spriteface PLAYER, DOWN
+	showemote EMOTE_SHOCK, PLAYER, 15
+	special Special_FadeOutMusic
+	pause 15
+	applymovement INDIGOPLATEAUPOKECENTER1F_SILVER, PlateauRivalMovement1
+	playmusic MUSIC_RIVAL_ENCOUNTER
+	spriteface PLAYER, RIGHT
+	jump PlateauRivalBattleCommon
+
+PlateauRivalBattle2:
+	checkevent EVENT_BEAT_RIVAL_IN_MT_MOON
+	iffalse PlateauRivalScriptDone
+	checkflag ENGINE_INDIGO_PLATEAU_RIVAL_FIGHT
+	iftrue PlateauRivalScriptDone
+	checkcode VAR_WEEKDAY
+	if_equal SUNDAY, PlateauRivalScriptDone
+	if_equal TUESDAY, PlateauRivalScriptDone
+	if_equal THURSDAY, PlateauRivalScriptDone
+	if_equal FRIDAY, PlateauRivalScriptDone
+	if_equal SATURDAY, PlateauRivalScriptDone
+	appear INDIGOPLATEAUPOKECENTER1F_SILVER
+	spriteface PLAYER, DOWN
+	showemote EMOTE_SHOCK, PLAYER, 15
+	special Special_FadeOutMusic
+	pause 15
+	applymovement INDIGOPLATEAUPOKECENTER1F_SILVER, PlateauRivalMovement2
+	playmusic MUSIC_RIVAL_ENCOUNTER
+	spriteface PLAYER, LEFT
+PlateauRivalBattleCommon:
+	opentext
+	writetext PlateauRivalText1
+	waitbutton
+	closetext
+	setevent EVENT_INDIGO_PLATEAU_POKECENTER_RIVAL
+	checkevent EVENT_GOT_TOTODILE_FROM_ELM
+	iftrue .Totodile
+	checkevent EVENT_GOT_CHIKORITA_FROM_ELM
+	iftrue .Chikorita
+	; Cyndaquil
+	winlosstext PlateauRivalWinText, PlateauRivalLoseText
+	setlasttalked INDIGOPLATEAUPOKECENTER1F_SILVER
+	loadtrainer RIVAL2, RIVAL2_2_TOTODILE
+	startbattle
+	dontrestartmapmusic
+	reloadmapafterbattle
+	jump PlateauRivalPostBattle
+
+.Totodile:
+	winlosstext PlateauRivalWinText, PlateauRivalLoseText
+	setlasttalked INDIGOPLATEAUPOKECENTER1F_SILVER
+	loadtrainer RIVAL2, RIVAL2_2_CHIKORITA
+	startbattle
+	dontrestartmapmusic
+	reloadmapafterbattle
+	jump PlateauRivalPostBattle
+
+.Chikorita:
+	winlosstext PlateauRivalWinText, PlateauRivalLoseText
+	setlasttalked INDIGOPLATEAUPOKECENTER1F_SILVER
+	loadtrainer RIVAL2, RIVAL2_2_CYNDAQUIL
+	startbattle
+	dontrestartmapmusic
+	reloadmapafterbattle
+	jump PlateauRivalPostBattle
+
+PlateauRivalPostBattle:
+	playmusic MUSIC_RIVAL_AFTER
+	opentext
+	writetext PlateauRivalText2
+	waitbutton
+	closetext
+	spriteface PLAYER, DOWN
+	applymovement INDIGOPLATEAUPOKECENTER1F_SILVER, PlateauRivalLeavesMovement
+	disappear INDIGOPLATEAUPOKECENTER1F_SILVER
+	dotrigger $0
+	playmapmusic
+	setflag ENGINE_INDIGO_PLATEAU_RIVAL_FIGHT
+PlateauRivalScriptDone:
+	end
+
+NurseScript_0x18012c:
+	jumpstd pokecenternurse
+
+ClerkScript_0x18012f:
+	opentext
+	pokemart MARTTYPE_STANDARD, MART_INDIGO_PLATEAU
+	closetext
+	end
+
+CooltrainerMScript_0x180136:
+	jumptextfaceplayer UnknownText_0x180178
+
+TeleportGuyScript:
+	faceplayer
+	opentext
+	writetext TeleportGuyText1
+	yesorno
+	iffalse .No
+	writetext TeleportGuyYesText
+	waitbutton
+	closetext
+	playsound SFX_WARP_TO
+	special FadeOutPalettes
+	waitsfx
+	warp NEW_BARK_TOWN, $d, $6
+	end
+
+.No:
+	writetext TeleportGuyNoText
+	waitbutton
+	closetext
+	end
+
+AbraScript:
+	opentext
+	writetext AbraText
+	cry ABRA
+	waitbutton
+	closetext
+	end
+
+PlateauRivalMovement1:
+	step UP
+	step UP
+	step UP
+	step UP
+	step UP
+	turn_head LEFT
+	step_end
+
+PlateauRivalMovement2:
+	step UP
+	step UP
+	step UP
+	step UP
+	step UP
+	turn_head RIGHT
+	step_end
+
+PlateauRivalLeavesMovement:
+	step DOWN
+	step DOWN
+	step DOWN
+	step DOWN
+	step DOWN
+	step_end
+
+UnknownText_0x180178:
+	text "At the #MON"
+	line "LEAGUE, you'll get"
+
+	para "tested by the"
+	line "ELITE FOUR."
+
+	para "You have to beat"
+	line "them all. If you"
+
+	para "lose, you have to"
+	line "start all over!"
+	done
+
+PlateauRivalText1:
+	text "Hold it."
+
+	para "You're going to"
+	line "take the #MON"
+
+	para "LEAGUE challenge"
+	line "now?"
+
+	para "That's not going"
+	line "to happen."
+
+	para "My super-well-"
+	line "trained #MON"
+
+	para "are going to pound"
+	line "you."
+
+	para "<PLAYER>!"
+	line "I challenge you!"
+	done
+
+PlateauRivalWinText:
+	text "…"
+
+	para "OK--I lost…"
+	done
+
+PlateauRivalText2:
+	text "…Darn… I still"
+	line "can't win…"
+
+	para "I… I have to think"
+	line "more about my"
+	cont "#MON…"
+
+	para "Humph! Try not to"
+	line "lose!"
+	done
+
+PlateauRivalLoseText:
+	text "…"
+
+	para "Whew…"
+	line "With my partners,"
+
+	para "I'm going to be"
+	line "the CHAMPION!"
+	done
+
+TeleportGuyText1:
+	text "Ah! You're chal-"
+	line "lenging the ELITE"
+
+	para "FOUR? Are you sure"
+	line "you're ready?"
+
+	para "If you need to"
+	line "train some more,"
+
+	para "my ABRA can help"
+	line "you."
+
+	para "It can TELEPORT"
+	line "you home."
+
+	para "Would you like to"
+	line "go home now?"
+	done
+
+TeleportGuyYesText:
+	text "OK, OK. Picture"
+	line "your house in your"
+	cont "mind…"
+	done
+
+TeleportGuyNoText:
+	text "OK, OK. The best"
+	line "of luck to you!"
+	done
+
+AbraText:
+	text "ABRA: Aabra…"
+	done
+
+IndigoPlateauPokecenter1F_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 4
+	warp_def $d, $5, 1, ROUTE_23
+	warp_def $d, $6, 2, ROUTE_23
+	warp_def $d, $0, 1, POKECENTER_2F
+	warp_def $3, $e, 1, WILLS_ROOM
+
+.XYTriggers:
+	db 2
+	xy_trigger 0, $4, $10, $0, PlateauRivalBattle1, $0, $0
+	xy_trigger 0, $4, $11, $0, PlateauRivalBattle2, $0, $0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 6
+	person_event SPRITE_NURSE, 7, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x18012c, -1
+	person_event SPRITE_CLERK, 7, 11, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ClerkScript_0x18012f, -1
+	person_event SPRITE_COOLTRAINER_M, 11, 11, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x180136, -1
+	person_event SPRITE_SILVER, 9, 16, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_INDIGO_PLATEAU_POKECENTER_RIVAL
+	person_event SPRITE_GRAMPS, 9, 1, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, TeleportGuyScript, EVENT_TELEPORT_GUY
+	person_event SPRITE_JYNX, 9, 0, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, AbraScript, EVENT_TELEPORT_GUY
--- /dev/null
+++ b/maps/IndigoPlateauPokecenter1F.blk
@@ -1,0 +1,1 @@
+*,'
\ No newline at end of file
--- a/maps/KarensRoom.asm
+++ b/maps/KarensRoom.asm
@@ -4,23 +4,18 @@
 KarensRoom_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .LockDoor
+	maptrigger .DummyTrigger
 
-	; triggers
-	dw .Trigger0, 0
-	dw .Trigger1, 0
-
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_TILES, .KarensRoomDoors
 
-.Trigger0:
+.LockDoor:
 	priorityjump .KarensDoorLocksBehindYou
 	end
 
-.Trigger1:
+.DummyTrigger:
 	end
 
 .KarensRoomDoors:
@@ -156,4 +151,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_KAREN, 7, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, KarenScript_Battle, -1
+	person_event SPRITE_KAREN, 7, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, KarenScript_Battle, -1
--- a/maps/KogasRoom.asm
+++ b/maps/KogasRoom.asm
@@ -4,23 +4,18 @@
 KogasRoom_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .LockDoor
+	maptrigger .DummyTrigger
 
-	; triggers
-	dw .Trigger0, 0
-	dw .Trigger1, 0
-
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_TILES, .KogasRoomDoors
 
-.Trigger0:
+.LockDoor:
 	priorityjump .KogasDoorLocksBehindYou
 	end
 
-.Trigger1:
+.DummyTrigger:
 	end
 
 .KogasRoomDoors:
@@ -153,4 +148,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_KOGA, 7, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, KogaScript_Battle, -1
+	person_event SPRITE_KOGA, 7, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, KogaScript_Battle, -1
--- a/maps/KrissHouse1F.asm
+++ b/maps/KrissHouse1F.asm
@@ -8,18 +8,16 @@
 KrissHouse1F_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
 
-	; triggers
-	dw UnknownScript_0x7a4d6, 0
-	dw UnknownScript_0x7a4d7, 0
-
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x7a4d6:
+.DummyTrigger0:
 	end
 
-UnknownScript_0x7a4d7:
+.DummyTrigger1:
 	end
 
 UnknownScript_0x7a4d8:
@@ -412,7 +410,7 @@
 .PersonEvents:
 	db 5
 	person_event SPRITE_MOM, 4, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, MomScript_0x7a582, EVENT_KRISS_HOUSE_MOM_1
-	person_event SPRITE_MOM, 2, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, 1, 0, PERSONTYPE_SCRIPT, 0, MomScript_0x7a582, EVENT_KRISS_HOUSE_MOM_2
-	person_event SPRITE_MOM, 4, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, 2, 0, PERSONTYPE_SCRIPT, 0, MomScript_0x7a582, EVENT_KRISS_HOUSE_MOM_2
-	person_event SPRITE_MOM, 2, 0, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, 4, 0, PERSONTYPE_SCRIPT, 0, MomScript_0x7a582, EVENT_KRISS_HOUSE_MOM_2
-	person_event SPRITE_POKEFAN_F, 4, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, NeighborScript, EVENT_KRISS_HOUSE_1F_NEIGHBOR
+	person_event SPRITE_MOM, 2, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, MORN, 0, PERSONTYPE_SCRIPT, 0, MomScript_0x7a582, EVENT_KRISS_HOUSE_MOM_2
+	person_event SPRITE_MOM, 4, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, DAY, 0, PERSONTYPE_SCRIPT, 0, MomScript_0x7a582, EVENT_KRISS_HOUSE_MOM_2
+	person_event SPRITE_MOM, 2, 0, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, NITE, 0, PERSONTYPE_SCRIPT, 0, MomScript_0x7a582, EVENT_KRISS_HOUSE_MOM_2
+	person_event SPRITE_POKEFAN_F, 4, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, NeighborScript, EVENT_KRISS_HOUSE_1F_NEIGHBOR
--- a/maps/KrissHouse2F.asm
+++ b/maps/KrissHouse2F.asm
@@ -10,11 +10,7 @@
 
 .MapCallbacks:
 	db 2
-
-	; callbacks
-
 	dbw MAPCALLBACK_NEWMAP, .InitializeRoom
-
 	dbw MAPCALLBACK_TILES, .SetSpawn
 
 .Null:
@@ -53,6 +49,7 @@
 
 KrissHousePoster:
 	dw EVENT_KRISS_ROOM_POSTER, .Script
+
 .Script:
 	describedecoration 0
 
--- a/maps/KrissNeighborsHouse.asm
+++ b/maps/KrissNeighborsHouse.asm
@@ -118,5 +118,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_COOLTRAINER_F, 3, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, KrissNeighborsDaughter, -1
-	person_event SPRITE_POKEFAN_F, 3, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, KrissNeighbor, EVENT_KRISS_NEIGHBORS_HOUSE_NEIGHBOR
+	person_event SPRITE_COOLTRAINER_F, 3, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, KrissNeighborsDaughter, -1
+	person_event SPRITE_POKEFAN_F, 3, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, KrissNeighbor, EVENT_KRISS_NEIGHBORS_HOUSE_NEIGHBOR
--- a/maps/KurtsHouse.asm
+++ b/maps/KurtsHouse.asm
@@ -11,18 +11,15 @@
 
 .MapCallbacks:
 	db 1
+	dbw MAPCALLBACK_OBJECTS, .KurtCallback
 
-	; callbacks
-
-	dbw MAPCALLBACK_OBJECTS, UnknownScript_0x18e154
-
-UnknownScript_0x18e154:
+.KurtCallback:
 	checkevent EVENT_CLEARED_SLOWPOKE_WELL
-	iffalse UnknownScript_0x18e177
+	iffalse .Done
 	checkevent EVENT_FOREST_IS_RESTLESS
-	iftrue UnknownScript_0x18e177
+	iftrue .Done
 	checkflag ENGINE_KURT_MAKING_BALLS
-	iftrue UnknownScript_0x18e16f
+	iftrue .MakingBalls
 	disappear KURTSHOUSE_KURT2
 	appear KURTSHOUSE_KURT1
 	disappear KURTSHOUSE_TWIN2
@@ -29,12 +26,12 @@
 	appear KURTSHOUSE_TWIN1
 	return
 
-UnknownScript_0x18e16f:
+.MakingBalls:
 	disappear KURTSHOUSE_KURT1
 	appear KURTSHOUSE_KURT2
 	disappear KURTSHOUSE_TWIN1
 	appear KURTSHOUSE_TWIN2
-UnknownScript_0x18e177:
+.Done:
 	return
 
 KurtScript_0x18e178:
--- /dev/null
+++ b/maps/LakeOfRage.asm
@@ -1,0 +1,532 @@
+const_value set 2
+	const LAKEOFRAGE_LANCE
+	const LAKEOFRAGE_GRAMPS
+	const LAKEOFRAGE_SUPER_NERD1
+	const LAKEOFRAGE_COOLTRAINER_F1
+	const LAKEOFRAGE_FISHER1
+	const LAKEOFRAGE_FISHER2
+	const LAKEOFRAGE_COOLTRAINER_M
+	const LAKEOFRAGE_COOLTRAINER_F2
+	const LAKEOFRAGE_GYARADOS
+	const LAKEOFRAGE_WESLEY
+	const LAKEOFRAGE_POKE_BALL1
+	const LAKEOFRAGE_POKE_BALL2
+
+LakeOfRage_MapScriptHeader:
+.MapTriggers:
+	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
+
+.MapCallbacks:
+	db 2
+	dbw MAPCALLBACK_NEWMAP, .FlyPoint
+	dbw MAPCALLBACK_OBJECTS, .Wesley
+
+.DummyTrigger0:
+	end
+
+.DummyTrigger1:
+	end
+
+.FlyPoint:
+	setflag ENGINE_FLYPOINT_LAKE_OF_RAGE
+	return
+
+.Wesley:
+	checkcode VAR_WEEKDAY
+	if_equal WEDNESDAY, .WesleyAppears
+	disappear LAKEOFRAGE_WESLEY
+	return
+
+.WesleyAppears:
+	appear LAKEOFRAGE_WESLEY
+	return
+
+LanceScript_0x70022:
+	checkevent EVENT_REFUSED_TO_HELP_LANCE_AT_LAKE_OF_RAGE
+	iftrue UnknownScript_0x70057
+	opentext
+	writetext UnknownText_0x70157
+	buttonsound
+	faceplayer
+	writetext UnknownText_0x701b4
+	yesorno
+	iffalse UnknownScript_0x7004e
+UnknownScript_0x70035:
+	writetext UnknownText_0x702c6
+	waitbutton
+	closetext
+	playsound SFX_WARP_TO
+	applymovement LAKEOFRAGE_LANCE, MovementData_0x70155
+	disappear LAKEOFRAGE_LANCE
+	clearevent EVENT_MAHOGANY_MART_LANCE_AND_DRAGONITE
+	setevent EVENT_DECIDED_TO_HELP_LANCE
+	domaptrigger MAHOGANY_MART_1F, $1
+	end
+
+UnknownScript_0x7004e:
+	writetext UnknownText_0x70371
+	waitbutton
+	closetext
+	setevent EVENT_REFUSED_TO_HELP_LANCE_AT_LAKE_OF_RAGE
+	end
+
+UnknownScript_0x70057:
+	faceplayer
+	opentext
+	writetext UnknownText_0x703a5
+	yesorno
+	iffalse UnknownScript_0x7004e
+	jump UnknownScript_0x70035
+
+GyaradosScript_0x70063:
+	opentext
+	writetext UnknownText_0x703cb
+	pause 15
+	cry GYARADOS
+	closetext
+	loadwildmon GYARADOS, 30
+	writecode VAR_BATTLETYPE, BATTLETYPE_SHINY
+	startbattle
+	if_equal $1, UnknownScript_0x7007a
+	disappear LAKEOFRAGE_GYARADOS
+UnknownScript_0x7007a:
+	reloadmapafterbattle
+	opentext
+	giveitem RED_SCALE
+	waitsfx
+	writetext UnknownText_0x703df
+	playsound SFX_ITEM
+	waitsfx
+	itemnotify
+	closetext
+	dotrigger $0
+	appear LAKEOFRAGE_LANCE
+	end
+
+GrampsScript_0x7008e:
+	faceplayer
+	opentext
+	checkevent EVENT_CLEARED_ROCKET_HIDEOUT
+	iftrue UnknownScript_0x7009c
+	writetext UnknownText_0x703f8
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x7009c:
+	writetext UnknownText_0x70421
+	waitbutton
+	closetext
+	end
+
+SuperNerdScript_0x700a2:
+	jumptextfaceplayer UnknownText_0x70444
+
+CooltrainerFScript_0x700a5:
+	jumptextfaceplayer UnknownText_0x704bb
+
+MapLakeOfRageSignpost0Script:
+	jumptext UnknownText_0x708d7
+
+MapLakeOfRageSignpost1Script:
+	opentext
+	writetext UnknownText_0x70903
+	checkevent EVENT_CLEARED_ROCKET_HIDEOUT
+	iftrue UnknownScript_0x700b8
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x700b8:
+	buttonsound
+	special Special_MagikarpHouseSign
+	closetext
+	end
+
+TrainerFisherAndre:
+	trainer EVENT_BEAT_FISHER_ANDRE, FISHER, ANDRE, FisherAndreSeenText, FisherAndreBeatenText, 0, FisherAndreScript
+
+FisherAndreScript:
+	end_if_just_battled
+	opentext
+	writetext FisherAndreAfterBattleText
+	waitbutton
+	closetext
+	end
+
+TrainerFisherRaymond:
+	trainer EVENT_BEAT_FISHER_RAYMOND, FISHER, RAYMOND, FisherRaymondSeenText, FisherRaymondBeatenText, 0, FisherRaymondScript
+
+FisherRaymondScript:
+	end_if_just_battled
+	opentext
+	writetext FisherRaymondAfterBattleText
+	waitbutton
+	closetext
+	end
+
+TrainerCooltrainermAaron:
+	trainer EVENT_BEAT_COOLTRAINERM_AARON, COOLTRAINERM, AARON, CooltrainermAaronSeenText, CooltrainermAaronBeatenText, 0, CooltrainermAaronScript
+
+CooltrainermAaronScript:
+	end_if_just_battled
+	opentext
+	writetext CooltrainermAaronAfterBattleText
+	waitbutton
+	closetext
+	end
+
+TrainerCooltrainerfLois:
+	trainer EVENT_BEAT_COOLTRAINERF_LOIS, COOLTRAINERF, LOIS, CooltrainerfLoisSeenText, CooltrainerfLoisBeatenText, 0, CooltrainerfLoisScript
+
+CooltrainerfLoisScript:
+	end_if_just_battled
+	opentext
+	writetext CooltrainerfLoisAfterBattleText
+	waitbutton
+	closetext
+	end
+
+WesleyScript:
+	faceplayer
+	opentext
+	checkevent EVENT_GOT_BLACKBELT_FROM_WESLEY
+	iftrue WesleyWednesdayScript
+	checkcode VAR_WEEKDAY
+	if_not_equal WEDNESDAY, WesleyNotWednesdayScript
+	checkevent EVENT_MET_WESLEY_OF_WEDNESDAY
+	iftrue .MetWesley
+	writetext MeetWesleyText
+	buttonsound
+	setevent EVENT_MET_WESLEY_OF_WEDNESDAY
+.MetWesley:
+	writetext WesleyGivesGiftText
+	buttonsound
+	verbosegiveitem BLACKBELT
+	iffalse WesleyDoneScript
+	setevent EVENT_GOT_BLACKBELT_FROM_WESLEY
+	writetext WesleyGaveGiftText
+	waitbutton
+	closetext
+	end
+
+WesleyWednesdayScript:
+	writetext WesleyWednesdayText
+	waitbutton
+WesleyDoneScript:
+	closetext
+	end
+
+WesleyNotWednesdayScript:
+	writetext WesleyNotWednesdayText
+	waitbutton
+	closetext
+	end
+
+LakeOfRageElixer:
+	itemball ELIXER
+
+LakeOfRageTMDetect:
+	itemball TM_DETECT
+
+LakeOfRageHiddenFullRestore:
+	dwb EVENT_LAKE_OF_RAGE_HIDDEN_FULL_RESTORE, FULL_RESTORE
+
+
+LakeOfRageHiddenRareCandy:
+	dwb EVENT_LAKE_OF_RAGE_HIDDEN_RARE_CANDY, RARE_CANDY
+
+
+LakeOfRageHiddenMaxPotion:
+	dwb EVENT_LAKE_OF_RAGE_HIDDEN_MAX_POTION, MAX_POTION
+
+
+MovementData_0x70155:
+	teleport_from
+	step_end
+
+UnknownText_0x70157:
+	text "This lake is full"
+	line "of GYARADOS but"
+	cont "nothing else…"
+
+	para "So the MAGIKARP"
+	line "are being forced"
+	cont "to evolve…"
+	done
+
+UnknownText_0x701b4:
+	text "Did you come here"
+	line "because of the"
+	cont "rumors?"
+
+	para "You're <PLAYER>?"
+	line "I'm LANCE, a"
+	cont "trainer like you."
+
+	para "I heard some ru-"
+	line "mors, so I came to"
+	cont "investigate…"
+
+	para "I saw the way you"
+	line "battled earlier,"
+	cont "<PLAY_G>."
+
+	para "I can tell that"
+	line "you're a trainer"
+
+	para "with considerable"
+	line "skill."
+
+	para "If you don't mind,"
+	line "could you help me"
+	cont "investigate?"
+	done
+
+UnknownText_0x702c6:
+	text "LANCE: Excellent!"
+
+	para "It seems that the"
+	line "LAKE's MAGIKARP"
+
+	para "are being forced"
+	line "to evolve."
+
+	para "A mysterious radio"
+	line "broadcast coming"
+
+	para "from MAHOGANY is"
+	line "the cause."
+
+	para "I'll be waiting"
+	line "for you, <PLAY_G>."
+	done
+
+UnknownText_0x70371:
+	text "Oh… Well, if you"
+	line "change your mind,"
+	cont "please help me."
+	done
+
+UnknownText_0x703a5:
+	text "LANCE: Hm? Are you"
+	line "going to help me?"
+	done
+
+UnknownText_0x703cb:
+	text "GYARADOS: Gyashaa!"
+	done
+
+UnknownText_0x703df:
+	text "<PLAYER> obtained a"
+	line "RED SCALE."
+	done
+
+UnknownText_0x703f8:
+	text "The GYARADOS are"
+	line "angry!"
+
+	para "It's a bad omen!"
+	done
+
+UnknownText_0x70421:
+	text "Hahah! The MAGI-"
+	line "KARP are biting!"
+	done
+
+UnknownText_0x70444:
+	text "I heard this lake"
+	line "was made by ram-"
+	cont "paging GYARADOS."
+
+	para "I wonder if there"
+	line "is any connection"
+
+	para "to their mass out-"
+	line "break now?"
+	done
+
+UnknownText_0x704bb:
+	text "Did my eyes de-"
+	line "ceive me? I saw a"
+
+	para "red GYARADOS in"
+	line "the LAKE…"
+
+	para "But I thought"
+	line "GYARADOS were"
+	cont "usually blue?"
+	done
+
+FisherAndreSeenText:
+	text "Let me battle with"
+	line "the #MON I just"
+	cont "caught!"
+	done
+
+FisherAndreBeatenText:
+	text "I might be an ex-"
+	line "pert angler, but"
+
+	para "I stink as a #-"
+	line "MON trainer…"
+	done
+
+FisherAndreAfterBattleText:
+	text "I won't lose as an"
+	line "angler! I catch"
+	cont "#MON all day."
+	done
+
+FisherRaymondSeenText:
+	text "No matter what I"
+	line "do, all I catch"
+
+	para "are the same #-"
+	line "MON…"
+	done
+
+FisherRaymondBeatenText:
+	text "My line's all"
+	line "tangled up…"
+	done
+
+FisherRaymondAfterBattleText:
+	text "Why can't I catch"
+	line "any good #MON?"
+	done
+
+CooltrainermAaronSeenText:
+	text "If a trainer spots"
+	line "another trainer,"
+
+	para "he has to make a"
+	line "challenge."
+
+	para "That is our"
+	line "destiny."
+	done
+
+CooltrainermAaronBeatenText:
+	text "Whew…"
+	line "Good battle."
+	done
+
+CooltrainermAaronAfterBattleText:
+	text "#MON and their"
+	line "trainer become"
+
+	para "powerful through"
+	line "constant battling."
+	done
+
+CooltrainerfLoisSeenText:
+	text "What happened to"
+	line "the red GYARADOS?"
+
+	para "It's gone?"
+
+	para "Oh, darn. I came"
+	line "here for nothing?"
+
+	para "I know--let's"
+	line "battle!"
+	done
+
+CooltrainerfLoisBeatenText:
+	text "Good going!"
+	done
+
+CooltrainerfLoisAfterBattleText:
+	text "Come to think of"
+	line "it, I've seen a"
+	cont "pink BUTTERFREE."
+	done
+
+MeetWesleyText:
+	text "WESLEY: Well, how"
+	line "do you do?"
+
+	para "Seeing as how it's"
+	line "Wednesday today,"
+
+	para "I'm WESLEY of"
+	line "Wednesday."
+	done
+
+WesleyGivesGiftText:
+	text "Pleased to meet"
+	line "you. Please take a"
+	cont "souvenir."
+	done
+
+WesleyGaveGiftText:
+	text "WESLEY: BLACKBELT"
+	line "beefs up the power"
+	cont "of fighting moves."
+	done
+
+WesleyWednesdayText:
+	text "WESLEY: Since you"
+	line "found me, you must"
+
+	para "have met my broth-"
+	line "ers and sisters."
+
+	para "Or did you just"
+	line "get lucky?"
+	done
+
+WesleyNotWednesdayText:
+	text "WESLEY: Today's"
+	line "not Wednesday."
+	cont "That's too bad."
+	done
+
+UnknownText_0x708d7:
+	text "LAKE OF RAGE,"
+	line "also known as"
+	cont "GYARADOS LAKE."
+	done
+
+UnknownText_0x70903:
+	text "FISHING GURU'S"
+	line "HOUSE"
+	done
+
+LakeOfRage_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 2
+	warp_def $3, $7, 1, LAKE_OF_RAGE_HIDDEN_POWER_HOUSE
+	warp_def $1f, $1b, 1, LAKE_OF_RAGE_MAGIKARP_HOUSE
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 5
+	signpost 27, 21, SIGNPOST_READ, MapLakeOfRageSignpost0Script
+	signpost 31, 25, SIGNPOST_READ, MapLakeOfRageSignpost1Script
+	signpost 28, 11, SIGNPOST_ITEM, LakeOfRageHiddenFullRestore
+	signpost 4, 4, SIGNPOST_ITEM, LakeOfRageHiddenRareCandy
+	signpost 5, 35, SIGNPOST_ITEM, LakeOfRageHiddenMaxPotion
+
+.PersonEvents:
+	db 12
+	person_event SPRITE_LANCE, 28, 21, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, LanceScript_0x70022, EVENT_LAKE_OF_RAGE_LANCE
+	person_event SPRITE_GRAMPS, 26, 20, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GrampsScript_0x7008e, -1
+	person_event SPRITE_SUPER_NERD, 13, 36, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x700a2, -1
+	person_event SPRITE_COOLTRAINER_F, 29, 25, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x700a5, -1
+	person_event SPRITE_FISHER, 23, 30, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 1, TrainerFisherAndre, EVENT_LAKE_OF_RAGE_CIVILIANS
+	person_event SPRITE_FISHER, 26, 24, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 1, TrainerFisherRaymond, EVENT_LAKE_OF_RAGE_CIVILIANS
+	person_event SPRITE_COOLTRAINER_M, 15, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 1, TrainerCooltrainermAaron, EVENT_LAKE_OF_RAGE_CIVILIANS
+	person_event SPRITE_COOLTRAINER_F, 7, 36, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 0, TrainerCooltrainerfLois, EVENT_LAKE_OF_RAGE_CIVILIANS
+	person_event SPRITE_GYARADOS, 22, 18, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, GyaradosScript_0x70063, EVENT_LAKE_OF_RAGE_RED_GYARADOS
+	person_event SPRITE_SUPER_NERD, 4, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, WesleyScript, EVENT_LAKE_OF_RAGE_WESLEY_OF_WEDNESDAY
+	person_event SPRITE_POKE_BALL, 10, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, LakeOfRageElixer, EVENT_LAKE_OF_RAGE_ELIXER
+	person_event SPRITE_POKE_BALL, 2, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, LakeOfRageTMDetect, EVENT_LAKE_OF_RAGE_TM_DETECT
--- /dev/null
+++ b/maps/LakeOfRage.blk
@@ -1,0 +1,1 @@
+,-aaaaaaa./aaa]]a\]<eeaab>f\<eeef[eea\]^\b`]<a<eeb=aTvUb?aa\]<facf`Tvy5Ydbbade\]<eeeeX555Ya>]aa[]aaTvvy555Y<[]]]<aTy55555Y\fa\<aX555555Y<b`aTvy555555YbcaTy555555Y^b]^>X5555555YbeeX55555Ya?jpp=aX5YGfhqqeWKee`ehqqaKWa`Gjqqqe=]hqqqdlrqq
\ No newline at end of file
--- /dev/null
+++ b/maps/LakeOfRageHiddenPowerHouse.asm
@@ -1,0 +1,89 @@
+const_value set 2
+	const LAKEOFRAGEHIDDENPOWERHOUSE_FISHER
+
+LakeOfRageHiddenPowerHouse_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+HiddenPowerGuy:
+	faceplayer
+	opentext
+	checkevent EVENT_GOT_TM10_HIDDEN_POWER
+	iftrue .AlreadyGotItem
+	writetext HiddenPowerGuyText1
+	buttonsound
+	verbosegiveitem TM_HIDDEN_POWER
+	iffalse .Done
+	setevent EVENT_GOT_TM10_HIDDEN_POWER
+	writetext HiddenPowerGuyText2
+	waitbutton
+	closetext
+	end
+.AlreadyGotItem:
+	writetext HiddenPowerGuyText3
+	waitbutton
+.Done:
+	closetext
+	end
+
+HiddenPowerHouseBookshelf:
+	jumpstd difficultbookshelf
+
+HiddenPowerGuyText1:
+	text "…You have strayed"
+	line "far…"
+
+	para "Here I have medi-"
+	line "tated. Inside me,"
+
+	para "a new power has"
+	line "been awakened."
+
+	para "Let me share my"
+	line "power with your"
+
+	para "#MON."
+	line "Take this, child."
+	done
+
+HiddenPowerGuyText2:
+	text "Do you see it? It"
+	line "is HIDDEN POWER!"
+
+	para "It draws out the"
+	line "power of #MON"
+	cont "for attacking."
+
+	para "Remember this: its"
+	line "type and power de-"
+	cont "pend on the #-"
+	cont "MON using it."
+	done
+
+HiddenPowerGuyText3:
+	text "I am meditating…"
+	done
+
+LakeOfRageHiddenPowerHouse_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 2
+	warp_def $7, $2, 1, LAKE_OF_RAGE
+	warp_def $7, $3, 1, LAKE_OF_RAGE
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 2
+	signpost 1, 0, SIGNPOST_READ, HiddenPowerHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, HiddenPowerHouseBookshelf
+
+.PersonEvents:
+	db 1
+	person_event SPRITE_FISHER, 3, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, HiddenPowerGuy, -1
--- /dev/null
+++ b/maps/LakeOfRageMagikarpHouse.asm
@@ -1,0 +1,227 @@
+const_value set 2
+	const LAKEOFRAGEMAGIKARPHOUSE_FISHING_GURU
+
+LakeOfRageMagikarpHouse_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+FishingGuruScript_0x19a6ae:
+	faceplayer
+	opentext
+	checkevent EVENT_LAKE_OF_RAGE_ELIXIR_ON_STANDBY
+	iftrue UnknownScript_0x19a6fe
+	checkevent EVENT_LAKE_OF_RAGE_ASKED_FOR_MAGIKARP
+	iftrue UnknownScript_0x19a6e0
+	checkevent EVENT_CLEARED_ROCKET_HIDEOUT
+	iftrue UnknownScript_0x19a6d7
+	checkevent EVENT_LAKE_OF_RAGE_EXPLAINED_WEIRD_MAGIKARP
+	iftrue UnknownScript_0x19a6d1
+	writetext UnknownText_0x19a72e
+	waitbutton
+	closetext
+	setevent EVENT_LAKE_OF_RAGE_EXPLAINED_WEIRD_MAGIKARP
+	end
+
+UnknownScript_0x19a6d1:
+	writetext UnknownText_0x19a84d
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x19a6d7:
+	writetext UnknownText_0x19a890
+	waitbutton
+	closetext
+	setevent EVENT_LAKE_OF_RAGE_ASKED_FOR_MAGIKARP
+	end
+
+UnknownScript_0x19a6e0:
+	writebyte MAGIKARP
+	special Special_FindThatSpecies
+	iffalse UnknownScript_0x19a6d7
+	writetext UnknownText_0x19a93e
+	waitbutton
+	special Special_CheckMagikarpLength
+	if_equal $0, UnknownScript_0x19a71c
+	if_equal $1, UnknownScript_0x19a722
+	if_equal $2, UnknownScript_0x19a716
+	jump UnknownScript_0x19a6fe
+
+UnknownScript_0x19a6fe:
+	writetext UnknownText_0x19a977
+	buttonsound
+	verbosegiveitem ELIXER
+	iffalse UnknownScript_0x19a711
+	writetext UnknownText_0x19a9c3
+	waitbutton
+	closetext
+	clearevent EVENT_LAKE_OF_RAGE_ELIXIR_ON_STANDBY
+	end
+
+UnknownScript_0x19a711:
+	closetext
+	setevent EVENT_LAKE_OF_RAGE_ELIXIR_ON_STANDBY
+	end
+
+UnknownScript_0x19a716:
+	writetext UnknownText_0x19aa01
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x19a71c:
+	writetext UnknownText_0x19aa5c
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x19a722:
+	writetext UnknownText_0x19aa79
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x19a728:
+	jumptext UnknownText_0x19aabc
+
+MagikarpHouseBookshelf:
+	jumpstd difficultbookshelf
+
+UnknownText_0x19a72e:
+	text "LAKE OF RAGE is"
+	line "actually a crater"
+
+	para "made by rampaging"
+	line "GYARADOS."
+
+	para "The crater filled"
+	line "up with rainwater"
+
+	para "and the LAKE was"
+	line "formed."
+
+	para "That's the story"
+	line "passed on from my"
+
+	para "Grandpa's great-"
+	line "great-grandpa."
+
+	para "It used to be that"
+	line "you could catch"
+
+	para "lively MAGIKARP"
+	line "there, but…"
+
+	para "I don't understand"
+	line "what's happening."
+	done
+
+UnknownText_0x19a84d:
+	text "The LAKE hasn't"
+	line "been normal since"
+
+	para "those men wearing"
+	line "black arrived."
+	done
+
+UnknownText_0x19a890:
+	text "LAKE OF RAGE is"
+	line "back to normal."
+
+	para "The MAGIKARP have"
+	line "returned."
+
+	para "I may yet realize"
+	line "my dream of see-"
+	cont "ing the world's"
+	cont "largest MAGIKARP."
+
+	para "Do you have a ROD?"
+	line "Please help me if"
+	cont "you do."
+	done
+
+UnknownText_0x19a93e:
+	text "Ah, you have a"
+	line "MAGIKARP! Let's"
+
+	para "see how big that"
+	line "baby is."
+	done
+
+UnknownText_0x19a977:
+	text "Wow! This one is"
+	line "outstanding!"
+
+	para "I tip my hat to"
+	line "you!"
+
+	para "Take this as a"
+	line "memento!"
+	done
+
+UnknownText_0x19a9c3:
+	text "The record is the"
+	line "important thing."
+
+	para "Think of that as"
+	line "a bonus!"
+	done
+
+UnknownText_0x19aa01:
+	text "Wow! This one is"
+	line "outstanding!"
+
+	para "…I wish I could"
+	line "say that, but I've"
+
+	para "seen a bigger one"
+	line "before."
+	done
+
+UnknownText_0x19aa5c:
+	text "What? That's not a"
+	line "MAGIKARP!"
+	done
+
+UnknownText_0x19aa79:
+	text "Oh… So you didn't"
+	line "get one good"
+
+	para "enough to show me?"
+	line "Maybe next time."
+	done
+
+UnknownText_0x19aabc:
+	text "CURRENT RECORD"
+
+	para "@"
+	text_from_ram StringBuffer3
+	text " caught by"
+	line "@"
+	text_from_ram StringBuffer4
+	db "@@"
+
+LakeOfRageMagikarpHouse_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 2
+	warp_def $7, $2, 2, LAKE_OF_RAGE
+	warp_def $7, $3, 2, LAKE_OF_RAGE
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 2
+	signpost 1, 0, SIGNPOST_READ, MagikarpHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, MagikarpHouseBookshelf
+
+.PersonEvents:
+	db 1
+	person_event SPRITE_FISHING_GURU, 3, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FishingGuruScript_0x19a6ae, -1
--- a/maps/LakeofRage.asm
+++ /dev/null
@@ -1,537 +1,0 @@
-const_value set 2
-	const LAKEOFRAGE_LANCE
-	const LAKEOFRAGE_GRAMPS
-	const LAKEOFRAGE_SUPER_NERD1
-	const LAKEOFRAGE_COOLTRAINER_F1
-	const LAKEOFRAGE_FISHER1
-	const LAKEOFRAGE_FISHER2
-	const LAKEOFRAGE_COOLTRAINER_M
-	const LAKEOFRAGE_COOLTRAINER_F2
-	const LAKEOFRAGE_GYARADOS
-	const LAKEOFRAGE_WESLEY
-	const LAKEOFRAGE_POKE_BALL1
-	const LAKEOFRAGE_POKE_BALL2
-
-LakeofRage_MapScriptHeader:
-.MapTriggers:
-	db 2
-
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-
-.MapCallbacks:
-	db 2
-
-	; callbacks
-
-	dbw MAPCALLBACK_NEWMAP, .FlyPoint
-	dbw MAPCALLBACK_OBJECTS, .Wesley
-
-.Trigger0:
-	end
-
-.Trigger1:
-	end
-
-.FlyPoint:
-	setflag ENGINE_FLYPOINT_LAKE_OF_RAGE
-	return
-
-.Wesley:
-	checkcode VAR_WEEKDAY
-	if_equal WEDNESDAY, .WesleyAppears
-	disappear LAKEOFRAGE_WESLEY
-	return
-
-.WesleyAppears:
-	appear LAKEOFRAGE_WESLEY
-	return
-
-LanceScript_0x70022:
-	checkevent EVENT_REFUSED_TO_HELP_LANCE_AT_LAKE_OF_RAGE
-	iftrue UnknownScript_0x70057
-	opentext
-	writetext UnknownText_0x70157
-	buttonsound
-	faceplayer
-	writetext UnknownText_0x701b4
-	yesorno
-	iffalse UnknownScript_0x7004e
-UnknownScript_0x70035:
-	writetext UnknownText_0x702c6
-	waitbutton
-	closetext
-	playsound SFX_WARP_TO
-	applymovement LAKEOFRAGE_LANCE, MovementData_0x70155
-	disappear LAKEOFRAGE_LANCE
-	clearevent EVENT_MAHOGANY_MART_LANCE_AND_DRAGONITE
-	setevent EVENT_DECIDED_TO_HELP_LANCE
-	domaptrigger MAHOGANY_MART_1F, $1
-	end
-
-UnknownScript_0x7004e:
-	writetext UnknownText_0x70371
-	waitbutton
-	closetext
-	setevent EVENT_REFUSED_TO_HELP_LANCE_AT_LAKE_OF_RAGE
-	end
-
-UnknownScript_0x70057:
-	faceplayer
-	opentext
-	writetext UnknownText_0x703a5
-	yesorno
-	iffalse UnknownScript_0x7004e
-	jump UnknownScript_0x70035
-
-GyaradosScript_0x70063:
-	opentext
-	writetext UnknownText_0x703cb
-	pause 15
-	cry GYARADOS
-	closetext
-	loadwildmon GYARADOS, 30
-	writecode VAR_BATTLETYPE, BATTLETYPE_SHINY
-	startbattle
-	if_equal $1, UnknownScript_0x7007a
-	disappear LAKEOFRAGE_GYARADOS
-UnknownScript_0x7007a:
-	reloadmapafterbattle
-	opentext
-	giveitem RED_SCALE
-	waitsfx
-	writetext UnknownText_0x703df
-	playsound SFX_ITEM
-	waitsfx
-	itemnotify
-	closetext
-	dotrigger $0
-	appear LAKEOFRAGE_LANCE
-	end
-
-GrampsScript_0x7008e:
-	faceplayer
-	opentext
-	checkevent EVENT_CLEARED_ROCKET_HIDEOUT
-	iftrue UnknownScript_0x7009c
-	writetext UnknownText_0x703f8
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x7009c:
-	writetext UnknownText_0x70421
-	waitbutton
-	closetext
-	end
-
-SuperNerdScript_0x700a2:
-	jumptextfaceplayer UnknownText_0x70444
-
-CooltrainerFScript_0x700a5:
-	jumptextfaceplayer UnknownText_0x704bb
-
-MapLakeofRageSignpost0Script:
-	jumptext UnknownText_0x708d7
-
-MapLakeofRageSignpost1Script:
-	opentext
-	writetext UnknownText_0x70903
-	checkevent EVENT_CLEARED_ROCKET_HIDEOUT
-	iftrue UnknownScript_0x700b8
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x700b8:
-	buttonsound
-	special Special_MagikarpHouseSign
-	closetext
-	end
-
-TrainerFisherAndre:
-	trainer EVENT_BEAT_FISHER_ANDRE, FISHER, ANDRE, FisherAndreSeenText, FisherAndreBeatenText, 0, FisherAndreScript
-
-FisherAndreScript:
-	end_if_just_battled
-	opentext
-	writetext UnknownText_0x7058f
-	waitbutton
-	closetext
-	end
-
-TrainerFisherRaymond:
-	trainer EVENT_BEAT_FISHER_RAYMOND, FISHER, RAYMOND, FisherRaymondSeenText, FisherRaymondBeatenText, 0, FisherRaymondScript
-
-FisherRaymondScript:
-	end_if_just_battled
-	opentext
-	writetext UnknownText_0x70611
-	waitbutton
-	closetext
-	end
-
-TrainerCooltrainermAaron:
-	trainer EVENT_BEAT_COOLTRAINERM_AARON, COOLTRAINERM, AARON, CooltrainermAaronSeenText, CooltrainermAaronBeatenText, 0, CooltrainermAaronScript
-
-CooltrainermAaronScript:
-	end_if_just_battled
-	opentext
-	writetext UnknownText_0x7069c
-	waitbutton
-	closetext
-	end
-
-TrainerCooltrainerfLois:
-	trainer EVENT_BEAT_COOLTRAINERF_LOIS, COOLTRAINERF, LOIS, CooltrainerfLoisSeenText, CooltrainerfLoisBeatenText, 0, CooltrainerfLoisScript
-
-CooltrainerfLoisScript:
-	end_if_just_battled
-	opentext
-	writetext UnknownText_0x70752
-	waitbutton
-	closetext
-	end
-
-WesleyScript:
-	faceplayer
-	opentext
-	checkevent EVENT_GOT_BLACKBELT_FROM_WESLEY
-	iftrue WesleyWednesdayScript
-	checkcode VAR_WEEKDAY
-	if_not_equal WEDNESDAY, WesleyNotWednesdayScript
-	checkevent EVENT_MET_WESLEY_OF_WEDNESDAY
-	iftrue .MetWesley
-	writetext MeetWesleyText
-	buttonsound
-	setevent EVENT_MET_WESLEY_OF_WEDNESDAY
-.MetWesley:
-	writetext WesleyGivesGiftText
-	buttonsound
-	verbosegiveitem BLACKBELT
-	iffalse WesleyDoneScript
-	setevent EVENT_GOT_BLACKBELT_FROM_WESLEY
-	writetext WesleyGaveGiftText
-	waitbutton
-	closetext
-	end
-
-WesleyWednesdayScript:
-	writetext WesleyWednesdayText
-	waitbutton
-WesleyDoneScript:
-	closetext
-	end
-
-WesleyNotWednesdayScript:
-	writetext WesleyNotWednesdayText
-	waitbutton
-	closetext
-	end
-
-LakeofRageElixer:
-	itemball ELIXER
-
-LakeofRageTMDetect:
-	itemball TM_DETECT
-
-LakeofRageHiddenFullRestore:
-	dwb EVENT_LAKE_OF_RAGE_HIDDEN_FULL_RESTORE, FULL_RESTORE
-
-
-LakeofRageHiddenRareCandy:
-	dwb EVENT_LAKE_OF_RAGE_HIDDEN_RARE_CANDY, RARE_CANDY
-
-
-LakeofRageHiddenMaxPotion:
-	dwb EVENT_LAKE_OF_RAGE_HIDDEN_MAX_POTION, MAX_POTION
-
-
-MovementData_0x70155:
-	teleport_from
-	step_end
-
-UnknownText_0x70157:
-	text "This lake is full"
-	line "of GYARADOS but"
-	cont "nothing else…"
-
-	para "So the MAGIKARP"
-	line "are being forced"
-	cont "to evolve…"
-	done
-
-UnknownText_0x701b4:
-	text "Did you come here"
-	line "because of the"
-	cont "rumors?"
-
-	para "You're <PLAYER>?"
-	line "I'm LANCE, a"
-	cont "trainer like you."
-
-	para "I heard some ru-"
-	line "mors, so I came to"
-	cont "investigate…"
-
-	para "I saw the way you"
-	line "battled earlier,"
-	cont "<PLAY_G>."
-
-	para "I can tell that"
-	line "you're a trainer"
-
-	para "with considerable"
-	line "skill."
-
-	para "If you don't mind,"
-	line "could you help me"
-	cont "investigate?"
-	done
-
-UnknownText_0x702c6:
-	text "LANCE: Excellent!"
-
-	para "It seems that the"
-	line "LAKE's MAGIKARP"
-
-	para "are being forced"
-	line "to evolve."
-
-	para "A mysterious radio"
-	line "broadcast coming"
-
-	para "from MAHOGANY is"
-	line "the cause."
-
-	para "I'll be waiting"
-	line "for you, <PLAY_G>."
-	done
-
-UnknownText_0x70371:
-	text "Oh… Well, if you"
-	line "change your mind,"
-	cont "please help me."
-	done
-
-UnknownText_0x703a5:
-	text "LANCE: Hm? Are you"
-	line "going to help me?"
-	done
-
-UnknownText_0x703cb:
-	text "GYARADOS: Gyashaa!"
-	done
-
-UnknownText_0x703df:
-	text "<PLAYER> obtained a"
-	line "RED SCALE."
-	done
-
-UnknownText_0x703f8:
-	text "The GYARADOS are"
-	line "angry!"
-
-	para "It's a bad omen!"
-	done
-
-UnknownText_0x70421:
-	text "Hahah! The MAGI-"
-	line "KARP are biting!"
-	done
-
-UnknownText_0x70444:
-	text "I heard this lake"
-	line "was made by ram-"
-	cont "paging GYARADOS."
-
-	para "I wonder if there"
-	line "is any connection"
-
-	para "to their mass out-"
-	line "break now?"
-	done
-
-UnknownText_0x704bb:
-	text "Did my eyes de-"
-	line "ceive me? I saw a"
-
-	para "red GYARADOS in"
-	line "the LAKE…"
-
-	para "But I thought"
-	line "GYARADOS were"
-	cont "usually blue?"
-	done
-
-FisherAndreSeenText:
-	text "Let me battle with"
-	line "the #MON I just"
-	cont "caught!"
-	done
-
-FisherAndreBeatenText:
-	text "I might be an ex-"
-	line "pert angler, but"
-
-	para "I stink as a #-"
-	line "MON trainer…"
-	done
-
-UnknownText_0x7058f:
-	text "I won't lose as an"
-	line "angler! I catch"
-	cont "#MON all day."
-	done
-
-FisherRaymondSeenText:
-	text "No matter what I"
-	line "do, all I catch"
-
-	para "are the same #-"
-	line "MON…"
-	done
-
-FisherRaymondBeatenText:
-	text "My line's all"
-	line "tangled up…"
-	done
-
-UnknownText_0x70611:
-	text "Why can't I catch"
-	line "any good #MON?"
-	done
-
-CooltrainermAaronSeenText:
-	text "If a trainer spots"
-	line "another trainer,"
-
-	para "he has to make a"
-	line "challenge."
-
-	para "That is our"
-	line "destiny."
-	done
-
-CooltrainermAaronBeatenText:
-	text "Whew…"
-	line "Good battle."
-	done
-
-UnknownText_0x7069c:
-	text "#MON and their"
-	line "trainer become"
-
-	para "powerful through"
-	line "constant battling."
-	done
-
-CooltrainerfLoisSeenText:
-	text "What happened to"
-	line "the red GYARADOS?"
-
-	para "It's gone?"
-
-	para "Oh, darn. I came"
-	line "here for nothing?"
-
-	para "I know--let's"
-	line "battle!"
-	done
-
-CooltrainerfLoisBeatenText:
-	text "Good going!"
-	done
-
-UnknownText_0x70752:
-	text "Come to think of"
-	line "it, I've seen a"
-	cont "pink BUTTERFREE."
-	done
-
-MeetWesleyText:
-	text "WESLEY: Well, how"
-	line "do you do?"
-
-	para "Seeing as how it's"
-	line "Wednesday today,"
-
-	para "I'm WESLEY of"
-	line "Wednesday."
-	done
-
-WesleyGivesGiftText:
-	text "Pleased to meet"
-	line "you. Please take a"
-	cont "souvenir."
-	done
-
-WesleyGaveGiftText:
-	text "WESLEY: BLACKBELT"
-	line "beefs up the power"
-	cont "of fighting moves."
-	done
-
-WesleyWednesdayText:
-	text "WESLEY: Since you"
-	line "found me, you must"
-
-	para "have met my broth-"
-	line "ers and sisters."
-
-	para "Or did you just"
-	line "get lucky?"
-	done
-
-WesleyNotWednesdayText:
-	text "WESLEY: Today's"
-	line "not Wednesday."
-	cont "That's too bad."
-	done
-
-UnknownText_0x708d7:
-	text "LAKE OF RAGE,"
-	line "also known as"
-	cont "GYARADOS LAKE."
-	done
-
-UnknownText_0x70903:
-	text "FISHING GURU'S"
-	line "HOUSE"
-	done
-
-LakeofRage_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 2
-	warp_def $3, $7, 1, LAKE_OF_RAGE_HIDDEN_POWER_HOUSE
-	warp_def $1f, $1b, 1, LAKE_OF_RAGE_MAGIKARP_HOUSE
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 5
-	signpost 27, 21, SIGNPOST_READ, MapLakeofRageSignpost0Script
-	signpost 31, 25, SIGNPOST_READ, MapLakeofRageSignpost1Script
-	signpost 28, 11, SIGNPOST_ITEM, LakeofRageHiddenFullRestore
-	signpost 4, 4, SIGNPOST_ITEM, LakeofRageHiddenRareCandy
-	signpost 5, 35, SIGNPOST_ITEM, LakeofRageHiddenMaxPotion
-
-.PersonEvents:
-	db 12
-	person_event SPRITE_LANCE, 28, 21, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, LanceScript_0x70022, EVENT_LAKE_OF_RAGE_LANCE
-	person_event SPRITE_GRAMPS, 26, 20, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GrampsScript_0x7008e, -1
-	person_event SPRITE_SUPER_NERD, 13, 36, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x700a2, -1
-	person_event SPRITE_COOLTRAINER_F, 29, 25, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x700a5, -1
-	person_event SPRITE_FISHER, 23, 30, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerFisherAndre, EVENT_LAKE_OF_RAGE_CIVILIANS
-	person_event SPRITE_FISHER, 26, 24, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerFisherRaymond, EVENT_LAKE_OF_RAGE_CIVILIANS
-	person_event SPRITE_COOLTRAINER_M, 15, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerCooltrainermAaron, EVENT_LAKE_OF_RAGE_CIVILIANS
-	person_event SPRITE_COOLTRAINER_F, 7, 36, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 0, TrainerCooltrainerfLois, EVENT_LAKE_OF_RAGE_CIVILIANS
-	person_event SPRITE_GYARADOS, 22, 18, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, GyaradosScript_0x70063, EVENT_LAKE_OF_RAGE_RED_GYARADOS
-	person_event SPRITE_SUPER_NERD, 4, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, WesleyScript, EVENT_LAKE_OF_RAGE_WESLEY_OF_WEDNESDAY
-	person_event SPRITE_POKE_BALL, 10, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, LakeofRageElixer, EVENT_LAKE_OF_RAGE_ELIXER
-	person_event SPRITE_POKE_BALL, 2, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, LakeofRageTMDetect, EVENT_LAKE_OF_RAGE_TM_DETECT
--- a/maps/LakeofRage.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-,-aaaaaaa./aaa]]a\]<eeaab>f\<eeef[eea\]^\b`]<a<eeb=aTvUb?aa\]<facf`Tvy5Ydbbade\]<eeeeX555Ya>]aa[]aaTvvy555Y<[]]]<aTy55555Y\fa\<aX555555Y<b`aTvy555555YbcaTy555555Y^b]^>X5555555YbeeX55555Ya?jpp=aX5YGfhqqeWKee`ehqqaKWa`Gjqqqe=]hqqqdlrqq
\ No newline at end of file
--- a/maps/LakeofRageHiddenPowerHouse.asm
+++ /dev/null
@@ -1,89 +1,0 @@
-const_value set 2
-	const LAKEOFRAGEHIDDENPOWERHOUSE_FISHER
-
-LakeofRageHiddenPowerHouse_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-HiddenPowerGuy:
-	faceplayer
-	opentext
-	checkevent EVENT_GOT_TM10_HIDDEN_POWER
-	iftrue .AlreadyGotItem
-	writetext HiddenPowerGuyText1
-	buttonsound
-	verbosegiveitem TM_HIDDEN_POWER
-	iffalse .Done
-	setevent EVENT_GOT_TM10_HIDDEN_POWER
-	writetext HiddenPowerGuyText2
-	waitbutton
-	closetext
-	end
-.AlreadyGotItem:
-	writetext HiddenPowerGuyText3
-	waitbutton
-.Done:
-	closetext
-	end
-
-HiddenPowerHouseBookshelf:
-	jumpstd difficultbookshelf
-
-HiddenPowerGuyText1:
-	text "…You have strayed"
-	line "far…"
-
-	para "Here I have medi-"
-	line "tated. Inside me,"
-
-	para "a new power has"
-	line "been awakened."
-
-	para "Let me share my"
-	line "power with your"
-
-	para "#MON."
-	line "Take this, child."
-	done
-
-HiddenPowerGuyText2:
-	text "Do you see it? It"
-	line "is HIDDEN POWER!"
-
-	para "It draws out the"
-	line "power of #MON"
-	cont "for attacking."
-
-	para "Remember this: its"
-	line "type and power de-"
-	cont "pend on the #-"
-	cont "MON using it."
-	done
-
-HiddenPowerGuyText3:
-	text "I am meditating…"
-	done
-
-LakeofRageHiddenPowerHouse_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 2
-	warp_def $7, $2, 1, LAKE_OF_RAGE
-	warp_def $7, $3, 1, LAKE_OF_RAGE
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 2
-	signpost 1, 0, SIGNPOST_READ, HiddenPowerHouseBookshelf
-	signpost 1, 1, SIGNPOST_READ, HiddenPowerHouseBookshelf
-
-.PersonEvents:
-	db 1
-	person_event SPRITE_FISHER, 3, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, HiddenPowerGuy, -1
--- a/maps/LakeofRageMagikarpHouse.asm
+++ /dev/null
@@ -1,227 +1,0 @@
-const_value set 2
-	const LAKEOFRAGEMAGIKARPHOUSE_FISHING_GURU
-
-LakeofRageMagikarpHouse_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-FishingGuruScript_0x19a6ae:
-	faceplayer
-	opentext
-	checkevent EVENT_LAKE_OF_RAGE_ELIXIR_ON_STANDBY
-	iftrue UnknownScript_0x19a6fe
-	checkevent EVENT_LAKE_OF_RAGE_ASKED_FOR_MAGIKARP
-	iftrue UnknownScript_0x19a6e0
-	checkevent EVENT_CLEARED_ROCKET_HIDEOUT
-	iftrue UnknownScript_0x19a6d7
-	checkevent EVENT_LAKE_OF_RAGE_EXPLAINED_WEIRD_MAGIKARP
-	iftrue UnknownScript_0x19a6d1
-	writetext UnknownText_0x19a72e
-	waitbutton
-	closetext
-	setevent EVENT_LAKE_OF_RAGE_EXPLAINED_WEIRD_MAGIKARP
-	end
-
-UnknownScript_0x19a6d1:
-	writetext UnknownText_0x19a84d
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x19a6d7:
-	writetext UnknownText_0x19a890
-	waitbutton
-	closetext
-	setevent EVENT_LAKE_OF_RAGE_ASKED_FOR_MAGIKARP
-	end
-
-UnknownScript_0x19a6e0:
-	writebyte MAGIKARP
-	special Special_FindThatSpecies
-	iffalse UnknownScript_0x19a6d7
-	writetext UnknownText_0x19a93e
-	waitbutton
-	special Special_CheckMagikarpLength
-	if_equal $0, UnknownScript_0x19a71c
-	if_equal $1, UnknownScript_0x19a722
-	if_equal $2, UnknownScript_0x19a716
-	jump UnknownScript_0x19a6fe
-
-UnknownScript_0x19a6fe:
-	writetext UnknownText_0x19a977
-	buttonsound
-	verbosegiveitem ELIXER
-	iffalse UnknownScript_0x19a711
-	writetext UnknownText_0x19a9c3
-	waitbutton
-	closetext
-	clearevent EVENT_LAKE_OF_RAGE_ELIXIR_ON_STANDBY
-	end
-
-UnknownScript_0x19a711:
-	closetext
-	setevent EVENT_LAKE_OF_RAGE_ELIXIR_ON_STANDBY
-	end
-
-UnknownScript_0x19a716:
-	writetext UnknownText_0x19aa01
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x19a71c:
-	writetext UnknownText_0x19aa5c
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x19a722:
-	writetext UnknownText_0x19aa79
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x19a728:
-	jumptext UnknownText_0x19aabc
-
-MagikarpHouseBookshelf:
-	jumpstd difficultbookshelf
-
-UnknownText_0x19a72e:
-	text "LAKE OF RAGE is"
-	line "actually a crater"
-
-	para "made by rampaging"
-	line "GYARADOS."
-
-	para "The crater filled"
-	line "up with rainwater"
-
-	para "and the LAKE was"
-	line "formed."
-
-	para "That's the story"
-	line "passed on from my"
-
-	para "Grandpa's great-"
-	line "great-grandpa."
-
-	para "It used to be that"
-	line "you could catch"
-
-	para "lively MAGIKARP"
-	line "there, but…"
-
-	para "I don't understand"
-	line "what's happening."
-	done
-
-UnknownText_0x19a84d:
-	text "The LAKE hasn't"
-	line "been normal since"
-
-	para "those men wearing"
-	line "black arrived."
-	done
-
-UnknownText_0x19a890:
-	text "LAKE OF RAGE is"
-	line "back to normal."
-
-	para "The MAGIKARP have"
-	line "returned."
-
-	para "I may yet realize"
-	line "my dream of see-"
-	cont "ing the world's"
-	cont "largest MAGIKARP."
-
-	para "Do you have a ROD?"
-	line "Please help me if"
-	cont "you do."
-	done
-
-UnknownText_0x19a93e:
-	text "Ah, you have a"
-	line "MAGIKARP! Let's"
-
-	para "see how big that"
-	line "baby is."
-	done
-
-UnknownText_0x19a977:
-	text "Wow! This one is"
-	line "outstanding!"
-
-	para "I tip my hat to"
-	line "you!"
-
-	para "Take this as a"
-	line "memento!"
-	done
-
-UnknownText_0x19a9c3:
-	text "The record is the"
-	line "important thing."
-
-	para "Think of that as"
-	line "a bonus!"
-	done
-
-UnknownText_0x19aa01:
-	text "Wow! This one is"
-	line "outstanding!"
-
-	para "…I wish I could"
-	line "say that, but I've"
-
-	para "seen a bigger one"
-	line "before."
-	done
-
-UnknownText_0x19aa5c:
-	text "What? That's not a"
-	line "MAGIKARP!"
-	done
-
-UnknownText_0x19aa79:
-	text "Oh… So you didn't"
-	line "get one good"
-
-	para "enough to show me?"
-	line "Maybe next time."
-	done
-
-UnknownText_0x19aabc:
-	text "CURRENT RECORD"
-
-	para "@"
-	text_from_ram StringBuffer3
-	text " caught by"
-	line "@"
-	text_from_ram StringBuffer4
-	db "@@"
-
-LakeofRageMagikarpHouse_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 2
-	warp_def $7, $2, 2, LAKE_OF_RAGE
-	warp_def $7, $3, 2, LAKE_OF_RAGE
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 2
-	signpost 1, 0, SIGNPOST_READ, MagikarpHouseBookshelf
-	signpost 1, 1, SIGNPOST_READ, MagikarpHouseBookshelf
-
-.PersonEvents:
-	db 1
-	person_event SPRITE_FISHING_GURU, 3, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FishingGuruScript_0x19a6ae, -1
--- a/maps/LancesRoom.asm
+++ b/maps/LancesRoom.asm
@@ -6,37 +6,32 @@
 LancesRoom_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .LockDoor
+	maptrigger .DummyTrigger
 
-	; triggers
-	dw .Trigger0, 0
-	dw .Trigger1, 0
-
 .MapCallbacks:
 	db 1
+	dbw MAPCALLBACK_TILES, .LancesRoomDoors
 
-	; callbacks
-
-	dbw MAPCALLBACK_TILES, .CheckDoor
-
-.Trigger0:
-	priorityjump LancesRoom_PlayerWalksIn_DoorsCloseBehind
+.LockDoor:
+	priorityjump .LancesDoorLocksBehindYou
 	end
 
-.Trigger1:
+.DummyTrigger:
 	end
 
-.CheckDoor:
+.LancesRoomDoors:
 	checkevent EVENT_LANCES_ROOM_ENTRANCE_CLOSED
-	iffalse .LanceEntranceOpen
+	iffalse .KeepDoorsClosed
 	changeblock $4, $16, $34
-.LanceEntranceOpen:
+.KeepDoorsClosed:
 	checkevent EVENT_LANCES_ROOM_EXIT_OPEN
-	iffalse .LanceExitClosed
+	iffalse .OpenDoors
 	changeblock $4, $0, $b
-.LanceExitClosed:
+.OpenDoors:
 	return
 
-LancesRoom_PlayerWalksIn_DoorsCloseBehind:
+.LancesDoorLocksBehindYou:
 	applymovement PLAYER, LancesRoom_PlayerWalksInMovementData
 	refreshscreen $86
 	playsound SFX_STRENGTH
@@ -364,5 +359,5 @@
 .PersonEvents:
 	db 3
 	person_event SPRITE_LANCE, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, LanceScript_0x180e7b, -1
-	person_event SPRITE_TEACHER, 7, 4, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_LANCES_ROOM_OAK_AND_MARY
+	person_event SPRITE_TEACHER, 7, 4, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_LANCES_ROOM_OAK_AND_MARY
 	person_event SPRITE_OAK, 7, 4, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_LANCES_ROOM_OAK_AND_MARY
--- a/maps/LavRadioTower1F.asm
+++ b/maps/LavRadioTower1F.asm
@@ -240,8 +240,8 @@
 
 .PersonEvents:
 	db 5
-	person_event SPRITE_RECEPTIONIST, 6, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, ReceptionistScript_0x7ee63, -1
-	person_event SPRITE_OFFICER, 1, 15, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, OfficerScript_0x7ee66, -1
-	person_event SPRITE_SUPER_NERD, 3, 1, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x7ee69, -1
+	person_event SPRITE_RECEPTIONIST, 6, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, ReceptionistScript_0x7ee63, -1
+	person_event SPRITE_OFFICER, 1, 15, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, OfficerScript_0x7ee66, -1
+	person_event SPRITE_SUPER_NERD, 3, 1, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x7ee69, -1
 	person_event SPRITE_GENTLEMAN, 1, 9, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x7ee6c, -1
 	person_event SPRITE_SUPER_NERD, 6, 14, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x7eea2, -1
--- a/maps/LavenderMart.asm
+++ b/maps/LavenderMart.asm
@@ -65,5 +65,5 @@
 .PersonEvents:
 	db 3
 	person_event SPRITE_CLERK, 3, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ClerkScript_0x7eb1c, -1
-	person_event SPRITE_POKEFAN_M, 6, 6, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x7eb23, -1
+	person_event SPRITE_POKEFAN_M, 6, 6, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x7eb23, -1
 	person_event SPRITE_ROCKER, 2, 9, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, RockerScript_0x7eb26, -1
--- a/maps/LavenderNameRater.asm
+++ b/maps/LavenderNameRater.asm
@@ -4,14 +4,12 @@
 LavenderNameRater_MapScriptHeader:
 .MapTriggers:
 	db 1
+	maptrigger .DummyTrigger
 
-	; triggers
-	dw UnknownScript_0x7eaf1, 0
-
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x7eaf1:
+.DummyTrigger:
 	end
 
 LavenderNameRater:
@@ -22,8 +20,7 @@
 	closetext
 	end
 
-LavenderNameRaterBookshelf:
-; unused
+LavenderNameRaterUnusedBookshelf:
 	jumpstd difficultbookshelf
 
 LavenderNameRater_MapEventHeader:
@@ -43,4 +40,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_GENTLEMAN, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, LavenderNameRater, -1
+	person_event SPRITE_GENTLEMAN, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, LavenderNameRater, -1
--- a/maps/LavenderPokeCenter1F.asm
+++ /dev/null
@@ -1,104 +1,0 @@
-const_value set 2
-	const LAVENDERPOKECENTER1F_NURSE
-	const LAVENDERPOKECENTER1F_GENTLEMAN
-	const LAVENDERPOKECENTER1F_TEACHER
-	const LAVENDERPOKECENTER1F_YOUNGSTER
-
-LavenderPokeCenter1F_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-NurseScript_0x7e6a0:
-	jumpstd pokecenternurse
-
-GentlemanScript_0x7e6a3:
-	jumptextfaceplayer UnknownText_0x7e6bd
-
-TeacherScript_0x7e6a6:
-	jumptextfaceplayer UnknownText_0x7e710
-
-YoungsterScript_0x7e6a9:
-	faceplayer
-	opentext
-	checkevent EVENT_RETURNED_MACHINE_PART
-	iftrue UnknownScript_0x7e6b7
-	writetext UnknownText_0x7e779
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x7e6b7:
-	writetext UnknownText_0x7e7ed
-	waitbutton
-	closetext
-	end
-
-UnknownText_0x7e6bd:
-	text "To the north of"
-	line "LAVENDER is ROCK"
-
-	para "TUNNEL. Go through"
-	line "it to get to the"
-	cont "POWER PLANT."
-	done
-
-UnknownText_0x7e710:
-	text "There's a radio"
-	line "program that plays"
-	cont "# FLUTE music."
-
-	para "Oh? Ah, your radio"
-	line "needs an EXPN CARD"
-	cont "to tune into it."
-	done
-
-UnknownText_0x7e779:
-	text "If the POWER PLANT"
-	line "isn't running, the"
-
-	para "MAGNET TRAIN won't"
-	line "run either…"
-
-	para "It also means the"
-	line "RADIO STATION"
-	cont "can't broadcast…"
-	done
-
-UnknownText_0x7e7ed:
-	text "The DIRECTOR of"
-	line "the RADIO STATION"
-	cont "sure was happy."
-
-	para "He said they're"
-	line "back on the air"
-
-	para "because the POWER"
-	line "PLANT is running"
-	cont "smoothly again."
-	done
-
-LavenderPokeCenter1F_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 3
-	warp_def $7, $3, 1, LAVENDER_TOWN
-	warp_def $7, $4, 1, LAVENDER_TOWN
-	warp_def $7, $0, 1, POKECENTER_2F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 4
-	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x7e6a0, -1
-	person_event SPRITE_GENTLEMAN, 6, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x7e6a3, -1
-	person_event SPRITE_TEACHER, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, TeacherScript_0x7e6a6, -1
-	person_event SPRITE_YOUNGSTER, 5, 1, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x7e6a9, -1
--- a/maps/LavenderPokeCenter2FBeta.asm
+++ /dev/null
@@ -1,23 +1,0 @@
-LavenderPokeCenter2FBeta_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-LavenderPokeCenter2FBeta_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 1
-	warp_def $7, $0, 3, LAVENDER_POKECENTER_1F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 0
--- /dev/null
+++ b/maps/LavenderPokecenter1F.asm
@@ -1,0 +1,104 @@
+const_value set 2
+	const LAVENDERPOKECENTER1F_NURSE
+	const LAVENDERPOKECENTER1F_GENTLEMAN
+	const LAVENDERPOKECENTER1F_TEACHER
+	const LAVENDERPOKECENTER1F_YOUNGSTER
+
+LavenderPokecenter1F_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+NurseScript_0x7e6a0:
+	jumpstd pokecenternurse
+
+GentlemanScript_0x7e6a3:
+	jumptextfaceplayer UnknownText_0x7e6bd
+
+TeacherScript_0x7e6a6:
+	jumptextfaceplayer UnknownText_0x7e710
+
+YoungsterScript_0x7e6a9:
+	faceplayer
+	opentext
+	checkevent EVENT_RETURNED_MACHINE_PART
+	iftrue UnknownScript_0x7e6b7
+	writetext UnknownText_0x7e779
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x7e6b7:
+	writetext UnknownText_0x7e7ed
+	waitbutton
+	closetext
+	end
+
+UnknownText_0x7e6bd:
+	text "To the north of"
+	line "LAVENDER is ROCK"
+
+	para "TUNNEL. Go through"
+	line "it to get to the"
+	cont "POWER PLANT."
+	done
+
+UnknownText_0x7e710:
+	text "There's a radio"
+	line "program that plays"
+	cont "# FLUTE music."
+
+	para "Oh? Ah, your radio"
+	line "needs an EXPN CARD"
+	cont "to tune into it."
+	done
+
+UnknownText_0x7e779:
+	text "If the POWER PLANT"
+	line "isn't running, the"
+
+	para "MAGNET TRAIN won't"
+	line "run either…"
+
+	para "It also means the"
+	line "RADIO STATION"
+	cont "can't broadcast…"
+	done
+
+UnknownText_0x7e7ed:
+	text "The DIRECTOR of"
+	line "the RADIO STATION"
+	cont "sure was happy."
+
+	para "He said they're"
+	line "back on the air"
+
+	para "because the POWER"
+	line "PLANT is running"
+	cont "smoothly again."
+	done
+
+LavenderPokecenter1F_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 3
+	warp_def $7, $3, 1, LAVENDER_TOWN
+	warp_def $7, $4, 1, LAVENDER_TOWN
+	warp_def $7, $0, 1, POKECENTER_2F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 4
+	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x7e6a0, -1
+	person_event SPRITE_GENTLEMAN, 6, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x7e6a3, -1
+	person_event SPRITE_TEACHER, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, TeacherScript_0x7e6a6, -1
+	person_event SPRITE_YOUNGSTER, 5, 1, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x7e6a9, -1
--- /dev/null
+++ b/maps/LavenderPokecenter2FBeta.asm
@@ -1,0 +1,23 @@
+LavenderPokecenter2FBeta_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+LavenderPokecenter2FBeta_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 1
+	warp_def $7, $0, 3, LAVENDER_POKECENTER_1F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 0
--- a/maps/LavenderTown.asm
+++ b/maps/LavenderTown.asm
@@ -10,8 +10,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
 	dbw MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
@@ -42,7 +40,7 @@
 SoulHouseSign:
 	jumptext SoulHouseSignText
 
-LavenderPokeCenterSignText:
+LavenderPokecenterSignText:
 	jumpstd pokecentersign
 
 LavenderMartSignText:
@@ -130,12 +128,12 @@
 	signpost 7, 15, SIGNPOST_READ, KantoRadioStationSign
 	signpost 9, 3, SIGNPOST_READ, VolunteerPokemonHouseSign
 	signpost 13, 15, SIGNPOST_READ, SoulHouseSign
-	signpost 5, 6, SIGNPOST_READ, LavenderPokeCenterSignText
+	signpost 5, 6, SIGNPOST_READ, LavenderPokecenterSignText
 	signpost 5, 2, SIGNPOST_READ, LavenderMartSignText
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_POKEFAN_M, 7, 12, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x1ad6e4, -1
-	person_event SPRITE_TEACHER, 15, 2, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, TeacherScript_0x1ad6e7, -1
+	person_event SPRITE_POKEFAN_M, 7, 12, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x1ad6e4, -1
+	person_event SPRITE_TEACHER, 15, 2, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, TeacherScript_0x1ad6e7, -1
 	person_event SPRITE_GRAMPS, 12, 14, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GrampsScript_0x1ad6ea, -1
-	person_event SPRITE_YOUNGSTER, 11, 6, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 1, YoungsterScript_0x1ad6ed, -1
+	person_event SPRITE_YOUNGSTER, 11, 6, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 1, YoungsterScript_0x1ad6ed, -1
--- a/maps/LavenderTownSpeechHouse.asm
+++ b/maps/LavenderTownSpeechHouse.asm
@@ -47,4 +47,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_POKEFAN_F, 3, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, PokefanFScript_0x7ea47, -1
+	person_event SPRITE_POKEFAN_F, 3, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, PokefanFScript_0x7ea47, -1
--- a/maps/MahoganyGym.asm
+++ b/maps/MahoganyGym.asm
@@ -76,7 +76,7 @@
 SkierRoxanneScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19a116
+	writetext SkierRoxanneAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -87,7 +87,7 @@
 SkierClarissaScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19a18f
+	writetext SkierClarissaAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -98,7 +98,7 @@
 BoarderRonaldScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x199f2d
+	writetext BoarderRonaldAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -109,7 +109,7 @@
 BoarderBradScript:
 	end_if_just_battled
 	opentext
-	writetext BorderBradTalkText
+	writetext BoarderBradAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -120,7 +120,7 @@
 BoarderDouglasScript:
 	end_if_just_battled
 	opentext
-	writetext BorderDouglasTalkText
+	writetext BoarderDouglasAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -251,7 +251,7 @@
 	line "do a thing."
 	done
 
-UnknownText_0x199f2d:
+BoarderRonaldAfterBattleText:
 	text "I think there's a"
 	line "move a #MON"
 
@@ -276,7 +276,7 @@
 	line "serious we are?"
 	done
 
-BorderBradTalkText:
+BoarderBradAfterBattleText:
 	text "This GYM is great."
 	line "I love boarding"
 	cont "with my #MON!"
@@ -292,7 +292,7 @@
 	line "PRYCE's secret."
 	done
 
-BorderDouglasTalkText:
+BoarderDouglasAfterBattleText:
 	text "The secret behind"
 	line "PRYCE's power…"
 
@@ -316,7 +316,7 @@
 	line "you in skiing!"
 	done
 
-UnknownText_0x19a116:
+SkierRoxanneAfterBattleText:
 	text "If you don't skate"
 	line "with precision,"
 
@@ -334,7 +334,7 @@
 	line "wipe out!"
 	done
 
-UnknownText_0x19a18f:
+SkierClarissaAfterBattleText:
 	text "I shouldn't have"
 	line "been bragging"
 	cont "about my skiing…"
@@ -391,10 +391,10 @@
 
 .PersonEvents:
 	db 7
-	person_event SPRITE_PRYCE, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, PryceScript_0x199a9e, -1
-	person_event SPRITE_BUENA, 6, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerSkierRoxanne, -1
-	person_event SPRITE_ROCKER, 17, 0, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerBoarderRonald, -1
-	person_event SPRITE_BUENA, 17, 9, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerSkierClarissa, -1
-	person_event SPRITE_ROCKER, 9, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerBoarderBrad, -1
-	person_event SPRITE_ROCKER, 4, 2, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerBoarderDouglas, -1
-	person_event SPRITE_GYM_GUY, 15, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, MahoganyGymGuyScript, -1
+	person_event SPRITE_PRYCE, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, PryceScript_0x199a9e, -1
+	person_event SPRITE_BUENA, 6, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 1, TrainerSkierRoxanne, -1
+	person_event SPRITE_ROCKER, 17, 0, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 1, TrainerBoarderRonald, -1
+	person_event SPRITE_BUENA, 17, 9, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 1, TrainerSkierClarissa, -1
+	person_event SPRITE_ROCKER, 9, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 1, TrainerBoarderBrad, -1
+	person_event SPRITE_ROCKER, 4, 2, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 1, TrainerBoarderDouglas, -1
+	person_event SPRITE_GYM_GUY, 15, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, MahoganyGymGuyScript, -1
--- a/maps/MahoganyMart1F.asm
+++ b/maps/MahoganyMart1F.asm
@@ -8,31 +8,26 @@
 MahoganyMart1F_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .LanceUncoversStaircase
 
-	; triggers
-	dw UnknownScript_0x6c356, 0
-	dw UnknownScript_0x6c357, 0
-
 .MapCallbacks:
 	db 1
+	dbw MAPCALLBACK_TILES, .MahoganyMart1FStaircase
 
-	; callbacks
-
-	dbw MAPCALLBACK_TILES, UnknownScript_0x6c35b
-
-UnknownScript_0x6c356:
+.DummyTrigger0:
 	end
 
-UnknownScript_0x6c357:
+.LanceUncoversStaircase:
 	priorityjump UnknownScript_0x6c38f
 	end
 
-UnknownScript_0x6c35b:
+.MahoganyMart1FStaircase:
 	checkevent EVENT_UNCOVERED_STAIRCASE_IN_MAHOGANY_MART
-	iftrue UnknownScript_0x6c362
+	iftrue .ShowStairs
 	return
 
-UnknownScript_0x6c362:
+.ShowStairs:
 	changeblock $6, $2, $1e
 	return
 
--- a/maps/MahoganyPokeCenter1F.asm
+++ /dev/null
@@ -1,77 +1,0 @@
-const_value set 2
-	const MAHOGANYPOKECENTER1F_NURSE
-	const MAHOGANYPOKECENTER1F_POKEFAN_M
-	const MAHOGANYPOKECENTER1F_YOUNGSTER
-	const MAHOGANYPOKECENTER1F_COOLTRAINER_F
-
-MahoganyPokeCenter1F_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-NurseScript_0x19a356:
-	jumpstd pokecenternurse
-
-PokefanMScript_0x19a359:
-	jumptextfaceplayer UnknownText_0x19a362
-
-YoungsterScript_0x19a35c:
-	jumptextfaceplayer UnknownText_0x19a3b3
-
-CooltrainerFScript_0x19a35f:
-	jumptextfaceplayer UnknownText_0x19a418
-
-UnknownText_0x19a362:
-	text "What's this? TEAM"
-	line "ROCKET has come"
-	cont "back?"
-
-	para "I saw some men in"
-	line "black at LAKE OF"
-	cont "RAGE…"
-	done
-
-UnknownText_0x19a3b3:
-	text "I stop my #MON"
-	line "from evolving too"
-	cont "early."
-
-	para "I make them learn"
-	line "certain moves be-"
-	cont "fore I let them"
-	cont "evolve."
-	done
-
-UnknownText_0x19a418:
-	text "#MON do become"
-	line "stronger when they"
-
-	para "evolve, but they"
-	line "also learn moves"
-	cont "more slowly."
-	done
-
-MahoganyPokeCenter1F_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 3
-	warp_def $7, $3, 4, MAHOGANY_TOWN
-	warp_def $7, $4, 4, MAHOGANY_TOWN
-	warp_def $7, $0, 1, POKECENTER_2F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 4
-	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x19a356, -1
-	person_event SPRITE_POKEFAN_M, 2, 7, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x19a359, -1
-	person_event SPRITE_YOUNGSTER, 3, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x19a35c, -1
-	person_event SPRITE_COOLTRAINER_F, 3, 2, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x19a35f, -1
--- /dev/null
+++ b/maps/MahoganyPokecenter1F.asm
@@ -1,0 +1,77 @@
+const_value set 2
+	const MAHOGANYPOKECENTER1F_NURSE
+	const MAHOGANYPOKECENTER1F_POKEFAN_M
+	const MAHOGANYPOKECENTER1F_YOUNGSTER
+	const MAHOGANYPOKECENTER1F_COOLTRAINER_F
+
+MahoganyPokecenter1F_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+NurseScript_0x19a356:
+	jumpstd pokecenternurse
+
+PokefanMScript_0x19a359:
+	jumptextfaceplayer UnknownText_0x19a362
+
+YoungsterScript_0x19a35c:
+	jumptextfaceplayer UnknownText_0x19a3b3
+
+CooltrainerFScript_0x19a35f:
+	jumptextfaceplayer UnknownText_0x19a418
+
+UnknownText_0x19a362:
+	text "What's this? TEAM"
+	line "ROCKET has come"
+	cont "back?"
+
+	para "I saw some men in"
+	line "black at LAKE OF"
+	cont "RAGE…"
+	done
+
+UnknownText_0x19a3b3:
+	text "I stop my #MON"
+	line "from evolving too"
+	cont "early."
+
+	para "I make them learn"
+	line "certain moves be-"
+	cont "fore I let them"
+	cont "evolve."
+	done
+
+UnknownText_0x19a418:
+	text "#MON do become"
+	line "stronger when they"
+
+	para "evolve, but they"
+	line "also learn moves"
+	cont "more slowly."
+	done
+
+MahoganyPokecenter1F_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 3
+	warp_def $7, $3, 4, MAHOGANY_TOWN
+	warp_def $7, $4, 4, MAHOGANY_TOWN
+	warp_def $7, $0, 1, POKECENTER_2F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 4
+	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x19a356, -1
+	person_event SPRITE_POKEFAN_M, 2, 7, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x19a359, -1
+	person_event SPRITE_YOUNGSTER, 3, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x19a35c, -1
+	person_event SPRITE_COOLTRAINER_F, 3, 2, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x19a35f, -1
--- a/maps/MahoganyRedGyaradosSpeechHouse.asm
+++ b/maps/MahoganyRedGyaradosSpeechHouse.asm
@@ -78,4 +78,4 @@
 .PersonEvents:
 	db 2
 	person_event SPRITE_BLACK_BELT, 3, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BlackBeltScript_0x19997f, -1
-	person_event SPRITE_TEACHER, 5, 6, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, TeacherScript_0x199982, -1
+	person_event SPRITE_TEACHER, 5, 6, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, TeacherScript_0x199982, -1
--- a/maps/MahoganyTown.asm
+++ b/maps/MahoganyTown.asm
@@ -7,21 +7,17 @@
 MahoganyTown_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-
 .MapCallbacks:
 	db 1
-
-	; callbacks
 	dbw MAPCALLBACK_NEWMAP, .FlyPoint
 
-.Trigger0:
+.DummyTrigger0:
 	end
 
-.Trigger1:
+.DummyTrigger1:
 	end
 
 .FlyPoint:
@@ -122,7 +118,7 @@
 MahoganyGymSign:
 	jumptext MahoganyGymSignText
 
-MahoganyTownPokeCenterSign:
+MahoganyTownPokecenterSign:
 	jumpstd pokecentersign
 
 MovementData_0x1900a4:
@@ -270,11 +266,11 @@
 	signpost 5, 1, SIGNPOST_READ, MahoganyTownSign
 	signpost 7, 9, SIGNPOST_READ, MahoganyTownRagecandybarSign
 	signpost 13, 3, SIGNPOST_READ, MahoganyGymSign
-	signpost 13, 16, SIGNPOST_READ, MahoganyTownPokeCenterSign
+	signpost 13, 16, SIGNPOST_READ, MahoganyTownPokecenterSign
 
 .PersonEvents:
 	db 4
 	person_event SPRITE_POKEFAN_M, 8, 19, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x19002e, EVENT_MAHOGANY_TOWN_POKEFAN_M_BLOCKS_EAST
 	person_event SPRITE_GRAMPS, 9, 6, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GrampsScript_0x19007e, -1
-	person_event SPRITE_FISHER, 14, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, FisherScript_0x190092, EVENT_MAHOGANY_TOWN_POKEFAN_M_BLOCKS_GYM
+	person_event SPRITE_FISHER, 14, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, FisherScript_0x190092, EVENT_MAHOGANY_TOWN_POKEFAN_M_BLOCKS_GYM
 	person_event SPRITE_LASS, 8, 12, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, LassScript_0x190095, EVENT_MAHOGANY_MART_OWNERS
--- a/maps/MobileBattleRoom.asm
+++ b/maps/MobileBattleRoom.asm
@@ -1,22 +1,20 @@
 MobileBattleRoom_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .InitializeMobileBattleRoom
+	maptrigger .DummyTrigger
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-
 .MapCallbacks:
 	db 0
 
-.Trigger0:
-	priorityjump MobileBattleRoom_Initialize
+.InitializeMobileBattleRoom:
+	priorityjump .InitializeAndPreparePokecenter2F
 	end
 
-.Trigger1:
+.DummyTrigger:
 	end
 
-MobileBattleRoom_Initialize:
+.InitializeAndPreparePokecenter2F:
 	dotrigger $1
 	domaptrigger POKECENTER_2F, $5
 	end
--- a/maps/MobileTradeRoomMobile.asm
+++ b/maps/MobileTradeRoomMobile.asm
@@ -1,22 +1,20 @@
 MobileTradeRoomMobile_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .InitializeMobileTradeRoomMobile
+	maptrigger .DummyTrigger
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-
 .MapCallbacks:
 	db 0
 
-.Trigger0:
-	priorityjump MobileTradeRoomMobile_Initialize
+.InitializeMobileTradeRoomMobile:
+	priorityjump .InitializeAndPreparePokecenter2F
 	end
 
-.Trigger1:
+.DummyTrigger:
 	end
 
-MobileTradeRoomMobile_Initialize:
+.InitializeAndPreparePokecenter2F:
 	dotrigger $1
 	domaptrigger POKECENTER_2F, $4
 	end
--- a/maps/MountMoon.asm
+++ b/maps/MountMoon.asm
@@ -4,19 +4,17 @@
 MountMoon_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .RivalEncounter
+	maptrigger .DummyTrigger
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-
 .MapCallbacks:
 	db 0
 
-.Trigger0:
+.RivalEncounter:
 	priorityjump .RivalBattle
 	end
 
-.Trigger1:
+.DummyTrigger:
 	end
 
 .RivalBattle:
--- a/maps/MountMoonGiftShop.asm
+++ b/maps/MountMoonGiftShop.asm
@@ -44,7 +44,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_GRAMPS, 3, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, 1, 0, PERSONTYPE_SCRIPT, 0, GrampsScript_0x771a8, -1
-	person_event SPRITE_GRAMPS, 2, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, 2, 0, PERSONTYPE_SCRIPT, 0, GrampsScript_0x771a8, -1
-	person_event SPRITE_LASS, 6, 1, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, 1, 0, PERSONTYPE_SCRIPT, 0, LassScript_0x771b0, -1
-	person_event SPRITE_LASS, 4, 5, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, 2, 0, PERSONTYPE_SCRIPT, 0, LassScript_0x771b0, -1
+	person_event SPRITE_GRAMPS, 3, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, MORN, 0, PERSONTYPE_SCRIPT, 0, GrampsScript_0x771a8, -1
+	person_event SPRITE_GRAMPS, 2, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, DAY, 0, PERSONTYPE_SCRIPT, 0, GrampsScript_0x771a8, -1
+	person_event SPRITE_LASS, 6, 1, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, MORN, 0, PERSONTYPE_SCRIPT, 0, LassScript_0x771b0, -1
+	person_event SPRITE_LASS, 4, 5, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, DAY, 0, PERSONTYPE_SCRIPT, 0, LassScript_0x771b0, -1
--- a/maps/MountMoonSquare.asm
+++ b/maps/MountMoonSquare.asm
@@ -6,19 +6,14 @@
 MountMoonSquare_MapScriptHeader:
 .MapTriggers:
 	db 1
+	maptrigger .DummyTrigger
 
-	; triggers
-	dw .Trigger0, 0
-
 .MapCallbacks:
 	db 2
-
-	; callbacks
-
 	dbw MAPCALLBACK_NEWMAP, .DisappearMoonStone
 	dbw MAPCALLBACK_OBJECTS, .DisappearRock
 
-.Trigger0:
+.DummyTrigger:
 	end
 
 .DisappearMoonStone:
--- a/maps/MountMortar1FInside.asm
+++ b/maps/MountMortar1FInside.asm
@@ -23,7 +23,7 @@
 PokemaniacMillerScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x7debd
+	writetext PokemaniacMillerAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -34,7 +34,7 @@
 SupernerdMarkusScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x7df97
+	writetext SupernerdMarkusAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -77,7 +77,7 @@
 	line "kid…?"
 	done
 
-UnknownText_0x7debd:
+PokemaniacMillerAfterBattleText:
 	text "A while back, this"
 	line "karate dude wanted"
 
@@ -103,7 +103,7 @@
 	line "someone else…"
 	done
 
-UnknownText_0x7df97:
+SupernerdMarkusAfterBattleText:
 	text "I came to explore"
 	line "MT.MORTAR, but I"
 
@@ -145,7 +145,7 @@
 	person_event SPRITE_POKE_BALL, 27, 10, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortar1FInsideHyperPotion, EVENT_MOUNT_MORTAR_1F_INSIDE_HYPER_POTION
 	person_event SPRITE_POKE_BALL, 20, 22, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortar1FInsideMaxPotion, EVENT_MOUNT_MORTAR_1F_INSIDE_MAX_POTION
 	person_event SPRITE_POKE_BALL, 19, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortar1FInsideNugget, EVENT_MOUNT_MORTAR_1F_INSIDE_NUGGET
-	person_event SPRITE_SUPER_NERD, 43, 33, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerPokemaniacMiller, -1
-	person_event SPRITE_SUPER_NERD, 28, 24, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 3, TrainerSupernerdMarkus, -1
+	person_event SPRITE_SUPER_NERD, 43, 33, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerPokemaniacMiller, -1
+	person_event SPRITE_SUPER_NERD, 28, 24, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 3, TrainerSupernerdMarkus, -1
 	person_event SPRITE_POKE_BALL, 16, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortar1FInsideIron, EVENT_MOUNT_MORTAR_1F_INSIDE_IRON
 	person_event SPRITE_POKE_BALL, 17, 17, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortar1FInsideUltraBall, EVENT_MOUNT_MORTAR_1F_INSIDE_ULTRA_BALL
--- a/maps/MountMortar2FInside.asm
+++ b/maps/MountMortar2FInside.asm
@@ -20,7 +20,7 @@
 SupernerdHughScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x7e10e
+	writetext SupernerdHughAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -55,7 +55,7 @@
 	text "Sorry, my mistake."
 	done
 
-UnknownText_0x7e10e:
+SupernerdHughAfterBattleText:
 	text "I'm investigating"
 	line "MT.MORTAR, but my"
 	cont "pal's gone AWOL."
@@ -91,4 +91,4 @@
 	person_event SPRITE_POKE_BALL, 5, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortar2FInsideDragonScale, EVENT_MOUNT_MORTAR_2F_INSIDE_DRAGON_SCALE
 	person_event SPRITE_POKE_BALL, 11, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortar2FInsideElixer, EVENT_MOUNT_MORTAR_2F_INSIDE_ELIXER
 	person_event SPRITE_POKE_BALL, 5, 28, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortar2FInsideEscapeRope, EVENT_MOUNT_MORTAR_2F_INSIDE_ESCAPE_ROPE
-	person_event SPRITE_SUPER_NERD, 26, 13, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 2, TrainerSupernerdHugh, -1
+	person_event SPRITE_SUPER_NERD, 26, 13, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 2, TrainerSupernerdHugh, -1
--- a/maps/MountMortarB1F.asm
+++ b/maps/MountMortarB1F.asm
@@ -156,7 +156,7 @@
 	person_event SPRITE_POKE_BALL, 12, 29, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortarB1FHyperPotion, EVENT_MOUNT_MORTAR_B1F_HYPER_POTION
 	person_event SPRITE_POKE_BALL, 16, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortarB1FCarbos, EVENT_MOUNT_MORTAR_B1F_CARBOS
 	person_event SPRITE_BOULDER, 10, 9, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, MountMortarB1FBoulder, -1
-	person_event SPRITE_BLACK_BELT, 4, 16, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, BlackBeltScript_0x7e1f6, -1
+	person_event SPRITE_BLACK_BELT, 4, 16, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, BlackBeltScript_0x7e1f6, -1
 	person_event SPRITE_POKE_BALL, 24, 34, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortarB1FFullRestore, EVENT_MOUNT_MORTAR_B1F_FULL_RESTORE
 	person_event SPRITE_POKE_BALL, 3, 32, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortarB1FMaxEther, EVENT_MOUNT_MORTAR_B1F_MAX_ETHER
 	person_event SPRITE_POKE_BALL, 26, 21, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, MountMortarB1FPPUp, EVENT_MOUNT_MORTAR_B1F_PP_UP
--- a/maps/MrFujisHouse.asm
+++ b/maps/MrFujisHouse.asm
@@ -98,8 +98,8 @@
 
 .PersonEvents:
 	db 5
-	person_event SPRITE_SUPER_NERD, 1, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x7e8ca, -1
+	person_event SPRITE_SUPER_NERD, 1, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x7e8ca, -1
 	person_event SPRITE_LASS, 4, 3, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, LassScript_0x7e8cd, -1
 	person_event SPRITE_RHYDON, 4, 7, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, MrFujisPsyduck, -1
-	person_event SPRITE_GROWLITHE, 5, 5, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, MrFujisNidorino, -1
-	person_event SPRITE_MOLTRES, 3, 1, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, MrFujisPidgey, -1
+	person_event SPRITE_GROWLITHE, 5, 5, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, MrFujisNidorino, -1
+	person_event SPRITE_MOLTRES, 3, 1, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, MrFujisPidgey, -1
--- a/maps/MrPokemonsHouse.asm
+++ b/maps/MrPokemonsHouse.asm
@@ -5,19 +5,17 @@
 MrPokemonsHouse_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .MeetMrPokemon
+	maptrigger .DummyTrigger
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-
 .MapCallbacks:
 	db 0
 
-.Trigger0:
+.MeetMrPokemon:
 	priorityjump .MrPokemonEvent
 	end
 
-.Trigger1:
+.DummyTrigger:
 	end
 
 .MrPokemonEvent:
--- a/maps/MrPsychicsHouse.asm
+++ b/maps/MrPsychicsHouse.asm
@@ -66,4 +66,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_FISHING_GURU, 3, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, MrPsychic, -1
+	person_event SPRITE_FISHING_GURU, 3, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, MrPsychic, -1
--- a/maps/NationalPark.asm
+++ b/maps/NationalPark.asm
@@ -194,7 +194,7 @@
 PokefanmWilliamScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5c645
+	writetext PokefanmWilliamAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -284,7 +284,7 @@
 LassKriseScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5c71d
+	writetext LassKriseAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -454,7 +454,7 @@
 	text "M-my #MON!"
 	done
 
-UnknownText_0x5c645:
+PokefanmWilliamAfterBattleText:
 	text "I lost the battle,"
 	line "but my #MON win"
 
@@ -484,7 +484,7 @@
 	text "…Hmmm…"
 	done
 
-UnknownText_0x5c71d:
+LassKriseAfterBattleText:
 	text "I thought you were"
 	line "staring at me"
 	cont "because I'm cute!"
@@ -537,17 +537,17 @@
 
 .PersonEvents:
 	db 14
-	person_event SPRITE_LASS, 24, 15, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x5c002, -1
+	person_event SPRITE_LASS, 24, 15, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x5c002, -1
 	person_event SPRITE_POKEFAN_F, 4, 14, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, PokefanFScript_0x5c005, -1
-	person_event SPRITE_TEACHER, 40, 27, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, TeacherScript_0x5c008, -1
+	person_event SPRITE_TEACHER, 40, 27, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, TeacherScript_0x5c008, -1
 	person_event SPRITE_YOUNGSTER, 41, 11, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x5c023, -1
-	person_event SPRITE_YOUNGSTER, 41, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x5c026, -1
+	person_event SPRITE_YOUNGSTER, 41, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x5c026, -1
 	person_event SPRITE_TEACHER, 41, 17, SPRITEMOVEDATA_WANDER, 2, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, TeacherScript_0x5c029, -1
 	person_event SPRITE_GROWLITHE, 40, 26, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NationalParkPersian, -1
-	person_event SPRITE_YOUNGSTER, 23, 27, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerSchoolboyJack1, -1
-	person_event SPRITE_POKEFAN_F, 29, 18, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 2, TrainerPokefanfBeverly1, -1
-	person_event SPRITE_POKEFAN_M, 9, 16, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 2, TrainerPokefanmWilliam, -1
-	person_event SPRITE_LASS, 14, 8, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerLassKrise, -1
+	person_event SPRITE_YOUNGSTER, 23, 27, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerSchoolboyJack1, -1
+	person_event SPRITE_POKEFAN_F, 29, 18, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 2, TrainerPokefanfBeverly1, -1
+	person_event SPRITE_POKEFAN_M, 9, 16, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 2, TrainerPokefanmWilliam, -1
+	person_event SPRITE_LASS, 14, 8, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerLassKrise, -1
 	person_event SPRITE_POKE_BALL, 12, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, NationalParkParlyzHeal, EVENT_NATIONAL_PARK_PARLYZ_HEAL
 	person_event SPRITE_GAMEBOY_KID, 6, 26, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GameboyKidScript_0x5c037, -1
 	person_event SPRITE_POKE_BALL, 43, 1, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, NationalParkTMDig, EVENT_NATIONAL_PARK_TM_DIG
--- a/maps/NationalParkBugContest.asm
+++ b/maps/NationalParkBugContest.asm
@@ -244,15 +244,15 @@
 
 .PersonEvents:
 	db 12
-	person_event SPRITE_YOUNGSTER, 29, 19, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x5c8ec, EVENT_BUG_CATCHING_CONTESTANT_1A
-	person_event SPRITE_YOUNGSTER, 22, 28, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x5c8f4, EVENT_BUG_CATCHING_CONTESTANT_2A
-	person_event SPRITE_ROCKER, 18, 9, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, RockerScript_0x5c8fc, EVENT_BUG_CATCHING_CONTESTANT_3A
-	person_event SPRITE_POKEFAN_M, 13, 7, SPRITEMOVEDATA_WALK_UP_DOWN, 0, 1, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x5c904, EVENT_BUG_CATCHING_CONTESTANT_4A
-	person_event SPRITE_YOUNGSTER, 9, 23, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x5c90c, EVENT_BUG_CATCHING_CONTESTANT_5A
-	person_event SPRITE_YOUNGSTER, 13, 27, SPRITEMOVEDATA_WANDER, 3, 3, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x5c914, EVENT_BUG_CATCHING_CONTESTANT_6A
-	person_event SPRITE_LASS, 23, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, LassScript_0x5c91c, EVENT_BUG_CATCHING_CONTESTANT_7A
-	person_event SPRITE_YOUNGSTER, 27, 11, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x5c924, EVENT_BUG_CATCHING_CONTESTANT_8A
-	person_event SPRITE_YOUNGSTER, 8, 16, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x5c92c, EVENT_BUG_CATCHING_CONTESTANT_9A
-	person_event SPRITE_YOUNGSTER, 34, 17, SPRITEMOVEDATA_WANDER, 3, 3, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x5c934, EVENT_BUG_CATCHING_CONTESTANT_10A
+	person_event SPRITE_YOUNGSTER, 29, 19, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x5c8ec, EVENT_BUG_CATCHING_CONTESTANT_1A
+	person_event SPRITE_YOUNGSTER, 22, 28, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x5c8f4, EVENT_BUG_CATCHING_CONTESTANT_2A
+	person_event SPRITE_ROCKER, 18, 9, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, RockerScript_0x5c8fc, EVENT_BUG_CATCHING_CONTESTANT_3A
+	person_event SPRITE_POKEFAN_M, 13, 7, SPRITEMOVEDATA_WALK_UP_DOWN, 0, 1, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x5c904, EVENT_BUG_CATCHING_CONTESTANT_4A
+	person_event SPRITE_YOUNGSTER, 9, 23, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x5c90c, EVENT_BUG_CATCHING_CONTESTANT_5A
+	person_event SPRITE_YOUNGSTER, 13, 27, SPRITEMOVEDATA_WANDER, 3, 3, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x5c914, EVENT_BUG_CATCHING_CONTESTANT_6A
+	person_event SPRITE_LASS, 23, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, LassScript_0x5c91c, EVENT_BUG_CATCHING_CONTESTANT_7A
+	person_event SPRITE_YOUNGSTER, 27, 11, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x5c924, EVENT_BUG_CATCHING_CONTESTANT_8A
+	person_event SPRITE_YOUNGSTER, 8, 16, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x5c92c, EVENT_BUG_CATCHING_CONTESTANT_9A
+	person_event SPRITE_YOUNGSTER, 34, 17, SPRITEMOVEDATA_WANDER, 3, 3, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x5c934, EVENT_BUG_CATCHING_CONTESTANT_10A
 	person_event SPRITE_POKE_BALL, 12, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, NationalParkBugContestParlyzHeal, EVENT_NATIONAL_PARK_PARLYZ_HEAL
 	person_event SPRITE_POKE_BALL, 43, 1, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, NationalParkBugContestTMDig, EVENT_NATIONAL_PARK_TM_DIG
--- a/maps/NewBarkTown.asm
+++ b/maps/NewBarkTown.asm
@@ -6,21 +6,17 @@
 NewBarkTown_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-
 .MapCallbacks:
 	db 1
-
-	; callbacks
 	dbw MAPCALLBACK_NEWMAP, .FlyPoint
 
-.Trigger0:
+.DummyTrigger0:
 	end
 
-.Trigger1:
+.DummyTrigger1:
 	end
 
 .FlyPoint:
@@ -311,5 +307,5 @@
 .PersonEvents:
 	db 3
 	person_event SPRITE_TEACHER, 8, 6, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NewBarkTownTeacherScript, -1
-	person_event SPRITE_FISHER, 9, 12, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, NewBarkTownFisherScript, -1
+	person_event SPRITE_FISHER, 9, 12, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, NewBarkTownFisherScript, -1
 	person_event SPRITE_SILVER, 2, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NewBarkTownSilverScript, EVENT_RIVAL_NEW_BARK_TOWN
--- a/maps/OaksLab.asm
+++ b/maps/OaksLab.asm
@@ -290,6 +290,6 @@
 .PersonEvents:
 	db 4
 	person_event SPRITE_OAK, 2, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Oak, -1
-	person_event SPRITE_SCIENTIST, 8, 1, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, OaksAssistant1Script, -1
-	person_event SPRITE_SCIENTIST, 9, 8, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, OaksAssistant2Script, -1
-	person_event SPRITE_SCIENTIST, 4, 1, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, OaksAssistant3Script, -1
+	person_event SPRITE_SCIENTIST, 8, 1, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, OaksAssistant1Script, -1
+	person_event SPRITE_SCIENTIST, 9, 8, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, OaksAssistant2Script, -1
+	person_event SPRITE_SCIENTIST, 4, 1, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, OaksAssistant3Script, -1
--- a/maps/OlivineCity.asm
+++ b/maps/OlivineCity.asm
@@ -7,21 +7,17 @@
 OlivineCity_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-
 .MapCallbacks:
 	db 1
-
-	; callbacks
 	dbw MAPCALLBACK_NEWMAP, .FlyPoint
 
-.Trigger0:
+.DummyTrigger0:
 	end
 
-.Trigger1:
+.DummyTrigger1:
 	end
 
 .FlyPoint:
@@ -113,7 +109,7 @@
 OlivineCityBattleTowerSign:
 	jumptext OlivineCityBattleTowerSignText
 
-OlivineCityPokeCenterSign:
+OlivineCityPokecenterSign:
 	jumpstd pokecentersign
 
 OlivineCityMartSign:
@@ -321,12 +317,12 @@
 	signpost 11, 7, SIGNPOST_READ, OlivineGymSign
 	signpost 28, 30, SIGNPOST_READ, OlivineLighthouseSign
 	signpost 23, 3, SIGNPOST_READ, OlivineCityBattleTowerSign
-	signpost 21, 14, SIGNPOST_READ, OlivineCityPokeCenterSign
+	signpost 21, 14, SIGNPOST_READ, OlivineCityPokecenterSign
 	signpost 17, 20, SIGNPOST_READ, OlivineCityMartSign
 
 .PersonEvents:
 	db 4
 	person_event SPRITE_SAILOR, 27, 26, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SailorScript_0x1a88a3, -1
-	person_event SPRITE_STANDING_YOUNGSTER, 13, 20, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, StandingYoungsterScript_0x1a88a6, -1
+	person_event SPRITE_STANDING_YOUNGSTER, 13, 20, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, StandingYoungsterScript_0x1a88a6, -1
 	person_event SPRITE_SAILOR, 21, 17, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SailorScript_0x1a88ba, -1
 	person_event SPRITE_OLIVINE_RIVAL, 11, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_RIVAL_OLIVINE_CITY
--- a/maps/OlivineGoodRodHouse.asm
+++ b/maps/OlivineGoodRodHouse.asm
@@ -99,4 +99,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_FISHING_GURU, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, GoodRodGuru, -1
+	person_event SPRITE_FISHING_GURU, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, GoodRodGuru, -1
--- a/maps/OlivineGym.asm
+++ b/maps/OlivineGym.asm
@@ -216,5 +216,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_JASMINE, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, JasmineScript_0x9c12f, EVENT_OLIVINE_GYM_JASMINE
-	person_event SPRITE_GYM_GUY, 13, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, OlivineGymGuyScript, -1
+	person_event SPRITE_JASMINE, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, JasmineScript_0x9c12f, EVENT_OLIVINE_GYM_JASMINE
+	person_event SPRITE_GYM_GUY, 13, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, OlivineGymGuyScript, -1
--- a/maps/OlivineLighthouse2F.asm
+++ b/maps/OlivineLighthouse2F.asm
@@ -15,7 +15,7 @@
 GentlemanAlfredScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5b13e
+	writetext GentlemanAlfredAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -183,7 +183,7 @@
 	line "you're serious."
 	done
 
-UnknownText_0x5b13e:
+GentlemanAlfredAfterBattleText:
 	text "Up top is a #-"
 	line "MON that keeps the"
 	cont "LIGHTHOUSE lit."
@@ -225,5 +225,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_SAILOR, 3, 9, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerSailorHuey1, -1
-	person_event SPRITE_GENTLEMAN, 8, 17, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerGentlemanAlfred, -1
+	person_event SPRITE_SAILOR, 3, 9, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerSailorHuey1, -1
+	person_event SPRITE_GENTLEMAN, 8, 17, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerGentlemanAlfred, -1
--- a/maps/OlivineLighthouse3F.asm
+++ b/maps/OlivineLighthouse3F.asm
@@ -17,7 +17,7 @@
 Bird_keeperTheoScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5b2df
+	writetext Bird_keeperTheoAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -28,7 +28,7 @@
 GentlemanPrestonScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5b457
+	writetext GentlemanPrestonAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -39,7 +39,7 @@
 SailorTerrellScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5b384
+	writetext SailorTerrellAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -60,7 +60,7 @@
 	line "concerned…"
 	done
 
-UnknownText_0x5b2df:
+Bird_keeperTheoAfterBattleText:
 	text "How the heck do"
 	line "you go up?"
 
@@ -82,7 +82,7 @@
 	line "and strong…"
 	done
 
-UnknownText_0x5b384:
+SailorTerrellAfterBattleText:
 	text "Every time I come"
 	line "back to OLIVINE, I"
 	cont "visit the GYM."
@@ -106,7 +106,7 @@
 	line "train some more…"
 	done
 
-UnknownText_0x5b457:
+GentlemanPrestonAfterBattleText:
 	text "JASMINE used to"
 	line "use rock #MON"
 	cont "like ONIX."
@@ -136,7 +136,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_SAILOR, 2, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerSailorTerrell, -1
-	person_event SPRITE_GENTLEMAN, 5, 13, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 4, TrainerGentlemanPreston, -1
-	person_event SPRITE_YOUNGSTER, 9, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerBird_keeperTheo, -1
+	person_event SPRITE_SAILOR, 2, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 1, TrainerSailorTerrell, -1
+	person_event SPRITE_GENTLEMAN, 5, 13, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 4, TrainerGentlemanPreston, -1
+	person_event SPRITE_YOUNGSTER, 9, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerBird_keeperTheo, -1
 	person_event SPRITE_POKE_BALL, 2, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, OlivineLighthouse3FEther, EVENT_OLIVINE_LIGHTHOUSE_3F_ETHER
--- a/maps/OlivineLighthouse4F.asm
+++ b/maps/OlivineLighthouse4F.asm
@@ -15,7 +15,7 @@
 LassConnie1Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5b63c
+	writetext LassConnie1AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -26,7 +26,7 @@
 SailorKentScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5b584
+	writetext SailorKentAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -45,7 +45,7 @@
 	line "smile either…"
 	done
 
-UnknownText_0x5b584:
+SailorKentAfterBattleText:
 	text "Speaking of sick,"
 	line "I've heard there's"
 
@@ -68,7 +68,7 @@
 	text "Aaack! My #MON!"
 	done
 
-UnknownText_0x5b63c:
+LassConnie1AfterBattleText:
 	text "Right. Anybody"
 	line "would be worried"
 	cont "if his or her own"
@@ -106,5 +106,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_SAILOR, 14, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerSailorKent, -1
-	person_event SPRITE_LASS, 2, 11, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerLassConnie, -1
+	person_event SPRITE_SAILOR, 14, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerSailorKent, -1
+	person_event SPRITE_LASS, 2, 11, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 1, TrainerLassConnie, -1
--- a/maps/OlivineLighthouse5F.asm
+++ b/maps/OlivineLighthouse5F.asm
@@ -18,7 +18,7 @@
 Bird_keeperDenisScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x60ac3
+	writetext Bird_keeperDenisAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -29,7 +29,7 @@
 SailorErnestScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x60a1f
+	writetext SailorErnestAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -60,7 +60,7 @@
 	line "overwhelming!"
 	done
 
-UnknownText_0x60a1f:
+SailorErnestAfterBattleText:
 	text "A GYM LEADER isn't"
 	line "just about being"
 
@@ -81,7 +81,7 @@
 	text "Oops…They crashed…"
 	done
 
-UnknownText_0x60ac3:
+Bird_keeperDenisAfterBattleText:
 	text "My #MON learned"
 	line "how to use FLY in"
 	cont "CIANWOOD."
@@ -114,8 +114,8 @@
 
 .PersonEvents:
 	db 5
-	person_event SPRITE_SAILOR, 11, 8, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerSailorErnest, -1
-	person_event SPRITE_YOUNGSTER, 3, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 4, TrainerBird_keeperDenis, -1
+	person_event SPRITE_SAILOR, 11, 8, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerSailorErnest, -1
+	person_event SPRITE_YOUNGSTER, 3, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 4, TrainerBird_keeperDenis, -1
 	person_event SPRITE_POKE_BALL, 12, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, OlivineLighthouse5FRareCandy, EVENT_OLIVINE_LIGHTHOUSE_5F_RARE_CANDY
 	person_event SPRITE_POKE_BALL, 15, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, OlivineLighthouse5FSuperRepel, EVENT_OLIVINE_LIGHTHOUSE_5F_SUPER_REPEL
 	person_event SPRITE_POKE_BALL, 13, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, OlivineLighthouse5FTMSwagger, EVENT_OLIVINE_LIGHTHOUSE_5F_TM_SWAGGER
--- a/maps/OlivineLighthouse6F.asm
+++ b/maps/OlivineLighthouse6F.asm
@@ -275,6 +275,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_JASMINE, 8, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, JasmineScript_0x60b91, EVENT_OLIVINE_LIGHTHOUSE_JASMINE
-	person_event SPRITE_MONSTER, 8, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, MonsterScript_0x60c3a, -1
+	person_event SPRITE_JASMINE, 8, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, JasmineScript_0x60b91, EVENT_OLIVINE_LIGHTHOUSE_JASMINE
+	person_event SPRITE_MONSTER, 8, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, MonsterScript_0x60c3a, -1
 	person_event SPRITE_POKE_BALL, 4, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, OlivineLighthouse6FSuperPotion, EVENT_OLIVINE_LIGHTHOUSE_6F_SUPER_POTION
--- a/maps/OlivineMart.asm
+++ b/maps/OlivineMart.asm
@@ -63,5 +63,5 @@
 .PersonEvents:
 	db 3
 	person_event SPRITE_CLERK, 3, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ClerkScript_0x9cac7, -1
-	person_event SPRITE_COOLTRAINER_F, 2, 6, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x9cace, -1
+	person_event SPRITE_COOLTRAINER_F, 2, 6, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x9cace, -1
 	person_event SPRITE_LASS, 6, 1, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, LassScript_0x9cad1, -1
--- a/maps/OlivinePokeCenter1F.asm
+++ /dev/null
@@ -1,71 +1,0 @@
-const_value set 2
-	const OLIVINEPOKECENTER1F_NURSE
-	const OLIVINEPOKECENTER1F_FISHING_GURU
-	const OLIVINEPOKECENTER1F_FISHER
-	const OLIVINEPOKECENTER1F_TEACHER
-
-OlivinePokeCenter1F_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-NurseScript_0x9c002:
-	jumpstd pokecenternurse
-
-FishingGuruScript_0x9c005:
-	jumpstd happinesschecknpc
-
-FisherScript_0x9c008:
-	jumptextfaceplayer UnknownText_0x9c00e
-
-TeacherScript_0x9c00b:
-	jumptextfaceplayer UnknownText_0x9c086
-
-UnknownText_0x9c00e:
-	text "The SAILOR in the"
-	line "OLIVINE CAFE next"
-
-	para "door is really"
-	line "generous."
-
-	para "He taught my"
-	line "#MON STRENGTH."
-
-	para "Now it can move"
-	line "big boulders."
-	done
-
-UnknownText_0x9c086:
-	text "There's a person"
-	line "in CIANWOOD CITY"
-	cont "across the sea."
-
-	para "I heard him brag-"
-	line "ging about his"
-	cont "rare #MON."
-	done
-
-OlivinePokeCenter1F_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 3
-	warp_def $7, $3, 1, OLIVINE_CITY
-	warp_def $7, $4, 1, OLIVINE_CITY
-	warp_def $7, $0, 1, POKECENTER_2F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 4
-	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x9c002, -1
-	person_event SPRITE_FISHING_GURU, 4, 8, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FishingGuruScript_0x9c005, -1
-	person_event SPRITE_FISHER, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, FisherScript_0x9c008, -1
-	person_event SPRITE_TEACHER, 1, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, TeacherScript_0x9c00b, -1
--- /dev/null
+++ b/maps/OlivinePokecenter1F.asm
@@ -1,0 +1,71 @@
+const_value set 2
+	const OLIVINEPOKECENTER1F_NURSE
+	const OLIVINEPOKECENTER1F_FISHING_GURU
+	const OLIVINEPOKECENTER1F_FISHER
+	const OLIVINEPOKECENTER1F_TEACHER
+
+OlivinePokecenter1F_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+NurseScript_0x9c002:
+	jumpstd pokecenternurse
+
+FishingGuruScript_0x9c005:
+	jumpstd happinesschecknpc
+
+FisherScript_0x9c008:
+	jumptextfaceplayer UnknownText_0x9c00e
+
+TeacherScript_0x9c00b:
+	jumptextfaceplayer UnknownText_0x9c086
+
+UnknownText_0x9c00e:
+	text "The SAILOR in the"
+	line "OLIVINE CAFE next"
+
+	para "door is really"
+	line "generous."
+
+	para "He taught my"
+	line "#MON STRENGTH."
+
+	para "Now it can move"
+	line "big boulders."
+	done
+
+UnknownText_0x9c086:
+	text "There's a person"
+	line "in CIANWOOD CITY"
+	cont "across the sea."
+
+	para "I heard him brag-"
+	line "ging about his"
+	cont "rare #MON."
+	done
+
+OlivinePokecenter1F_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 3
+	warp_def $7, $3, 1, OLIVINE_CITY
+	warp_def $7, $4, 1, OLIVINE_CITY
+	warp_def $7, $0, 1, POKECENTER_2F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 4
+	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x9c002, -1
+	person_event SPRITE_FISHING_GURU, 4, 8, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FishingGuruScript_0x9c005, -1
+	person_event SPRITE_FISHER, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, FisherScript_0x9c008, -1
+	person_event SPRITE_TEACHER, 1, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, TeacherScript_0x9c00b, -1
--- a/maps/OlivinePort.asm
+++ b/maps/OlivinePort.asm
@@ -10,22 +10,20 @@
 OlivinePort_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .LeaveFastShip
 
-	; triggers
-	dw UnknownScript_0x748ac, 0
-	dw UnknownScript_0x748ad, 0
-
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x748ac:
+.DummyTrigger0:
 	end
 
-UnknownScript_0x748ad:
-	priorityjump UnknownScript_0x748b1
+.LeaveFastShip:
+	priorityjump .LeaveFastShipScript
 	end
 
-UnknownScript_0x748b1:
+.LeaveFastShipScript:
 	applymovement PLAYER, MovementData_0x74a32
 	appear OLIVINEPORT_SAILOR1
 	dotrigger $0
--- a/maps/OlivineTimsHouse.asm
+++ b/maps/OlivineTimsHouse.asm
@@ -11,7 +11,7 @@
 Tim:
 	faceplayer
 	opentext
-	trade $2
+	trade NPCTRADE_TIM
 	waitbutton
 	closetext
 	end
@@ -38,4 +38,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_FISHING_GURU, 3, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, Tim, -1
+	person_event SPRITE_FISHING_GURU, 3, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, Tim, -1
--- a/maps/PalletTown.asm
+++ b/maps/PalletTown.asm
@@ -8,8 +8,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
 	dbw MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
@@ -94,4 +92,4 @@
 .PersonEvents:
 	db 2
 	person_event SPRITE_TEACHER, 8, 3, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, 0, PERSONTYPE_SCRIPT, 0, TeacherScript_0x1ac6d5, -1
-	person_event SPRITE_FISHER, 14, 12, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, FisherScript_0x1ac6d8, -1
+	person_event SPRITE_FISHER, 14, 12, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, FisherScript_0x1ac6d8, -1
--- a/maps/PewterCity.asm
+++ b/maps/PewterCity.asm
@@ -11,8 +11,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
 	dbw MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
@@ -58,7 +56,7 @@
 PewterCityWelcomeSign:
 	jumptext PewterCityWelcomeSignText
 
-PewterCityPokeCenterSign:
+PewterCityPokecenterSign:
 	jumpstd pokecentersign
 
 PewterCityMartSign:
@@ -176,13 +174,13 @@
 	signpost 9, 15, SIGNPOST_READ, PewterMuseumSign
 	signpost 19, 33, SIGNPOST_READ, PewterCityMtMoonGiftShopSign
 	signpost 29, 19, SIGNPOST_READ, PewterCityWelcomeSign
-	signpost 25, 14, SIGNPOST_READ, PewterCityPokeCenterSign
+	signpost 25, 14, SIGNPOST_READ, PewterCityPokecenterSign
 	signpost 17, 24, SIGNPOST_READ, PewterCityMartSign
 
 .PersonEvents:
 	db 5
-	person_event SPRITE_COOLTRAINER_F, 11, 19, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x18c009, -1
-	person_event SPRITE_BUG_CATCHER, 29, 14, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, BugCatcherScript_0x18c00c, -1
-	person_event SPRITE_GRAMPS, 17, 29, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, GrampsScript_0x18c00f, -1
+	person_event SPRITE_COOLTRAINER_F, 11, 19, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x18c009, -1
+	person_event SPRITE_BUG_CATCHER, 29, 14, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, BugCatcherScript_0x18c00c, -1
+	person_event SPRITE_GRAMPS, 17, 29, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, GrampsScript_0x18c00f, -1
 	person_event SPRITE_FRUIT_TREE, 3, 32, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x18c03e, -1
 	person_event SPRITE_FRUIT_TREE, 3, 30, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x18c040, -1
--- a/maps/PewterGym.asm
+++ b/maps/PewterGym.asm
@@ -46,7 +46,7 @@
 CamperJerryScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a2c0f
+	writetext CamperJerryAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -166,7 +166,7 @@
 	line "these battles…"
 	done
 
-UnknownText_0x1a2c0f:
+CamperJerryAfterBattleText:
 	text "Hey, you! Trainer"
 	line "from JOHTO! BROCK"
 
@@ -227,6 +227,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_BROCK, 1, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, BrockScript_0x1a2864, -1
-	person_event SPRITE_YOUNGSTER, 5, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerCamperJerry, -1
-	person_event SPRITE_GYM_GUY, 11, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 1, PewterGymGuyScript, -1
+	person_event SPRITE_BROCK, 1, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, BrockScript_0x1a2864, -1
+	person_event SPRITE_YOUNGSTER, 5, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 3, TrainerCamperJerry, -1
+	person_event SPRITE_GYM_GUY, 11, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 1, PewterGymGuyScript, -1
--- a/maps/PewterMart.asm
+++ b/maps/PewterMart.asm
@@ -64,4 +64,4 @@
 	db 3
 	person_event SPRITE_CLERK, 3, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ClerkScript_0x1a2dcb, -1
 	person_event SPRITE_YOUNGSTER, 2, 9, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, 0, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x1a2dd2, -1
-	person_event SPRITE_SUPER_NERD, 6, 6, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x1a2dd5, -1
+	person_event SPRITE_SUPER_NERD, 6, 6, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x1a2dd5, -1
--- a/maps/PewterNidoranSpeechHouse.asm
+++ b/maps/PewterNidoranSpeechHouse.asm
@@ -45,5 +45,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_SUPER_NERD, 5, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x1a2807, -1
-	person_event SPRITE_GROWLITHE, 5, 4, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, PewterNidoran, -1
+	person_event SPRITE_SUPER_NERD, 5, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x1a2807, -1
+	person_event SPRITE_GROWLITHE, 5, 4, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, PewterNidoran, -1
--- a/maps/PewterPokeCenter1F.asm
+++ /dev/null
@@ -1,92 +1,0 @@
-const_value set 2
-	const PEWTERPOKECENTER1F_NURSE
-	const PEWTERPOKECENTER1F_TEACHER
-	const PEWTERPOKECENTER1F_JIGGLYPUFF
-	const PEWTERPOKECENTER1F_BUG_CATCHER
-	const PEWTERPOKECENTER1F_CHRIS
-
-PewterPokeCenter1F_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-NurseScript_0x1a2ee7:
-	jumpstd pokecenternurse
-
-TeacherScript_0x1a2eea:
-	jumptextfaceplayer UnknownText_0x1a2f01
-
-PewterJigglypuff:
-	opentext
-	writetext PewterJigglypuffText
-	cry JIGGLYPUFF
-	waitbutton
-	closetext
-	end
-
-BugCatcherScript_0x1a2ef7:
-	jumptextfaceplayer UnknownText_0x1a2f75
-
-Chris:
-	faceplayer
-	opentext
-	trade $4
-	waitbutton
-	closetext
-	end
-
-UnknownText_0x1a2f01:
-	text "…Yeah, and the"
-	line "GYM in CINNABAR's"
-
-	para "gone. I was really"
-	line "amazed."
-
-	para "…Yes? I'm on the"
-	line "phone. Go away!"
-	done
-
-PewterJigglypuffText:
-	text "JIGGLYPUFF: Puu"
-	line "pupuu."
-	done
-
-UnknownText_0x1a2f75:
-	text "Most #MON get"
-	line "drowsy if they"
-
-	para "hear a JIGGLYPUFF"
-	line "singing."
-
-	para "There are several"
-	line "moves that can be"
-
-	para "used only while a"
-	line "#MON is asleep."
-	done
-
-PewterPokeCenter1F_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 3
-	warp_def $7, $3, 4, PEWTER_CITY
-	warp_def $7, $4, 4, PEWTER_CITY
-	warp_def $7, $0, 1, POKECENTER_2F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 5
-	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x1a2ee7, -1
-	person_event SPRITE_TEACHER, 6, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, TeacherScript_0x1a2eea, -1
-	person_event SPRITE_JIGGLYPUFF, 3, 1, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, PewterJigglypuff, -1
-	person_event SPRITE_BUG_CATCHER, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, BugCatcherScript_0x1a2ef7, -1
-	person_event SPRITE_POKEFAN_M, 2, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, Chris, -1
--- a/maps/PewterPokeCenter2FBeta.asm
+++ /dev/null
@@ -1,23 +1,0 @@
-PewterPokeCenter2FBeta_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-PewterPokeCenter2FBeta_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 1
-	warp_def $7, $0, 3, PEWTER_POKECENTER_1F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 0
--- /dev/null
+++ b/maps/PewterPokecenter1F.asm
@@ -1,0 +1,92 @@
+const_value set 2
+	const PEWTERPOKECENTER1F_NURSE
+	const PEWTERPOKECENTER1F_TEACHER
+	const PEWTERPOKECENTER1F_JIGGLYPUFF
+	const PEWTERPOKECENTER1F_BUG_CATCHER
+	const PEWTERPOKECENTER1F_CHRIS
+
+PewterPokecenter1F_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+NurseScript_0x1a2ee7:
+	jumpstd pokecenternurse
+
+TeacherScript_0x1a2eea:
+	jumptextfaceplayer UnknownText_0x1a2f01
+
+PewterJigglypuff:
+	opentext
+	writetext PewterJigglypuffText
+	cry JIGGLYPUFF
+	waitbutton
+	closetext
+	end
+
+BugCatcherScript_0x1a2ef7:
+	jumptextfaceplayer UnknownText_0x1a2f75
+
+Chris:
+	faceplayer
+	opentext
+	trade NPCTRADE_CHRIS
+	waitbutton
+	closetext
+	end
+
+UnknownText_0x1a2f01:
+	text "…Yeah, and the"
+	line "GYM in CINNABAR's"
+
+	para "gone. I was really"
+	line "amazed."
+
+	para "…Yes? I'm on the"
+	line "phone. Go away!"
+	done
+
+PewterJigglypuffText:
+	text "JIGGLYPUFF: Puu"
+	line "pupuu."
+	done
+
+UnknownText_0x1a2f75:
+	text "Most #MON get"
+	line "drowsy if they"
+
+	para "hear a JIGGLYPUFF"
+	line "singing."
+
+	para "There are several"
+	line "moves that can be"
+
+	para "used only while a"
+	line "#MON is asleep."
+	done
+
+PewterPokecenter1F_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 3
+	warp_def $7, $3, 4, PEWTER_CITY
+	warp_def $7, $4, 4, PEWTER_CITY
+	warp_def $7, $0, 1, POKECENTER_2F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 5
+	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x1a2ee7, -1
+	person_event SPRITE_TEACHER, 6, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, TeacherScript_0x1a2eea, -1
+	person_event SPRITE_JIGGLYPUFF, 3, 1, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, PewterJigglypuff, -1
+	person_event SPRITE_BUG_CATCHER, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, BugCatcherScript_0x1a2ef7, -1
+	person_event SPRITE_POKEFAN_M, 2, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, Chris, -1
--- /dev/null
+++ b/maps/PewterPokecenter2FBeta.asm
@@ -1,0 +1,23 @@
+PewterPokecenter2FBeta_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+PewterPokecenter2FBeta_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 1
+	warp_def $7, $0, 3, PEWTER_POKECENTER_1F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 0
--- a/maps/PewterSnoozeSpeechHouse.asm
+++ b/maps/PewterSnoozeSpeechHouse.asm
@@ -39,4 +39,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_GRAMPS, 3, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, GrampsScript_0x1a3059, -1
+	person_event SPRITE_GRAMPS, 3, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, GrampsScript_0x1a3059, -1
--- a/maps/PokeCenter1F.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-./'./
\ No newline at end of file
--- a/maps/PokeCenter2F.asm
+++ /dev/null
@@ -1,1052 +1,0 @@
-const_value set 2
-	const POKECENTER2F_TRADE_RECEPTIONIST
-	const POKECENTER2F_BATTLE_RECEPTIONIST
-	const POKECENTER2F_TIME_CAPSULE_RECEPTIONIST
-	const POKECENTER2F_OFFICER
-
-PokeCenter2F_MapScriptHeader:
-.MapTriggers:
-	db 6
-
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-	maptrigger .Trigger2
-	maptrigger .Trigger3
-	maptrigger .Trigger4
-	maptrigger .Trigger5
-
-.MapCallbacks:
-	db 0
-
-.Trigger0:
-	special Special_CheckMysteryGift
-	if_equal $0, .Trigger0Done
-	clearevent EVENT_MYSTERY_GIFT_DELIVERY_GUY
-	checkevent EVENT_RECEIVED_BALLS_FROM_KURT
-	iftrue .Trigger0Done
-	priorityjump PokeCenter2F_AppearMysteryGiftDeliveryGuy
-
-.Trigger0Done:
-	end
-
-.Trigger1:
-	priorityjump Script_LeftCableTradeCenter
-	end
-
-.Trigger2:
-	priorityjump Script_LeftCableColosseum
-	end
-
-.Trigger3:
-	priorityjump Script_LeftTimeCapsule
-	end
-
-.Trigger4:
-	priorityjump Script_LeftMobileTradeRoom
-	end
-
-.Trigger5:
-	priorityjump Script_LeftMobileBattleRoom
-	end
-
-PokeCenter2F_AppearMysteryGiftDeliveryGuy:
-	appear POKECENTER2F_OFFICER
-	setevent EVENT_RECEIVED_BALLS_FROM_KURT
-	end
-
-Script_TradeCenterClosed:
-	faceplayer
-	opentext
-	writetext Text_TradeRoomClosed
-	waitbutton
-	closetext
-	end
-
-Script_BattleRoomClosed:
-	faceplayer
-	opentext
-	writetext Text_BattleRoomClosed
-	waitbutton
-	closetext
-	end
-
-LinkReceptionistScript_Trade:
-	checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
-	iffalse Script_TradeCenterClosed
-	opentext
-	writetext Text_TradeReceptionistIntro
-	yesorno
-	iffalse .Cancel
-	special Mobile_DummyReturnFalse ; always returns false
-	iffalse .NoMobile
-	writetext Text_TradeReceptionistMobile
-	special AskMobileOrCable
-	iffalse .Cancel
-	if_equal $1, .Mobile
-.NoMobile:
-	special Special_SetBitsForLinkTradeRequest
-	writetext Text_PleaseWait
-	special Special_WaitForLinkedFriend
-	iffalse .FriendNotReady
-	writetext Text_MustSaveGame
-	yesorno
-	iffalse .DidNotSave
-	special Special_TryQuickSave
-	iffalse .DidNotSave
-	writetext Text_PleaseWait
-	special Special_CheckLinkTimeout
-	iffalse .LinkTimedOut
-	copybytetovar wOtherPlayerLinkMode
-	iffalse .LinkedToFirstGen
-	special Special_CheckBothSelectedSameRoom
-	iffalse .IncompatibleRooms
-	writetext Text_PleaseComeIn2
-	waitbutton
-	closetext
-	scall PokeCenter2F_CheckGender
-	warpcheck
-	end
-
-.FriendNotReady:
-	special WaitForOtherPlayerToExit
-	writetext Text_FriendNotReady
-	closetext
-	end
-
-.LinkedToFirstGen:
-	special Special_FailedLinkToPast
-	writetext Text_CantLinkToThePast
-	special Special_CloseLink
-	closetext
-	end
-
-.IncompatibleRooms:
-	writetext Text_IncompatibleRooms
-	special Special_CloseLink
-	closetext
-	end
-
-.LinkTimedOut:
-	writetext Text_LinkTimedOut
-	jump .AbortLink
-
-.DidNotSave:
-	writetext Text_PleaseComeAgain
-.AbortLink:
-	special WaitForOtherPlayerToExit
-.Cancel:
-	closetext
-	end
-
-.Mobile:
-	scall .Mobile_TrySave
-	iftrue .Mobile_Abort
-	scall BattleTradeMobile_WalkIn
-	warpcheck
-	end
-
-.Mobile_Abort:
-	end
-
-.Mobile_TrySave:
-	writetext Text_MustSaveGame
-	yesorno
-	iffalse .Mobile_DidNotSave
-	special Special_TryQuickSave
-	iffalse .Mobile_DidNotSave
-	special Function1011f1
-	writetext Text_PleaseComeIn2
-	waitbutton
-	closetext
-	writebyte $0
-	end
-
-.Mobile_DidNotSave:
-	writetext Text_PleaseComeAgain
-	closetext
-	writebyte $1
-	end
-
-BattleTradeMobile_WalkIn:
-	applymovement2 PokeCenter2FMobileMobileMovementData_ReceptionistWalksUpAndLeft_LookDown
-	applymovement PLAYER, PokeCenter2FMobileMovementData_PlayerWalksIntoMobileBattleRoom
-	end
-
-LinkReceptionistScript_Battle:
-	checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
-	iffalse Script_BattleRoomClosed
-	opentext
-	writetext Text_BattleReceptionistIntro
-	yesorno
-	iffalse .Cancel
-	special Mobile_DummyReturnFalse ; always returns false
-	iffalse .NoMobile
-	writetext Text_BattleReceptionistMobile
-	special AskMobileOrCable
-	iffalse .Cancel
-	if_equal $1, .Mobile
-.NoMobile:
-	special Special_SetBitsForBattleRequest
-	writetext Text_PleaseWait
-	special Special_WaitForLinkedFriend
-	iffalse .FriendNotReady
-	writetext Text_MustSaveGame
-	yesorno
-	iffalse .DidNotSave
-	special Special_TryQuickSave
-	iffalse .DidNotSave
-	writetext Text_PleaseWait
-	special Special_CheckLinkTimeout
-	iffalse .LinkTimedOut
-	copybytetovar wOtherPlayerLinkMode
-	iffalse .LinkedToFirstGen
-	special Special_CheckBothSelectedSameRoom
-	iffalse .IncompatibleRooms
-	writetext Text_PleaseComeIn2
-	waitbutton
-	closetext
-	scall PokeCenter2F_CheckGender
-	warpcheck
-	end
-
-.FriendNotReady:
-	special WaitForOtherPlayerToExit
-	writetext Text_FriendNotReady
-	closetext
-	end
-
-.LinkedToFirstGen:
-	special Special_FailedLinkToPast
-	writetext Text_CantLinkToThePast
-	special Special_CloseLink
-	closetext
-	end
-
-.IncompatibleRooms:
-	writetext Text_IncompatibleRooms
-	special Special_CloseLink
-	closetext
-	end
-
-.LinkTimedOut:
-	writetext Text_LinkTimedOut
-	jump .AbortLink
-
-.DidNotSave:
-	writetext Text_PleaseComeAgain
-.AbortLink:
-	special WaitForOtherPlayerToExit
-.Cancel:
-	closetext
-	end
-
-.Mobile:
-	scall .SelectThreeMons
-	iffalse .Mobile_Abort
-	scall .Mobile_TrySave
-	iftrue .Mobile_Abort
-	scall BattleTradeMobile_WalkIn
-	warpcheck
-	end
-
-.Mobile_Abort:
-	end
-
-.Mobile_TrySave:
-	writetext Text_MustSaveGame
-	yesorno
-	iffalse .Mobile_DidNotSave
-	special Function103780
-	iffalse .Mobile_DidNotSave
-	special Function1011f1
-	writetext Text_PleaseComeIn2
-	waitbutton
-	closetext
-	writebyte $0
-	end
-
-.Mobile_DidNotSave:
-	writetext Text_PleaseComeAgain
-	closetext
-	writebyte $1
-	end
-
-.SelectThreeMons:
-	special Mobile_SelectThreeMons
-	iffalse .Mobile_DidNotSelect
-	if_equal $1, .Mobile_OK
-	if_equal $2, .Mobile_OK
-	if_equal $3, .Mobile_InvalidParty
-	jump .Mobile_DidNotSelect
-
-.Mobile_InvalidParty:
-	writetext Text_BrokeStadiumRules
-	waitbutton
-.Mobile_DidNotSelect:
-	closetext
-	writebyte $0
-	end
-
-.Mobile_OK:
-	writebyte $1
-	end
-
-Script_TimeCapsuleClosed:
-	faceplayer
-	opentext
-	writetext Text_TimeCapsuleClosed
-	waitbutton
-	closetext
-	end
-
-LinkReceptionistScript_TimeCapsule:
-	checkevent EVENT_MET_BILL
-	iftrue Script_TimeCapsuleClosed
-	checkflag ENGINE_TIME_CAPSULE
-	iftrue Script_TimeCapsuleClosed
-	special Special_SetBitsForTimeCapsuleRequest
-	faceplayer
-	opentext
-	writetext Text_TimeCapsuleReceptionistIntro
-	yesorno
-	iffalse .Cancel
-	special Special_CheckTimeCapsuleCompatibility
-	if_equal $1, .MonTooNew
-	if_equal $2, .MonMoveTooNew
-	if_equal $3, .MonHasMail
-	writetext Text_PleaseWait
-	special Special_WaitForLinkedFriend
-	iffalse .FriendNotReady
-	writetext Text_MustSaveGame
-	yesorno
-	iffalse .DidNotSave
-	special Special_TryQuickSave
-	iffalse .DidNotSave
-	writetext Text_PleaseWait
-	special Special_CheckLinkTimeout
-	iffalse .LinkTimedOut
-	copybytetovar wOtherPlayerLinkMode
-	iffalse .OK
-	special Special_CheckBothSelectedSameRoom
-	writetext Text_IncompatibleRooms
-	special Special_CloseLink
-	closetext
-	end
-
-.OK:
-	special Special_EnterTimeCapsule
-	writetext Text_PleaseComeIn2
-	waitbutton
-	closetext
-	scall TimeCapsuleScript_CheckPlayerGender
-	warpcheck
-	end
-
-.FriendNotReady:
-	special WaitForOtherPlayerToExit
-	writetext Text_FriendNotReady
-	closetext
-	end
-
-.LinkTimedOut:
-	writetext Text_LinkTimedOut
-	jump .Cancel
-
-.DidNotSave:
-	writetext Text_PleaseComeAgain
-.Cancel:
-	special WaitForOtherPlayerToExit
-	closetext
-	end
-
-.MonTooNew:
-	writetext Text_RejectNewMon
-	closetext
-	end
-
-.MonMoveTooNew:
-	writetext Text_RejectMonWithNewMove
-	closetext
-	end
-
-.MonHasMail:
-	writetext Text_RejectMonWithMail
-	closetext
-	end
-
-Script_LeftCableTradeCenter:
-	special WaitForOtherPlayerToExit
-	scall Script_WalkOutOfLinkTradeRoom
-	dotrigger $0
-	domaptrigger TRADE_CENTER, $0
-	end
-
-Script_LeftMobileTradeRoom:
-	special Function101220
-	scall Script_WalkOutOfMobileTradeRoom
-	dotrigger $0
-	domaptrigger MOBILE_TRADE_ROOM_MOBILE, $0
-	end
-
-Script_WalkOutOfMobileTradeRoom:
-	applymovement POKECENTER2F_TRADE_RECEPTIONIST, PokeCenter2FMobileMovementData_ReceptionistWalksUpAndLeft
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerWalksOutOfMobileRoom
-	applymovement POKECENTER2F_TRADE_RECEPTIONIST, PokeCenter2FMobileMovementData_ReceptionistWalksRightAndDown
-	end
-
-Script_LeftCableColosseum:
-	special WaitForOtherPlayerToExit
-	scall Script_WalkOutOfLinkBattleRoom
-	dotrigger $0
-	domaptrigger COLOSSEUM, $0
-	end
-
-Script_LeftMobileBattleRoom:
-	special Function101220
-	scall Script_WalkOutOfMobileBattleRoom
-	dotrigger $0
-	domaptrigger MOBILE_BATTLE_ROOM, $0
-	end
-
-Script_WalkOutOfMobileBattleRoom:
-	applymovement POKECENTER2F_BATTLE_RECEPTIONIST, PokeCenter2FMobileMovementData_ReceptionistWalksUpAndLeft
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerWalksOutOfMobileRoom
-	applymovement POKECENTER2F_BATTLE_RECEPTIONIST, PokeCenter2FMobileMovementData_ReceptionistWalksRightAndDown
-	end
-
-PokeCenter2F_CheckGender:
-	checkflag ENGINE_PLAYER_IS_FEMALE
-	iftrue .Female
-	applymovement2 PokeCenter2FMovementData_ReceptionistWalksUpAndLeft_LookRight
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesThreeStepsUp
-	end
-
-.Female:
-	applymovement2 PokeCenter2FMovementData_ReceptionistWalksUpAndLeft_LookRight_2
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesTwoStepsUp
-	opentext
-	writetext Text_OhPleaseWait
-	waitbutton
-	closetext
-	applymovement2 PokeCenter2FMovementData_ReceptionistLooksRight
-	spriteface PLAYER, LEFT
-	opentext
-	writetext Text_ChangeTheLook
-	waitbutton
-	closetext
-	playsound SFX_TINGLE
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingRight
-	writebyte (1 << 7) | (PAL_OW_RED << 4)
-	special Special_SetPlayerPalette
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingLeft
-	setflag ENGINE_KRIS_IN_CABLE_CLUB
-	special ReplaceKrisSprite
-	opentext
-	writetext Text_LikeTheLook
-	waitbutton
-	closetext
-	showemote EMOTE_SHOCK, PLAYER, 15
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesOneStepUp
-	end
-
-Script_WalkOutOfLinkTradeRoom:
-	checkflag ENGINE_KRIS_IN_CABLE_CLUB
-	iftrue .Female
-	applymovement POKECENTER2F_TRADE_RECEPTIONIST, PokeCenter2FMovementData_ReceptionistStepsRightLooksDown_3
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesThreeStepsDown
-	applymovement POKECENTER2F_TRADE_RECEPTIONIST, PokeCenter2FMovementData_ReceptionistStepsRightAndDown
-	end
-
-.Female:
-	applymovement POKECENTER2F_TRADE_RECEPTIONIST, PokeCenter2FMovementData_ReceptionistStepsRightLooksDown_3
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesOneStepDown_2
-	clearflag ENGINE_KRIS_IN_CABLE_CLUB
-	playsound SFX_TINGLE
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingRight
-	writebyte (1 << 7) | (PAL_OW_BLUE << 4)
-	special Special_SetPlayerPalette
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingLeft
-	special ReplaceKrisSprite
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesTwoStepsDown_2
-	applymovement POKECENTER2F_TRADE_RECEPTIONIST, PokeCenter2FMovementData_ReceptionistStepsRightAndDown
-	end
-
-Script_WalkOutOfLinkBattleRoom:
-	checkflag ENGINE_KRIS_IN_CABLE_CLUB
-	iftrue .Female
-	applymovement POKECENTER2F_BATTLE_RECEPTIONIST, PokeCenter2FMovementData_ReceptionistStepsRightLooksDown_3
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesThreeStepsDown
-	applymovement POKECENTER2F_BATTLE_RECEPTIONIST, PokeCenter2FMovementData_ReceptionistStepsRightAndDown
-	end
-
-.Female:
-	applymovement POKECENTER2F_BATTLE_RECEPTIONIST, PokeCenter2FMovementData_ReceptionistStepsRightLooksDown_3
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesOneStepDown_2
-	clearflag ENGINE_KRIS_IN_CABLE_CLUB
-	playsound SFX_TINGLE
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingRight
-	writebyte (1 << 7) | (PAL_OW_BLUE << 4)
-	special Special_SetPlayerPalette
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingLeft
-	special ReplaceKrisSprite
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesTwoStepsDown_2
-	applymovement POKECENTER2F_BATTLE_RECEPTIONIST, PokeCenter2FMovementData_ReceptionistStepsRightAndDown
-	end
-
-TimeCapsuleScript_CheckPlayerGender:
-	checkflag ENGINE_PLAYER_IS_FEMALE
-	iftrue .Female
-	checkcode VAR_FACING
-	if_equal LEFT, .MaleFacingLeft
-	if_equal RIGHT, .MaleFacingRight
-	applymovement2 PokeCenter2FMovementData_ReceptionistStepsLeftLooksDown
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesTwoStepsUp_2
-	end
-
-.MaleFacingLeft:
-	applymovement2 PokeCenter2FMovementData_ReceptionistStepsLeftLooksDown
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerWalksLeftAndUp
-	end
-
-.MaleFacingRight:
-	applymovement2 PokeCenter2FMovementData_ReceptionistStepsRightLooksDown
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerWalksRightAndUp
-	end
-
-.Female:
-	checkcode VAR_FACING
-	if_equal RIGHT, .FemaleFacingRight
-	if_equal LEFT, .FemaleFacingLeft
-	applymovement2 PokeCenter2FMovementData_ReceptionistStepsLeftLooksRight_2
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesOneStepUp_2
-	jump .FemaleContinue
-
-.FemaleFacingRight:
-	applymovement2 PokeCenter2FMovementData_ReceptionistStepsRightLooksLeft_2
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesOneStepRight
-	jump .FemaleContinue
-
-.FemaleFacingLeft:
-	applymovement2 PokeCenter2FMovementData_ReceptionistStepsLeftLooksRight_2
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesOneStepLeft
-.FemaleContinue:
-	opentext
-	writetext Text_OhPleaseWait
-	waitbutton
-	closetext
-	checkcode VAR_FACING
-	if_not_equal UP, .FemaleChangeApperance
-	spriteface PLAYER, LEFT
-.FemaleChangeApperance:
-	opentext
-	writetext Text_ChangeTheLook
-	waitbutton
-	closetext
-	playsound SFX_TINGLE
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingRight
-	writebyte (1 << 7) | (PAL_OW_RED << 4)
-	special Special_SetPlayerPalette
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingDown
-	faceperson PLAYER, POKECENTER2F_TIME_CAPSULE_RECEPTIONIST
-	setflag ENGINE_KRIS_IN_CABLE_CLUB
-	special ReplaceKrisSprite
-	opentext
-	writetext Text_LikeTheLook
-	waitbutton
-	closetext
-	showemote EMOTE_SHOCK, PLAYER, 15
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesOneStepUp_2
-	end
-
-Script_LeftTimeCapsule:
-	special WaitForOtherPlayerToExit
-	checkflag ENGINE_KRIS_IN_CABLE_CLUB
-	iftrue .Female
-	applymovement POKECENTER2F_TIME_CAPSULE_RECEPTIONIST, PokeCenter2FMovementData_ReceptionistStepsLeftLooksRight
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesTwoStepsDown
-	applymovement POKECENTER2F_TIME_CAPSULE_RECEPTIONIST, PokeCenter2FMovementData_ReceptionistStepsRightLooksDown_2
-	jump .Done
-
-.Female:
-	applymovement POKECENTER2F_TIME_CAPSULE_RECEPTIONIST, PokeCenter2FMovementData_ReceptionistStepsLeftLooksRight
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesOneStepDown
-	clearflag ENGINE_KRIS_IN_CABLE_CLUB
-	playsound SFX_TINGLE
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingRight
-	writebyte (1 << 7) | (PAL_OW_BLUE << 4)
-	special Special_SetPlayerPalette
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingLeft
-	special ReplaceKrisSprite
-	applymovement PLAYER, PokeCenter2FMovementData_PlayerTakesOneStepDown
-	applymovement POKECENTER2F_TIME_CAPSULE_RECEPTIONIST, PokeCenter2FMovementData_ReceptionistStepsRightLooksDown_2
-.Done:
-	dotrigger $0
-	domaptrigger TIME_CAPSULE, $0
-	end
-
-MapPokeCenter2FSignpost0Script:
-	refreshscreen $0
-	special Special_DisplayLinkRecord
-	closetext
-	end
-
-OfficerScript_0x192c9a:
-	faceplayer
-	opentext
-	checkevent EVENT_MYSTERY_GIFT_DELIVERY_GUY
-	iftrue .AlreadyGotGift
-	writetext Text_MysteryGiftDeliveryGuy_Intro
-	yesorno
-	iffalse .RefusedGift
-	writetext Text_MysteryGiftDeliveryGuy_HereYouGo
-	buttonsound
-	waitsfx
-	special Special_GetMysteryGiftItem
-	iffalse .BagIsFull
-	itemnotify
-	setevent EVENT_MYSTERY_GIFT_DELIVERY_GUY
-.AlreadyGotGift:
-	writetext Text_MysteryGiftDeliveryGuy_Outro
-	waitbutton
-	closetext
-	end
-
-.BagIsFull:
-	writetext Text_MysteryGiftDeliveryGuy_NoRoom
-	waitbutton
-	closetext
-	end
-
-.RefusedGift:
-	writetext Text_MysteryGiftDeliveryGuy_SaidNo
-	waitbutton
-	closetext
-	end
-
-PokeCenter2FMovementData_ReceptionistWalksUpAndLeft_LookRight:
-	slow_step UP
-	slow_step LEFT
-	turn_head RIGHT
-	step_end
-
-PokeCenter2FMobileMobileMovementData_ReceptionistWalksUpAndLeft_LookDown:
-	slow_step UP
-	slow_step LEFT
-	turn_head DOWN
-	step_end
-
-PokeCenter2FMovementData_ReceptionistStepsLeftLooksDown:
-	slow_step LEFT
-	turn_head DOWN
-	step_end
-
-PokeCenter2FMovementData_ReceptionistStepsRightLooksDown:
-	slow_step RIGHT
-	turn_head DOWN
-	step_end
-
-PokeCenter2FMovementData_ReceptionistWalksUpAndLeft_LookRight_2:
-	slow_step UP
-	slow_step LEFT
-	turn_head RIGHT
-	step_end
-
-PokeCenter2FMovementData_ReceptionistLooksRight:
-	turn_head RIGHT
-	step_end
-
-PokeCenter2FMovementData_PlayerTakesThreeStepsUp:
-	step UP
-	step UP
-	step UP
-	step_end
-
-PokeCenter2FMovementData_PlayerTakesTwoStepsUp:
-	step UP
-	step UP
-	step_end
-
-PokeCenter2FMovementData_PlayerTakesOneStepUp:
-	step UP
-	step_end
-
-PokeCenter2FMobileMovementData_PlayerWalksIntoMobileBattleRoom:
-	step UP
-	step UP
-	step RIGHT
-	step UP
-	step_end
-
-PokeCenter2FMovementData_PlayerTakesTwoStepsUp_2:
-	step UP
-	step UP
-	step_end
-
-PokeCenter2FMovementData_PlayerWalksLeftAndUp:
-	step LEFT
-	step UP
-	step_end
-
-PokeCenter2FMovementData_PlayerWalksRightAndUp:
-	step RIGHT
-	step UP
-	step_end
-
-PokeCenter2FMovementData_PlayerTakesThreeStepsDown:
-	step DOWN
-	step DOWN
-	step DOWN
-	step_end
-
-PokeCenter2FMovementData_PlayerTakesTwoStepsDown:
-	step DOWN
-	step DOWN
-	step_end
-
-PokeCenter2FMovementData_PlayerTakesOneStepDown:
-	step DOWN
-	step_end
-
-PokeCenter2FMovementData_ReceptionistStepsRightAndDown:
-	slow_step RIGHT
-	slow_step DOWN
-	step_end
-
-PokeCenter2FMovementData_ReceptionistStepsRightLooksDown_2:
-	slow_step RIGHT
-	turn_head DOWN
-	step_end
-
-PokeCenter2FMovementData_ReceptionistStepsRightLooksDown_3:
-	slow_step UP
-	slow_step LEFT
-	turn_head RIGHT
-	step_end
-
-PokeCenter2FMovementData_ReceptionistStepsLeftLooksRight:
-	slow_step LEFT
-	turn_head RIGHT
-	step_end
-
-PokeCenter2FMobileMovementData_ReceptionistWalksUpAndLeft:
-	slow_step UP
-	slow_step LEFT
-	turn_head RIGHT
-	step_end
-
-PokeCenter2FMovementData_PlayerWalksOutOfMobileRoom:
-	step DOWN
-	step LEFT
-	step DOWN
-	step DOWN
-	step_end
-
-PokeCenter2FMobileMovementData_ReceptionistWalksRightAndDown:
-	slow_step RIGHT
-	slow_step DOWN
-	step_end
-
-PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingRight:
-	turn_head DOWN
-	turn_head LEFT
-	turn_head UP
-	turn_head RIGHT
-	step_end
-
-PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingLeft:
-	turn_head DOWN
-	turn_head LEFT
-	turn_head UP
-	turn_head RIGHT
-	turn_head LEFT
-	step_end
-
-PokeCenter2FMovementData_PlayerSpinsClockwiseEndsFacingDown:
-	turn_head DOWN
-	turn_head LEFT
-	turn_head UP
-	turn_head RIGHT
-	turn_head DOWN
-	step_end
-
-PokeCenter2FMovementData_PlayerTakesOneStepDown_2:
-	step DOWN
-	step_end
-
-PokeCenter2FMovementData_PlayerTakesTwoStepsDown_2:
-	step DOWN
-	step DOWN
-	step_end
-
-PokeCenter2FMovementData_PlayerTakesOneStepUp_2:
-	step UP
-	step_end
-
-PokeCenter2FMovementData_PlayerTakesOneStepRight:
-	step RIGHT
-	step_end
-
-PokeCenter2FMovementData_PlayerTakesOneStepLeft:
-	step LEFT
-	step_end
-
-PokeCenter2FMovementData_ReceptionistStepsLeftLooksRight_2:
-	slow_step LEFT
-	turn_head RIGHT
-	step_end
-
-PokeCenter2FMovementData_ReceptionistStepsRightLooksLeft_2:
-	slow_step RIGHT
-	turn_head LEFT
-	step_end
-
-Text_BattleReceptionistMobile:
-	text "Would you like to"
-	line "battle over a GAME"
-
-	para "LINK cable or by"
-	line "mobile phone?"
-	done
-
-Text_TradeReceptionistMobile:
-	text "Would you like to"
-	line "trade over a GAME"
-
-	para "LINK cable or by"
-	line "mobile phone?"
-	done
-
-Text_ThisWayToMobileRoom:
-	text "This way to the"
-	line "MOBILE ROOM."
-	done
-
-Text_BattleReceptionistIntro:
-	text "Welcome to CABLE"
-	line "CLUB COLOSSEUM."
-
-	para "You may battle a"
-	line "friend here."
-
-	para "Would you like to"
-	line "battle?"
-	done
-
-Text_TradeReceptionistIntro:
-	text "Welcome to CABLE"
-	line "TRADE CENTER."
-
-	para "You may trade your"
-	line "#MON here with"
-	cont "a friend."
-
-	para "Would you like to"
-	line "trade?"
-	done
-
-Text_TimeCapsuleReceptionistIntro:
-	text "Welcome to CABLE"
-	line "CLUB TIME CAPSULE."
-
-	para "You can travel to"
-	line "the past and trade"
-	cont "your #MON."
-
-	para "Would you like to"
-	line "trade across time?"
-	done
-
-Text_FriendNotReady:
-	text "Your friend is not"
-	line "ready."
-	prompt
-
-Text_MustSaveGame:
-	text "Before opening the"
-	line "link, you must"
-	cont "save your game."
-	done
-
-Text_PleaseWait:
-	text "Please wait."
-	done
-
-Text_LinkTimedOut:
-	text "The link has been"
-	line "closed because of"
-	cont "inactivity."
-
-	para "Please contact"
-	line "your friend and"
-	cont "come again."
-	prompt
-
-Text_PleaseComeAgain:
-	text "Please come again."
-	prompt
-
-Text_PleaseComeIn:
-	text "Please come in."
-	prompt
-
-Text_TemporaryStagingInLinkRoom:
-	text "We'll put you in"
-	line "the link room for"
-	cont "the time being."
-	done
-
-Text_CantLinkToThePast:
-	text "You can't link to"
-	line "the past here."
-	prompt
-
-Text_IncompatibleRooms:
-	text "Incompatible rooms"
-	line "were chosen."
-	prompt
-
-Text_PleaseComeIn2:
-	text "Please come in."
-	done
-
-Text_PleaseEnter:
-	text "Please enter."
-	prompt
-
-Text_RejectNewMon:
-	text "Sorry--@"
-	text_from_ram StringBuffer1
-	text ""
-	line "can't be taken."
-	prompt
-
-Text_RejectMonWithNewMove:
-	text "You can't take the"
-	line "@"
-	text_from_ram StringBuffer1
-	text " with a"
-	cont "@"
-	text_from_ram StringBuffer2
-	text "."
-	prompt
-
-Text_RejectMonWithMail:
-	text "You can't take the"
-	line "@"
-	text_from_ram StringBuffer1
-	text " that"
-	cont "has MAIL with you."
-	prompt
-
-Text_TimeCapsuleClosed:
-	text "I'm sorry--the"
-	line "TIME CAPSULE is"
-	cont "being adjusted."
-	done
-
-Text_TradeRoomClosed:
-	text "I'm sorry--the"
-	line "TRADE MACHINE is"
-	cont "being adjusted."
-	done
-
-Text_BattleRoomClosed:
-	text "I'm sorry--the"
-	line "BATTLE MACHINE is"
-	cont "being adjusted."
-	done
-
-Text_MysteryGiftDeliveryGuy_Intro:
-	text "Hello! You're"
-	line "<PLAYER>, right?"
-
-	para "I have some-"
-	line "thing for you."
-	done
-
-Text_MysteryGiftDeliveryGuy_HereYouGo:
-	text "Here you go!"
-	done
-
-Text_MysteryGiftDeliveryGuy_Outro:
-	text "We hope to serve"
-	line "you again."
-	done
-
-Text_MysteryGiftDeliveryGuy_NoRoom:
-	text "Oh, you have no"
-	line "space for this."
-
-	para "Stop in at any"
-	line "#MON CENTER"
-
-	para "across the country"
-	line "to pick it up."
-	done
-
-Text_MysteryGiftDeliveryGuy_SaidNo:
-	text "No? That's very"
-	line "strange…"
-	done
-
-Text_OhPleaseWait:
-	text "Oh, please wait."
-	done
-
-Text_ChangeTheLook:
-	text "We need to change"
-	line "the look here…"
-	done
-
-Text_LikeTheLook:
-	text "How does this"
-	line "style look to you?"
-	done
-
-Text_BrokeStadiumRules:
-	text "Excuse me!"
-
-	para "For STADIUM rules,"
-	line "please bring six"
-
-	para "different #MON,"
-	line "excluding EGGS."
-
-	para "The six #MON"
-	line "must be different."
-
-	para "Also, they must"
-	line "not be holding"
-	cont "identical items."
-
-	para "Please come back"
-	line "when you're ready."
-	done
-
-PokeCenter2F_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 6
-	warp_def $7, $0, -1, POKECENTER_2F
-	warp_def $0, $5, 1, TRADE_CENTER
-	warp_def $0, $9, 1, COLOSSEUM
-	warp_def $2, $d, 1, TIME_CAPSULE
-	warp_def $0, $6, 1, MOBILE_TRADE_ROOM_MOBILE
-	warp_def $0, $a, 1, MOBILE_BATTLE_ROOM
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 1
-	signpost 3, 7, SIGNPOST_READ, MapPokeCenter2FSignpost0Script
-
-.PersonEvents:
-	db 4
-	person_event SPRITE_LINK_RECEPTIONIST, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, LinkReceptionistScript_Trade, -1
-	person_event SPRITE_LINK_RECEPTIONIST, 2, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, LinkReceptionistScript_Battle, -1
-	person_event SPRITE_LINK_RECEPTIONIST, 3, 13, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, LinkReceptionistScript_TimeCapsule, -1
-	person_event SPRITE_OFFICER, 1, 1, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, OfficerScript_0x192c9a, EVENT_MYSTERY_GIFT_DELIVERY_GUY
--- a/maps/PokeCenter2F.blk
+++ /dev/null
@@ -1,2 +1,0 @@
-1+
-28(8-)-)
\ No newline at end of file
--- a/maps/PokeSeersHouse.asm
+++ b/maps/PokeSeersHouse.asm
@@ -33,4 +33,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_GRANNY, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, SeerScript, -1
+	person_event SPRITE_GRANNY, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, SeerScript, -1
--- /dev/null
+++ b/maps/Pokecenter1F.blk
@@ -1,0 +1,1 @@
+./'./
\ No newline at end of file
--- /dev/null
+++ b/maps/Pokecenter2F.asm
@@ -1,0 +1,1050 @@
+const_value set 2
+	const POKECENTER2F_TRADE_RECEPTIONIST
+	const POKECENTER2F_BATTLE_RECEPTIONIST
+	const POKECENTER2F_TIME_CAPSULE_RECEPTIONIST
+	const POKECENTER2F_OFFICER
+
+Pokecenter2F_MapScriptHeader:
+.MapTriggers:
+	db 6
+	maptrigger .Trigger0
+	maptrigger .Trigger1
+	maptrigger .Trigger2
+	maptrigger .Trigger3
+	maptrigger .Trigger4
+	maptrigger .Trigger5
+
+.MapCallbacks:
+	db 0
+
+.Trigger0:
+	special Special_CheckMysteryGift
+	if_equal $0, .Trigger0Done
+	clearevent EVENT_MYSTERY_GIFT_DELIVERY_GUY
+	checkevent EVENT_RECEIVED_BALLS_FROM_KURT
+	iftrue .Trigger0Done
+	priorityjump Pokecenter2F_AppearMysteryGiftDeliveryGuy
+
+.Trigger0Done:
+	end
+
+.Trigger1:
+	priorityjump Script_LeftCableTradeCenter
+	end
+
+.Trigger2:
+	priorityjump Script_LeftCableColosseum
+	end
+
+.Trigger3:
+	priorityjump Script_LeftTimeCapsule
+	end
+
+.Trigger4:
+	priorityjump Script_LeftMobileTradeRoom
+	end
+
+.Trigger5:
+	priorityjump Script_LeftMobileBattleRoom
+	end
+
+Pokecenter2F_AppearMysteryGiftDeliveryGuy:
+	appear POKECENTER2F_OFFICER
+	setevent EVENT_RECEIVED_BALLS_FROM_KURT
+	end
+
+Script_TradeCenterClosed:
+	faceplayer
+	opentext
+	writetext Text_TradeRoomClosed
+	waitbutton
+	closetext
+	end
+
+Script_BattleRoomClosed:
+	faceplayer
+	opentext
+	writetext Text_BattleRoomClosed
+	waitbutton
+	closetext
+	end
+
+LinkReceptionistScript_Trade:
+	checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
+	iffalse Script_TradeCenterClosed
+	opentext
+	writetext Text_TradeReceptionistIntro
+	yesorno
+	iffalse .Cancel
+	special Mobile_DummyReturnFalse ; always returns false
+	iffalse .NoMobile
+	writetext Text_TradeReceptionistMobile
+	special AskMobileOrCable
+	iffalse .Cancel
+	if_equal $1, .Mobile
+.NoMobile:
+	special Special_SetBitsForLinkTradeRequest
+	writetext Text_PleaseWait
+	special Special_WaitForLinkedFriend
+	iffalse .FriendNotReady
+	writetext Text_MustSaveGame
+	yesorno
+	iffalse .DidNotSave
+	special Special_TryQuickSave
+	iffalse .DidNotSave
+	writetext Text_PleaseWait
+	special Special_CheckLinkTimeout
+	iffalse .LinkTimedOut
+	copybytetovar wOtherPlayerLinkMode
+	iffalse .LinkedToFirstGen
+	special Special_CheckBothSelectedSameRoom
+	iffalse .IncompatibleRooms
+	writetext Text_PleaseComeIn2
+	waitbutton
+	closetext
+	scall Pokecenter2F_CheckGender
+	warpcheck
+	end
+
+.FriendNotReady:
+	special WaitForOtherPlayerToExit
+	writetext Text_FriendNotReady
+	closetext
+	end
+
+.LinkedToFirstGen:
+	special Special_FailedLinkToPast
+	writetext Text_CantLinkToThePast
+	special Special_CloseLink
+	closetext
+	end
+
+.IncompatibleRooms:
+	writetext Text_IncompatibleRooms
+	special Special_CloseLink
+	closetext
+	end
+
+.LinkTimedOut:
+	writetext Text_LinkTimedOut
+	jump .AbortLink
+
+.DidNotSave:
+	writetext Text_PleaseComeAgain
+.AbortLink:
+	special WaitForOtherPlayerToExit
+.Cancel:
+	closetext
+	end
+
+.Mobile:
+	scall .Mobile_TrySave
+	iftrue .Mobile_Abort
+	scall BattleTradeMobile_WalkIn
+	warpcheck
+	end
+
+.Mobile_Abort:
+	end
+
+.Mobile_TrySave:
+	writetext Text_MustSaveGame
+	yesorno
+	iffalse .Mobile_DidNotSave
+	special Special_TryQuickSave
+	iffalse .Mobile_DidNotSave
+	special Function1011f1
+	writetext Text_PleaseComeIn2
+	waitbutton
+	closetext
+	writebyte $0
+	end
+
+.Mobile_DidNotSave:
+	writetext Text_PleaseComeAgain
+	closetext
+	writebyte $1
+	end
+
+BattleTradeMobile_WalkIn:
+	applymovement2 Pokecenter2FMobileMobileMovementData_ReceptionistWalksUpAndLeft_LookDown
+	applymovement PLAYER, Pokecenter2FMobileMovementData_PlayerWalksIntoMobileBattleRoom
+	end
+
+LinkReceptionistScript_Battle:
+	checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
+	iffalse Script_BattleRoomClosed
+	opentext
+	writetext Text_BattleReceptionistIntro
+	yesorno
+	iffalse .Cancel
+	special Mobile_DummyReturnFalse ; always returns false
+	iffalse .NoMobile
+	writetext Text_BattleReceptionistMobile
+	special AskMobileOrCable
+	iffalse .Cancel
+	if_equal $1, .Mobile
+.NoMobile:
+	special Special_SetBitsForBattleRequest
+	writetext Text_PleaseWait
+	special Special_WaitForLinkedFriend
+	iffalse .FriendNotReady
+	writetext Text_MustSaveGame
+	yesorno
+	iffalse .DidNotSave
+	special Special_TryQuickSave
+	iffalse .DidNotSave
+	writetext Text_PleaseWait
+	special Special_CheckLinkTimeout
+	iffalse .LinkTimedOut
+	copybytetovar wOtherPlayerLinkMode
+	iffalse .LinkedToFirstGen
+	special Special_CheckBothSelectedSameRoom
+	iffalse .IncompatibleRooms
+	writetext Text_PleaseComeIn2
+	waitbutton
+	closetext
+	scall Pokecenter2F_CheckGender
+	warpcheck
+	end
+
+.FriendNotReady:
+	special WaitForOtherPlayerToExit
+	writetext Text_FriendNotReady
+	closetext
+	end
+
+.LinkedToFirstGen:
+	special Special_FailedLinkToPast
+	writetext Text_CantLinkToThePast
+	special Special_CloseLink
+	closetext
+	end
+
+.IncompatibleRooms:
+	writetext Text_IncompatibleRooms
+	special Special_CloseLink
+	closetext
+	end
+
+.LinkTimedOut:
+	writetext Text_LinkTimedOut
+	jump .AbortLink
+
+.DidNotSave:
+	writetext Text_PleaseComeAgain
+.AbortLink:
+	special WaitForOtherPlayerToExit
+.Cancel:
+	closetext
+	end
+
+.Mobile:
+	scall .SelectThreeMons
+	iffalse .Mobile_Abort
+	scall .Mobile_TrySave
+	iftrue .Mobile_Abort
+	scall BattleTradeMobile_WalkIn
+	warpcheck
+	end
+
+.Mobile_Abort:
+	end
+
+.Mobile_TrySave:
+	writetext Text_MustSaveGame
+	yesorno
+	iffalse .Mobile_DidNotSave
+	special Function103780
+	iffalse .Mobile_DidNotSave
+	special Function1011f1
+	writetext Text_PleaseComeIn2
+	waitbutton
+	closetext
+	writebyte $0
+	end
+
+.Mobile_DidNotSave:
+	writetext Text_PleaseComeAgain
+	closetext
+	writebyte $1
+	end
+
+.SelectThreeMons:
+	special Mobile_SelectThreeMons
+	iffalse .Mobile_DidNotSelect
+	if_equal $1, .Mobile_OK
+	if_equal $2, .Mobile_OK
+	if_equal $3, .Mobile_InvalidParty
+	jump .Mobile_DidNotSelect
+
+.Mobile_InvalidParty:
+	writetext Text_BrokeStadiumRules
+	waitbutton
+.Mobile_DidNotSelect:
+	closetext
+	writebyte $0
+	end
+
+.Mobile_OK:
+	writebyte $1
+	end
+
+Script_TimeCapsuleClosed:
+	faceplayer
+	opentext
+	writetext Text_TimeCapsuleClosed
+	waitbutton
+	closetext
+	end
+
+LinkReceptionistScript_TimeCapsule:
+	checkevent EVENT_MET_BILL
+	iftrue Script_TimeCapsuleClosed
+	checkflag ENGINE_TIME_CAPSULE
+	iftrue Script_TimeCapsuleClosed
+	special Special_SetBitsForTimeCapsuleRequest
+	faceplayer
+	opentext
+	writetext Text_TimeCapsuleReceptionistIntro
+	yesorno
+	iffalse .Cancel
+	special Special_CheckTimeCapsuleCompatibility
+	if_equal $1, .MonTooNew
+	if_equal $2, .MonMoveTooNew
+	if_equal $3, .MonHasMail
+	writetext Text_PleaseWait
+	special Special_WaitForLinkedFriend
+	iffalse .FriendNotReady
+	writetext Text_MustSaveGame
+	yesorno
+	iffalse .DidNotSave
+	special Special_TryQuickSave
+	iffalse .DidNotSave
+	writetext Text_PleaseWait
+	special Special_CheckLinkTimeout
+	iffalse .LinkTimedOut
+	copybytetovar wOtherPlayerLinkMode
+	iffalse .OK
+	special Special_CheckBothSelectedSameRoom
+	writetext Text_IncompatibleRooms
+	special Special_CloseLink
+	closetext
+	end
+
+.OK:
+	special Special_EnterTimeCapsule
+	writetext Text_PleaseComeIn2
+	waitbutton
+	closetext
+	scall TimeCapsuleScript_CheckPlayerGender
+	warpcheck
+	end
+
+.FriendNotReady:
+	special WaitForOtherPlayerToExit
+	writetext Text_FriendNotReady
+	closetext
+	end
+
+.LinkTimedOut:
+	writetext Text_LinkTimedOut
+	jump .Cancel
+
+.DidNotSave:
+	writetext Text_PleaseComeAgain
+.Cancel:
+	special WaitForOtherPlayerToExit
+	closetext
+	end
+
+.MonTooNew:
+	writetext Text_RejectNewMon
+	closetext
+	end
+
+.MonMoveTooNew:
+	writetext Text_RejectMonWithNewMove
+	closetext
+	end
+
+.MonHasMail:
+	writetext Text_RejectMonWithMail
+	closetext
+	end
+
+Script_LeftCableTradeCenter:
+	special WaitForOtherPlayerToExit
+	scall Script_WalkOutOfLinkTradeRoom
+	dotrigger $0
+	domaptrigger TRADE_CENTER, $0
+	end
+
+Script_LeftMobileTradeRoom:
+	special Function101220
+	scall Script_WalkOutOfMobileTradeRoom
+	dotrigger $0
+	domaptrigger MOBILE_TRADE_ROOM_MOBILE, $0
+	end
+
+Script_WalkOutOfMobileTradeRoom:
+	applymovement POKECENTER2F_TRADE_RECEPTIONIST, Pokecenter2FMobileMovementData_ReceptionistWalksUpAndLeft
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerWalksOutOfMobileRoom
+	applymovement POKECENTER2F_TRADE_RECEPTIONIST, Pokecenter2FMobileMovementData_ReceptionistWalksRightAndDown
+	end
+
+Script_LeftCableColosseum:
+	special WaitForOtherPlayerToExit
+	scall Script_WalkOutOfLinkBattleRoom
+	dotrigger $0
+	domaptrigger COLOSSEUM, $0
+	end
+
+Script_LeftMobileBattleRoom:
+	special Function101220
+	scall Script_WalkOutOfMobileBattleRoom
+	dotrigger $0
+	domaptrigger MOBILE_BATTLE_ROOM, $0
+	end
+
+Script_WalkOutOfMobileBattleRoom:
+	applymovement POKECENTER2F_BATTLE_RECEPTIONIST, Pokecenter2FMobileMovementData_ReceptionistWalksUpAndLeft
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerWalksOutOfMobileRoom
+	applymovement POKECENTER2F_BATTLE_RECEPTIONIST, Pokecenter2FMobileMovementData_ReceptionistWalksRightAndDown
+	end
+
+Pokecenter2F_CheckGender:
+	checkflag ENGINE_PLAYER_IS_FEMALE
+	iftrue .Female
+	applymovement2 Pokecenter2FMovementData_ReceptionistWalksUpAndLeft_LookRight
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerTakesThreeStepsUp
+	end
+
+.Female:
+	applymovement2 Pokecenter2FMovementData_ReceptionistWalksUpAndLeft_LookRight_2
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerTakesTwoStepsUp
+	opentext
+	writetext Text_OhPleaseWait
+	waitbutton
+	closetext
+	applymovement2 Pokecenter2FMovementData_ReceptionistLooksRight
+	spriteface PLAYER, LEFT
+	opentext
+	writetext Text_ChangeTheLook
+	waitbutton
+	closetext
+	playsound SFX_TINGLE
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerSpinsClockwiseEndsFacingRight
+	writebyte (PAL_NPC_RED << 4)
+	special Special_SetPlayerPalette
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerSpinsClockwiseEndsFacingLeft
+	setflag ENGINE_KRIS_IN_CABLE_CLUB
+	special ReplaceKrisSprite
+	opentext
+	writetext Text_LikeTheLook
+	waitbutton
+	closetext
+	showemote EMOTE_SHOCK, PLAYER, 15
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerTakesOneStepUp
+	end
+
+Script_WalkOutOfLinkTradeRoom:
+	checkflag ENGINE_KRIS_IN_CABLE_CLUB
+	iftrue .Female
+	applymovement POKECENTER2F_TRADE_RECEPTIONIST, Pokecenter2FMovementData_ReceptionistStepsRightLooksDown_3
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerTakesThreeStepsDown
+	applymovement POKECENTER2F_TRADE_RECEPTIONIST, Pokecenter2FMovementData_ReceptionistStepsRightAndDown
+	end
+
+.Female:
+	applymovement POKECENTER2F_TRADE_RECEPTIONIST, Pokecenter2FMovementData_ReceptionistStepsRightLooksDown_3
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerTakesOneStepDown_2
+	clearflag ENGINE_KRIS_IN_CABLE_CLUB
+	playsound SFX_TINGLE
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerSpinsClockwiseEndsFacingRight
+	writebyte (PAL_NPC_BLUE << 4)
+	special Special_SetPlayerPalette
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerSpinsClockwiseEndsFacingLeft
+	special ReplaceKrisSprite
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerTakesTwoStepsDown_2
+	applymovement POKECENTER2F_TRADE_RECEPTIONIST, Pokecenter2FMovementData_ReceptionistStepsRightAndDown
+	end
+
+Script_WalkOutOfLinkBattleRoom:
+	checkflag ENGINE_KRIS_IN_CABLE_CLUB
+	iftrue .Female
+	applymovement POKECENTER2F_BATTLE_RECEPTIONIST, Pokecenter2FMovementData_ReceptionistStepsRightLooksDown_3
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerTakesThreeStepsDown
+	applymovement POKECENTER2F_BATTLE_RECEPTIONIST, Pokecenter2FMovementData_ReceptionistStepsRightAndDown
+	end
+
+.Female:
+	applymovement POKECENTER2F_BATTLE_RECEPTIONIST, Pokecenter2FMovementData_ReceptionistStepsRightLooksDown_3
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerTakesOneStepDown_2
+	clearflag ENGINE_KRIS_IN_CABLE_CLUB
+	playsound SFX_TINGLE
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerSpinsClockwiseEndsFacingRight
+	writebyte (PAL_NPC_BLUE << 4)
+	special Special_SetPlayerPalette
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerSpinsClockwiseEndsFacingLeft
+	special ReplaceKrisSprite
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerTakesTwoStepsDown_2
+	applymovement POKECENTER2F_BATTLE_RECEPTIONIST, Pokecenter2FMovementData_ReceptionistStepsRightAndDown
+	end
+
+TimeCapsuleScript_CheckPlayerGender:
+	checkflag ENGINE_PLAYER_IS_FEMALE
+	iftrue .Female
+	checkcode VAR_FACING
+	if_equal LEFT, .MaleFacingLeft
+	if_equal RIGHT, .MaleFacingRight
+	applymovement2 Pokecenter2FMovementData_ReceptionistStepsLeftLooksDown
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerTakesTwoStepsUp_2
+	end
+
+.MaleFacingLeft:
+	applymovement2 Pokecenter2FMovementData_ReceptionistStepsLeftLooksDown
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerWalksLeftAndUp
+	end
+
+.MaleFacingRight:
+	applymovement2 Pokecenter2FMovementData_ReceptionistStepsRightLooksDown
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerWalksRightAndUp
+	end
+
+.Female:
+	checkcode VAR_FACING
+	if_equal RIGHT, .FemaleFacingRight
+	if_equal LEFT, .FemaleFacingLeft
+	applymovement2 Pokecenter2FMovementData_ReceptionistStepsLeftLooksRight_2
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerTakesOneStepUp_2
+	jump .FemaleContinue
+
+.FemaleFacingRight:
+	applymovement2 Pokecenter2FMovementData_ReceptionistStepsRightLooksLeft_2
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerTakesOneStepRight
+	jump .FemaleContinue
+
+.FemaleFacingLeft:
+	applymovement2 Pokecenter2FMovementData_ReceptionistStepsLeftLooksRight_2
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerTakesOneStepLeft
+.FemaleContinue:
+	opentext
+	writetext Text_OhPleaseWait
+	waitbutton
+	closetext
+	checkcode VAR_FACING
+	if_not_equal UP, .FemaleChangeApperance
+	spriteface PLAYER, LEFT
+.FemaleChangeApperance:
+	opentext
+	writetext Text_ChangeTheLook
+	waitbutton
+	closetext
+	playsound SFX_TINGLE
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerSpinsClockwiseEndsFacingRight
+	writebyte (PAL_NPC_RED << 4)
+	special Special_SetPlayerPalette
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerSpinsClockwiseEndsFacingDown
+	faceperson PLAYER, POKECENTER2F_TIME_CAPSULE_RECEPTIONIST
+	setflag ENGINE_KRIS_IN_CABLE_CLUB
+	special ReplaceKrisSprite
+	opentext
+	writetext Text_LikeTheLook
+	waitbutton
+	closetext
+	showemote EMOTE_SHOCK, PLAYER, 15
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerTakesOneStepUp_2
+	end
+
+Script_LeftTimeCapsule:
+	special WaitForOtherPlayerToExit
+	checkflag ENGINE_KRIS_IN_CABLE_CLUB
+	iftrue .Female
+	applymovement POKECENTER2F_TIME_CAPSULE_RECEPTIONIST, Pokecenter2FMovementData_ReceptionistStepsLeftLooksRight
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerTakesTwoStepsDown
+	applymovement POKECENTER2F_TIME_CAPSULE_RECEPTIONIST, Pokecenter2FMovementData_ReceptionistStepsRightLooksDown_2
+	jump .Done
+
+.Female:
+	applymovement POKECENTER2F_TIME_CAPSULE_RECEPTIONIST, Pokecenter2FMovementData_ReceptionistStepsLeftLooksRight
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerTakesOneStepDown
+	clearflag ENGINE_KRIS_IN_CABLE_CLUB
+	playsound SFX_TINGLE
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerSpinsClockwiseEndsFacingRight
+	writebyte (PAL_NPC_BLUE << 4)
+	special Special_SetPlayerPalette
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerSpinsClockwiseEndsFacingLeft
+	special ReplaceKrisSprite
+	applymovement PLAYER, Pokecenter2FMovementData_PlayerTakesOneStepDown
+	applymovement POKECENTER2F_TIME_CAPSULE_RECEPTIONIST, Pokecenter2FMovementData_ReceptionistStepsRightLooksDown_2
+.Done:
+	dotrigger $0
+	domaptrigger TIME_CAPSULE, $0
+	end
+
+MapPokecenter2FSignpost0Script:
+	refreshscreen $0
+	special Special_DisplayLinkRecord
+	closetext
+	end
+
+OfficerScript_0x192c9a:
+	faceplayer
+	opentext
+	checkevent EVENT_MYSTERY_GIFT_DELIVERY_GUY
+	iftrue .AlreadyGotGift
+	writetext Text_MysteryGiftDeliveryGuy_Intro
+	yesorno
+	iffalse .RefusedGift
+	writetext Text_MysteryGiftDeliveryGuy_HereYouGo
+	buttonsound
+	waitsfx
+	special Special_GetMysteryGiftItem
+	iffalse .BagIsFull
+	itemnotify
+	setevent EVENT_MYSTERY_GIFT_DELIVERY_GUY
+.AlreadyGotGift:
+	writetext Text_MysteryGiftDeliveryGuy_Outro
+	waitbutton
+	closetext
+	end
+
+.BagIsFull:
+	writetext Text_MysteryGiftDeliveryGuy_NoRoom
+	waitbutton
+	closetext
+	end
+
+.RefusedGift:
+	writetext Text_MysteryGiftDeliveryGuy_SaidNo
+	waitbutton
+	closetext
+	end
+
+Pokecenter2FMovementData_ReceptionistWalksUpAndLeft_LookRight:
+	slow_step UP
+	slow_step LEFT
+	turn_head RIGHT
+	step_end
+
+Pokecenter2FMobileMobileMovementData_ReceptionistWalksUpAndLeft_LookDown:
+	slow_step UP
+	slow_step LEFT
+	turn_head DOWN
+	step_end
+
+Pokecenter2FMovementData_ReceptionistStepsLeftLooksDown:
+	slow_step LEFT
+	turn_head DOWN
+	step_end
+
+Pokecenter2FMovementData_ReceptionistStepsRightLooksDown:
+	slow_step RIGHT
+	turn_head DOWN
+	step_end
+
+Pokecenter2FMovementData_ReceptionistWalksUpAndLeft_LookRight_2:
+	slow_step UP
+	slow_step LEFT
+	turn_head RIGHT
+	step_end
+
+Pokecenter2FMovementData_ReceptionistLooksRight:
+	turn_head RIGHT
+	step_end
+
+Pokecenter2FMovementData_PlayerTakesThreeStepsUp:
+	step UP
+	step UP
+	step UP
+	step_end
+
+Pokecenter2FMovementData_PlayerTakesTwoStepsUp:
+	step UP
+	step UP
+	step_end
+
+Pokecenter2FMovementData_PlayerTakesOneStepUp:
+	step UP
+	step_end
+
+Pokecenter2FMobileMovementData_PlayerWalksIntoMobileBattleRoom:
+	step UP
+	step UP
+	step RIGHT
+	step UP
+	step_end
+
+Pokecenter2FMovementData_PlayerTakesTwoStepsUp_2:
+	step UP
+	step UP
+	step_end
+
+Pokecenter2FMovementData_PlayerWalksLeftAndUp:
+	step LEFT
+	step UP
+	step_end
+
+Pokecenter2FMovementData_PlayerWalksRightAndUp:
+	step RIGHT
+	step UP
+	step_end
+
+Pokecenter2FMovementData_PlayerTakesThreeStepsDown:
+	step DOWN
+	step DOWN
+	step DOWN
+	step_end
+
+Pokecenter2FMovementData_PlayerTakesTwoStepsDown:
+	step DOWN
+	step DOWN
+	step_end
+
+Pokecenter2FMovementData_PlayerTakesOneStepDown:
+	step DOWN
+	step_end
+
+Pokecenter2FMovementData_ReceptionistStepsRightAndDown:
+	slow_step RIGHT
+	slow_step DOWN
+	step_end
+
+Pokecenter2FMovementData_ReceptionistStepsRightLooksDown_2:
+	slow_step RIGHT
+	turn_head DOWN
+	step_end
+
+Pokecenter2FMovementData_ReceptionistStepsRightLooksDown_3:
+	slow_step UP
+	slow_step LEFT
+	turn_head RIGHT
+	step_end
+
+Pokecenter2FMovementData_ReceptionistStepsLeftLooksRight:
+	slow_step LEFT
+	turn_head RIGHT
+	step_end
+
+Pokecenter2FMobileMovementData_ReceptionistWalksUpAndLeft:
+	slow_step UP
+	slow_step LEFT
+	turn_head RIGHT
+	step_end
+
+Pokecenter2FMovementData_PlayerWalksOutOfMobileRoom:
+	step DOWN
+	step LEFT
+	step DOWN
+	step DOWN
+	step_end
+
+Pokecenter2FMobileMovementData_ReceptionistWalksRightAndDown:
+	slow_step RIGHT
+	slow_step DOWN
+	step_end
+
+Pokecenter2FMovementData_PlayerSpinsClockwiseEndsFacingRight:
+	turn_head DOWN
+	turn_head LEFT
+	turn_head UP
+	turn_head RIGHT
+	step_end
+
+Pokecenter2FMovementData_PlayerSpinsClockwiseEndsFacingLeft:
+	turn_head DOWN
+	turn_head LEFT
+	turn_head UP
+	turn_head RIGHT
+	turn_head LEFT
+	step_end
+
+Pokecenter2FMovementData_PlayerSpinsClockwiseEndsFacingDown:
+	turn_head DOWN
+	turn_head LEFT
+	turn_head UP
+	turn_head RIGHT
+	turn_head DOWN
+	step_end
+
+Pokecenter2FMovementData_PlayerTakesOneStepDown_2:
+	step DOWN
+	step_end
+
+Pokecenter2FMovementData_PlayerTakesTwoStepsDown_2:
+	step DOWN
+	step DOWN
+	step_end
+
+Pokecenter2FMovementData_PlayerTakesOneStepUp_2:
+	step UP
+	step_end
+
+Pokecenter2FMovementData_PlayerTakesOneStepRight:
+	step RIGHT
+	step_end
+
+Pokecenter2FMovementData_PlayerTakesOneStepLeft:
+	step LEFT
+	step_end
+
+Pokecenter2FMovementData_ReceptionistStepsLeftLooksRight_2:
+	slow_step LEFT
+	turn_head RIGHT
+	step_end
+
+Pokecenter2FMovementData_ReceptionistStepsRightLooksLeft_2:
+	slow_step RIGHT
+	turn_head LEFT
+	step_end
+
+Text_BattleReceptionistMobile:
+	text "Would you like to"
+	line "battle over a GAME"
+
+	para "LINK cable or by"
+	line "mobile phone?"
+	done
+
+Text_TradeReceptionistMobile:
+	text "Would you like to"
+	line "trade over a GAME"
+
+	para "LINK cable or by"
+	line "mobile phone?"
+	done
+
+Text_ThisWayToMobileRoom:
+	text "This way to the"
+	line "MOBILE ROOM."
+	done
+
+Text_BattleReceptionistIntro:
+	text "Welcome to CABLE"
+	line "CLUB COLOSSEUM."
+
+	para "You may battle a"
+	line "friend here."
+
+	para "Would you like to"
+	line "battle?"
+	done
+
+Text_TradeReceptionistIntro:
+	text "Welcome to CABLE"
+	line "TRADE CENTER."
+
+	para "You may trade your"
+	line "#MON here with"
+	cont "a friend."
+
+	para "Would you like to"
+	line "trade?"
+	done
+
+Text_TimeCapsuleReceptionistIntro:
+	text "Welcome to CABLE"
+	line "CLUB TIME CAPSULE."
+
+	para "You can travel to"
+	line "the past and trade"
+	cont "your #MON."
+
+	para "Would you like to"
+	line "trade across time?"
+	done
+
+Text_FriendNotReady:
+	text "Your friend is not"
+	line "ready."
+	prompt
+
+Text_MustSaveGame:
+	text "Before opening the"
+	line "link, you must"
+	cont "save your game."
+	done
+
+Text_PleaseWait:
+	text "Please wait."
+	done
+
+Text_LinkTimedOut:
+	text "The link has been"
+	line "closed because of"
+	cont "inactivity."
+
+	para "Please contact"
+	line "your friend and"
+	cont "come again."
+	prompt
+
+Text_PleaseComeAgain:
+	text "Please come again."
+	prompt
+
+Text_PleaseComeIn:
+	text "Please come in."
+	prompt
+
+Text_TemporaryStagingInLinkRoom:
+	text "We'll put you in"
+	line "the link room for"
+	cont "the time being."
+	done
+
+Text_CantLinkToThePast:
+	text "You can't link to"
+	line "the past here."
+	prompt
+
+Text_IncompatibleRooms:
+	text "Incompatible rooms"
+	line "were chosen."
+	prompt
+
+Text_PleaseComeIn2:
+	text "Please come in."
+	done
+
+Text_PleaseEnter:
+	text "Please enter."
+	prompt
+
+Text_RejectNewMon:
+	text "Sorry--@"
+	text_from_ram StringBuffer1
+	text ""
+	line "can't be taken."
+	prompt
+
+Text_RejectMonWithNewMove:
+	text "You can't take the"
+	line "@"
+	text_from_ram StringBuffer1
+	text " with a"
+	cont "@"
+	text_from_ram StringBuffer2
+	text "."
+	prompt
+
+Text_RejectMonWithMail:
+	text "You can't take the"
+	line "@"
+	text_from_ram StringBuffer1
+	text " that"
+	cont "has MAIL with you."
+	prompt
+
+Text_TimeCapsuleClosed:
+	text "I'm sorry--the"
+	line "TIME CAPSULE is"
+	cont "being adjusted."
+	done
+
+Text_TradeRoomClosed:
+	text "I'm sorry--the"
+	line "TRADE MACHINE is"
+	cont "being adjusted."
+	done
+
+Text_BattleRoomClosed:
+	text "I'm sorry--the"
+	line "BATTLE MACHINE is"
+	cont "being adjusted."
+	done
+
+Text_MysteryGiftDeliveryGuy_Intro:
+	text "Hello! You're"
+	line "<PLAYER>, right?"
+
+	para "I have some-"
+	line "thing for you."
+	done
+
+Text_MysteryGiftDeliveryGuy_HereYouGo:
+	text "Here you go!"
+	done
+
+Text_MysteryGiftDeliveryGuy_Outro:
+	text "We hope to serve"
+	line "you again."
+	done
+
+Text_MysteryGiftDeliveryGuy_NoRoom:
+	text "Oh, you have no"
+	line "space for this."
+
+	para "Stop in at any"
+	line "#MON CENTER"
+
+	para "across the country"
+	line "to pick it up."
+	done
+
+Text_MysteryGiftDeliveryGuy_SaidNo:
+	text "No? That's very"
+	line "strange…"
+	done
+
+Text_OhPleaseWait:
+	text "Oh, please wait."
+	done
+
+Text_ChangeTheLook:
+	text "We need to change"
+	line "the look here…"
+	done
+
+Text_LikeTheLook:
+	text "How does this"
+	line "style look to you?"
+	done
+
+Text_BrokeStadiumRules:
+	text "Excuse me!"
+
+	para "For STADIUM rules,"
+	line "please bring six"
+
+	para "different #MON,"
+	line "excluding EGGS."
+
+	para "The six #MON"
+	line "must be different."
+
+	para "Also, they must"
+	line "not be holding"
+	cont "identical items."
+
+	para "Please come back"
+	line "when you're ready."
+	done
+
+Pokecenter2F_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 6
+	warp_def $7, $0, -1, POKECENTER_2F
+	warp_def $0, $5, 1, TRADE_CENTER
+	warp_def $0, $9, 1, COLOSSEUM
+	warp_def $2, $d, 1, TIME_CAPSULE
+	warp_def $0, $6, 1, MOBILE_TRADE_ROOM_MOBILE
+	warp_def $0, $a, 1, MOBILE_BATTLE_ROOM
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 1
+	signpost 3, 7, SIGNPOST_READ, MapPokecenter2FSignpost0Script
+
+.PersonEvents:
+	db 4
+	person_event SPRITE_LINK_RECEPTIONIST, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, LinkReceptionistScript_Trade, -1
+	person_event SPRITE_LINK_RECEPTIONIST, 2, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, LinkReceptionistScript_Battle, -1
+	person_event SPRITE_LINK_RECEPTIONIST, 3, 13, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, LinkReceptionistScript_TimeCapsule, -1
+	person_event SPRITE_OFFICER, 1, 1, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, OfficerScript_0x192c9a, EVENT_MYSTERY_GIFT_DELIVERY_GUY
--- /dev/null
+++ b/maps/Pokecenter2F.blk
@@ -1,0 +1,2 @@
+1+
+28(8-)-)
\ No newline at end of file
--- a/maps/PokemonFanClub.asm
+++ b/maps/PokemonFanClub.asm
@@ -316,8 +316,8 @@
 .PersonEvents:
 	db 6
 	person_event SPRITE_GENTLEMAN, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x1917e9, -1
-	person_event SPRITE_RECEPTIONIST, 1, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, ReceptionistScript_0x191821, -1
+	person_event SPRITE_RECEPTIONIST, 1, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, ReceptionistScript_0x191821, -1
 	person_event SPRITE_FISHER, 3, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FisherScript_0x191824, -1
 	person_event SPRITE_TEACHER, 2, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, TeacherScript_0x19186b, -1
 	person_event SPRITE_FAIRY, 4, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ClefairyDoll, EVENT_VERMILION_FAN_CLUB_DOLL
-	person_event SPRITE_ODDISH, 3, 7, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, FanClubBayleef, -1
+	person_event SPRITE_ODDISH, 3, 7, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, FanClubBayleef, -1
--- a/maps/PowerPlant.asm
+++ b/maps/PowerPlant.asm
@@ -10,18 +10,16 @@
 PowerPlant_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
 
-	; triggers
-	dw UnknownScript_0x188dc3, 0
-	dw UnknownScript_0x188dc4, 0
-
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x188dc3:
+.DummyTrigger0:
 	end
 
-UnknownScript_0x188dc4:
+.DummyTrigger1:
 	end
 
 PowerPlantGuardPhoneScript:
@@ -193,7 +191,7 @@
 Forest:
 	faceplayer
 	opentext
-	trade $6
+	trade NPCTRADE_FOREST
 	waitbutton
 	closetext
 	end
@@ -410,10 +408,10 @@
 
 .PersonEvents:
 	db 7
-	person_event SPRITE_OFFICER, 14, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, OfficerScript_0x188df5, -1
-	person_event SPRITE_GYM_GUY, 9, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, GymGuyScript_0x188e15, -1
-	person_event SPRITE_GYM_GUY, 11, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, GymGuyScript_0x188e29, -1
-	person_event SPRITE_OFFICER, 3, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, OfficerScript_0x188e3d, -1
-	person_event SPRITE_GYM_GUY, 2, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, GymGuyScript_0x188e51, -1
-	person_event SPRITE_FISHER, 10, 14, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, PowerPlantManager, -1
-	person_event SPRITE_GYM_GUY, 5, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, Forest, -1
+	person_event SPRITE_OFFICER, 14, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, OfficerScript_0x188df5, -1
+	person_event SPRITE_GYM_GUY, 9, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, GymGuyScript_0x188e15, -1
+	person_event SPRITE_GYM_GUY, 11, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, GymGuyScript_0x188e29, -1
+	person_event SPRITE_OFFICER, 3, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, OfficerScript_0x188e3d, -1
+	person_event SPRITE_GYM_GUY, 2, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, GymGuyScript_0x188e51, -1
+	person_event SPRITE_FISHER, 10, 14, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, PowerPlantManager, -1
+	person_event SPRITE_GYM_GUY, 5, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, Forest, -1
--- a/maps/RadioTower1F.asm
+++ b/maps/RadioTower1F.asm
@@ -191,7 +191,7 @@
 GruntM3Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5d5a2
+	writetext GruntM3AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -442,7 +442,7 @@
 	line "must watch you…"
 	done
 
-UnknownText_0x5d5a2:
+GruntM3AfterBattleText:
 	text "You're too strong."
 
 	para "Our plan could be"
@@ -492,9 +492,9 @@
 
 .PersonEvents:
 	db 6
-	person_event SPRITE_RECEPTIONIST, 6, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, ReceptionistScript_0x5cd29, -1
-	person_event SPRITE_LASS, 4, 16, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, LassScript_0x5ce51, EVENT_GOLDENROD_CITY_CIVILIANS
-	person_event SPRITE_YOUNGSTER, 4, 15, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x5ce54, EVENT_GOLDENROD_CITY_CIVILIANS
+	person_event SPRITE_RECEPTIONIST, 6, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, ReceptionistScript_0x5cd29, -1
+	person_event SPRITE_LASS, 4, 16, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, LassScript_0x5ce51, EVENT_GOLDENROD_CITY_CIVILIANS
+	person_event SPRITE_YOUNGSTER, 4, 15, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x5ce54, EVENT_GOLDENROD_CITY_CIVILIANS
 	person_event SPRITE_ROCKET, 1, 14, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 3, TrainerGruntM3, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
-	person_event SPRITE_GENTLEMAN, 6, 8, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x5cd3d, EVENT_GOLDENROD_CITY_CIVILIANS
-	person_event SPRITE_COOLTRAINER_F, 6, 12, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x5cdd5, EVENT_GOLDENROD_CITY_CIVILIANS
+	person_event SPRITE_GENTLEMAN, 6, 8, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x5cd3d, EVENT_GOLDENROD_CITY_CIVILIANS
+	person_event SPRITE_COOLTRAINER_F, 6, 12, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x5cdd5, EVENT_GOLDENROD_CITY_CIVILIANS
--- a/maps/RadioTower2F.asm
+++ b/maps/RadioTower2F.asm
@@ -60,7 +60,7 @@
 GruntM4Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5db07
+	writetext GruntM4AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -71,7 +71,7 @@
 GruntM5Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5db99
+	writetext GruntM5AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -82,7 +82,7 @@
 GruntM6Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5dc00
+	writetext GruntM6AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -93,7 +93,7 @@
 GruntF2Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5dcd0
+	writetext GruntF2AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -402,7 +402,7 @@
 	line "cute!"
 	done
 
-UnknownText_0x5db07:
+GruntM4AfterBattleText:
 	text "We won't let you"
 	line "ruin our plans"
 	cont "for our comeback!"
@@ -422,7 +422,7 @@
 	line "hero?"
 	done
 
-UnknownText_0x5db99:
+GruntM5AfterBattleText:
 	text "We're not always"
 	line "evil. We just do"
 	cont "whatever we like."
@@ -437,7 +437,7 @@
 	text "Arggh. I give up."
 	done
 
-UnknownText_0x5dc00:
+GruntM6AfterBattleText:
 	text "Our EXECUTIVES are"
 	line "trying to take"
 	cont "this place over."
@@ -464,7 +464,7 @@
 	text "Wh-who are you?"
 	done
 
-UnknownText_0x5dcd0:
+GruntF2AfterBattleText:
 	text "You beat me, and"
 	line "I won't forget it!"
 	done
@@ -733,14 +733,14 @@
 
 .PersonEvents:
 	db 11
-	person_event SPRITE_SUPER_NERD, 6, 6, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x5d6fe, EVENT_GOLDENROD_CITY_CIVILIANS
-	person_event SPRITE_TEACHER, 2, 17, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, TeacherScript_0x5d701, -1
+	person_event SPRITE_SUPER_NERD, 6, 6, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x5d6fe, EVENT_GOLDENROD_CITY_CIVILIANS
+	person_event SPRITE_TEACHER, 2, 17, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, TeacherScript_0x5d701, -1
 	person_event SPRITE_ROCKET, 4, 1, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 3, TrainerGruntM4, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_ROCKET, 4, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 3, TrainerGruntM5, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_ROCKET, 1, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 2, TrainerGruntM6, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
-	person_event SPRITE_ROCKET_GIRL, 5, 10, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerGruntF2, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_ROCKET_GIRL, 5, 10, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerGruntF2, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_BLACK_BELT, 1, 0, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BlackBeltScript_0x5d71f, EVENT_RADIO_TOWER_BLACKBELT_BLOCKS_STAIRS
 	person_event SPRITE_BLACK_BELT, 1, 1, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BlackBeltScript_0x5d722, EVENT_RADIO_TOWER_CIVILIANS_AFTER
 	person_event SPRITE_JIGGLYPUFF, 1, 12, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, RadioTowerJigglypuff, -1
-	person_event SPRITE_BUENA, 5, 14, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, Buena, -1
-	person_event SPRITE_RECEPTIONIST, 7, 12, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, ReceptionistScript_0x5d8ff, EVENT_GOLDENROD_CITY_CIVILIANS
+	person_event SPRITE_BUENA, 5, 14, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, Buena, -1
+	person_event SPRITE_RECEPTIONIST, 7, 12, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, ReceptionistScript_0x5d8ff, EVENT_GOLDENROD_CITY_CIVILIANS
--- a/maps/RadioTower3F.asm
+++ b/maps/RadioTower3F.asm
@@ -13,12 +13,9 @@
 
 .MapCallbacks:
 	db 1
+	dbw MAPCALLBACK_TILES, .CardKeyShutterCallback
 
-	; callbacks
-
-	dbw MAPCALLBACK_TILES, CardKeyShutterCallback
-
-CardKeyShutterCallback:
+.CardKeyShutterCallback:
 	checkevent EVENT_USED_THE_CARD_KEY_IN_THE_RADIO_TOWER
 	iftrue .Change
 	return
@@ -91,7 +88,7 @@
 GruntM7Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5e8d0
+	writetext GruntM7AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -102,7 +99,7 @@
 GruntM8Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5e944
+	writetext GruntM8AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -113,7 +110,7 @@
 GruntM9Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5e9d0
+	writetext GruntM9AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -124,7 +121,7 @@
 ScientistMarcScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5ea61
+	writetext ScientistMarcAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -246,7 +243,7 @@
 	text "What?!"
 	done
 
-UnknownText_0x5e8d0:
+GruntM7AfterBattleText:
 	text "I failed in my"
 	line "duties…"
 
@@ -264,7 +261,7 @@
 	text "You're kidding!"
 	done
 
-UnknownText_0x5e944:
+GruntM8AfterBattleText:
 	text "I feel lousy over"
 	line "losing!"
 
@@ -284,7 +281,7 @@
 	text "I'm done for!"
 	done
 
-UnknownText_0x5e9d0:
+GruntM9AfterBattleText:
 	text "What?! You made it"
 	line "past our men in"
 	cont "the UNDERGROUND?"
@@ -304,7 +301,7 @@
 	line "too lightly!"
 	done
 
-UnknownText_0x5ea61:
+ScientistMarcAfterBattleText:
 	text "Bwahahaha…"
 
 	para "I can transmit as"
@@ -352,10 +349,10 @@
 
 .PersonEvents:
 	db 7
-	person_event SPRITE_SUPER_NERD, 4, 7, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x5e553, EVENT_RADIO_TOWER_CIVILIANS_AFTER
-	person_event SPRITE_GYM_GUY, 4, 3, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, GymGuyScript_0x5e556, -1
-	person_event SPRITE_COOLTRAINER_F, 3, 11, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x5e56a, -1
+	person_event SPRITE_SUPER_NERD, 4, 7, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x5e553, EVENT_RADIO_TOWER_CIVILIANS_AFTER
+	person_event SPRITE_GYM_GUY, 4, 3, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, GymGuyScript_0x5e556, -1
+	person_event SPRITE_COOLTRAINER_F, 3, 11, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x5e56a, -1
 	person_event SPRITE_ROCKET, 1, 5, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 2, TrainerGruntM7, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_ROCKET, 2, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 3, TrainerGruntM8, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_ROCKET, 6, 16, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 3, TrainerGruntM9, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
-	person_event SPRITE_SCIENTIST, 6, 9, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 5, TrainerScientistMarc, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_SCIENTIST, 6, 9, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 5, TrainerScientistMarc, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
--- a/maps/RadioTower4F.asm
+++ b/maps/RadioTower4F.asm
@@ -61,7 +61,7 @@
 GruntM10Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5ede2
+	writetext GruntM10AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -72,7 +72,7 @@
 Executivem2Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5ee69
+	writetext Executivem2AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -83,7 +83,7 @@
 GruntF4Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5ef31
+	writetext GruntF4AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -94,7 +94,7 @@
 ScientistRichScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5efcb
+	writetext ScientistRichAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -163,7 +163,7 @@
 	text "No! Unbelievable!"
 	done
 
-UnknownText_0x5ede2:
+GruntM10AfterBattleText:
 	text "I don't believe"
 	line "it! I was beaten!"
 	done
@@ -182,7 +182,7 @@
 	line "down!"
 	done
 
-UnknownText_0x5ee69:
+Executivem2AfterBattleText:
 	text "You've earned my"
 	line "respect, so here's"
 	cont "some advice."
@@ -208,7 +208,7 @@
 	line "useless!"
 	done
 
-UnknownText_0x5ef31:
+GruntF4AfterBattleText:
 	text "I love my"
 	line "beautiful self!"
 
@@ -231,7 +231,7 @@
 	line "come with snags."
 	done
 
-UnknownText_0x5efcb:
+ScientistRichAfterBattleText:
 	text "Do you honestly"
 	line "believe you can"
 	cont "stop TEAM ROCKET?"
@@ -266,10 +266,10 @@
 
 .PersonEvents:
 	db 7
-	person_event SPRITE_FISHER, 4, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, FisherScript_0x5eb82, EVENT_RADIO_TOWER_CIVILIANS_AFTER
-	person_event SPRITE_TEACHER, 6, 14, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, TeacherScript_0x5eb85, -1
-	person_event SPRITE_GROWLITHE, 7, 12, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, RadioTowerMeowth, -1
+	person_event SPRITE_FISHER, 4, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, FisherScript_0x5eb82, EVENT_RADIO_TOWER_CIVILIANS_AFTER
+	person_event SPRITE_TEACHER, 6, 14, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, TeacherScript_0x5eb85, -1
+	person_event SPRITE_GROWLITHE, 7, 12, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, RadioTowerMeowth, -1
 	person_event SPRITE_ROCKET, 6, 5, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 3, TrainerGruntM10, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_ROCKET, 1, 14, SPRITEMOVEDATA_STANDING_LEFT, 0, 2, -1, -1, 0, PERSONTYPE_TRAINER, 2, TrainerExecutivem2, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
-	person_event SPRITE_ROCKET_GIRL, 4, 12, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerGruntF4, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
-	person_event SPRITE_SCIENTIST, 2, 4, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 4, TrainerScientistRich, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_ROCKET_GIRL, 4, 12, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 1, TrainerGruntF4, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_SCIENTIST, 2, 4, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 4, TrainerScientistRich, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
--- a/maps/RadioTower5F.asm
+++ b/maps/RadioTower5F.asm
@@ -8,22 +8,20 @@
 RadioTower5F_MapScriptHeader:
 .MapTriggers:
 	db 3
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
+	maptrigger .DummyTrigger2
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-	maptrigger .Trigger2
-
 .MapCallbacks:
 	db 0
 
-.Trigger0:
+.DummyTrigger0:
 	end
 
-.Trigger1:
+.DummyTrigger1:
 	end
 
-.Trigger2:
+.DummyTrigger2:
 	end
 
 FakeDirectorScript:
@@ -75,7 +73,7 @@
 Executivef1Script:
 	end_if_just_battled
 	opentext
-	writetext Executivef1AfterText
+	writetext Executivef1AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -258,7 +256,7 @@
 	line "I still lost…"
 	done
 
-Executivef1AfterText:
+Executivef1AfterBattleText:
 	text "<PLAYER>, isn't it?"
 
 	para "A brat like you"
@@ -448,6 +446,6 @@
 	db 5
 	person_event SPRITE_GENTLEMAN, 6, 3, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Director, -1
 	person_event SPRITE_ROCKET, 5, 13, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
-	person_event SPRITE_ROCKET_GIRL, 2, 17, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerExecutivef1, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
-	person_event SPRITE_ROCKER, 5, 13, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, Ben, EVENT_RADIO_TOWER_CIVILIANS_AFTER
+	person_event SPRITE_ROCKET_GIRL, 2, 17, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 1, TrainerExecutivef1, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_ROCKER, 5, 13, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, Ben, EVENT_RADIO_TOWER_CIVILIANS_AFTER
 	person_event SPRITE_POKE_BALL, 5, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RadioTower5FUltraBall, EVENT_RADIO_TOWER_5F_ULTRA_BALL
--- a/maps/RedsHouse1F.asm
+++ b/maps/RedsHouse1F.asm
@@ -4,14 +4,12 @@
 RedsHouse1F_MapScriptHeader:
 .MapTriggers:
 	db 1
+	maptrigger .DummyTrigger
 
-	; triggers
-	dw .Trigger, 0
-
 .MapCallbacks:
 	db 0
 
-.Trigger:
+.DummyTrigger:
 	end
 
 RedsMom:
--- a/maps/Route1.asm
+++ b/maps/Route1.asm
@@ -16,7 +16,7 @@
 SchoolboyDannyScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ac5d7
+	writetext SchoolboyDannyAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -27,7 +27,7 @@
 CooltrainerfQuinnScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ac640
+	writetext CooltrainerfQuinnAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -49,7 +49,7 @@
 	line "losing record…"
 	done
 
-UnknownText_0x1ac5d7:
+SchoolboyDannyAfterBattleText:
 	text "For trainers, it's"
 	line "a given that we'll"
 
@@ -66,7 +66,7 @@
 	text "Down and out…"
 	done
 
-UnknownText_0x1ac640:
+CooltrainerfQuinnAfterBattleText:
 	text "You're strong."
 
 	para "You obviously must"
@@ -96,6 +96,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_YOUNGSTER, 12, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 4, TrainerSchoolboyDanny, -1
-	person_event SPRITE_COOLTRAINER_F, 25, 9, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 2, TrainerCooltrainerfQuinn, -1
+	person_event SPRITE_YOUNGSTER, 12, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 4, TrainerSchoolboyDanny, -1
+	person_event SPRITE_COOLTRAINER_F, 25, 9, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 2, TrainerCooltrainerfQuinn, -1
 	person_event SPRITE_FRUIT_TREE, 7, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x1ac581, -1
--- a/maps/Route10North.asm
+++ b/maps/Route10North.asm
@@ -8,7 +8,7 @@
 PowerPlantSign:
 	jumptext PowerPlantSignText
 
-Route10PokeCenterSign:
+Route10PokecenterSign:
 	jumpstd pokecentersign
 
 PowerPlantSignText:
@@ -30,7 +30,7 @@
 .Signposts:
 	db 2
 	signpost 11, 5, SIGNPOST_READ, PowerPlantSign
-	signpost 1, 12, SIGNPOST_READ, Route10PokeCenterSign
+	signpost 1, 12, SIGNPOST_READ, Route10PokecenterSign
 
 .PersonEvents:
 	db 0
--- a/maps/Route10PokeCenter1F.asm
+++ /dev/null
@@ -1,104 +1,0 @@
-const_value set 2
-	const ROUTE10POKECENTER1F_NURSE
-	const ROUTE10POKECENTER1F_GENTLEMAN
-	const ROUTE10POKECENTER1F_GYM_GUY
-	const ROUTE10POKECENTER1F_COOLTRAINER_F
-
-Route10PokeCenter1F_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-NurseScript_0x188bd4:
-	jumpstd pokecenternurse
-
-GentlemanScript_0x188bd7:
-	jumptextfaceplayer UnknownText_0x188bf1
-
-GymGuyScript_0x188bda:
-	faceplayer
-	opentext
-	checkevent EVENT_RETURNED_MACHINE_PART
-	iftrue UnknownScript_0x188be8
-	writetext UnknownText_0x188c26
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x188be8:
-	writetext UnknownText_0x188c9e
-	waitbutton
-	closetext
-	end
-
-CooltrainerFScript_0x188bee:
-	jumptextfaceplayer UnknownText_0x188d0c
-
-UnknownText_0x188bf1:
-	text "A #MON CENTER"
-	line "near a cave?"
-
-	para "That's mighty"
-	line "convenient."
-	done
-
-UnknownText_0x188c26:
-	text "The POWER PLANT's"
-	line "MANAGER is looking"
-
-	para "for a strong #-"
-	line "MON trainer."
-
-	para "He needs help"
-	line "getting back"
-
-	para "something that"
-	line "was stolen."
-	done
-
-UnknownText_0x188c9e:
-	text "I hear TEAM ROCKET"
-	line "got back together"
-
-	para "in JOHTO but fell"
-	line "apart right away."
-
-	para "I didn't know any-"
-	line "thing about that."
-	done
-
-UnknownText_0x188d0c:
-	text "When you go out-"
-	line "side, you can see"
-
-	para "the roof of a big"
-	line "building."
-
-	para "That's the POWER"
-	line "PLANT."
-	done
-
-Route10PokeCenter1F_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 3
-	warp_def $7, $3, 1, ROUTE_10_NORTH
-	warp_def $7, $4, 1, ROUTE_10_NORTH
-	warp_def $7, $0, 1, POKECENTER_2F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 4
-	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x188bd4, -1
-	person_event SPRITE_GENTLEMAN, 6, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x188bd7, -1
-	person_event SPRITE_GYM_GUY, 2, 7, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, GymGuyScript_0x188bda, -1
-	person_event SPRITE_COOLTRAINER_F, 3, 1, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x188bee, -1
--- a/maps/Route10PokeCenter2FBeta.asm
+++ /dev/null
@@ -1,23 +1,0 @@
-Route10PokeCenter2FBeta_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-Route10PokeCenter2FBeta_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 1
-	warp_def $7, $0, 3, ROUTE_10_POKECENTER_1F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 0
--- /dev/null
+++ b/maps/Route10Pokecenter1F.asm
@@ -1,0 +1,104 @@
+const_value set 2
+	const ROUTE10POKECENTER1F_NURSE
+	const ROUTE10POKECENTER1F_GENTLEMAN
+	const ROUTE10POKECENTER1F_GYM_GUY
+	const ROUTE10POKECENTER1F_COOLTRAINER_F
+
+Route10Pokecenter1F_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+NurseScript_0x188bd4:
+	jumpstd pokecenternurse
+
+GentlemanScript_0x188bd7:
+	jumptextfaceplayer UnknownText_0x188bf1
+
+GymGuyScript_0x188bda:
+	faceplayer
+	opentext
+	checkevent EVENT_RETURNED_MACHINE_PART
+	iftrue UnknownScript_0x188be8
+	writetext UnknownText_0x188c26
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x188be8:
+	writetext UnknownText_0x188c9e
+	waitbutton
+	closetext
+	end
+
+CooltrainerFScript_0x188bee:
+	jumptextfaceplayer UnknownText_0x188d0c
+
+UnknownText_0x188bf1:
+	text "A #MON CENTER"
+	line "near a cave?"
+
+	para "That's mighty"
+	line "convenient."
+	done
+
+UnknownText_0x188c26:
+	text "The POWER PLANT's"
+	line "MANAGER is looking"
+
+	para "for a strong #-"
+	line "MON trainer."
+
+	para "He needs help"
+	line "getting back"
+
+	para "something that"
+	line "was stolen."
+	done
+
+UnknownText_0x188c9e:
+	text "I hear TEAM ROCKET"
+	line "got back together"
+
+	para "in JOHTO but fell"
+	line "apart right away."
+
+	para "I didn't know any-"
+	line "thing about that."
+	done
+
+UnknownText_0x188d0c:
+	text "When you go out-"
+	line "side, you can see"
+
+	para "the roof of a big"
+	line "building."
+
+	para "That's the POWER"
+	line "PLANT."
+	done
+
+Route10Pokecenter1F_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 3
+	warp_def $7, $3, 1, ROUTE_10_NORTH
+	warp_def $7, $4, 1, ROUTE_10_NORTH
+	warp_def $7, $0, 1, POKECENTER_2F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 4
+	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x188bd4, -1
+	person_event SPRITE_GENTLEMAN, 6, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x188bd7, -1
+	person_event SPRITE_GYM_GUY, 2, 7, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, GymGuyScript_0x188bda, -1
+	person_event SPRITE_COOLTRAINER_F, 3, 1, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x188bee, -1
--- /dev/null
+++ b/maps/Route10Pokecenter2FBeta.asm
@@ -1,0 +1,23 @@
+Route10Pokecenter2FBeta_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+Route10Pokecenter2FBeta_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 1
+	warp_def $7, $0, 3, ROUTE_10_POKECENTER_1F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 0
--- a/maps/Route10South.asm
+++ b/maps/Route10South.asm
@@ -15,7 +15,7 @@
 HikerJimScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ae43b
+	writetext HikerJimAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -26,7 +26,7 @@
 PokefanmRobertScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ae4a9
+	writetext PokefanmRobertAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -42,7 +42,7 @@
 	text "Hahaha-hachoo!"
 	done
 
-UnknownText_0x1ae43b:
+HikerJimAfterBattleText:
 	text "Hay fever is"
 	line "making me sneeze!"
 	cont "Ahahah-CHOO!"
@@ -60,7 +60,7 @@
 	line "that's my loss."
 	done
 
-UnknownText_0x1ae4a9:
+PokefanmRobertAfterBattleText:
 	text "Look what you did"
 	line "to my #MON…"
 
@@ -92,5 +92,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_POKEFAN_M, 3, 17, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 3, TrainerHikerJim, -1
-	person_event SPRITE_POKEFAN_M, 10, 8, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerPokefanmRobert, -1
+	person_event SPRITE_POKEFAN_M, 3, 17, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 3, TrainerHikerJim, -1
+	person_event SPRITE_POKEFAN_M, 10, 8, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerPokefanmRobert, -1
--- a/maps/Route11.asm
+++ b/maps/Route11.asm
@@ -18,7 +18,7 @@
 YoungsterOwenScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x680b2
+	writetext YoungsterOwenAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -29,7 +29,7 @@
 YoungsterJasonScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x6814a
+	writetext YoungsterJasonAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -40,7 +40,7 @@
 PsychicHermanScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x6817b
+	writetext PsychicHermanAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -51,7 +51,7 @@
 PsychicFidelScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x681ec
+	writetext PsychicFidelAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -79,7 +79,7 @@
 	line "happen?"
 	done
 
-UnknownText_0x680b2:
+YoungsterOwenAfterBattleText:
 	text "I fought fair and"
 	line "square with honor."
 
@@ -100,7 +100,7 @@
 	line "I got stomped!"
 	done
 
-UnknownText_0x6814a:
+YoungsterJasonAfterBattleText:
 	text "I'm going to catch"
 	line "more #MON in"
 	cont "the grass."
@@ -114,7 +114,7 @@
 	text "…"
 	done
 
-UnknownText_0x6817b:
+PsychicHermanAfterBattleText:
 	text "…"
 
 	para "I lost while I had"
@@ -133,7 +133,7 @@
 	line "your power…"
 	done
 
-UnknownText_0x681ec:
+PsychicFidelAfterBattleText:
 	text "Strength in con-"
 	line "viction…"
 
@@ -163,8 +163,8 @@
 
 .PersonEvents:
 	db 5
-	person_event SPRITE_YOUNGSTER, 14, 22, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerYoungsterOwen, -1
-	person_event SPRITE_YOUNGSTER, 4, 20, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerYoungsterJason, -1
-	person_event SPRITE_YOUNGSTER, 7, 28, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerPsychicHerman, -1
-	person_event SPRITE_YOUNGSTER, 6, 8, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerPsychicFidel, -1
+	person_event SPRITE_YOUNGSTER, 14, 22, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerYoungsterOwen, -1
+	person_event SPRITE_YOUNGSTER, 4, 20, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerYoungsterJason, -1
+	person_event SPRITE_YOUNGSTER, 7, 28, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 1, TrainerPsychicHerman, -1
+	person_event SPRITE_YOUNGSTER, 6, 8, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerPsychicFidel, -1
 	person_event SPRITE_FRUIT_TREE, 2, 32, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x68055, -1
--- a/maps/Route12.asm
+++ b/maps/Route12.asm
@@ -19,7 +19,7 @@
 FisherKyleScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a7238
+	writetext FisherKyleAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -30,7 +30,7 @@
 FisherMartinScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a704c
+	writetext FisherMartinAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -41,7 +41,7 @@
 FisherStephenScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a70d4
+	writetext FisherStephenAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -52,7 +52,7 @@
 FisherBarneyScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a716d
+	writetext FisherBarneyAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -83,7 +83,7 @@
 	text "Gwaaah!"
 	done
 
-UnknownText_0x1a704c:
+FisherMartinAfterBattleText:
 	text "I'm too impatient"
 	line "for fishing…"
 	done
@@ -100,7 +100,7 @@
 	line "distracted me!"
 	done
 
-UnknownText_0x1a70d4:
+FisherStephenAfterBattleText:
 	text "Have you checked"
 	line "out KANTO's radio"
 
@@ -119,7 +119,7 @@
 	line "coming up next!"
 	done
 
-UnknownText_0x1a716d:
+FisherBarneyAfterBattleText:
 	text "I think electric-"
 	line "ity is the most"
 
@@ -144,7 +144,7 @@
 	text "You do remember?"
 	done
 
-UnknownText_0x1a7238:
+FisherKyleAfterBattleText:
 	text "The tug you feel"
 	line "on the ROD when"
 
@@ -186,9 +186,9 @@
 
 .PersonEvents:
 	db 6
-	person_event SPRITE_FISHER, 13, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 1, TrainerFisherMartin, -1
-	person_event SPRITE_FISHER, 23, 14, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 1, TrainerFisherStephen, -1
-	person_event SPRITE_FISHER, 38, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 5, TrainerFisherBarney, -1
-	person_event SPRITE_FISHER, 7, 6, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerFisherKyle, -1
+	person_event SPRITE_FISHER, 13, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 1, TrainerFisherMartin, -1
+	person_event SPRITE_FISHER, 23, 14, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 1, TrainerFisherStephen, -1
+	person_event SPRITE_FISHER, 38, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 5, TrainerFisherBarney, -1
+	person_event SPRITE_FISHER, 7, 6, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 3, TrainerFisherKyle, -1
 	person_event SPRITE_POKE_BALL, 43, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route12Calcium, EVENT_ROUTE_12_CALCIUM
 	person_event SPRITE_POKE_BALL, 51, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route12Nugget, EVENT_ROUTE_12_NUGGET
--- a/maps/Route12SuperRodHouse.asm
+++ b/maps/Route12SuperRodHouse.asm
@@ -96,4 +96,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_FISHING_GURU, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, FishingGuruScript_0x7f484, -1
+	person_event SPRITE_FISHING_GURU, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, FishingGuruScript_0x7f484, -1
--- a/maps/Route13.asm
+++ b/maps/Route13.asm
@@ -18,7 +18,7 @@
 PokefanmAlexScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a24e3
+	writetext PokefanmAlexAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -29,7 +29,7 @@
 PokefanmJoshuaScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a254f
+	writetext PokefanmJoshuaAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -40,7 +40,7 @@
 Bird_keeperPerryScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a25db
+	writetext Bird_keeperPerryAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -51,7 +51,7 @@
 Bird_keeperBretScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a2662
+	writetext Bird_keeperBretAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -62,7 +62,7 @@
 HikerKennyScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a26c2
+	writetext HikerKennyAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -90,7 +90,7 @@
 	line "mock royalty!"
 	done
 
-UnknownText_0x1a24e3:
+PokefanmAlexAfterBattleText:
 	text "Doesn't everyone"
 	line "wish to someday be"
 	cont "a king?"
@@ -106,7 +106,7 @@
 	text "PI-PIKACHU!"
 	done
 
-UnknownText_0x1a254f:
+PokefanmJoshuaAfterBattleText:
 	text "You look like you"
 	line "have many #MON,"
 
@@ -125,7 +125,7 @@
 	line "your speed…"
 	done
 
-UnknownText_0x1a25db:
+Bird_keeperPerryAfterBattleText:
 	text "Your #MON are"
 	line "remarkably well-"
 	cont "trained."
@@ -144,7 +144,7 @@
 	line "Not good enough!"
 	done
 
-UnknownText_0x1a2662:
+Bird_keeperBretAfterBattleText:
 	text "If you groom them,"
 	line "#MON get happy."
 	done
@@ -159,7 +159,7 @@
 	text "I lost…"
 	done
 
-UnknownText_0x1a26c2:
+HikerKennyAfterBattleText:
 	text "Geological fea-"
 	line "tures don't appear"
 	cont "to change."
@@ -211,8 +211,8 @@
 
 .PersonEvents:
 	db 5
-	person_event SPRITE_YOUNGSTER, 6, 42, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 2, TrainerBird_keeperPerry, -1
-	person_event SPRITE_YOUNGSTER, 6, 43, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 2, TrainerBird_keeperBret, -1
-	person_event SPRITE_POKEFAN_M, 8, 32, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerPokefanmJoshua, -1
-	person_event SPRITE_POKEFAN_M, 10, 14, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 4, TrainerHikerKenny, -1
-	person_event SPRITE_POKEFAN_M, 6, 25, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 4, TrainerPokefanmAlex, -1
+	person_event SPRITE_YOUNGSTER, 6, 42, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 2, TrainerBird_keeperPerry, -1
+	person_event SPRITE_YOUNGSTER, 6, 43, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 2, TrainerBird_keeperBret, -1
+	person_event SPRITE_POKEFAN_M, 8, 32, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerPokefanmJoshua, -1
+	person_event SPRITE_POKEFAN_M, 10, 14, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 4, TrainerHikerKenny, -1
+	person_event SPRITE_POKEFAN_M, 6, 25, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 4, TrainerPokefanmAlex, -1
--- a/maps/Route14.asm
+++ b/maps/Route14.asm
@@ -14,7 +14,7 @@
 Kim:
 	faceplayer
 	opentext
-	trade $5
+	trade NPCTRADE_KIM
 	waitbutton
 	closetext
 	end
@@ -25,7 +25,7 @@
 PokefanmCarterScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ad508
+	writetext PokefanmCarterAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -36,7 +36,7 @@
 Bird_keeperRoyScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ad5a4
+	writetext Bird_keeperRoyAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -47,7 +47,7 @@
 PokefanmTrevorScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ad660
+	writetext PokefanmTrevorAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -64,7 +64,7 @@
 	text "Awaaah!"
 	done
 
-UnknownText_0x1ad508:
+PokefanmCarterAfterBattleText:
 	text "SQUIRTLE, CHARMAN-"
 	line "DER and BULBASAUR…"
 
@@ -83,7 +83,7 @@
 	line "can't ever fly…"
 	done
 
-UnknownText_0x1ad5a4:
+Bird_keeperRoyAfterBattleText:
 	text "You have #MON"
 	line "that know the HM"
 
@@ -107,7 +107,7 @@
 	line "this PSYDUCK?"
 	done
 
-UnknownText_0x1ad660:
+PokefanmTrevorAfterBattleText:
 	text "If only there were"
 	line "an easy way to"
 
@@ -130,7 +130,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_POKEFAN_M, 15, 11, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerPokefanmCarter, -1
-	person_event SPRITE_YOUNGSTER, 27, 11, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerBird_keeperRoy, -1
-	person_event SPRITE_POKEFAN_M, 11, 6, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerPokefanmTrevor, -1
-	person_event SPRITE_TEACHER, 5, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 4, Kim, -1
+	person_event SPRITE_POKEFAN_M, 15, 11, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerPokefanmCarter, -1
+	person_event SPRITE_YOUNGSTER, 27, 11, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerBird_keeperRoy, -1
+	person_event SPRITE_POKEFAN_M, 11, 6, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerPokefanmTrevor, -1
+	person_event SPRITE_TEACHER, 5, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 4, Kim, -1
--- a/maps/Route15.asm
+++ b/maps/Route15.asm
@@ -20,7 +20,7 @@
 TeacherColetteScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1aa60d
+	writetext TeacherColetteAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -31,7 +31,7 @@
 TeacherHillaryScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1aa6ca
+	writetext TeacherHillaryAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -42,7 +42,7 @@
 SchoolboyKippScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1aa740
+	writetext SchoolboyKippAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -53,7 +53,7 @@
 SchoolboyTommyScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1aa7bc
+	writetext SchoolboyTommyAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -64,7 +64,7 @@
 SchoolboyJohnnyScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1aa84a
+	writetext SchoolboyJohnnyAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -75,7 +75,7 @@
 SchoolboyBillyScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1aa8b0
+	writetext SchoolboyBillyAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -95,7 +95,7 @@
 	text "Kyaaah!"
 	done
 
-UnknownText_0x1aa60d:
+TeacherColetteAfterBattleText:
 	text "Before I became a"
 	line "teacher, I used to"
 
@@ -119,7 +119,7 @@
 	line "lose…"
 	done
 
-UnknownText_0x1aa6ca:
+TeacherHillaryAfterBattleText:
 	text "Studying is impor-"
 	line "tant, but exercise"
 	cont "is just as vital."
@@ -135,7 +135,7 @@
 	line "I was beaten!"
 	done
 
-UnknownText_0x1aa740:
+SchoolboyKippAfterBattleText:
 	text "My mom worries so"
 	line "much about me, I"
 
@@ -153,7 +153,7 @@
 	line "homework!"
 	done
 
-UnknownText_0x1aa7bc:
+SchoolboyTommyAfterBattleText:
 	text "Sayonara! I just"
 	line "learned that in my"
 	cont "Japanese class."
@@ -172,7 +172,7 @@
 	line "tough!"
 	done
 
-UnknownText_0x1aa84a:
+SchoolboyJohnnyAfterBattleText:
 	text "I'm tired of walk-"
 	line "ing. I need to"
 	cont "take a break."
@@ -188,7 +188,7 @@
 	line "How could I lose?"
 	done
 
-UnknownText_0x1aa8b0:
+SchoolboyBillyAfterBattleText:
 	text "If #MON were a"
 	line "subject at school,"
 	cont "I'd be the best!"
@@ -219,10 +219,10 @@
 
 .PersonEvents:
 	db 7
-	person_event SPRITE_YOUNGSTER, 10, 10, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 4, TrainerSchoolboyKipp, -1
-	person_event SPRITE_YOUNGSTER, 13, 15, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerSchoolboyTommy, -1
-	person_event SPRITE_YOUNGSTER, 10, 33, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerSchoolboyJohnny, -1
-	person_event SPRITE_YOUNGSTER, 10, 27, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerSchoolboyBilly, -1
-	person_event SPRITE_TEACHER, 12, 30, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 4, TrainerTeacherColette, -1
-	person_event SPRITE_TEACHER, 10, 20, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerTeacherHillary, -1
+	person_event SPRITE_YOUNGSTER, 10, 10, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 4, TrainerSchoolboyKipp, -1
+	person_event SPRITE_YOUNGSTER, 13, 15, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerSchoolboyTommy, -1
+	person_event SPRITE_YOUNGSTER, 10, 33, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerSchoolboyJohnny, -1
+	person_event SPRITE_YOUNGSTER, 10, 27, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerSchoolboyBilly, -1
+	person_event SPRITE_TEACHER, 12, 30, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 4, TrainerTeacherColette, -1
+	person_event SPRITE_TEACHER, 10, 20, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerTeacherHillary, -1
 	person_event SPRITE_POKE_BALL, 5, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route15PPUp, EVENT_ROUTE_15_PP_UP
--- a/maps/Route15FuchsiaGate.asm
+++ b/maps/Route15FuchsiaGate.asm
@@ -38,4 +38,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_OFFICER, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, OfficerScript_0x19679e, -1
+	person_event SPRITE_OFFICER, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, OfficerScript_0x19679e, -1
--- a/maps/Route16.asm
+++ b/maps/Route16.asm
@@ -4,20 +4,17 @@
 
 .MapCallbacks:
 	db 1
+	dbw MAPCALLBACK_NEWMAP, .AlwaysOnBike
 
-	; callbacks
-
-	dbw MAPCALLBACK_NEWMAP, UnknownScript_0x1ad318
-
-UnknownScript_0x1ad318:
+.AlwaysOnBike:
 	checkcode VAR_YCOORD
-	if_less_than $5, UnknownScript_0x1ad328
+	if_less_than $5, .CanWalk
 	checkcode VAR_XCOORD
-	if_greater_than $d, UnknownScript_0x1ad328
+	if_greater_than $d, .CanWalk
 	setflag ENGINE_ALWAYS_ON_BIKE
 	return
 
-UnknownScript_0x1ad328:
+.CanWalk:
 	clearflag ENGINE_ALWAYS_ON_BIKE
 	return
 
--- a/maps/Route16FuchsiaSpeechHouse.asm
+++ b/maps/Route16FuchsiaSpeechHouse.asm
@@ -41,4 +41,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_SUPER_NERD, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x73373, -1
+	person_event SPRITE_SUPER_NERD, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x73373, -1
--- a/maps/Route16Gate.asm
+++ b/maps/Route16Gate.asm
@@ -4,14 +4,12 @@
 Route16Gate_MapScriptHeader:
 .MapTriggers:
 	db 1
+	maptrigger .DummyTrigger
 
-	; triggers
-	dw UnknownScript_0x733e9, 0
-
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x733e9:
+.DummyTrigger:
 	end
 
 OfficerScript_0x733ea:
@@ -83,4 +81,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_OFFICER, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, OfficerScript_0x733ea, -1
+	person_event SPRITE_OFFICER, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, OfficerScript_0x733ea, -1
--- a/maps/Route17.asm
+++ b/maps/Route17.asm
@@ -10,12 +10,9 @@
 
 .MapCallbacks:
 	db 1
+	dbw MAPCALLBACK_NEWMAP, .AlwaysOnBike
 
-	; callbacks
-
-	dbw MAPCALLBACK_NEWMAP, UnknownScript_0x1ad0ab
-
-UnknownScript_0x1ad0ab:
+.AlwaysOnBike:
 	setflag ENGINE_ALWAYS_ON_BIKE
 	setflag ENGINE_DOWNHILL
 	return
@@ -26,7 +23,7 @@
 BikerCharlesScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ad293
+	writetext BikerCharlesAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -37,7 +34,7 @@
 BikerRileyScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ad13b
+	writetext BikerRileyAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -48,7 +45,7 @@
 BikerJoelScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ad196
+	writetext BikerJoelAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -59,7 +56,7 @@
 BikerGlennScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ad225
+	writetext BikerGlennAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -81,7 +78,7 @@
 	text "Whoa, you kick!"
 	done
 
-UnknownText_0x1ad13b:
+BikerRileyAfterBattleText:
 	text "Don't get cocky,"
 	line "you JOHTO punk!"
 	done
@@ -96,7 +93,7 @@
 	line "look cool…"
 	done
 
-UnknownText_0x1ad196:
+BikerJoelAfterBattleText:
 	text "I look cool, but"
 	line "I'm weak, so I'm"
 	cont "not really cool."
@@ -115,7 +112,7 @@
 	line "awesome torque!"
 	done
 
-UnknownText_0x1ad225:
+BikerGlennAfterBattleText:
 	text "Hands-free riding"
 	line "is considered cool"
 	cont "on CYCLING ROAD."
@@ -131,7 +128,7 @@
 	line "burn!"
 	done
 
-UnknownText_0x1ad293:
+BikerCharlesAfterBattleText:
 	text "Reckless driving"
 	line "causes accidents!"
 	cont "Take it easy!"
@@ -156,7 +153,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_BIKER, 17, 4, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 4, TrainerBikerRiley, -1
-	person_event SPRITE_BIKER, 68, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 1, TrainerBikerJoel, -1
-	person_event SPRITE_BIKER, 53, 3, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 3, TrainerBikerGlenn, -1
-	person_event SPRITE_BIKER, 80, 6, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 4, TrainerBikerCharles, -1
+	person_event SPRITE_BIKER, 17, 4, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 4, TrainerBikerRiley, -1
+	person_event SPRITE_BIKER, 68, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 1, TrainerBikerJoel, -1
+	person_event SPRITE_BIKER, 53, 3, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 3, TrainerBikerGlenn, -1
+	person_event SPRITE_BIKER, 80, 6, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 4, TrainerBikerCharles, -1
--- a/maps/Route1718Gate.asm
+++ b/maps/Route1718Gate.asm
@@ -4,14 +4,12 @@
 Route1718Gate_MapScriptHeader:
 .MapTriggers:
 	db 1
+	maptrigger .DummyTrigger
 
-	; triggers
-	dw UnknownScript_0x7360d, 0
-
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x7360d:
+.DummyTrigger:
 	end
 
 OfficerScript_0x7360e:
@@ -74,4 +72,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_OFFICER, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, OfficerScript_0x7360e, -1
+	person_event SPRITE_OFFICER, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, OfficerScript_0x7360e, -1
--- a/maps/Route18.asm
+++ b/maps/Route18.asm
@@ -15,7 +15,7 @@
 Bird_keeperBorisScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1acfa5
+	writetext Bird_keeperBorisAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -26,7 +26,7 @@
 Bird_keeperBobScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ad00d
+	writetext Bird_keeperBobAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -46,7 +46,7 @@
 	text "Ayieee!"
 	done
 
-UnknownText_0x1acfa5:
+Bird_keeperBorisAfterBattleText:
 	text "Since you're so"
 	line "strong, it must be"
 	cont "fun to battle."
@@ -62,7 +62,7 @@
 	text "…Whew!"
 	done
 
-UnknownText_0x1ad00d:
+Bird_keeperBobAfterBattleText:
 	text "If you don't have"
 	line "a BICYCLE, you're"
 
@@ -95,5 +95,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_YOUNGSTER, 12, 9, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerBird_keeperBoris, -1
-	person_event SPRITE_YOUNGSTER, 6, 13, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerBird_keeperBob, -1
+	person_event SPRITE_YOUNGSTER, 12, 9, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerBird_keeperBoris, -1
+	person_event SPRITE_YOUNGSTER, 6, 13, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerBird_keeperBob, -1
--- a/maps/Route19.asm
+++ b/maps/Route19.asm
@@ -12,9 +12,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_TILES, .ClearRocks
 
 .ClearRocks:
@@ -35,7 +32,7 @@
 SwimmerfDawnScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19ebad
+	writetext SwimmerfDawnAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -46,7 +43,7 @@
 SwimmermHaroldScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19eab4
+	writetext SwimmermHaroldAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -57,7 +54,7 @@
 SwimmermJeromeScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19ec7e
+	writetext SwimmermJeromeAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -68,7 +65,7 @@
 SwimmermTuckerScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19eb3b
+	writetext SwimmermTuckerAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -121,7 +118,7 @@
 	text "Glub…"
 	done
 
-UnknownText_0x19eab4:
+SwimmermHaroldAfterBattleText:
 	text "At night, the sea"
 	line "turns black. It"
 
@@ -141,7 +138,7 @@
 	text "I'm drowning!"
 	done
 
-UnknownText_0x19eb3b:
+SwimmermTuckerAfterBattleText:
 	text "I… asked my girl-"
 	line "friend to swim to"
 	cont "FUCHSIA… Gasp…"
@@ -157,7 +154,7 @@
 	line "at swimming…"
 	done
 
-UnknownText_0x19ebad:
+SwimmerfDawnAfterBattleText:
 	text "It's a quick swim"
 	line "between FUCHSIA"
 
@@ -184,7 +181,7 @@
 	line "win."
 	done
 
-UnknownText_0x19ec7e:
+SwimmermJeromeAfterBattleText:
 	text "I might be bad at"
 	line "swimming, but I"
 	cont "love the sea."
@@ -255,9 +252,9 @@
 
 .PersonEvents:
 	db 6
-	person_event SPRITE_SWIMMER_GIRL, 23, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 0, TrainerSwimmerfDawn, -1
-	person_event SPRITE_SWIMMER_GUY, 28, 13, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerSwimmermHarold, -1
-	person_event SPRITE_SWIMMER_GUY, 17, 11, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerSwimmermJerome, -1
-	person_event SPRITE_SWIMMER_GUY, 23, 8, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 0, TrainerSwimmermTucker, -1
-	person_event SPRITE_FISHER, 5, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 1, FisherScript_0x19ea4d, -1
-	person_event SPRITE_FISHER, 5, 11, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 1, FisherScript_0x19ea61, -1
+	person_event SPRITE_SWIMMER_GIRL, 23, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 0, TrainerSwimmerfDawn, -1
+	person_event SPRITE_SWIMMER_GUY, 28, 13, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerSwimmermHarold, -1
+	person_event SPRITE_SWIMMER_GUY, 17, 11, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerSwimmermJerome, -1
+	person_event SPRITE_SWIMMER_GUY, 23, 8, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 0, TrainerSwimmermTucker, -1
+	person_event SPRITE_FISHER, 5, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 1, FisherScript_0x19ea4d, -1
+	person_event SPRITE_FISHER, 5, 11, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 1, FisherScript_0x19ea61, -1
--- a/maps/Route19FuchsiaGate.asm
+++ b/maps/Route19FuchsiaGate.asm
@@ -64,4 +64,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_OFFICER, 4, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, OfficerScript_0x1ab3f6, -1
+	person_event SPRITE_OFFICER, 4, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, OfficerScript_0x1ab3f6, -1
--- a/maps/Route2.asm
+++ b/maps/Route2.asm
@@ -21,7 +21,7 @@
 Bug_catcherRobScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ac34d
+	writetext Bug_catcherRobAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -32,7 +32,7 @@
 Bug_catcherEdScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ac3cf
+	writetext Bug_catcherEdAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -43,7 +43,7 @@
 Bug_catcherDougScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ac423
+	writetext Bug_catcherDougAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -91,7 +91,7 @@
 	text "I was whipped…"
 	done
 
-UnknownText_0x1ac34d:
+Bug_catcherRobAfterBattleText:
 	text "I'm going to look"
 	line "for stronger bug"
 	cont "#MON."
@@ -109,7 +109,7 @@
 	text "Ouch, ouch, ouch!"
 	done
 
-UnknownText_0x1ac3cf:
+Bug_catcherEdAfterBattleText:
 	text "They'll really"
 	line "sting when you"
 	cont "take a bath."
@@ -124,7 +124,7 @@
 	text "No good!"
 	done
 
-UnknownText_0x1ac423:
+Bug_catcherDougAfterBattleText:
 	text "Bug #MON squish"
 	line "like plush toys"
 
@@ -172,9 +172,9 @@
 
 .PersonEvents:
 	db 8
-	person_event SPRITE_BUG_CATCHER, 45, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 5, TrainerBug_catcherRob, -1
-	person_event SPRITE_BUG_CATCHER, 4, 6, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 3, TrainerBug_catcherEd, -1
-	person_event SPRITE_BUG_CATCHER, 40, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 3, TrainerBug_catcherDoug, -1
+	person_event SPRITE_BUG_CATCHER, 45, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 5, TrainerBug_catcherRob, -1
+	person_event SPRITE_BUG_CATCHER, 4, 6, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 3, TrainerBug_catcherEd, -1
+	person_event SPRITE_BUG_CATCHER, 40, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 3, TrainerBug_catcherDoug, -1
 	person_event SPRITE_POKE_BALL, 29, 0, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route2DireHit, EVENT_ROUTE_2_DIRE_HIT
 	person_event SPRITE_POKE_BALL, 23, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route2MaxPotion, EVENT_ROUTE_2_MAX_POTION
 	person_event SPRITE_POKE_BALL, 2, 19, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route2Carbos, EVENT_ROUTE_2_CARBOS
--- a/maps/Route20.asm
+++ b/maps/Route20.asm
@@ -9,9 +9,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_NEWMAP, .ClearRocks
 
 .ClearRocks:
@@ -24,7 +21,7 @@
 SwimmerfNicoleScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1acd93
+	writetext SwimmerfNicoleAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -35,7 +32,7 @@
 SwimmerfLoriScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ace15
+	writetext SwimmerfLoriAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -46,7 +43,7 @@
 SwimmermCameronScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ace8b
+	writetext SwimmermCameronAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -63,7 +60,7 @@
 	text "Oh, no!"
 	done
 
-UnknownText_0x1acd93:
+SwimmerfNicoleAfterBattleText:
 	text "Swimming exercises"
 	line "your full body."
 
@@ -83,7 +80,7 @@
 	text "No!"
 	done
 
-UnknownText_0x1ace15:
+SwimmerfLoriAfterBattleText:
 	text "SURF is no longer"
 	line "the only HM move"
 	cont "you use in water."
@@ -101,7 +98,7 @@
 	text "Aiyah!"
 	done
 
-UnknownText_0x1ace8b:
+SwimmermCameronAfterBattleText:
 	text "Besides the sea, I"
 	line "can also swim in"
 	cont "ponds and rivers."
@@ -132,6 +129,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_SWIMMER_GIRL, 8, 52, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerSwimmerfNicole, -1
-	person_event SPRITE_SWIMMER_GIRL, 13, 45, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerSwimmerfLori, -1
-	person_event SPRITE_SWIMMER_GUY, 13, 12, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerSwimmermCameron, -1
+	person_event SPRITE_SWIMMER_GIRL, 8, 52, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 3, TrainerSwimmerfNicole, -1
+	person_event SPRITE_SWIMMER_GIRL, 13, 45, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 3, TrainerSwimmerfLori, -1
+	person_event SPRITE_SWIMMER_GUY, 13, 12, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerSwimmermCameron, -1
--- a/maps/Route21.asm
+++ b/maps/Route21.asm
@@ -16,7 +16,7 @@
 SwimmermSethScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ac873
+	writetext SwimmermSethAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -27,7 +27,7 @@
 SwimmerfNikkiScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ac8f1
+	writetext SwimmerfNikkiAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -38,7 +38,7 @@
 FisherArnoldScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ac95c
+	writetext FisherArnoldAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -52,7 +52,7 @@
 	text "Glug…"
 	done
 
-UnknownText_0x1ac873:
+SwimmermSethAfterBattleText:
 	text "This arrogant guy"
 	line "was at CINNABAR's"
 	cont "volcano."
@@ -69,7 +69,7 @@
 	line "sunburn…"
 	done
 
-UnknownText_0x1ac8f1:
+SwimmerfNikkiAfterBattleText:
 	text "I have to watch"
 	line "out for blemishes"
 	cont "caused by the sun."
@@ -84,7 +84,7 @@
 	text "Utter failure…"
 	done
 
-UnknownText_0x1ac95c:
+FisherArnoldAfterBattleText:
 	text "I'll just go back"
 	line "to fishing…"
 	done
@@ -104,6 +104,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_SWIMMER_GIRL, 16, 11, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerSwimmerfNikki, -1
-	person_event SPRITE_SWIMMER_GUY, 30, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 4, TrainerSwimmermSeth, -1
-	person_event SPRITE_FISHER, 22, 14, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 1, TrainerFisherArnold, -1
+	person_event SPRITE_SWIMMER_GIRL, 16, 11, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 3, TrainerSwimmerfNikki, -1
+	person_event SPRITE_SWIMMER_GUY, 30, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 4, TrainerSwimmermSeth, -1
+	person_event SPRITE_FISHER, 22, 14, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 1, TrainerFisherArnold, -1
--- a/maps/Route23.asm
+++ b/maps/Route23.asm
@@ -4,8 +4,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
 	dbw MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
--- a/maps/Route25.asm
+++ b/maps/Route25.asm
@@ -14,18 +14,16 @@
 Route25_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
 
-	; triggers
-	dw UnknownScript_0x19ee9e, 0
-	dw UnknownScript_0x19ee9f, 0
-
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x19ee9e:
+.DummyTrigger0:
 	end
 
-UnknownScript_0x19ee9f:
+.DummyTrigger1:
 	end
 
 UnknownScript_0x19eea0:
@@ -86,7 +84,7 @@
 SchoolboyDudleyScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19f1b5
+	writetext SchoolboyDudleyAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -97,7 +95,7 @@
 LassEllenScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19f208
+	writetext LassEllenAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -108,7 +106,7 @@
 SchoolboyJoeScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19f25c
+	writetext SchoolboyJoeAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -119,7 +117,7 @@
 LassLauraScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19f2a6
+	writetext LassLauraAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -130,7 +128,7 @@
 CamperLloydScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19f2f8
+	writetext CamperLloydAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -141,7 +139,7 @@
 LassShannonScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19f35b
+	writetext LassShannonAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -152,7 +150,7 @@
 SupernerdPatScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19f41a
+	writetext SupernerdPatAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -287,7 +285,7 @@
 	text "Whoo! Good stuff."
 	done
 
-UnknownText_0x19f1b5:
+SchoolboyDudleyAfterBattleText:
 	text "I did my best."
 	line "I have no regrets."
 	done
@@ -301,7 +299,7 @@
 	text "How could I lose?"
 	done
 
-UnknownText_0x19f208:
+LassEllenAfterBattleText:
 	text "I did my best."
 	line "I have no regrets."
 	done
@@ -315,7 +313,7 @@
 	text "Ow! Stomped flat!"
 	done
 
-UnknownText_0x19f25c:
+SchoolboyJoeAfterBattleText:
 	text "I did my best."
 	line "I have no regrets."
 	done
@@ -329,7 +327,7 @@
 	text "I lost too…"
 	done
 
-UnknownText_0x19f2a6:
+LassLauraAfterBattleText:
 	text "I did my best."
 	line "I have no regrets."
 	done
@@ -343,7 +341,7 @@
 	text "Whoa! Too much."
 	done
 
-UnknownText_0x19f2f8:
+CamperLloydAfterBattleText:
 	text "I did my best."
 	line "I have no regrets."
 	done
@@ -358,7 +356,7 @@
 	text "You're kidding."
 	done
 
-UnknownText_0x19f35b:
+LassShannonAfterBattleText:
 	text "I did my best."
 	line "I have no regrets."
 	done
@@ -382,7 +380,7 @@
 	line "at all?"
 	done
 
-UnknownText_0x19f41a:
+SupernerdPatAfterBattleText:
 	text "I'm sorry… I won't"
 	line "cheat anymore…"
 	done
@@ -452,14 +450,14 @@
 
 .PersonEvents:
 	db 11
-	person_event SPRITE_MISTY, 9, 46, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_ROUTE_25_MISTY_BOYFRIEND
-	person_event SPRITE_COOLTRAINER_M, 10, 46, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_ROUTE_25_MISTY_BOYFRIEND
-	person_event SPRITE_YOUNGSTER, 8, 12, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerSchoolboyDudley, -1
-	person_event SPRITE_LASS, 11, 16, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerLassEllen, -1
-	person_event SPRITE_YOUNGSTER, 8, 21, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerSchoolboyJoe, -1
-	person_event SPRITE_LASS, 6, 22, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerLassLaura, -1
-	person_event SPRITE_YOUNGSTER, 4, 25, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 2, TrainerCamperLloyd, -1
-	person_event SPRITE_LASS, 11, 28, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerLassShannon, -1
-	person_event SPRITE_SUPER_NERD, 7, 31, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 1, TrainerSupernerdPat, -1
-	person_event SPRITE_COOLTRAINER_M, 8, 37, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x19efac, -1
+	person_event SPRITE_MISTY, 9, 46, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_ROUTE_25_MISTY_BOYFRIEND
+	person_event SPRITE_COOLTRAINER_M, 10, 46, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_ROUTE_25_MISTY_BOYFRIEND
+	person_event SPRITE_YOUNGSTER, 8, 12, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerSchoolboyDudley, -1
+	person_event SPRITE_LASS, 11, 16, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerLassEllen, -1
+	person_event SPRITE_YOUNGSTER, 8, 21, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 1, TrainerSchoolboyJoe, -1
+	person_event SPRITE_LASS, 6, 22, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerLassLaura, -1
+	person_event SPRITE_YOUNGSTER, 4, 25, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 2, TrainerCamperLloyd, -1
+	person_event SPRITE_LASS, 11, 28, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 1, TrainerLassShannon, -1
+	person_event SPRITE_SUPER_NERD, 7, 31, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 1, TrainerSupernerdPat, -1
+	person_event SPRITE_COOLTRAINER_M, 8, 37, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x19efac, -1
 	person_event SPRITE_POKE_BALL, 4, 32, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route25Protein, EVENT_ROUTE_25_PROTEIN
--- a/maps/Route26.asm
+++ b/maps/Route26.asm
@@ -21,7 +21,7 @@
 CooltrainermJakeScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a4f08
+	writetext CooltrainermJakeAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -125,7 +125,7 @@
 CooltrainerfJoyceScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a50d7
+	writetext CooltrainerfJoyceAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -229,7 +229,7 @@
 PsychicRichardScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a5278
+	writetext PsychicRichardAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -240,7 +240,7 @@
 FisherScottScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a5326
+	writetext FisherScottAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -266,7 +266,7 @@
 	text "I blew it!"
 	done
 
-UnknownText_0x1a4f08:
+CooltrainermJakeAfterBattleText:
 	text "It's going to be"
 	line "tough to win at"
 	cont "the LEAGUE."
@@ -321,7 +321,7 @@
 	line "believe this!"
 	done
 
-UnknownText_0x1a50d7:
+CooltrainerfJoyceAfterBattleText:
 	text "I've defeated"
 	line "eight GYM LEADERS,"
 
@@ -374,7 +374,7 @@
 	text "Good battle!"
 	done
 
-UnknownText_0x1a5278:
+PsychicRichardAfterBattleText:
 	text "People and #MON"
 	line "grow from their"
 	cont "experiences."
@@ -397,7 +397,7 @@
 	line "battle!"
 	done
 
-UnknownText_0x1a5326:
+FisherScottAfterBattleText:
 	text "Just like in fish-"
 	line "ing, it's all over"
 
@@ -431,11 +431,11 @@
 
 .PersonEvents:
 	db 8
-	person_event SPRITE_COOLTRAINER_M, 24, 14, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 2, TrainerCooltrainermJake, -1
-	person_event SPRITE_COOLTRAINER_M, 38, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainermGaven3, -1
-	person_event SPRITE_COOLTRAINER_F, 56, 10, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainerfJoyce, -1
-	person_event SPRITE_COOLTRAINER_F, 8, 5, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 4, TrainerCooltrainerfBeth1, -1
-	person_event SPRITE_YOUNGSTER, 79, 13, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 2, TrainerPsychicRichard, -1
-	person_event SPRITE_FISHER, 92, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerFisherScott, -1
+	person_event SPRITE_COOLTRAINER_M, 24, 14, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 2, TrainerCooltrainermJake, -1
+	person_event SPRITE_COOLTRAINER_M, 38, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainermGaven3, -1
+	person_event SPRITE_COOLTRAINER_F, 56, 10, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainerfJoyce, -1
+	person_event SPRITE_COOLTRAINER_F, 8, 5, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 4, TrainerCooltrainerfBeth1, -1
+	person_event SPRITE_YOUNGSTER, 79, 13, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 2, TrainerPsychicRichard, -1
+	person_event SPRITE_FISHER, 92, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 3, TrainerFisherScott, -1
 	person_event SPRITE_FRUIT_TREE, 54, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x1a4ec2, -1
 	person_event SPRITE_POKE_BALL, 15, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route26MaxElixer, EVENT_ROUTE_26_MAX_ELIXER
--- a/maps/Route26HealSpeechHouse.asm
+++ b/maps/Route26HealSpeechHouse.asm
@@ -67,4 +67,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_TEACHER, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, TeacherScript_0x7b125, -1
+	person_event SPRITE_TEACHER, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, TeacherScript_0x7b125, -1
--- a/maps/Route27.asm
+++ b/maps/Route27.asm
@@ -12,18 +12,16 @@
 Route27_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
 
-	; triggers
-	dw UnknownScript_0x1a0871, 0
-	dw UnknownScript_0x1a0872, 0
-
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x1a0871:
+.DummyTrigger0:
 	end
 
-UnknownScript_0x1a0872:
+.DummyTrigger1:
 	end
 
 UnknownScript_0x1a0873:
@@ -56,7 +54,7 @@
 PsychicGilbertScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a0dd2
+	writetext PsychicGilbertAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -180,7 +178,7 @@
 CooltrainermBlakeScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a0b0b
+	writetext CooltrainermBlakeAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -191,7 +189,7 @@
 CooltrainermBrianScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a0bac
+	writetext CooltrainermBrianAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -295,7 +293,7 @@
 CooltrainerfMeganScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a0cce
+	writetext CooltrainerfMeganAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -344,7 +342,7 @@
 	text "Yow!"
 	done
 
-UnknownText_0x1a0b0b:
+CooltrainermBlakeAfterBattleText:
 	text "If you prevail on"
 	line "this harsh trek,"
 
@@ -365,7 +363,7 @@
 	text "Just as I thought!"
 	done
 
-UnknownText_0x1a0bac:
+CooltrainermBrianAfterBattleText:
 	text "A good trainer can"
 	line "recognize other"
 	cont "good trainers."
@@ -405,7 +403,7 @@
 	line "strong!"
 	done
 
-UnknownText_0x1a0cce:
+CooltrainerfMeganAfterBattleText:
 	text "I'm checking out"
 	line "pre- and post-"
 	cont "evolution #MON."
@@ -436,7 +434,7 @@
 	text "You're too much!"
 	done
 
-UnknownText_0x1a0dd2:
+PsychicGilbertAfterBattleText:
 	text "With your skills,"
 	line "you'll do well at"
 	cont "the LEAGUE."
@@ -490,12 +488,12 @@
 
 .PersonEvents:
 	db 9
-	person_event SPRITE_COOLTRAINER_M, 7, 48, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainermBlake, -1
-	person_event SPRITE_COOLTRAINER_M, 6, 58, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 4, TrainerCooltrainermBrian, -1
-	person_event SPRITE_COOLTRAINER_F, 10, 72, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 4, TrainerCooltrainerfReena, -1
-	person_event SPRITE_COOLTRAINER_F, 6, 37, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 2, TrainerCooltrainerfMegan, -1
-	person_event SPRITE_YOUNGSTER, 7, 65, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerPsychicGilbert, -1
-	person_event SPRITE_YOUNGSTER, 13, 58, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerBird_keeperJose2, -1
+	person_event SPRITE_COOLTRAINER_M, 7, 48, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainermBlake, -1
+	person_event SPRITE_COOLTRAINER_M, 6, 58, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 4, TrainerCooltrainermBrian, -1
+	person_event SPRITE_COOLTRAINER_F, 10, 72, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 4, TrainerCooltrainerfReena, -1
+	person_event SPRITE_COOLTRAINER_F, 6, 37, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 2, TrainerCooltrainerfMegan, -1
+	person_event SPRITE_YOUNGSTER, 7, 65, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerPsychicGilbert, -1
+	person_event SPRITE_YOUNGSTER, 13, 58, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerBird_keeperJose2, -1
 	person_event SPRITE_POKE_BALL, 12, 60, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route27TMSolarbeam, EVENT_ROUTE_27_TM_SOLARBEAM
 	person_event SPRITE_POKE_BALL, 12, 53, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route27RareCandy, EVENT_ROUTE_27_RARE_CANDY
 	person_event SPRITE_FISHER, 10, 21, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 3, FisherScript_0x1a089c, -1
--- a/maps/Route28FamousSpeechHouse.asm
+++ b/maps/Route28FamousSpeechHouse.asm
@@ -5,14 +5,12 @@
 Route28FamousSpeechHouse_MapScriptHeader:
 .MapTriggers:
 	db 1
+	maptrigger .DummyTrigger
 
-	; triggers
-	dw .Trigger, 0
-
 .MapCallbacks:
 	db 0
 
-.Trigger:
+.DummyTrigger:
 	end
 
 Celebrity:
@@ -91,5 +89,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_COOLTRAINER_F, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, Celebrity, -1
-	person_event SPRITE_MOLTRES, 5, 6, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, CelebritysFearow, -1
+	person_event SPRITE_COOLTRAINER_F, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, Celebrity, -1
+	person_event SPRITE_MOLTRES, 5, 6, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, CelebritysFearow, -1
--- a/maps/Route29.asm
+++ b/maps/Route29.asm
@@ -11,22 +11,17 @@
 Route29_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_OBJECTS, .Tuscany
 
-.Trigger0:
+.DummyTrigger0:
 	end
 
-.Trigger1:
+.DummyTrigger1:
 	end
 
 .Tuscany:
@@ -440,11 +435,11 @@
 
 .PersonEvents:
 	db 8
-	person_event SPRITE_COOLTRAINER_M, 12, 50, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CatchingTutorialDudeScript, -1
-	person_event SPRITE_YOUNGSTER, 16, 27, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, Route29YoungsterScript, -1
-	person_event SPRITE_TEACHER, 11, 15, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, Route29TeacherScript, -1
+	person_event SPRITE_COOLTRAINER_M, 12, 50, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, CatchingTutorialDudeScript, -1
+	person_event SPRITE_YOUNGSTER, 16, 27, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, Route29YoungsterScript, -1
+	person_event SPRITE_TEACHER, 11, 15, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, Route29TeacherScript, -1
 	person_event SPRITE_FRUIT_TREE, 2, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route29FruitTree, -1
-	person_event SPRITE_FISHER, 3, 25, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, Route29FisherScript, -1
-	person_event SPRITE_COOLTRAINER_M, 4, 13, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x1a1031, -1
+	person_event SPRITE_FISHER, 3, 25, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, Route29FisherScript, -1
+	person_event SPRITE_COOLTRAINER_M, 4, 13, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x1a1031, -1
 	person_event SPRITE_TEACHER, 12, 29, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, TuscanyScript, EVENT_ROUTE_29_TUSCANY_OF_TUESDAY
 	person_event SPRITE_POKE_BALL, 2, 48, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route29Potion, EVENT_ROUTE_29_POTION
--- a/maps/Route2946Gate.asm
+++ b/maps/Route2946Gate.asm
@@ -55,5 +55,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_OFFICER, 4, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, OfficerScript_0x7b5bb, -1
-	person_event SPRITE_YOUNGSTER, 4, 6, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x7b5be, -1
+	person_event SPRITE_OFFICER, 4, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, OfficerScript_0x7b5bb, -1
+	person_event SPRITE_YOUNGSTER, 4, 6, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x7b5be, -1
--- a/maps/Route2Gate.asm
+++ b/maps/Route2Gate.asm
@@ -44,4 +44,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_SCIENTIST, 4, 6, SPRITEMOVEDATA_WALK_UP_DOWN, 2, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ScientistScript_0x9b952, -1
+	person_event SPRITE_SCIENTIST, 4, 6, SPRITEMOVEDATA_WALK_UP_DOWN, 2, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, ScientistScript_0x9b952, -1
--- a/maps/Route2NuggetSpeechHouse.asm
+++ b/maps/Route2NuggetSpeechHouse.asm
@@ -69,4 +69,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_FISHER, 4, 2, SPRITEMOVEDATA_WALK_UP_DOWN, 2, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, FisherScript_0x9b847, -1
+	person_event SPRITE_FISHER, 4, 2, SPRITEMOVEDATA_WALK_UP_DOWN, 2, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, FisherScript_0x9b847, -1
--- a/maps/Route3.asm
+++ b/maps/Route3.asm
@@ -17,7 +17,7 @@
 FirebreatherOtisScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1adff7
+	writetext FirebreatherOtisAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -28,7 +28,7 @@
 YoungsterWarrenScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ae051
+	writetext YoungsterWarrenAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -39,7 +39,7 @@
 YoungsterJimmyScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ae0a9
+	writetext YoungsterJimmyAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -50,7 +50,7 @@
 FirebreatherBurtScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ae118
+	writetext FirebreatherBurtAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -68,7 +68,7 @@
 	line "I'm all wet…"
 	done
 
-UnknownText_0x1adff7:
+FirebreatherOtisAfterBattleText:
 	text "When it rains,"
 	line "it's hard to get"
 	cont "ignition…"
@@ -83,7 +83,7 @@
 	text "I knew I'd lose…"
 	done
 
-UnknownText_0x1ae051:
+YoungsterWarrenAfterBattleText:
 	text "You looked strong."
 
 	para "I was afraid to"
@@ -99,7 +99,7 @@
 	text "Blown away!"
 	done
 
-UnknownText_0x1ae0a9:
+YoungsterJimmyAfterBattleText:
 	text "I wear shorts the"
 	line "whole year round."
 
@@ -116,7 +116,7 @@
 	text "Yow! That's hot!"
 	done
 
-UnknownText_0x1ae118:
+FirebreatherBurtAfterBattleText:
 	text "The greatest fire-"
 	line "breather in KANTO,"
 	cont "that's me."
@@ -149,7 +149,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_FISHER, 12, 26, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 2, TrainerFirebreatherOtis, -1
-	person_event SPRITE_YOUNGSTER, 7, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerYoungsterWarren, -1
-	person_event SPRITE_YOUNGSTER, 3, 16, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerYoungsterJimmy, -1
-	person_event SPRITE_FISHER, 5, 49, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerFirebreatherBurt, -1
+	person_event SPRITE_FISHER, 12, 26, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 2, TrainerFirebreatherOtis, -1
+	person_event SPRITE_YOUNGSTER, 7, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerYoungsterWarren, -1
+	person_event SPRITE_YOUNGSTER, 3, 16, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 1, TrainerYoungsterJimmy, -1
+	person_event SPRITE_FISHER, 5, 49, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerFirebreatherBurt, -1
--- a/maps/Route30.asm
+++ b/maps/Route30.asm
@@ -429,13 +429,13 @@
 
 .PersonEvents:
 	db 11
-	person_event SPRITE_YOUNGSTER, 26, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, YoungsterJoey_ImportantBattleScript, EVENT_ROUTE_30_BATTLE
-	person_event SPRITE_YOUNGSTER, 28, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerYoungsterJoey, EVENT_ROUTE_30_YOUNGSTER_JOEY
-	person_event SPRITE_YOUNGSTER, 23, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerYoungsterMikey, -1
-	person_event SPRITE_BUG_CATCHER, 7, 1, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 3, TrainerBug_catcherDon, -1
-	person_event SPRITE_YOUNGSTER, 30, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, Route30YoungsterScript, -1
-	person_event SPRITE_MONSTER, 24, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_ROUTE_30_BATTLE
-	person_event SPRITE_MONSTER, 25, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_ROUTE_30_BATTLE
+	person_event SPRITE_YOUNGSTER, 26, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, YoungsterJoey_ImportantBattleScript, EVENT_ROUTE_30_BATTLE
+	person_event SPRITE_YOUNGSTER, 28, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerYoungsterJoey, EVENT_ROUTE_30_YOUNGSTER_JOEY
+	person_event SPRITE_YOUNGSTER, 23, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 1, TrainerYoungsterMikey, -1
+	person_event SPRITE_BUG_CATCHER, 7, 1, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 3, TrainerBug_catcherDon, -1
+	person_event SPRITE_YOUNGSTER, 30, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, Route30YoungsterScript, -1
+	person_event SPRITE_MONSTER, 24, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_ROUTE_30_BATTLE
+	person_event SPRITE_MONSTER, 25, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_ROUTE_30_BATTLE
 	person_event SPRITE_FRUIT_TREE, 39, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route30FruitTree1, -1
 	person_event SPRITE_FRUIT_TREE, 5, 11, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route30FruitTree2, -1
 	person_event SPRITE_COOLTRAINER_F, 13, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route30CooltrainerFScript, -1
--- a/maps/Route30BerrySpeechHouse.asm
+++ b/maps/Route30BerrySpeechHouse.asm
@@ -65,4 +65,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_POKEFAN_M, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x196d64, -1
+	person_event SPRITE_POKEFAN_M, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x196d64, -1
--- a/maps/Route31.asm
+++ b/maps/Route31.asm
@@ -13,9 +13,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_NEWMAP, .CheckMomCall
 
 .CheckMomCall:
@@ -441,7 +438,7 @@
 	db 7
 	person_event SPRITE_FISHER, 7, 17, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route31MailRecipientScript, -1
 	person_event SPRITE_YOUNGSTER, 5, 9, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route31YoungsterScript, -1
-	person_event SPRITE_BUG_CATCHER, 13, 21, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 5, TrainerBug_catcherWade1, -1
+	person_event SPRITE_BUG_CATCHER, 13, 21, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 5, TrainerBug_catcherWade1, -1
 	person_event SPRITE_COOLTRAINER_M, 8, 33, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route31CooltrainerMScript, -1
 	person_event SPRITE_FRUIT_TREE, 7, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route31FruitTree, -1
 	person_event SPRITE_POKE_BALL, 5, 29, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route31Potion, EVENT_ROUTE_31_POTION
--- a/maps/Route31VioletGate.asm
+++ b/maps/Route31VioletGate.asm
@@ -46,5 +46,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_OFFICER, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, OfficerScript_0x197634, -1
-	person_event SPRITE_COOLTRAINER_F, 2, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x197637, -1
+	person_event SPRITE_OFFICER, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, OfficerScript_0x197634, -1
+	person_event SPRITE_COOLTRAINER_F, 2, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x197637, -1
--- a/maps/Route32.asm
+++ b/maps/Route32.asm
@@ -17,26 +17,21 @@
 Route32_MapScriptHeader:
 .MapTriggers:
 	db 3
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
+	maptrigger .DummyTrigger2
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-	maptrigger .Trigger2
-
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_OBJECTS, .Frieda
 
-.Trigger0:
+.DummyTrigger0:
 	end
 
-.Trigger1:
+.DummyTrigger1:
 	end
 
-.Trigger2:
+.DummyTrigger2:
 	end
 
 .Frieda:
@@ -507,7 +502,7 @@
 Route32UnionCaveSign:
 	jumptext Route32UnionCaveSignText
 
-Route32PokeCenterSign:
+Route32PokecenterSign:
 	jumpstd pokecentersign
 
 Route32HiddenGreatBall:
@@ -956,21 +951,21 @@
 	signpost  5, 13, SIGNPOST_READ, Route32Sign
 	signpost  1,  9, SIGNPOST_READ, Route32RuinsSign
 	signpost 84, 10, SIGNPOST_READ, Route32UnionCaveSign
-	signpost 73, 12, SIGNPOST_READ, Route32PokeCenterSign
+	signpost 73, 12, SIGNPOST_READ, Route32PokecenterSign
 	signpost 67, 12, SIGNPOST_ITEM, Route32HiddenGreatBall
 	signpost 40, 11, SIGNPOST_ITEM, Route32HiddenSuperPotion
 
 .PersonEvents:
 	db 14
-	person_event SPRITE_FISHER, 49, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 1, TrainerFisherJustin, -1
-	person_event SPRITE_FISHER, 56, 12, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerFisherRalph1, -1
-	person_event SPRITE_FISHER, 48, 6, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 1, TrainerFisherHenry, -1
-	person_event SPRITE_YOUNGSTER, 22, 12, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerYoungsterAlbert, -1
-	person_event SPRITE_YOUNGSTER, 63, 4, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerYoungsterGordon, -1
-	person_event SPRITE_YOUNGSTER, 45, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerCamperRoland, -1
-	person_event SPRITE_LASS, 30, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 1, TrainerPicnickerLiz1, -1
+	person_event SPRITE_FISHER, 49, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 1, TrainerFisherJustin, -1
+	person_event SPRITE_FISHER, 56, 12, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 3, TrainerFisherRalph1, -1
+	person_event SPRITE_FISHER, 48, 6, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 1, TrainerFisherHenry, -1
+	person_event SPRITE_YOUNGSTER, 22, 12, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerYoungsterAlbert, -1
+	person_event SPRITE_YOUNGSTER, 63, 4, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerYoungsterGordon, -1
+	person_event SPRITE_YOUNGSTER, 45, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 3, TrainerCamperRoland, -1
+	person_event SPRITE_LASS, 30, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 1, TrainerPicnickerLiz1, -1
 	person_event SPRITE_COOLTRAINER_M, 8, 19, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route32CooltrainerMScript, -1
-	person_event SPRITE_YOUNGSTER, 82, 11, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerBird_keeperPeter, -1
+	person_event SPRITE_YOUNGSTER, 82, 11, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerBird_keeperPeter, -1
 	person_event SPRITE_FISHER, 70, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SlowpokeTailSalesmanScript, EVENT_SLOWPOKE_WELL_ROCKETS
 	person_event SPRITE_POKE_BALL, 53, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route32GreatBall, EVENT_ROUTE_32_GREAT_BALL
 	person_event SPRITE_FISHER, 13, 15, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route32RoarTMGuyScript, -1
--- a/maps/Route32PokeCenter1F.asm
+++ /dev/null
@@ -1,117 +1,0 @@
-const_value set 2
-	const ROUTE32POKECENTER1F_NURSE
-	const ROUTE32POKECENTER1F_FISHING_GURU
-	const ROUTE32POKECENTER1F_COOLTRAINER_F
-
-Route32PokeCenter1F_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-NurseScript_0x69b52:
-	jumpstd pokecenternurse
-
-FishingGuruScript_0x69b55:
-	faceplayer
-	opentext
-	checkevent EVENT_GOT_OLD_ROD
-	iftrue UnknownScript_0x69b7a
-	writetext UnknownText_0x69b83
-	yesorno
-	iffalse UnknownScript_0x69b74
-	writetext UnknownText_0x69be8
-	buttonsound
-	verbosegiveitem OLD_ROD
-	writetext UnknownText_0x69c1b
-	waitbutton
-	closetext
-	setevent EVENT_GOT_OLD_ROD
-	end
-
-UnknownScript_0x69b74:
-	writetext UnknownText_0x69c6c
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x69b7a:
-	writetext UnknownText_0x69c8d
-	waitbutton
-	closetext
-	end
-
-CooltrainerFScript_0x69b80:
-	jumptextfaceplayer UnknownText_0x69cac
-
-UnknownText_0x69b83:
-	text "This is a great"
-	line "fishing spot."
-
-	para "You saw people"
-	line "fishing? How"
-	cont "about you?"
-
-	para "Would you like one"
-	line "of my RODS?"
-	done
-
-UnknownText_0x69be8:
-	text "Heh, that's good"
-	line "to hear."
-
-	para "Now you're an"
-	line "angler too!"
-	done
-
-UnknownText_0x69c1b:
-	text "Fishing is great!"
-
-	para "If there's water,"
-	line "be it the sea or a"
-
-	para "stream, try out"
-	line "your ROD."
-	done
-
-UnknownText_0x69c6c:
-	text "Oh. That's rather"
-	line "disappointing…"
-	done
-
-UnknownText_0x69c8d:
-	text "Yo, kid. How are"
-	line "they biting?"
-	done
-
-UnknownText_0x69cac:
-	text "What should I make"
-	line "my #MON hold?"
-
-	para "Maybe an item that"
-	line "increases ATTACK"
-	cont "power…"
-	done
-
-Route32PokeCenter1F_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 3
-	warp_def $7, $3, 1, ROUTE_32
-	warp_def $7, $4, 1, ROUTE_32
-	warp_def $7, $0, 1, POKECENTER_2F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 3
-	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x69b52, -1
-	person_event SPRITE_FISHING_GURU, 4, 1, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, FishingGuruScript_0x69b55, -1
-	person_event SPRITE_COOLTRAINER_F, 2, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x69b80, -1
--- /dev/null
+++ b/maps/Route32Pokecenter1F.asm
@@ -1,0 +1,117 @@
+const_value set 2
+	const ROUTE32POKECENTER1F_NURSE
+	const ROUTE32POKECENTER1F_FISHING_GURU
+	const ROUTE32POKECENTER1F_COOLTRAINER_F
+
+Route32Pokecenter1F_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+NurseScript_0x69b52:
+	jumpstd pokecenternurse
+
+FishingGuruScript_0x69b55:
+	faceplayer
+	opentext
+	checkevent EVENT_GOT_OLD_ROD
+	iftrue UnknownScript_0x69b7a
+	writetext UnknownText_0x69b83
+	yesorno
+	iffalse UnknownScript_0x69b74
+	writetext UnknownText_0x69be8
+	buttonsound
+	verbosegiveitem OLD_ROD
+	writetext UnknownText_0x69c1b
+	waitbutton
+	closetext
+	setevent EVENT_GOT_OLD_ROD
+	end
+
+UnknownScript_0x69b74:
+	writetext UnknownText_0x69c6c
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x69b7a:
+	writetext UnknownText_0x69c8d
+	waitbutton
+	closetext
+	end
+
+CooltrainerFScript_0x69b80:
+	jumptextfaceplayer UnknownText_0x69cac
+
+UnknownText_0x69b83:
+	text "This is a great"
+	line "fishing spot."
+
+	para "You saw people"
+	line "fishing? How"
+	cont "about you?"
+
+	para "Would you like one"
+	line "of my RODS?"
+	done
+
+UnknownText_0x69be8:
+	text "Heh, that's good"
+	line "to hear."
+
+	para "Now you're an"
+	line "angler too!"
+	done
+
+UnknownText_0x69c1b:
+	text "Fishing is great!"
+
+	para "If there's water,"
+	line "be it the sea or a"
+
+	para "stream, try out"
+	line "your ROD."
+	done
+
+UnknownText_0x69c6c:
+	text "Oh. That's rather"
+	line "disappointing…"
+	done
+
+UnknownText_0x69c8d:
+	text "Yo, kid. How are"
+	line "they biting?"
+	done
+
+UnknownText_0x69cac:
+	text "What should I make"
+	line "my #MON hold?"
+
+	para "Maybe an item that"
+	line "increases ATTACK"
+	cont "power…"
+	done
+
+Route32Pokecenter1F_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 3
+	warp_def $7, $3, 1, ROUTE_32
+	warp_def $7, $4, 1, ROUTE_32
+	warp_def $7, $0, 1, POKECENTER_2F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 3
+	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x69b52, -1
+	person_event SPRITE_FISHING_GURU, 4, 1, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, FishingGuruScript_0x69b55, -1
+	person_event SPRITE_COOLTRAINER_F, 2, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x69b80, -1
--- /dev/null
+++ b/maps/Route32RuinsOfAlphGate.asm
@@ -1,0 +1,70 @@
+const_value set 2
+	const ROUTE32RUINSOFALPHGATE_OFFICER
+	const ROUTE32RUINSOFALPHGATE_POKEFAN_M
+	const ROUTE32RUINSOFALPHGATE_YOUNGSTER
+
+Route32RuinsOfAlphGate_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+OfficerScript_0x69a2d:
+	jumptextfaceplayer UnknownText_0x69a36
+
+PokefanMScript_0x69a30:
+	jumptextfaceplayer UnknownText_0x69a81
+
+YoungsterScript_0x69a33:
+	jumptextfaceplayer UnknownText_0x69abd
+
+UnknownText_0x69a36:
+	text "RUINS OF ALPH"
+
+	para "A Look-and-Touch"
+	line "Tourist Site"
+
+	para "Try the sliding"
+	line "stone panels!"
+	done
+
+UnknownText_0x69a81:
+	text "You're studying"
+	line "the RUINS?"
+
+	para "I see a scientist"
+	line "in the making."
+	done
+
+UnknownText_0x69abd:
+	text "There are drawings"
+	line "on stone panels."
+
+	para "I tried moving"
+	line "them. I wonder"
+	cont "what they are."
+	done
+
+Route32RuinsOfAlphGate_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 4
+	warp_def $4, $0, 10, RUINS_OF_ALPH_OUTSIDE
+	warp_def $5, $0, 11, RUINS_OF_ALPH_OUTSIDE
+	warp_def $4, $9, 2, ROUTE_32
+	warp_def $5, $9, 3, ROUTE_32
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 3
+	person_event SPRITE_OFFICER, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, OfficerScript_0x69a2d, -1
+	person_event SPRITE_POKEFAN_M, 2, 8, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x69a30, -1
+	person_event SPRITE_YOUNGSTER, 6, 1, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x69a33, -1
--- a/maps/Route32RuinsofAlphGate.asm
+++ /dev/null
@@ -1,70 +1,0 @@
-const_value set 2
-	const ROUTE32RUINSOFALPHGATE_OFFICER
-	const ROUTE32RUINSOFALPHGATE_POKEFAN_M
-	const ROUTE32RUINSOFALPHGATE_YOUNGSTER
-
-Route32RuinsofAlphGate_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-OfficerScript_0x69a2d:
-	jumptextfaceplayer UnknownText_0x69a36
-
-PokefanMScript_0x69a30:
-	jumptextfaceplayer UnknownText_0x69a81
-
-YoungsterScript_0x69a33:
-	jumptextfaceplayer UnknownText_0x69abd
-
-UnknownText_0x69a36:
-	text "RUINS OF ALPH"
-
-	para "A Look-and-Touch"
-	line "Tourist Site"
-
-	para "Try the sliding"
-	line "stone panels!"
-	done
-
-UnknownText_0x69a81:
-	text "You're studying"
-	line "the RUINS?"
-
-	para "I see a scientist"
-	line "in the making."
-	done
-
-UnknownText_0x69abd:
-	text "There are drawings"
-	line "on stone panels."
-
-	para "I tried moving"
-	line "them. I wonder"
-	cont "what they are."
-	done
-
-Route32RuinsofAlphGate_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 4
-	warp_def $4, $0, 10, RUINS_OF_ALPH_OUTSIDE
-	warp_def $5, $0, 11, RUINS_OF_ALPH_OUTSIDE
-	warp_def $4, $9, 2, ROUTE_32
-	warp_def $5, $9, 3, ROUTE_32
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 3
-	person_event SPRITE_OFFICER, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, OfficerScript_0x69a2d, -1
-	person_event SPRITE_POKEFAN_M, 2, 8, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x69a30, -1
-	person_event SPRITE_YOUNGSTER, 6, 1, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x69a33, -1
--- a/maps/Route33.asm
+++ b/maps/Route33.asm
@@ -211,6 +211,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_POKEFAN_M, 13, 6, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 2, TrainerHikerAnthony, -1
-	person_event SPRITE_LASS, 16, 13, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, Route33LassScript, -1
+	person_event SPRITE_POKEFAN_M, 13, 6, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 2, TrainerHikerAnthony, -1
+	person_event SPRITE_LASS, 16, 13, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, Route33LassScript, -1
 	person_event SPRITE_FRUIT_TREE, 16, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route33FruitTreeScript, -1
--- a/maps/Route34.asm
+++ b/maps/Route34.asm
@@ -6,8 +6,8 @@
 	const ROUTE34_OFFICER
 	const ROUTE34_POKEFAN_M
 	const ROUTE34_GRAMPS
-	const ROUTE34_DAYCARE_MON_1
-	const ROUTE34_DAYCARE_MON_2
+	const ROUTE34_DAY_CARE_MON_1
+	const ROUTE34_DAY_CARE_MON_2
 	const ROUTE34_COOLTRAINER_F1
 	const ROUTE34_COOLTRAINER_F2
 	const ROUTE34_COOLTRAINER_F3
@@ -19,41 +19,38 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_OBJECTS, .EggCheckCallback
 
 .EggCheckCallback:
-	checkflag ENGINE_DAYCARE_MAN_HAS_EGG
-	iftrue .PutDaycareManOutside
-	clearevent EVENT_DAYCARE_MAN_IN_DAYCARE
-	setevent EVENT_DAYCARE_MAN_ON_ROUTE_34
+	checkflag ENGINE_DAY_CARE_MAN_HAS_EGG
+	iftrue .PutDayCareManOutside
+	clearevent EVENT_DAY_CARE_MAN_IN_DAY_CARE
+	setevent EVENT_DAY_CARE_MAN_ON_ROUTE_34
 	jump .CheckMon1
 
-.PutDaycareManOutside:
-	setevent EVENT_DAYCARE_MAN_IN_DAYCARE
-	clearevent EVENT_DAYCARE_MAN_ON_ROUTE_34
+.PutDayCareManOutside:
+	setevent EVENT_DAY_CARE_MAN_IN_DAY_CARE
+	clearevent EVENT_DAY_CARE_MAN_ON_ROUTE_34
 	jump .CheckMon1
 
 .CheckMon1:
-	checkflag ENGINE_DAYCARE_MAN_HAS_MON
+	checkflag ENGINE_DAY_CARE_MAN_HAS_MON
 	iffalse .HideMon1
-	clearevent EVENT_DAYCARE_MON_1
+	clearevent EVENT_DAY_CARE_MON_1
 	jump .CheckMon2
 
 .HideMon1:
-	setevent EVENT_DAYCARE_MON_1
+	setevent EVENT_DAY_CARE_MON_1
 	jump .CheckMon2
 
 .CheckMon2:
-	checkflag ENGINE_DAYCARE_LADY_HAS_MON
+	checkflag ENGINE_DAY_CARE_LADY_HAS_MON
 	iffalse .HideMon2
-	clearevent EVENT_DAYCARE_MON_2
+	clearevent EVENT_DAY_CARE_MON_2
 	return
 
 .HideMon2:
-	setevent EVENT_DAYCARE_MON_2
+	setevent EVENT_DAY_CARE_MON_2
 	return
 
 DayCareManScript_Outside:
@@ -63,7 +60,7 @@
 	waitbutton
 	closetext
 	if_equal $1, .end_fail
-	clearflag ENGINE_DAYCARE_MAN_HAS_EGG
+	clearflag ENGINE_DAY_CARE_MAN_HAS_EGG
 	checkcode VAR_FACING
 	if_equal RIGHT, .walk_around_player
 	applymovement ROUTE34_GRAMPS, Route34MovementData_DayCareManWalksBackInside
@@ -78,13 +75,13 @@
 	disappear ROUTE34_GRAMPS
 	end
 
-DaycareMon1Script:
+DayCareMon1Script:
 	opentext
 	special Special_DayCareMon1
 	closetext
 	end
 
-DaycareMon2Script:
+DayCareMon2Script:
 	opentext
 	special Special_DayCareMon2
 	closetext
@@ -773,9 +770,9 @@
 	db 5
 	warp_def $25, $d, 1, ROUTE_34_ILEX_FOREST_GATE
 	warp_def $25, $e, 2, ROUTE_34_ILEX_FOREST_GATE
-	warp_def $e, $b, 1, DAYCARE
-	warp_def $f, $b, 2, DAYCARE
-	warp_def $f, $d, 3, DAYCARE
+	warp_def $e, $b, 1, DAY_CARE
+	warp_def $f, $b, 2, DAY_CARE
+	warp_def $f, $d, 3, DAY_CARE
 
 .XYTriggers:
 	db 0
@@ -790,16 +787,16 @@
 
 .PersonEvents:
 	db 13
-	person_event SPRITE_YOUNGSTER, 7, 13, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 5, TrainerCamperTodd1, -1
-	person_event SPRITE_YOUNGSTER, 32, 15, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerYoungsterSamuel, -1
-	person_event SPRITE_YOUNGSTER, 20, 11, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerYoungsterIan, -1
-	person_event SPRITE_LASS, 26, 10, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerPicnickerGina1, -1
-	person_event SPRITE_OFFICER, 11, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, OfficerKeithScript, -1
-	person_event SPRITE_POKEFAN_M, 28, 18, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerPokefanmBrandon, -1
-	person_event SPRITE_GRAMPS, 16, 15, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, DayCareManScript_Outside, EVENT_DAYCARE_MAN_ON_ROUTE_34
-	person_event SPRITE_DAYCARE_MON_1, 18, 14, SPRITEMOVEDATA_POKEMON, 2, 2, -1, -1, 0, PERSONTYPE_SCRIPT, 0, DaycareMon1Script, EVENT_DAYCARE_MON_1
-	person_event SPRITE_DAYCARE_MON_2, 19, 17, SPRITEMOVEDATA_POKEMON, 2, 2, -1, -1, 0, PERSONTYPE_SCRIPT, 0, DaycareMon2Script, EVENT_DAYCARE_MON_2
-	person_event SPRITE_COOLTRAINER_F, 48, 11, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 5, TrainerCooltrainerfIrene, -1
-	person_event SPRITE_COOLTRAINER_F, 48, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainerfJenn, -1
-	person_event SPRITE_COOLTRAINER_F, 51, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 2, TrainerCooltrainerfKate, -1
+	person_event SPRITE_YOUNGSTER, 7, 13, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 5, TrainerCamperTodd1, -1
+	person_event SPRITE_YOUNGSTER, 32, 15, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerYoungsterSamuel, -1
+	person_event SPRITE_YOUNGSTER, 20, 11, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerYoungsterIan, -1
+	person_event SPRITE_LASS, 26, 10, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 3, TrainerPicnickerGina1, -1
+	person_event SPRITE_OFFICER, 11, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, OfficerKeithScript, -1
+	person_event SPRITE_POKEFAN_M, 28, 18, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerPokefanmBrandon, -1
+	person_event SPRITE_GRAMPS, 16, 15, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, DayCareManScript_Outside, EVENT_DAY_CARE_MAN_ON_ROUTE_34
+	person_event SPRITE_DAY_CARE_MON_1, 18, 14, SPRITEMOVEDATA_POKEMON, 2, 2, -1, -1, 0, PERSONTYPE_SCRIPT, 0, DayCareMon1Script, EVENT_DAY_CARE_MON_1
+	person_event SPRITE_DAY_CARE_MON_2, 19, 17, SPRITEMOVEDATA_POKEMON, 2, 2, -1, -1, 0, PERSONTYPE_SCRIPT, 0, DayCareMon2Script, EVENT_DAY_CARE_MON_2
+	person_event SPRITE_COOLTRAINER_F, 48, 11, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 5, TrainerCooltrainerfIrene, -1
+	person_event SPRITE_COOLTRAINER_F, 48, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainerfJenn, -1
+	person_event SPRITE_COOLTRAINER_F, 51, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 2, TrainerCooltrainerfKate, -1
 	person_event SPRITE_POKE_BALL, 30, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route34Nugget, EVENT_ROUTE_34_NUGGET
--- a/maps/Route34IlexForestGate.asm
+++ b/maps/Route34IlexForestGate.asm
@@ -10,19 +10,16 @@
 
 .MapCallbacks:
 	db 1
+	dbw MAPCALLBACK_OBJECTS, .IsForestRestless
 
-	; callbacks
-
-	dbw MAPCALLBACK_OBJECTS, UnknownScript_0x62d2d
-
-UnknownScript_0x62d2d:
+.IsForestRestless:
 	checkevent EVENT_FOREST_IS_RESTLESS
-	iffalse UnknownScript_0x62d38
+	iffalse .Normal
 	disappear ROUTE34ILEXFORESTGATE_TEACHER1
 	appear ROUTE34ILEXFORESTGATE_TEACHER2
 	return
 
-UnknownScript_0x62d38:
+.Normal:
 	disappear ROUTE34ILEXFORESTGATE_TEACHER2
 	appear ROUTE34ILEXFORESTGATE_TEACHER1
 	return
@@ -158,7 +155,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_TEACHER, 3, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, TeacherScript_0x62d63, EVENT_ROUTE_34_ILEX_FOREST_GATE_TEACHER_BEHIND_COUNTER
-	person_event SPRITE_BUTTERFREE, 4, 9, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, IlexGateButterfree, -1
-	person_event SPRITE_LASS, 4, 3, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x62d94, EVENT_ROUTE_34_ILEX_FOREST_GATE_LASS
-	person_event SPRITE_TEACHER, 7, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, TeacherScript_0x62d63, EVENT_ROUTE_34_ILEX_FOREST_GATE_TEACHER_IN_WALKWAY
+	person_event SPRITE_TEACHER, 3, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, TeacherScript_0x62d63, EVENT_ROUTE_34_ILEX_FOREST_GATE_TEACHER_BEHIND_COUNTER
+	person_event SPRITE_BUTTERFREE, 4, 9, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, IlexGateButterfree, -1
+	person_event SPRITE_LASS, 4, 3, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x62d94, EVENT_ROUTE_34_ILEX_FOREST_GATE_LASS
+	person_event SPRITE_TEACHER, 7, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, TeacherScript_0x62d63, EVENT_ROUTE_34_ILEX_FOREST_GATE_TEACHER_IN_WALKWAY
--- a/maps/Route35.asm
+++ b/maps/Route35.asm
@@ -24,7 +24,7 @@
 Bird_keeperBryanScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19cc87
+	writetext Bird_keeperBryanAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -90,7 +90,7 @@
 CamperIvanScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19cac4
+	writetext CamperIvanAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -101,7 +101,7 @@
 CamperElliotScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19cb47
+	writetext CamperElliotAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -112,7 +112,7 @@
 PicnickerBrookeScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19cbba
+	writetext PicnickerBrookeAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -123,7 +123,7 @@
 PicnickerKimScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19cc21
+	writetext PicnickerKimAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -231,7 +231,7 @@
 FirebreatherWaltScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19cebc
+	writetext FirebreatherWaltAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -288,7 +288,7 @@
 	text "I give!"
 	done
 
-UnknownText_0x19cac4:
+CamperIvanAfterBattleText:
 	text "Music on the radio"
 	line "changes the moods"
 	cont "of wild #MON."
@@ -305,7 +305,7 @@
 	line "have lost for me…"
 	done
 
-UnknownText_0x19cb47:
+CamperElliotAfterBattleText:
 	text "I was humiliated"
 	line "in front of my"
 	cont "girlfriend…"
@@ -322,7 +322,7 @@
 	line "strong!"
 	done
 
-UnknownText_0x19cbba:
+PicnickerBrookeAfterBattleText:
 	text "I can count on my"
 	line "#MON more than"
 	cont "my boyfriend."
@@ -338,7 +338,7 @@
 	line "win…"
 	done
 
-UnknownText_0x19cc21:
+PicnickerKimAfterBattleText:
 	text "The GYM BADGES are"
 	line "pretty. I collect"
 	cont "them."
@@ -354,7 +354,7 @@
 	line "enough!"
 	done
 
-UnknownText_0x19cc87:
+Bird_keeperBryanAfterBattleText:
 	text "Some #MON flee"
 	line "right away."
 
@@ -426,7 +426,7 @@
 	line "tip of my nose!"
 	done
 
-UnknownText_0x19cebc:
+FirebreatherWaltAfterBattleText:
 	text "The #MON March"
 	line "on the radio lures"
 	cont "wild #MON."
@@ -482,14 +482,14 @@
 
 .PersonEvents:
 	db 11
-	person_event SPRITE_YOUNGSTER, 19, 4, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 2, TrainerCamperIvan, -1
-	person_event SPRITE_YOUNGSTER, 20, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerCamperElliot, -1
-	person_event SPRITE_LASS, 20, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerPicnickerBrooke, -1
-	person_event SPRITE_LASS, 26, 10, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 1, TrainerPicnickerKim, -1
-	person_event SPRITE_YOUNGSTER, 28, 14, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 0, TrainerBird_keeperBryan, -1
-	person_event SPRITE_FISHER, 10, 2, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 2, TrainerFirebreatherWalt, -1
-	person_event SPRITE_BUG_CATCHER, 7, 16, SPRITEMOVEDATA_STANDING_DOWN, 0, 2, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 3, TrainerBug_catcherArnie1, -1
-	person_event SPRITE_SUPER_NERD, 10, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 2, TrainerJugglerIrwin, -1
-	person_event SPRITE_OFFICER, 6, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, OfficerScript_0x19ca49, -1
+	person_event SPRITE_YOUNGSTER, 19, 4, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 2, TrainerCamperIvan, -1
+	person_event SPRITE_YOUNGSTER, 20, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 3, TrainerCamperElliot, -1
+	person_event SPRITE_LASS, 20, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 3, TrainerPicnickerBrooke, -1
+	person_event SPRITE_LASS, 26, 10, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 1, TrainerPicnickerKim, -1
+	person_event SPRITE_YOUNGSTER, 28, 14, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 0, TrainerBird_keeperBryan, -1
+	person_event SPRITE_FISHER, 10, 2, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 2, TrainerFirebreatherWalt, -1
+	person_event SPRITE_BUG_CATCHER, 7, 16, SPRITEMOVEDATA_STANDING_DOWN, 0, 2, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 3, TrainerBug_catcherArnie1, -1
+	person_event SPRITE_SUPER_NERD, 10, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 2, TrainerJugglerIrwin, -1
+	person_event SPRITE_OFFICER, 6, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, OfficerScript_0x19ca49, -1
 	person_event SPRITE_FRUIT_TREE, 25, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x19ca7e, -1
 	person_event SPRITE_POKE_BALL, 16, 13, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route35TMRollout, EVENT_ROUTE_35_TM_ROLLOUT
--- /dev/null
+++ b/maps/Route35GoldenrodGate.asm
@@ -1,0 +1,219 @@
+const_value set 2
+	const ROUTE35GOLDENRODGATE_OFFICER
+	const ROUTE35GOLDENRODGATE_POKEFAN_F
+	const ROUTE35GOLDENRODGATE_FISHER
+
+Route35GoldenrodGate_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+OfficerScript_0x69d37:
+	faceplayer
+	opentext
+	checkevent EVENT_GOT_HP_UP_FROM_RANDY
+	iftrue .gothpup
+	checkevent EVENT_GAVE_KENYA
+	iftrue .questcomplete
+	checkevent EVENT_GOT_KENYA
+	iftrue .alreadyhavekenya
+	writetext UnknownText_0x69ddd
+	yesorno
+	iffalse .refused
+	writetext UnknownText_0x69e48
+	buttonsound
+	waitsfx
+	checkcode VAR_PARTYCOUNT
+	if_equal PARTY_LENGTH, .partyfull
+	writetext UnknownText_0x69eb8
+	playsound SFX_KEY_ITEM
+	waitsfx
+	givepoke SPEAROW, 10, NO_ITEM, 1, GiftSpearowName, GiftSpearowOTName
+	givepokeitem GiftSpearowMail
+	setevent EVENT_GOT_KENYA
+.alreadyhavekenya
+	writetext UnknownText_0x69ed6
+	waitbutton
+	closetext
+	end
+
+.partyfull
+	writetext UnknownText_0x69f56
+	waitbutton
+	closetext
+	end
+
+.refused
+	writetext UnknownText_0x69f74
+	waitbutton
+	closetext
+	end
+
+.questcomplete
+	writetext UnknownText_0x69f8b
+	buttonsound
+	verbosegiveitem HP_UP
+	iffalse .bagfull
+	setevent EVENT_GOT_HP_UP_FROM_RANDY
+.gothpup
+	writetext UnknownText_0x69fd9
+	waitbutton
+.bagfull
+	closetext
+	end
+
+GiftSpearowMail:
+	db   FLOWER_MAIL
+	db   "DARK CAVE leads"
+	next "to another road@"
+GiftSpearowName:
+	db "KENYA@"
+GiftSpearowOTName:
+	db "RANDY@"
+
+	db 0
+
+PokefanFScript_0x69dc6:
+	faceplayer
+	opentext
+	checkevent EVENT_FOUGHT_SUDOWOODO
+	iftrue .aftersudowoodo
+	writetext UnknownText_0x6a00a
+	waitbutton
+	closetext
+	end
+
+.aftersudowoodo
+	writetext UnknownText_0x6a09a
+	waitbutton
+	closetext
+	end
+
+FisherScript_0x69dda:
+	jumptextfaceplayer UnknownText_0x6a0cb
+
+UnknownText_0x69ddd:
+	text "Excuse me, kid!"
+	line "Can you do a guy"
+	cont "a favor?"
+
+	para "Can you take this"
+	line "#MON with MAIL"
+	cont "to my friend?"
+
+	para "He's on ROUTE 31."
+	done
+
+UnknownText_0x69e48:
+	text "You will? Perfect!"
+	line "Thanks, kid!"
+
+	para "My pal's a chubby"
+	line "guy who snoozes"
+	cont "all the time."
+
+	para "You'll recognize"
+	line "him right away!"
+	done
+
+UnknownText_0x69eb8:
+	text "<PLAYER> received a"
+	line "#MON with MAIL."
+	done
+
+UnknownText_0x69ed6:
+	text "You can read it,"
+	line "but don't lose it!"
+	cont "ROUTE 31!"
+
+	para "Oh, yeah. There"
+	line "was a weird tree"
+	cont "blocking the road."
+
+	para "I wonder if it's"
+	line "been cleared?"
+	done
+
+UnknownText_0x69f56:
+	text "You can't carry"
+	line "another #MON…"
+	done
+
+UnknownText_0x69f74:
+	text "Oh… Never mind,"
+	line "then…"
+	done
+
+UnknownText_0x69f8b:
+	text "Thanks, kid! You"
+	line "made the delivery"
+	cont "for me!"
+
+	para "Here's something"
+	line "for your trouble!"
+	done
+
+UnknownText_0x69fd9:
+	text "My pal was snooz-"
+	line "ing, right? Heh,"
+	cont "what'd I say?"
+	done
+
+UnknownText_0x6a00a:
+	text "A strange tree is"
+	line "blocking the road."
+
+	para "It wriggles around"
+	line "if you talk to it."
+
+	para "I heard it became"
+	line "wild when someone"
+
+	para "watered it with a"
+	line "SQUIRTBOTTLE."
+	done
+
+UnknownText_0x6a09a:
+	text "I like the #MON"
+	line "Lullaby they play"
+	cont "on the radio."
+	done
+
+UnknownText_0x6a0cb:
+	text "I wonder how many"
+	line "kinds of #MON"
+
+	para "there are in the"
+	line "world."
+
+	para "Three years ago,"
+	line "PROF.OAK said that"
+
+	para "there were 150"
+	line "different kinds."
+	done
+
+Route35GoldenrodGate_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 4
+	warp_def $0, $4, 1, ROUTE_35
+	warp_def $0, $5, 2, ROUTE_35
+	warp_def $7, $4, 12, GOLDENROD_CITY
+	warp_def $7, $5, 12, GOLDENROD_CITY
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 3
+	person_event SPRITE_OFFICER, 4, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, OfficerScript_0x69d37, -1
+	person_event SPRITE_POKEFAN_F, 4, 6, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, PokefanFScript_0x69dc6, -1
+	person_event SPRITE_FISHER, 2, 3, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, FisherScript_0x69dda, -1
--- a/maps/Route35Goldenrodgate.asm
+++ /dev/null
@@ -1,219 +1,0 @@
-const_value set 2
-	const ROUTE35GOLDENRODGATE_OFFICER
-	const ROUTE35GOLDENRODGATE_POKEFAN_F
-	const ROUTE35GOLDENRODGATE_FISHER
-
-Route35Goldenrodgate_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-OfficerScript_0x69d37:
-	faceplayer
-	opentext
-	checkevent EVENT_GOT_HP_UP_FROM_RANDY
-	iftrue .gothpup
-	checkevent EVENT_GAVE_KENYA
-	iftrue .questcomplete
-	checkevent EVENT_GOT_KENYA
-	iftrue .alreadyhavekenya
-	writetext UnknownText_0x69ddd
-	yesorno
-	iffalse .refused
-	writetext UnknownText_0x69e48
-	buttonsound
-	waitsfx
-	checkcode VAR_PARTYCOUNT
-	if_equal PARTY_LENGTH, .partyfull
-	writetext UnknownText_0x69eb8
-	playsound SFX_KEY_ITEM
-	waitsfx
-	givepoke SPEAROW, 10, NO_ITEM, 1, GiftSpearowName, GiftSpearowOTName
-	givepokeitem GiftSpearowMail
-	setevent EVENT_GOT_KENYA
-.alreadyhavekenya
-	writetext UnknownText_0x69ed6
-	waitbutton
-	closetext
-	end
-
-.partyfull
-	writetext UnknownText_0x69f56
-	waitbutton
-	closetext
-	end
-
-.refused
-	writetext UnknownText_0x69f74
-	waitbutton
-	closetext
-	end
-
-.questcomplete
-	writetext UnknownText_0x69f8b
-	buttonsound
-	verbosegiveitem HP_UP
-	iffalse .bagfull
-	setevent EVENT_GOT_HP_UP_FROM_RANDY
-.gothpup
-	writetext UnknownText_0x69fd9
-	waitbutton
-.bagfull
-	closetext
-	end
-
-GiftSpearowMail:
-	db   FLOWER_MAIL
-	db   "DARK CAVE leads"
-	next "to another road@"
-GiftSpearowName:
-	db "KENYA@"
-GiftSpearowOTName:
-	db "RANDY@"
-
-	db 0
-
-PokefanFScript_0x69dc6:
-	faceplayer
-	opentext
-	checkevent EVENT_FOUGHT_SUDOWOODO
-	iftrue .aftersudowoodo
-	writetext UnknownText_0x6a00a
-	waitbutton
-	closetext
-	end
-
-.aftersudowoodo
-	writetext UnknownText_0x6a09a
-	waitbutton
-	closetext
-	end
-
-FisherScript_0x69dda:
-	jumptextfaceplayer UnknownText_0x6a0cb
-
-UnknownText_0x69ddd:
-	text "Excuse me, kid!"
-	line "Can you do a guy"
-	cont "a favor?"
-
-	para "Can you take this"
-	line "#MON with MAIL"
-	cont "to my friend?"
-
-	para "He's on ROUTE 31."
-	done
-
-UnknownText_0x69e48:
-	text "You will? Perfect!"
-	line "Thanks, kid!"
-
-	para "My pal's a chubby"
-	line "guy who snoozes"
-	cont "all the time."
-
-	para "You'll recognize"
-	line "him right away!"
-	done
-
-UnknownText_0x69eb8:
-	text "<PLAYER> received a"
-	line "#MON with MAIL."
-	done
-
-UnknownText_0x69ed6:
-	text "You can read it,"
-	line "but don't lose it!"
-	cont "ROUTE 31!"
-
-	para "Oh, yeah. There"
-	line "was a weird tree"
-	cont "blocking the road."
-
-	para "I wonder if it's"
-	line "been cleared?"
-	done
-
-UnknownText_0x69f56:
-	text "You can't carry"
-	line "another #MON…"
-	done
-
-UnknownText_0x69f74:
-	text "Oh… Never mind,"
-	line "then…"
-	done
-
-UnknownText_0x69f8b:
-	text "Thanks, kid! You"
-	line "made the delivery"
-	cont "for me!"
-
-	para "Here's something"
-	line "for your trouble!"
-	done
-
-UnknownText_0x69fd9:
-	text "My pal was snooz-"
-	line "ing, right? Heh,"
-	cont "what'd I say?"
-	done
-
-UnknownText_0x6a00a:
-	text "A strange tree is"
-	line "blocking the road."
-
-	para "It wriggles around"
-	line "if you talk to it."
-
-	para "I heard it became"
-	line "wild when someone"
-
-	para "watered it with a"
-	line "SQUIRTBOTTLE."
-	done
-
-UnknownText_0x6a09a:
-	text "I like the #MON"
-	line "Lullaby they play"
-	cont "on the radio."
-	done
-
-UnknownText_0x6a0cb:
-	text "I wonder how many"
-	line "kinds of #MON"
-
-	para "there are in the"
-	line "world."
-
-	para "Three years ago,"
-	line "PROF.OAK said that"
-
-	para "there were 150"
-	line "different kinds."
-	done
-
-Route35Goldenrodgate_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 4
-	warp_def $0, $4, 1, ROUTE_35
-	warp_def $0, $5, 2, ROUTE_35
-	warp_def $7, $4, 12, GOLDENROD_CITY
-	warp_def $7, $5, 12, GOLDENROD_CITY
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 3
-	person_event SPRITE_OFFICER, 4, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, OfficerScript_0x69d37, -1
-	person_event SPRITE_POKEFAN_F, 4, 6, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, PokefanFScript_0x69dc6, -1
-	person_event SPRITE_FISHER, 2, 3, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, FisherScript_0x69dda, -1
--- /dev/null
+++ b/maps/Route35NationalParkGate.asm
@@ -1,0 +1,462 @@
+const_value set 2
+	const ROUTE35NATIONALPARKGATE_OFFICER1
+	const ROUTE35NATIONALPARKGATE_YOUNGSTER
+	const ROUTE35NATIONALPARKGATE_OFFICER2
+
+Route35NationalParkGate_MapScriptHeader:
+.MapTriggers:
+	db 3
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
+	maptrigger .LeaveContestEarly
+
+.MapCallbacks:
+	db 2
+	dbw MAPCALLBACK_NEWMAP, .CheckIfContestRunning
+	dbw MAPCALLBACK_OBJECTS, .CheckIfContestAvailable
+
+.DummyTrigger0:
+	end
+
+.DummyTrigger1:
+	end
+
+.LeaveContestEarly:
+	priorityjump .LeavingContestEarly
+	end
+
+.CheckIfContestRunning:
+	checkflag ENGINE_BUG_CONTEST_TIMER
+	iftrue .BugContestIsRunning
+	dotrigger $0
+	return
+
+.BugContestIsRunning:
+	dotrigger $2
+	return
+
+.CheckIfContestAvailable:
+	checkcode VAR_WEEKDAY
+	if_equal TUESDAY, .SetContestOfficer
+	if_equal THURSDAY, .SetContestOfficer
+	if_equal SATURDAY, .SetContestOfficer
+	checkflag ENGINE_BUG_CONTEST_TIMER
+	iftrue .BugContestIsRunning
+	disappear ROUTE35NATIONALPARKGATE_OFFICER1
+	appear ROUTE35NATIONALPARKGATE_YOUNGSTER
+	appear ROUTE35NATIONALPARKGATE_OFFICER2
+	return
+
+.SetContestOfficer:
+	appear ROUTE35NATIONALPARKGATE_OFFICER1
+	disappear ROUTE35NATIONALPARKGATE_YOUNGSTER
+	disappear ROUTE35NATIONALPARKGATE_OFFICER2
+	return
+
+.LeavingContestEarly:
+	applymovement PLAYER, MovementData_0x6a2e2
+	spriteface ROUTE35NATIONALPARKGATE_OFFICER1, RIGHT
+	opentext
+	checkcode VAR_CONTESTMINUTES
+	addvar $1
+	RAM2MEM $0
+	writetext UnknownText_0x6a79a
+	yesorno
+	iffalse .GoBackToContest
+	writetext UnknownText_0x6a7db
+	waitbutton
+	closetext
+	jumpstd bugcontestresultswarp
+
+.GoBackToContest:
+	writetext UnknownText_0x6a823
+	waitbutton
+	closetext
+	scall Route35NationalParkGate_EnterContest
+	playsound SFX_ENTER_DOOR
+	special FadeOutPalettes
+	waitsfx
+	warpfacing UP, NATIONAL_PARK_BUG_CONTEST, $a, $2f
+	end
+
+OfficerScript_0x6a204:
+	checkcode VAR_WEEKDAY
+	if_equal SUNDAY, Route35NationalParkGate_NoContestToday
+	if_equal MONDAY, Route35NationalParkGate_NoContestToday
+	if_equal WEDNESDAY, Route35NationalParkGate_NoContestToday
+	if_equal FRIDAY, Route35NationalParkGate_NoContestToday
+	faceplayer
+	opentext
+	checkflag ENGINE_DAILY_BUG_CONTEST
+	iftrue Route35NationalParkGate_ContestIsOver
+	scall Route35NationalParkGate_GetDayOfWeek
+	writetext UnknownText_0x6a2eb
+	yesorno
+	iffalse Route35NationalParkGate_DeclinedToParticipate
+	checkcode VAR_PARTYCOUNT
+	if_greater_than $1, Route35NationalParkGate_LeaveTheRestBehind
+	special ContestDropOffMons
+	clearevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
+Route35NationalParkGate_OkayToProceed:
+	setflag ENGINE_BUG_CONTEST_TIMER
+	special PlayMapMusic
+	writetext UnknownText_0x6a39d
+	buttonsound
+	writetext UnknownText_0x6a3c7
+	playsound SFX_ITEM
+	waitsfx
+	writetext UnknownText_0x6a3e2
+	waitbutton
+	closetext
+	special Special_GiveParkBalls
+	scall Route35NationalParkGate_EnterContest
+	playsound SFX_ENTER_DOOR
+	special FadeOutPalettes
+	waitsfx
+	special Special_SelectRandomBugContestContestants
+	warpfacing UP, NATIONAL_PARK_BUG_CONTEST, $a, $2f
+	end
+
+Route35NationalParkGate_EnterContest:
+	checkcode VAR_FACING
+	if_equal LEFT, Route35NationalParkGate_FacingLeft
+	applymovement PLAYER, MovementData_0x6a2e5
+	end
+
+Route35NationalParkGate_FacingLeft:
+	applymovement PLAYER, MovementData_0x6a2e9
+	end
+
+Route35NationalParkGate_LeaveTheRestBehind:
+	checkcode VAR_PARTYCOUNT
+	if_less_than 6, Route35NationalParkGate_LessThanFullParty
+	checkcode VAR_BOXSPACE
+	if_equal 0, Route35NationalParkGate_NoRoomInBox
+
+Route35NationalParkGate_LessThanFullParty: ; 6a27d
+	special CheckFirstMonIsEgg
+	if_equal $1, Route35NationalParkGate_FirstMonIsEgg
+	writetext UnknownText_0x6a4c6
+	yesorno
+	iffalse Route35NationalParkGate_DeclinedToLeaveMonsBehind
+	special ContestDropOffMons
+	iftrue Route35NationalParkGate_FirstMonIsFainted
+	setevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
+	writetext UnknownText_0x6a537
+	buttonsound
+	writetext UnknownText_0x6a56b
+	playsound SFX_GOT_SAFARI_BALLS
+	waitsfx
+	buttonsound
+	jump Route35NationalParkGate_OkayToProceed
+
+Route35NationalParkGate_DeclinedToParticipate:
+	writetext UnknownText_0x6a5dc
+	waitbutton
+	closetext
+	end
+
+Route35NationalParkGate_DeclinedToLeaveMonsBehind:
+	writetext UnknownText_0x6a597
+	waitbutton
+	closetext
+	end
+
+Route35NationalParkGate_FirstMonIsFainted:
+	writetext UnknownText_0x6a608
+	waitbutton
+	closetext
+	end
+
+Route35NationalParkGate_NoRoomInBox:
+	writetext UnknownText_0x6a67c
+	waitbutton
+	closetext
+	end
+
+Route35NationalParkGate_FirstMonIsEgg:
+	writetext UnknownText_0x6a71f
+	waitbutton
+	closetext
+	end
+
+Route35NationalParkGate_ContestIsOver:
+	writetext UnknownText_0x6a84f
+	waitbutton
+	closetext
+	end
+
+Route35NationalParkGate_NoContestToday:
+	jumptextfaceplayer UnknownText_0x6a894
+
+OfficerScript_0x6a2ca:
+	faceplayer
+	opentext
+	checkflag ENGINE_DAILY_BUG_CONTEST
+	iftrue Route35NationalParkGate_ContestIsOver
+	writetext UnknownText_0x6a894
+	waitbutton
+	closetext
+	end
+
+YoungsterScript_0x6a2d8:
+	jumptextfaceplayer UnknownText_0x6a8d8
+
+MapRoute36NationalParkGateSignpost0Script:
+	jumptext UnknownText_0x6a90e
+
+Route35NationalParkGate_GetDayOfWeek:
+	jumpstd daytotext
+	end
+
+MovementData_0x6a2e2:
+	step DOWN
+	turn_head LEFT
+	step_end
+
+MovementData_0x6a2e5:
+	step RIGHT
+	step UP
+	step UP
+	step_end
+
+MovementData_0x6a2e9:
+	step UP
+	step_end
+
+UnknownText_0x6a2eb:
+	text "Today's @"
+	text_from_ram StringBuffer3
+	text "."
+	line "That means the"
+
+	para "Bug-Catching Con-"
+	line "test is on today."
+
+	para "The rules are sim-"
+	line "ple."
+
+	para "Using one of your"
+	line "#MON, catch a"
+
+	para "bug #MON to be"
+	line "judged."
+
+	para "Would you like to"
+	line "give it a try?"
+	done
+
+UnknownText_0x6a39d:
+	text "Here are the PARK"
+	line "BALLS for the"
+	cont "Contest."
+	done
+
+UnknownText_0x6a3c7:
+	text "<PLAYER> received"
+	line "20 PARK BALLS."
+	done
+
+UnknownText_0x6a3e2:
+	text "The person who"
+	line "gets the strong-"
+	cont "est bug #MON"
+	cont "is the winner."
+
+	para "You have 20"
+	line "minutes."
+
+	para "If you run out of"
+	line "PARK BALLS, you're"
+	cont "done."
+
+	para "You can keep the"
+	line "last #MON you"
+	cont "catch as your own."
+
+	para "Go out and catch"
+	line "the strongest bug"
+
+	para "#MON you can"
+	line "find!"
+	done
+
+UnknownText_0x6a4c6:
+	text "Uh-oh…"
+
+	para "You have more than"
+	line "one #MON."
+
+	para "You'll have to use"
+	line "@"
+	text_from_ram StringBuffer3
+	text ", the"
+
+	para "first #MON in"
+	line "your party."
+
+	para "Is that OK with"
+	line "you?"
+	done
+
+UnknownText_0x6a537:
+	text "Fine, we'll hold"
+	line "your other #MON"
+	cont "while you compete."
+	done
+
+UnknownText_0x6a56b:
+	text "<PLAYER>'s #MON"
+	line "were left with the"
+	cont "CONTEST HELPER."
+	done
+
+UnknownText_0x6a597:
+	text "Please choose the"
+	line "#MON to be used"
+
+	para "in the Contest,"
+	line "then come see me."
+	done
+
+UnknownText_0x6a5dc:
+	text "OK. We hope you'll"
+	line "take part in the"
+	cont "future."
+	done
+
+UnknownText_0x6a608:
+	text "Uh-oh…"
+	line "The first #MON"
+
+	para "in your party"
+	line "can't battle."
+
+	para "Please switch it"
+	line "with the #MON"
+
+	para "you want to use,"
+	line "then come see me."
+	done
+
+UnknownText_0x6a67c:
+	text "Uh-oh…"
+	line "Both your party"
+
+	para "and your PC BOX"
+	line "are full."
+
+	para "You have no room"
+	line "to put the bug"
+	cont "#MON you catch."
+
+	para "Please make room"
+	line "in your party or"
+
+	para "your PC BOX, then"
+	line "come see me."
+	done
+
+UnknownText_0x6a71f:
+	text "Uh-oh…"
+	line "You have an EGG as"
+
+	para "the first #MON"
+	line "in your party."
+
+	para "Please switch it"
+	line "with the #MON"
+
+	para "you want to use,"
+	line "then come see me."
+	done
+
+UnknownText_0x6a79a:
+	text "You still have @"
+	text_from_ram StringBuffer3
+	text ""
+	line "minute(s) left."
+
+	para "Do you want to"
+	line "finish now?"
+	done
+
+UnknownText_0x6a7db:
+	text "OK. Please wait at"
+	line "the North Gate for"
+
+	para "the announcement"
+	line "of the winners."
+	done
+
+UnknownText_0x6a823:
+	text "OK. Please get"
+	line "back outside and"
+	cont "finish up."
+	done
+
+UnknownText_0x6a84f:
+	text "Today's Contest is"
+	line "over. We hope you"
+
+	para "will participate"
+	line "in the future."
+	done
+
+UnknownText_0x6a894:
+	text "We hold Contests"
+	line "regularly in the"
+
+	para "PARK. You should"
+	line "give it a shot."
+	done
+
+UnknownText_0x6a8d8:
+	text "When is the next"
+	line "Bug-Catching Con-"
+	cont "test going to be?"
+	done
+
+UnknownText_0x6a90e:
+	text "The Bug-Catching"
+	line "Contest is held on"
+
+	para "Tuesday, Thursday"
+	line "and Saturday."
+
+	para "Not only do you"
+	line "earn a prize just"
+
+	para "for participating,"
+	line "you also get to"
+
+	para "keep the bug"
+	line "#MON you may"
+
+	para "have at the end of"
+	line "the contest."
+	done
+
+Route35NationalParkGate_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 4
+	warp_def $0, $3, 3, NATIONAL_PARK
+	warp_def $0, $4, 4, NATIONAL_PARK
+	warp_def $7, $3, 3, ROUTE_35
+	warp_def $7, $4, 3, ROUTE_35
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 1
+	signpost 0, 5, SIGNPOST_READ, MapRoute36NationalParkGateSignpost0Script
+
+.PersonEvents:
+	db 3
+	person_event SPRITE_OFFICER, 1, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, OfficerScript_0x6a204, EVENT_ROUTE_35_NATIONAL_PARK_GATE_OFFICER_CONTEST_DAY
+	person_event SPRITE_YOUNGSTER, 5, 6, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x6a2d8, EVENT_ROUTE_35_NATIONAL_PARK_GATE_YOUNGSTER
+	person_event SPRITE_OFFICER, 3, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, OfficerScript_0x6a2ca, EVENT_ROUTE_35_NATIONAL_PARK_GATE_OFFICER_NOT_CONTEST_DAY
--- /dev/null
+++ b/maps/Route35NationalParkGate.blk
@@ -1,0 +1,1 @@
+).,(6
6%&
\ No newline at end of file
--- a/maps/Route35NationalParkgate.asm
+++ /dev/null
@@ -1,468 +1,0 @@
-const_value set 2
-	const ROUTE35NATIONALPARKGATE_OFFICER1
-	const ROUTE35NATIONALPARKGATE_YOUNGSTER
-	const ROUTE35NATIONALPARKGATE_OFFICER2
-
-Route35NationalParkgate_MapScriptHeader:
-.MapTriggers:
-	db 3
-
-	; triggers
-	dw Route35NationalParkgate_Trigger1, 0
-	dw Route35NationalParkgate_Trigger2, 0
-	dw Route35NationalParkgate_Trigger3, 0
-
-.MapCallbacks:
-	db 2
-
-	; callbacks
-
-	dbw MAPCALLBACK_NEWMAP, Route35NationalParkgate_CheckIfStillInContest
-
-	dbw MAPCALLBACK_OBJECTS, Route35NationalParkgate_CheckIfContestDay
-
-Route35NationalParkgate_Trigger1:
-	end
-
-Route35NationalParkgate_Trigger2:
-	end
-
-Route35NationalParkgate_Trigger3:
-	priorityjump Route35NationalParkGate_LeavingContestEarly
-	end
-
-Route35NationalParkgate_CheckIfStillInContest:
-	checkflag ENGINE_BUG_CONTEST_TIMER
-	iftrue Route35NationalParkgate_Yes
-	dotrigger $0
-	return
-
-Route35NationalParkgate_Yes:
-	dotrigger $2
-	return
-
-Route35NationalParkgate_CheckIfContestDay:
-	checkcode VAR_WEEKDAY
-	if_equal TUESDAY, Route35NationalParkgate_IsContestDay
-	if_equal THURSDAY, Route35NationalParkgate_IsContestDay
-	if_equal SATURDAY, Route35NationalParkgate_IsContestDay
-	checkflag ENGINE_BUG_CONTEST_TIMER
-	iftrue Route35NationalParkgate_Yes
-	disappear ROUTE35NATIONALPARKGATE_OFFICER1
-	appear ROUTE35NATIONALPARKGATE_YOUNGSTER
-	appear ROUTE35NATIONALPARKGATE_OFFICER2
-	return
-
-Route35NationalParkgate_IsContestDay:
-	appear ROUTE35NATIONALPARKGATE_OFFICER1
-	disappear ROUTE35NATIONALPARKGATE_YOUNGSTER
-	disappear ROUTE35NATIONALPARKGATE_OFFICER2
-	return
-
-Route35NationalParkGate_LeavingContestEarly:
-	applymovement PLAYER, MovementData_0x6a2e2
-	spriteface ROUTE35NATIONALPARKGATE_OFFICER1, RIGHT
-	opentext
-	checkcode VAR_CONTESTMINUTES
-	addvar $1
-	RAM2MEM $0
-	writetext UnknownText_0x6a79a
-	yesorno
-	iffalse Route35NationalParkgate_GoBackIn
-	writetext UnknownText_0x6a7db
-	waitbutton
-	closetext
-	jumpstd bugcontestresultswarp
-
-Route35NationalParkgate_GoBackIn:
-	writetext UnknownText_0x6a823
-	waitbutton
-	closetext
-	scall Route35NationalParkgate_EnterContest
-	playsound SFX_ENTER_DOOR
-	special FadeOutPalettes
-	waitsfx
-	warpfacing UP, NATIONAL_PARK_BUG_CONTEST, $a, $2f
-	end
-
-OfficerScript_0x6a204:
-	checkcode VAR_WEEKDAY
-	if_equal SUNDAY, Route35NationalParkgate_NoContestToday
-	if_equal MONDAY, Route35NationalParkgate_NoContestToday
-	if_equal WEDNESDAY, Route35NationalParkgate_NoContestToday
-	if_equal FRIDAY, Route35NationalParkgate_NoContestToday
-	faceplayer
-	opentext
-	checkflag ENGINE_DAILY_BUG_CONTEST
-	iftrue Route35NationalParkgate_ContestIsOver
-	scall Route35NationalParkgate_GetDayOfWeek
-	writetext UnknownText_0x6a2eb
-	yesorno
-	iffalse Route35NationalParkgate_DeclinedToParticipate
-	checkcode VAR_PARTYCOUNT
-	if_greater_than $1, Route35NationalParkgate_LeaveTheRestBehind
-	special ContestDropOffMons
-	clearevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
-Route35NationalParkgate_OkayToProceed:
-	setflag ENGINE_BUG_CONTEST_TIMER
-	special PlayMapMusic
-	writetext UnknownText_0x6a39d
-	buttonsound
-	writetext UnknownText_0x6a3c7
-	playsound SFX_ITEM
-	waitsfx
-	writetext UnknownText_0x6a3e2
-	waitbutton
-	closetext
-	special Special_GiveParkBalls
-	scall Route35NationalParkgate_EnterContest
-	playsound SFX_ENTER_DOOR
-	special FadeOutPalettes
-	waitsfx
-	special Special_SelectRandomBugContestContestants
-	warpfacing UP, NATIONAL_PARK_BUG_CONTEST, $a, $2f
-	end
-
-Route35NationalParkgate_EnterContest:
-	checkcode VAR_FACING
-	if_equal LEFT, Route35NationalParkgate_FacingLeft
-	applymovement PLAYER, MovementData_0x6a2e5
-	end
-
-Route35NationalParkgate_FacingLeft:
-	applymovement PLAYER, MovementData_0x6a2e9
-	end
-
-Route35NationalParkgate_LeaveTheRestBehind:
-	checkcode VAR_PARTYCOUNT
-	if_less_than 6, Route35NationalParkgate_LessThanFullParty
-	checkcode VAR_BOXSPACE
-	if_equal 0, Route35NationalParkgate_NoRoomInBox
-
-Route35NationalParkgate_LessThanFullParty: ; 6a27d
-	special CheckFirstMonIsEgg
-	if_equal $1, Route35NationalParkgate_FirstMonIsEgg
-	writetext UnknownText_0x6a4c6
-	yesorno
-	iffalse Route35NationalParkgate_DeclinedToLeaveMonsBehind
-	special ContestDropOffMons
-	iftrue Route35NationalParkgate_FirstMonIsFainted
-	setevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
-	writetext UnknownText_0x6a537
-	buttonsound
-	writetext UnknownText_0x6a56b
-	playsound SFX_GOT_SAFARI_BALLS
-	waitsfx
-	buttonsound
-	jump Route35NationalParkgate_OkayToProceed
-
-Route35NationalParkgate_DeclinedToParticipate:
-	writetext UnknownText_0x6a5dc
-	waitbutton
-	closetext
-	end
-
-Route35NationalParkgate_DeclinedToLeaveMonsBehind:
-	writetext UnknownText_0x6a597
-	waitbutton
-	closetext
-	end
-
-Route35NationalParkgate_FirstMonIsFainted:
-	writetext UnknownText_0x6a608
-	waitbutton
-	closetext
-	end
-
-Route35NationalParkgate_NoRoomInBox:
-	writetext UnknownText_0x6a67c
-	waitbutton
-	closetext
-	end
-
-Route35NationalParkgate_FirstMonIsEgg:
-	writetext UnknownText_0x6a71f
-	waitbutton
-	closetext
-	end
-
-Route35NationalParkgate_ContestIsOver:
-	writetext UnknownText_0x6a84f
-	waitbutton
-	closetext
-	end
-
-Route35NationalParkgate_NoContestToday:
-	jumptextfaceplayer UnknownText_0x6a894
-
-OfficerScript_0x6a2ca:
-	faceplayer
-	opentext
-	checkflag ENGINE_DAILY_BUG_CONTEST
-	iftrue Route35NationalParkgate_ContestIsOver
-	writetext UnknownText_0x6a894
-	waitbutton
-	closetext
-	end
-
-YoungsterScript_0x6a2d8:
-	jumptextfaceplayer UnknownText_0x6a8d8
-
-MapRoute36NationalParkgateSignpost0Script:
-	jumptext UnknownText_0x6a90e
-
-Route35NationalParkgate_GetDayOfWeek:
-	jumpstd daytotext
-	end
-
-MovementData_0x6a2e2:
-	step DOWN
-	turn_head LEFT
-	step_end
-
-MovementData_0x6a2e5:
-	step RIGHT
-	step UP
-	step UP
-	step_end
-
-MovementData_0x6a2e9:
-	step UP
-	step_end
-
-UnknownText_0x6a2eb:
-	text "Today's @"
-	text_from_ram StringBuffer3
-	text "."
-	line "That means the"
-
-	para "Bug-Catching Con-"
-	line "test is on today."
-
-	para "The rules are sim-"
-	line "ple."
-
-	para "Using one of your"
-	line "#MON, catch a"
-
-	para "bug #MON to be"
-	line "judged."
-
-	para "Would you like to"
-	line "give it a try?"
-	done
-
-UnknownText_0x6a39d:
-	text "Here are the PARK"
-	line "BALLS for the"
-	cont "Contest."
-	done
-
-UnknownText_0x6a3c7:
-	text "<PLAYER> received"
-	line "20 PARK BALLS."
-	done
-
-UnknownText_0x6a3e2:
-	text "The person who"
-	line "gets the strong-"
-	cont "est bug #MON"
-	cont "is the winner."
-
-	para "You have 20"
-	line "minutes."
-
-	para "If you run out of"
-	line "PARK BALLS, you're"
-	cont "done."
-
-	para "You can keep the"
-	line "last #MON you"
-	cont "catch as your own."
-
-	para "Go out and catch"
-	line "the strongest bug"
-
-	para "#MON you can"
-	line "find!"
-	done
-
-UnknownText_0x6a4c6:
-	text "Uh-oh…"
-
-	para "You have more than"
-	line "one #MON."
-
-	para "You'll have to use"
-	line "@"
-	text_from_ram StringBuffer3
-	text ", the"
-
-	para "first #MON in"
-	line "your party."
-
-	para "Is that OK with"
-	line "you?"
-	done
-
-UnknownText_0x6a537:
-	text "Fine, we'll hold"
-	line "your other #MON"
-	cont "while you compete."
-	done
-
-UnknownText_0x6a56b:
-	text "<PLAYER>'s #MON"
-	line "were left with the"
-	cont "CONTEST HELPER."
-	done
-
-UnknownText_0x6a597:
-	text "Please choose the"
-	line "#MON to be used"
-
-	para "in the Contest,"
-	line "then come see me."
-	done
-
-UnknownText_0x6a5dc:
-	text "OK. We hope you'll"
-	line "take part in the"
-	cont "future."
-	done
-
-UnknownText_0x6a608:
-	text "Uh-oh…"
-	line "The first #MON"
-
-	para "in your party"
-	line "can't battle."
-
-	para "Please switch it"
-	line "with the #MON"
-
-	para "you want to use,"
-	line "then come see me."
-	done
-
-UnknownText_0x6a67c:
-	text "Uh-oh…"
-	line "Both your party"
-
-	para "and your PC BOX"
-	line "are full."
-
-	para "You have no room"
-	line "to put the bug"
-	cont "#MON you catch."
-
-	para "Please make room"
-	line "in your party or"
-
-	para "your PC BOX, then"
-	line "come see me."
-	done
-
-UnknownText_0x6a71f:
-	text "Uh-oh…"
-	line "You have an EGG as"
-
-	para "the first #MON"
-	line "in your party."
-
-	para "Please switch it"
-	line "with the #MON"
-
-	para "you want to use,"
-	line "then come see me."
-	done
-
-UnknownText_0x6a79a:
-	text "You still have @"
-	text_from_ram StringBuffer3
-	text ""
-	line "minute(s) left."
-
-	para "Do you want to"
-	line "finish now?"
-	done
-
-UnknownText_0x6a7db:
-	text "OK. Please wait at"
-	line "the North Gate for"
-
-	para "the announcement"
-	line "of the winners."
-	done
-
-UnknownText_0x6a823:
-	text "OK. Please get"
-	line "back outside and"
-	cont "finish up."
-	done
-
-UnknownText_0x6a84f:
-	text "Today's Contest is"
-	line "over. We hope you"
-
-	para "will participate"
-	line "in the future."
-	done
-
-UnknownText_0x6a894:
-	text "We hold Contests"
-	line "regularly in the"
-
-	para "PARK. You should"
-	line "give it a shot."
-	done
-
-UnknownText_0x6a8d8:
-	text "When is the next"
-	line "Bug-Catching Con-"
-	cont "test going to be?"
-	done
-
-UnknownText_0x6a90e:
-	text "The Bug-Catching"
-	line "Contest is held on"
-
-	para "Tuesday, Thursday"
-	line "and Saturday."
-
-	para "Not only do you"
-	line "earn a prize just"
-
-	para "for participating,"
-	line "you also get to"
-
-	para "keep the bug"
-	line "#MON you may"
-
-	para "have at the end of"
-	line "the contest."
-	done
-
-Route35NationalParkgate_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 4
-	warp_def $0, $3, 3, NATIONAL_PARK
-	warp_def $0, $4, 4, NATIONAL_PARK
-	warp_def $7, $3, 3, ROUTE_35
-	warp_def $7, $4, 3, ROUTE_35
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 1
-	signpost 0, 5, SIGNPOST_READ, MapRoute36NationalParkgateSignpost0Script
-
-.PersonEvents:
-	db 3
-	person_event SPRITE_OFFICER, 1, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, OfficerScript_0x6a204, EVENT_ROUTE_35_NATIONAL_PARK_GATE_OFFICER_CONTEST_DAY
-	person_event SPRITE_YOUNGSTER, 5, 6, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x6a2d8, EVENT_ROUTE_35_NATIONAL_PARK_GATE_YOUNGSTER
-	person_event SPRITE_OFFICER, 3, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, OfficerScript_0x6a2ca, EVENT_ROUTE_35_NATIONAL_PARK_GATE_OFFICER_NOT_CONTEST_DAY
--- a/maps/Route35NationalParkgate.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-).,(6
6%&
\ No newline at end of file
--- a/maps/Route36.asm
+++ b/maps/Route36.asm
@@ -12,22 +12,17 @@
 Route36_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
 
-	; triggers
-	dw .Trigger0, 0
-	dw .Trigger1, 0
-
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_OBJECTS, .ArthurCallback
 
-.Trigger0:
+.DummyTrigger0:
 	end
 
-.Trigger1:
+.DummyTrigger1:
 	end
 
 .ArthurCallback:
@@ -689,12 +684,12 @@
 
 .PersonEvents:
 	db 9
-	person_event SPRITE_YOUNGSTER, 13, 20, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerPsychicMark, -1
-	person_event SPRITE_YOUNGSTER, 14, 31, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 5, TrainerSchoolboyAlan1, -1
+	person_event SPRITE_YOUNGSTER, 13, 20, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerPsychicMark, -1
+	person_event SPRITE_YOUNGSTER, 14, 31, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 5, TrainerSchoolboyAlan1, -1
 	person_event SPRITE_WEIRD_TREE, 9, 35, SPRITEMOVEDATA_SUDOWOODO, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SudowoodoScript, EVENT_ROUTE_36_SUDOWOODO
 	person_event SPRITE_LASS, 8, 51, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, 0, PERSONTYPE_SCRIPT, 0, LassScript_0x1940e0, -1
 	person_event SPRITE_FISHER, 9, 44, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route36RockSmashGuyScript, -1
 	person_event SPRITE_FRUIT_TREE, 4, 21, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route36FruitTree, -1
 	person_event SPRITE_YOUNGSTER, 6, 46, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ArthurScript, EVENT_ROUTE_36_ARTHUR_OF_THURSDAY
-	person_event SPRITE_LASS, 12, 33, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, Route36FloriaScript, EVENT_FLORIA_AT_SUDOWOODO
-	person_event SPRITE_SUICUNE, 6, 21, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_SAW_SUICUNE_ON_ROUTE_36
+	person_event SPRITE_LASS, 12, 33, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, Route36FloriaScript, EVENT_FLORIA_AT_SUDOWOODO
+	person_event SPRITE_SUICUNE, 6, 21, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_SAW_SUICUNE_ON_ROUTE_36
--- /dev/null
+++ b/maps/Route36NationalParkGate.asm
@@ -1,0 +1,884 @@
+const_value set 2
+	const ROUTE36NATIONALPARKGATE_OFFICER1
+	const ROUTE36NATIONALPARKGATE_YOUNGSTER1
+	const ROUTE36NATIONALPARKGATE_YOUNGSTER2
+	const ROUTE36NATIONALPARKGATE_ROCKER
+	const ROUTE36NATIONALPARKGATE_POKEFAN_M
+	const ROUTE36NATIONALPARKGATE_YOUNGSTER3
+	const ROUTE36NATIONALPARKGATE_YOUNGSTER4
+	const ROUTE36NATIONALPARKGATE_LASS
+	const ROUTE36NATIONALPARKGATE_YOUNGSTER5
+	const ROUTE36NATIONALPARKGATE_YOUNGSTER6
+	const ROUTE36NATIONALPARKGATE_YOUNGSTER7
+	const ROUTE36NATIONALPARKGATE_OFFICER2
+
+Route36NationalParkGate_MapScriptHeader:
+.MapTriggers:
+	db 3
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
+	maptrigger .LeaveContestEarly
+
+.MapCallbacks:
+	db 2
+	dbw MAPCALLBACK_NEWMAP, .CheckIfContestRunning
+	dbw MAPCALLBACK_OBJECTS, .CheckIfContestAvailable
+
+.DummyTrigger0:
+	end
+
+.DummyTrigger1:
+	end
+
+.LeaveContestEarly:
+	priorityjump .LeavingContestEarly
+	end
+
+.CheckIfContestRunning:
+	checkflag ENGINE_BUG_CONTEST_TIMER
+	iftrue .BugContestIsRunning
+	dotrigger $0
+	return
+
+.BugContestIsRunning:
+	dotrigger $2
+	return
+
+.CheckIfContestAvailable:
+	checkevent EVENT_WARPED_FROM_ROUTE_35_NATIONAL_PARK_GATE
+	iftrue .Return
+	checkcode VAR_WEEKDAY
+	if_equal TUESDAY, .SetContestOfficer
+	if_equal THURSDAY, .SetContestOfficer
+	if_equal SATURDAY, .SetContestOfficer
+	checkflag ENGINE_BUG_CONTEST_TIMER
+	iftrue .SetContestOfficer
+	disappear ROUTE36NATIONALPARKGATE_OFFICER1
+	appear ROUTE36NATIONALPARKGATE_OFFICER2
+	return
+
+.SetContestOfficer:
+	appear ROUTE36NATIONALPARKGATE_OFFICER1
+	disappear ROUTE36NATIONALPARKGATE_OFFICER2
+.Return:
+	return
+
+.LeavingContestEarly:
+	spriteface PLAYER, UP
+	opentext
+	checkcode VAR_CONTESTMINUTES
+	addvar $1
+	RAM2MEM $0
+	writetext UnknownText_0x6b284
+	yesorno
+	iffalse .GoBackToContest
+	writetext UnknownText_0x6b2c5
+	waitbutton
+	closetext
+	special Special_FadeBlackQuickly
+	special Special_ReloadSpritesNoPalettes
+	scall .CopyContestants
+	disappear ROUTE36NATIONALPARKGATE_OFFICER1
+	appear ROUTE36NATIONALPARKGATE_OFFICER2
+	applymovement PLAYER, MovementData_0x6add1
+	pause 15
+	special Special_FadeInQuickly
+	jumpstd bugcontestresults
+
+.GoBackToContest:
+	writetext UnknownText_0x6b300
+	waitbutton
+	closetext
+	spriteface PLAYER, LEFT
+	playsound SFX_EXIT_BUILDING
+	special FadeOutPalettes
+	waitsfx
+	warpfacing LEFT, NATIONAL_PARK_BUG_CONTEST, $21, $12
+	end
+
+.CopyContestants:
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_1A
+	iftrue .Not1
+	appear ROUTE36NATIONALPARKGATE_YOUNGSTER1
+.Not1:
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_2A
+	iftrue .Not2
+	appear ROUTE36NATIONALPARKGATE_YOUNGSTER2
+.Not2:
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_3A
+	iftrue .Not3
+	appear ROUTE36NATIONALPARKGATE_ROCKER
+.Not3:
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_4A
+	iftrue .Not4
+	appear ROUTE36NATIONALPARKGATE_POKEFAN_M
+.Not4:
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_5A
+	iftrue .Not5
+	appear ROUTE36NATIONALPARKGATE_YOUNGSTER3
+.Not5:
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_6A
+	iftrue .Not6
+	appear ROUTE36NATIONALPARKGATE_YOUNGSTER4
+.Not6:
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_7A
+	iftrue .Not7
+	appear ROUTE36NATIONALPARKGATE_LASS
+.Not7:
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_8A
+	iftrue .Not8
+	appear ROUTE36NATIONALPARKGATE_YOUNGSTER5
+.Not8:
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_9A
+	iftrue .Not9
+	appear ROUTE36NATIONALPARKGATE_YOUNGSTER6
+.Not9:
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_10A
+	iftrue .Not10
+	appear ROUTE36NATIONALPARKGATE_YOUNGSTER7
+.Not10:
+	special UpdateSprites
+	end
+
+Route36OfficerScriptContest:
+	checkcode VAR_WEEKDAY
+	if_equal SUNDAY, _ContestNotOn
+	if_equal MONDAY, _ContestNotOn
+	if_equal WEDNESDAY, _ContestNotOn
+	if_equal FRIDAY, _ContestNotOn
+	faceplayer
+	opentext
+	checkflag ENGINE_DAILY_BUG_CONTEST
+	iftrue Route36Officer_ContestHasConcluded
+	scall Route36ParkGate_DayToText
+	writetext UnknownText_0x6add5
+	yesorno
+	iffalse .DecidedNotToJoinContest
+	checkcode VAR_PARTYCOUNT
+	if_greater_than $1, .LeaveMonsWithOfficer
+	special ContestDropOffMons
+	clearevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
+.ResumeStartingContest:
+	setflag ENGINE_BUG_CONTEST_TIMER
+	special PlayMapMusic
+	writetext UnknownText_0x6ae87
+	buttonsound
+	waitsfx
+	writetext UnknownText_0x6aeb1
+	playsound SFX_ITEM
+	waitsfx
+	writetext UnknownText_0x6aecc
+	waitbutton
+	closetext
+	setflag ENGINE_BUG_CONTEST_TIMER
+	special Special_GiveParkBalls
+	spriteface PLAYER, LEFT
+	playsound SFX_EXIT_BUILDING
+	special FadeOutPalettes
+	waitsfx
+	special Special_SelectRandomBugContestContestants
+	warpfacing LEFT, NATIONAL_PARK_BUG_CONTEST, $21, $12
+	end
+
+.LeaveMonsWithOfficer:
+	checkcode VAR_PARTYCOUNT
+	if_less_than $6, .ContinueLeavingMons
+	checkcode VAR_BOXSPACE
+	if_equal $0, .BoxFull
+.ContinueLeavingMons:
+	special CheckFirstMonIsEgg
+	if_equal $1, .FirstMonIsEgg
+	writetext UnknownText_0x6afb0
+	yesorno
+	iffalse .RefusedToLeaveMons
+	special ContestDropOffMons
+	iftrue .FirstMonIsFainted
+	setevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
+	writetext UnknownText_0x6b021
+	buttonsound
+	writetext UnknownText_0x6b055
+	playsound SFX_GOT_SAFARI_BALLS
+	waitsfx
+	buttonsound
+	jump .ResumeStartingContest
+
+.DecidedNotToJoinContest:
+	writetext UnknownText_0x6b0c6
+	waitbutton
+	closetext
+	end
+
+.RefusedToLeaveMons:
+	writetext UnknownText_0x6b081
+	waitbutton
+	closetext
+	end
+
+.FirstMonIsFainted:
+	writetext UnknownText_0x6b0f2
+	waitbutton
+	closetext
+	end
+
+.BoxFull:
+	writetext UnknownText_0x6b166
+	waitbutton
+	closetext
+	end
+
+.FirstMonIsEgg:
+	writetext UnknownText_0x6b209
+	waitbutton
+	closetext
+	end
+
+Route36Officer_ContestHasConcluded:
+	checkevent EVENT_CONTEST_OFFICER_HAS_SUN_STONE
+	iftrue .Sunstone
+	checkevent EVENT_CONTEST_OFFICER_HAS_EVERSTONE
+	iftrue .Everstone
+	checkevent EVENT_CONTEST_OFFICER_HAS_GOLD_BERRY
+	iftrue .GoldBerry
+	checkevent EVENT_CONTEST_OFFICER_HAS_BERRY
+	iftrue .Berry
+	writetext UnknownText_0x6b32b
+	waitbutton
+	closetext
+	end
+
+.Sunstone:
+	writetext UnknownText_0x6b97f
+	buttonsound
+	verbosegiveitem SUN_STONE
+	iffalse .BagFull
+	clearevent EVENT_CONTEST_OFFICER_HAS_SUN_STONE
+	closetext
+	end
+
+.Everstone:
+	writetext UnknownText_0x6b97f
+	buttonsound
+	verbosegiveitem EVERSTONE
+	iffalse .BagFull
+	clearevent EVENT_CONTEST_OFFICER_HAS_EVERSTONE
+	closetext
+	end
+
+.GoldBerry:
+	writetext UnknownText_0x6b97f
+	buttonsound
+	verbosegiveitem GOLD_BERRY
+	iffalse .BagFull
+	clearevent EVENT_CONTEST_OFFICER_HAS_GOLD_BERRY
+	closetext
+	end
+
+.Berry:
+	writetext UnknownText_0x6b97f
+	buttonsound
+	verbosegiveitem BERRY
+	iffalse .BagFull
+	clearevent EVENT_CONTEST_OFFICER_HAS_BERRY
+	closetext
+	end
+
+.BagFull:
+	writetext UnknownText_0x6b910
+	waitbutton
+	closetext
+	end
+
+_ContestNotOn:
+	jumptextfaceplayer UnknownText_0x6b370
+
+OfficerScript_0x6acf4:
+	faceplayer
+	opentext
+	checkflag ENGINE_DAILY_BUG_CONTEST
+	iftrue Route36Officer_ContestHasConcluded
+	writetext UnknownText_0x6b370
+	waitbutton
+	closetext
+	end
+
+Route36ParkGate_DayToText:
+	jumpstd daytotext
+	end
+
+YoungsterScript_0x6ad06:
+	faceplayer
+	opentext
+	checkevent EVENT_GAVE_KURT_APRICORNS
+	iffalse UnknownScript_0x6ad14
+	writetext UnknownText_0x6b399
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x6ad14:
+	writetext UnknownText_0x6b3c4
+	waitbutton
+	closetext
+	end
+
+YoungsterScript_0x6ad1a:
+	faceplayer
+	opentext
+	checkevent EVENT_GAVE_KURT_APRICORNS
+	iffalse UnknownScript_0x6ad28
+	writetext UnknownText_0x6b40f
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x6ad28:
+	writetext UnknownText_0x6b440
+	waitbutton
+	closetext
+	end
+
+RockerScript_0x6ad2e:
+	faceplayer
+	opentext
+	checkevent EVENT_GAVE_KURT_APRICORNS
+	iffalse UnknownScript_0x6ad3c
+	writetext UnknownText_0x6b462
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x6ad3c:
+	writetext UnknownText_0x6b496
+	waitbutton
+	closetext
+	end
+
+PokefanMScript_0x6ad42:
+	faceplayer
+	opentext
+	checkevent EVENT_GAVE_KURT_APRICORNS
+	iffalse UnknownScript_0x6ad50
+	writetext UnknownText_0x6b4da
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x6ad50:
+	writetext UnknownText_0x6b50a
+	waitbutton
+	closetext
+	end
+
+YoungsterScript_0x6ad56:
+	faceplayer
+	opentext
+	checkevent EVENT_GAVE_KURT_APRICORNS
+	iffalse UnknownScript_0x6ad64
+	writetext UnknownText_0x6b54e
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x6ad64:
+	writetext UnknownText_0x6b57c
+	waitbutton
+	closetext
+	end
+
+YoungsterScript_0x6ad6a:
+	faceplayer
+	opentext
+	checkevent EVENT_GAVE_KURT_APRICORNS
+	iffalse UnknownScript_0x6ad78
+	writetext UnknownText_0x6b5b0
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x6ad78:
+	writetext UnknownText_0x6b5dd
+	waitbutton
+	closetext
+	end
+
+LassScript_0x6ad7e:
+	faceplayer
+	opentext
+	checkevent EVENT_GAVE_KURT_APRICORNS
+	iffalse UnknownScript_0x6ad8c
+	writetext UnknownText_0x6b64b
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x6ad8c:
+	writetext UnknownText_0x6b698
+	waitbutton
+	closetext
+	end
+
+YoungsterScript_0x6ad92:
+	faceplayer
+	opentext
+	checkevent EVENT_GAVE_KURT_APRICORNS
+	iffalse UnknownScript_0x6ada0
+	writetext UnknownText_0x6b6b8
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x6ada0:
+	writetext UnknownText_0x6b6e9
+	waitbutton
+	closetext
+	end
+
+YoungsterScript_0x6ada6:
+	faceplayer
+	opentext
+	checkevent EVENT_GAVE_KURT_APRICORNS
+	iffalse UnknownScript_0x6adb4
+	writetext UnknownText_0x6b71b
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x6adb4:
+	writetext UnknownText_0x6b740
+	waitbutton
+	closetext
+	end
+
+YoungsterScript_0x6adba:
+	faceplayer
+	opentext
+	checkevent EVENT_GAVE_KURT_APRICORNS
+	iffalse UnknownScript_0x6adc8
+	writetext UnknownText_0x6b76f
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x6adc8:
+	writetext UnknownText_0x6b7af
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x6adce:
+	jumptext UnknownText_0x6b84c
+
+MovementData_0x6add1:
+	big_step DOWN
+	big_step RIGHT
+	turn_head UP
+	step_end
+
+UnknownText_0x6add5:
+	text "Today's @"
+	text_from_ram StringBuffer3
+	text "."
+	line "That means the"
+
+	para "Bug-Catching Con-"
+	line "test is on today."
+
+	para "The rules are sim-"
+	line "ple."
+
+	para "Using one of your"
+	line "#MON, catch a"
+
+	para "bug #MON to be"
+	line "judged."
+
+	para "Would you like to"
+	line "give it a try?"
+	done
+
+UnknownText_0x6ae87:
+	text "Here are the PARK"
+	line "BALLS for the"
+	cont "Contest."
+	done
+
+UnknownText_0x6aeb1:
+	text "<PLAYER> received"
+	line "20 PARK BALLS."
+	done
+
+UnknownText_0x6aecc:
+	text "The person who"
+	line "gets the strong-"
+	cont "est bug #MON"
+	cont "is the winner."
+
+	para "You have 20"
+	line "minutes."
+
+	para "If you run out of"
+	line "PARK BALLS, you're"
+	cont "done."
+
+	para "You can keep the"
+	line "last #MON you"
+	cont "catch as your own."
+
+	para "Go out and catch"
+	line "the strongest bug"
+
+	para "#MON you can"
+	line "find!"
+	done
+
+UnknownText_0x6afb0:
+	text "Uh-oh…"
+
+	para "You have more than"
+	line "one #MON."
+
+	para "You'll have to use"
+	line "@"
+	text_from_ram StringBuffer3
+	text ", the"
+
+	para "first #MON in"
+	line "your party."
+
+	para "Is that OK with"
+	line "you?"
+	done
+
+UnknownText_0x6b021:
+	text "Fine, we'll hold"
+	line "your other #MON"
+	cont "while you compete."
+	done
+
+UnknownText_0x6b055:
+	text "<PLAYER>'s #MON"
+	line "were left with the"
+	cont "CONTEST HELPER."
+	done
+
+UnknownText_0x6b081:
+	text "Please choose the"
+	line "#MON to be used"
+
+	para "in the Contest,"
+	line "then come see me."
+	done
+
+UnknownText_0x6b0c6:
+	text "OK. We hope you'll"
+	line "take part in the"
+	cont "future."
+	done
+
+UnknownText_0x6b0f2:
+	text "Uh-oh…"
+	line "The first #MON"
+
+	para "in your party"
+	line "can't battle."
+
+	para "Please switch it"
+	line "with the #MON"
+
+	para "you want to use,"
+	line "then come see me."
+	done
+
+UnknownText_0x6b166:
+	text "Uh-oh…"
+	line "Both your party"
+
+	para "and your PC BOX"
+	line "are full."
+
+	para "You have no room"
+	line "to put the bug"
+	cont "#MON you catch."
+
+	para "Please make room"
+	line "in your party or"
+
+	para "your PC BOX, then"
+	line "come see me."
+	done
+
+UnknownText_0x6b209:
+	text "Uh-oh…"
+	line "You have an EGG as"
+
+	para "the first #MON"
+	line "in your party."
+
+	para "Please switch it"
+	line "with the #MON"
+
+	para "you want to use,"
+	line "then come see me."
+	done
+
+UnknownText_0x6b284:
+	text "You still have @"
+	text_from_ram StringBuffer3
+	text ""
+	line "minute(s) left."
+
+	para "Do you want to"
+	line "finish now?"
+	done
+
+UnknownText_0x6b2c5:
+	text "OK. Please wait"
+	line "here for the"
+
+	para "announcement of"
+	line "the winners."
+	done
+
+UnknownText_0x6b300:
+	text "OK. Please go back"
+	line "outside and finish"
+	cont "up."
+	done
+
+UnknownText_0x6b32b:
+	text "Today's Contest is"
+	line "over. We hope you"
+
+	para "will participate"
+	line "in the future."
+	done
+
+UnknownText_0x6b370:
+	text "Some #MON can"
+	line "only be seen in"
+	cont "the PARK."
+	done
+
+UnknownText_0x6b399:
+	text "DON: Wow, you beat"
+	line "me. You're pretty"
+	cont "good."
+	done
+
+UnknownText_0x6b3c4:
+	text "DON: Luck plays a"
+	line "big part in this."
+
+	para "You never know"
+	line "what #MON will"
+	cont "appear."
+	done
+
+UnknownText_0x6b40f:
+	text "ED: I envy you."
+	line "I just couldn't"
+	cont "do it this time."
+	done
+
+UnknownText_0x6b440:
+	text "ED: Maybe you win"
+	line "with big #MON?"
+	done
+
+UnknownText_0x6b462:
+	text "NICK: Well done!"
+	line "I'm going to raise"
+	cont "my #MON better."
+	done
+
+UnknownText_0x6b496:
+	text "NICK: Maybe you"
+	line "get a higher score"
+
+	para "for a #MON of"
+	line "an unusual color."
+	done
+
+UnknownText_0x6b4da:
+	text "WILLIAM: You're"
+	line "the winner? What"
+	cont "did you catch?"
+	done
+
+UnknownText_0x6b50a:
+	text "WILLIAM: Well, I'm"
+	line "satisfied because"
+
+	para "I caught a #MON"
+	line "that I wanted."
+	done
+
+UnknownText_0x6b54e:
+	text "BENNY: Congrats!"
+	line "You have earned my"
+	cont "respect!"
+	done
+
+UnknownText_0x6b57c:
+	text "BENNY: I caught a"
+	line "SCYTHER before,"
+	cont "but I didn't win."
+	done
+
+UnknownText_0x6b5b0:
+	text "BARRY: That #-"
+	line "MON you caught…"
+	cont "it's awesome!"
+	done
+
+UnknownText_0x6b5dd:
+	text "BARRY: It's easier"
+	line "to win if you get"
+
+	para "a high-level bug"
+	line "#MON."
+
+	para "But I think they"
+	line "also consider some"
+	cont "other points."
+	done
+
+UnknownText_0x6b64b:
+	text "CINDY: You won?"
+	line "That's great!"
+
+	para "Do you feel like"
+	line "looking for bug"
+	cont "#MON with me?"
+	done
+
+UnknownText_0x6b698:
+	text "CINDY: I really"
+	line "love bug #MON!"
+	done
+
+UnknownText_0x6b6b8:
+	text "JOSH: I… I can't"
+	line "believe I lost at"
+	cont "bug-catching…"
+	done
+
+UnknownText_0x6b6e9:
+	text "JOSH: I heard that"
+	line "somebody won with"
+	cont "a CATERPIE!"
+	done
+
+UnknownText_0x6b71b:
+	text "SAMUEL: Next time,"
+	line "I'm going to win."
+	done
+
+UnknownText_0x6b740:
+	text "SAMUEL: Darn."
+	line "I thought I would"
+	cont "score higher…"
+	done
+
+UnknownText_0x6b76f:
+	text "KIPP: Could you"
+	line "give me some tips?"
+
+	para "I want to study"
+	line "your style."
+	done
+
+UnknownText_0x6b7af:
+	text "KIPP: I study a"
+	line "lot, but that's"
+
+	para "not good enough to"
+	line "win."
+	done
+
+; This text is unused and unreferenced in the final game.
+; The tree Pokémon is Sudowoodo.
+; The Silph Scope 2 was later reworked into the Squirtbottle.
+
+UnusedSudowoodoText:
+	text "I hear there's a"
+	line "#MON that looks"
+	cont "just like a tree."
+
+	para "You can reveal its"
+	line "identity using a"
+	cont "SILPHSCOPE 2."
+	done
+
+UnknownText_0x6b84c:
+	text "The Bug-Catching"
+	line "Contest is held on"
+
+	para "Tuesday, Thursday"
+	line "and Saturday."
+
+	para "Not only do you"
+	line "earn a prize just"
+
+	para "for participating,"
+	line "you also get to"
+
+	para "keep the bug"
+	line "#MON you may"
+
+	para "have at the end of"
+	line "the contest."
+	done
+
+UnknownText_0x6b910:
+	text "Uh-oh… Your PACK"
+	line "is full."
+
+	para "We'll hold on to"
+	line "your prize, but"
+	cont "only for today."
+
+	para "Please make room,"
+	line "then come see me."
+	done
+
+UnknownText_0x6b97f:
+	text "<PLAYER>?"
+
+	para "Here's the prize"
+	line "we were holding"
+	cont "for you."
+	done
+
+Route36NationalParkGate_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 4
+	warp_def $4, $0, 1, NATIONAL_PARK
+	warp_def $5, $0, 2, NATIONAL_PARK
+	warp_def $4, $9, 1, ROUTE_36
+	warp_def $5, $9, 2, ROUTE_36
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 1
+	signpost 0, 6, SIGNPOST_READ, MapRoute36NationalParkGateSignpost0Script
+
+.PersonEvents:
+	db 12
+	person_event SPRITE_OFFICER, 3, 0, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, Route36OfficerScriptContest, EVENT_ROUTE_36_NATIONAL_PARK_GATE_OFFICER_CONTEST_DAY
+	person_event SPRITE_YOUNGSTER, 5, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x6ad06, EVENT_BUG_CATCHING_CONTESTANT_1B
+	person_event SPRITE_YOUNGSTER, 5, 4, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x6ad1a, EVENT_BUG_CATCHING_CONTESTANT_2B
+	person_event SPRITE_ROCKER, 6, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, RockerScript_0x6ad2e, EVENT_BUG_CATCHING_CONTESTANT_3B
+	person_event SPRITE_POKEFAN_M, 5, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x6ad42, EVENT_BUG_CATCHING_CONTESTANT_4B
+	person_event SPRITE_YOUNGSTER, 7, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x6ad56, EVENT_BUG_CATCHING_CONTESTANT_5B
+	person_event SPRITE_YOUNGSTER, 6, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x6ad6a, EVENT_BUG_CATCHING_CONTESTANT_6B
+	person_event SPRITE_LASS, 6, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, LassScript_0x6ad7e, EVENT_BUG_CATCHING_CONTESTANT_7B
+	person_event SPRITE_YOUNGSTER, 7, 4, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x6ad92, EVENT_BUG_CATCHING_CONTESTANT_8B
+	person_event SPRITE_YOUNGSTER, 7, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x6ada6, EVENT_BUG_CATCHING_CONTESTANT_9B
+	person_event SPRITE_YOUNGSTER, 6, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x6adba, EVENT_BUG_CATCHING_CONTESTANT_10B
+	person_event SPRITE_OFFICER, 2, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, OfficerScript_0x6acf4, EVENT_ROUTE_36_NATIONAL_PARK_GATE_OFFICER_NOT_CONTEST_DAY
--- /dev/null
+++ b/maps/Route36NationalParkGate.blk
@@ -1,0 +1,1 @@
+-,0
#7$
\ No newline at end of file
--- a/maps/Route36NationalParkgate.asm
+++ /dev/null
@@ -1,890 +1,0 @@
-const_value set 2
-	const ROUTE36NATIONALPARKGATE_OFFICER1
-	const ROUTE36NATIONALPARKGATE_YOUNGSTER1
-	const ROUTE36NATIONALPARKGATE_YOUNGSTER2
-	const ROUTE36NATIONALPARKGATE_ROCKER
-	const ROUTE36NATIONALPARKGATE_POKEFAN_M
-	const ROUTE36NATIONALPARKGATE_YOUNGSTER3
-	const ROUTE36NATIONALPARKGATE_YOUNGSTER4
-	const ROUTE36NATIONALPARKGATE_LASS
-	const ROUTE36NATIONALPARKGATE_YOUNGSTER5
-	const ROUTE36NATIONALPARKGATE_YOUNGSTER6
-	const ROUTE36NATIONALPARKGATE_YOUNGSTER7
-	const ROUTE36NATIONALPARKGATE_OFFICER2
-
-Route36NationalParkgate_MapScriptHeader:
-.MapTriggers:
-	db 3
-
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-	maptrigger .Trigger2
-
-.MapCallbacks:
-	db 2
-
-	; callbacks
-
-	dbw MAPCALLBACK_NEWMAP, .CheckIfContestRunning
-
-	dbw MAPCALLBACK_OBJECTS, .CheckIfContestAvailable
-
-.Trigger0:
-	end
-
-.Trigger1:
-	end
-
-.Trigger2:
-	priorityjump .LeftTheContestEarly
-	end
-
-.CheckIfContestRunning:
-	checkflag ENGINE_BUG_CONTEST_TIMER
-	iftrue .BugContestIsRunning
-	dotrigger $0
-	return
-
-.BugContestIsRunning:
-	dotrigger $2
-	return
-
-.CheckIfContestAvailable:
-	checkevent EVENT_WARPED_FROM_ROUTE_35_NATIONAL_PARK_GATE
-	iftrue .Return
-	checkcode VAR_WEEKDAY
-	if_equal TUESDAY, .SetContestOfficer
-	if_equal THURSDAY, .SetContestOfficer
-	if_equal SATURDAY, .SetContestOfficer
-	checkflag ENGINE_BUG_CONTEST_TIMER
-	iftrue .SetContestOfficer
-	disappear ROUTE36NATIONALPARKGATE_OFFICER1
-	appear ROUTE36NATIONALPARKGATE_OFFICER2
-	return
-
-.SetContestOfficer:
-	appear ROUTE36NATIONALPARKGATE_OFFICER1
-	disappear ROUTE36NATIONALPARKGATE_OFFICER2
-.Return:
-	return
-
-.LeftTheContestEarly:
-	spriteface PLAYER, UP
-	opentext
-	checkcode VAR_CONTESTMINUTES
-	addvar $1
-	RAM2MEM $0
-	writetext UnknownText_0x6b284
-	yesorno
-	iffalse .GoBackToContest
-	writetext UnknownText_0x6b2c5
-	waitbutton
-	closetext
-	special Special_FadeBlackQuickly
-	special Special_ReloadSpritesNoPalettes
-	scall .CopyContestants
-	disappear ROUTE36NATIONALPARKGATE_OFFICER1
-	appear ROUTE36NATIONALPARKGATE_OFFICER2
-	applymovement PLAYER, MovementData_0x6add1
-	pause 15
-	special Special_FadeInQuickly
-	jumpstd bugcontestresults
-
-.GoBackToContest:
-	writetext UnknownText_0x6b300
-	waitbutton
-	closetext
-	spriteface PLAYER, LEFT
-	playsound SFX_EXIT_BUILDING
-	special FadeOutPalettes
-	waitsfx
-	warpfacing LEFT, NATIONAL_PARK_BUG_CONTEST, $21, $12
-	end
-
-.CopyContestants:
-	checkevent EVENT_BUG_CATCHING_CONTESTANT_1A
-	iftrue .Not1
-	appear ROUTE36NATIONALPARKGATE_YOUNGSTER1
-.Not1:
-	checkevent EVENT_BUG_CATCHING_CONTESTANT_2A
-	iftrue .Not2
-	appear ROUTE36NATIONALPARKGATE_YOUNGSTER2
-.Not2:
-	checkevent EVENT_BUG_CATCHING_CONTESTANT_3A
-	iftrue .Not3
-	appear ROUTE36NATIONALPARKGATE_ROCKER
-.Not3:
-	checkevent EVENT_BUG_CATCHING_CONTESTANT_4A
-	iftrue .Not4
-	appear ROUTE36NATIONALPARKGATE_POKEFAN_M
-.Not4:
-	checkevent EVENT_BUG_CATCHING_CONTESTANT_5A
-	iftrue .Not5
-	appear ROUTE36NATIONALPARKGATE_YOUNGSTER3
-.Not5:
-	checkevent EVENT_BUG_CATCHING_CONTESTANT_6A
-	iftrue .Not6
-	appear ROUTE36NATIONALPARKGATE_YOUNGSTER4
-.Not6:
-	checkevent EVENT_BUG_CATCHING_CONTESTANT_7A
-	iftrue .Not7
-	appear ROUTE36NATIONALPARKGATE_LASS
-.Not7:
-	checkevent EVENT_BUG_CATCHING_CONTESTANT_8A
-	iftrue .Not8
-	appear ROUTE36NATIONALPARKGATE_YOUNGSTER5
-.Not8:
-	checkevent EVENT_BUG_CATCHING_CONTESTANT_9A
-	iftrue .Not9
-	appear ROUTE36NATIONALPARKGATE_YOUNGSTER6
-.Not9:
-	checkevent EVENT_BUG_CATCHING_CONTESTANT_10A
-	iftrue .Not10
-	appear ROUTE36NATIONALPARKGATE_YOUNGSTER7
-.Not10:
-	special UpdateSprites
-	end
-
-Route36OfficerScriptContest:
-	checkcode VAR_WEEKDAY
-	if_equal SUNDAY, _ContestNotOn
-	if_equal MONDAY, _ContestNotOn
-	if_equal WEDNESDAY, _ContestNotOn
-	if_equal FRIDAY, _ContestNotOn
-	faceplayer
-	opentext
-	checkflag ENGINE_DAILY_BUG_CONTEST
-	iftrue Route36Officer_ContestHasConcluded
-	scall Route36Parkgate_DayToText
-	writetext UnknownText_0x6add5
-	yesorno
-	iffalse .DecidedNotToJoinContest
-	checkcode VAR_PARTYCOUNT
-	if_greater_than $1, .LeaveMonsWithOfficer
-	special ContestDropOffMons
-	clearevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
-.ResumeStartingContest:
-	setflag ENGINE_BUG_CONTEST_TIMER
-	special PlayMapMusic
-	writetext UnknownText_0x6ae87
-	buttonsound
-	waitsfx
-	writetext UnknownText_0x6aeb1
-	playsound SFX_ITEM
-	waitsfx
-	writetext UnknownText_0x6aecc
-	waitbutton
-	closetext
-	setflag ENGINE_BUG_CONTEST_TIMER
-	special Special_GiveParkBalls
-	spriteface PLAYER, LEFT
-	playsound SFX_EXIT_BUILDING
-	special FadeOutPalettes
-	waitsfx
-	special Special_SelectRandomBugContestContestants
-	warpfacing LEFT, NATIONAL_PARK_BUG_CONTEST, $21, $12
-	end
-
-.LeaveMonsWithOfficer:
-	checkcode VAR_PARTYCOUNT
-	if_less_than $6, .ContinueLeavingMons
-	checkcode VAR_BOXSPACE
-	if_equal $0, .BoxFull
-.ContinueLeavingMons:
-	special CheckFirstMonIsEgg
-	if_equal $1, .FirstMonIsEgg
-	writetext UnknownText_0x6afb0
-	yesorno
-	iffalse .RefusedToLeaveMons
-	special ContestDropOffMons
-	iftrue .FirstMonIsFainted
-	setevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
-	writetext UnknownText_0x6b021
-	buttonsound
-	writetext UnknownText_0x6b055
-	playsound SFX_GOT_SAFARI_BALLS
-	waitsfx
-	buttonsound
-	jump .ResumeStartingContest
-
-.DecidedNotToJoinContest:
-	writetext UnknownText_0x6b0c6
-	waitbutton
-	closetext
-	end
-
-.RefusedToLeaveMons:
-	writetext UnknownText_0x6b081
-	waitbutton
-	closetext
-	end
-
-.FirstMonIsFainted:
-	writetext UnknownText_0x6b0f2
-	waitbutton
-	closetext
-	end
-
-.BoxFull:
-	writetext UnknownText_0x6b166
-	waitbutton
-	closetext
-	end
-
-.FirstMonIsEgg:
-	writetext UnknownText_0x6b209
-	waitbutton
-	closetext
-	end
-
-Route36Officer_ContestHasConcluded:
-	checkevent EVENT_CONTEST_OFFICER_HAS_SUN_STONE
-	iftrue .Sunstone
-	checkevent EVENT_CONTEST_OFFICER_HAS_EVERSTONE
-	iftrue .Everstone
-	checkevent EVENT_CONTEST_OFFICER_HAS_GOLD_BERRY
-	iftrue .GoldBerry
-	checkevent EVENT_CONTEST_OFFICER_HAS_BERRY
-	iftrue .Berry
-	writetext UnknownText_0x6b32b
-	waitbutton
-	closetext
-	end
-
-.Sunstone:
-	writetext UnknownText_0x6b97f
-	buttonsound
-	verbosegiveitem SUN_STONE
-	iffalse .BagFull
-	clearevent EVENT_CONTEST_OFFICER_HAS_SUN_STONE
-	closetext
-	end
-
-.Everstone:
-	writetext UnknownText_0x6b97f
-	buttonsound
-	verbosegiveitem EVERSTONE
-	iffalse .BagFull
-	clearevent EVENT_CONTEST_OFFICER_HAS_EVERSTONE
-	closetext
-	end
-
-.GoldBerry:
-	writetext UnknownText_0x6b97f
-	buttonsound
-	verbosegiveitem GOLD_BERRY
-	iffalse .BagFull
-	clearevent EVENT_CONTEST_OFFICER_HAS_GOLD_BERRY
-	closetext
-	end
-
-.Berry:
-	writetext UnknownText_0x6b97f
-	buttonsound
-	verbosegiveitem BERRY
-	iffalse .BagFull
-	clearevent EVENT_CONTEST_OFFICER_HAS_BERRY
-	closetext
-	end
-
-.BagFull:
-	writetext UnknownText_0x6b910
-	waitbutton
-	closetext
-	end
-
-_ContestNotOn:
-	jumptextfaceplayer UnknownText_0x6b370
-
-OfficerScript_0x6acf4:
-	faceplayer
-	opentext
-	checkflag ENGINE_DAILY_BUG_CONTEST
-	iftrue Route36Officer_ContestHasConcluded
-	writetext UnknownText_0x6b370
-	waitbutton
-	closetext
-	end
-
-Route36Parkgate_DayToText:
-	jumpstd daytotext
-	end
-
-YoungsterScript_0x6ad06:
-	faceplayer
-	opentext
-	checkevent EVENT_GAVE_KURT_APRICORNS
-	iffalse UnknownScript_0x6ad14
-	writetext UnknownText_0x6b399
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x6ad14:
-	writetext UnknownText_0x6b3c4
-	waitbutton
-	closetext
-	end
-
-YoungsterScript_0x6ad1a:
-	faceplayer
-	opentext
-	checkevent EVENT_GAVE_KURT_APRICORNS
-	iffalse UnknownScript_0x6ad28
-	writetext UnknownText_0x6b40f
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x6ad28:
-	writetext UnknownText_0x6b440
-	waitbutton
-	closetext
-	end
-
-RockerScript_0x6ad2e:
-	faceplayer
-	opentext
-	checkevent EVENT_GAVE_KURT_APRICORNS
-	iffalse UnknownScript_0x6ad3c
-	writetext UnknownText_0x6b462
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x6ad3c:
-	writetext UnknownText_0x6b496
-	waitbutton
-	closetext
-	end
-
-PokefanMScript_0x6ad42:
-	faceplayer
-	opentext
-	checkevent EVENT_GAVE_KURT_APRICORNS
-	iffalse UnknownScript_0x6ad50
-	writetext UnknownText_0x6b4da
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x6ad50:
-	writetext UnknownText_0x6b50a
-	waitbutton
-	closetext
-	end
-
-YoungsterScript_0x6ad56:
-	faceplayer
-	opentext
-	checkevent EVENT_GAVE_KURT_APRICORNS
-	iffalse UnknownScript_0x6ad64
-	writetext UnknownText_0x6b54e
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x6ad64:
-	writetext UnknownText_0x6b57c
-	waitbutton
-	closetext
-	end
-
-YoungsterScript_0x6ad6a:
-	faceplayer
-	opentext
-	checkevent EVENT_GAVE_KURT_APRICORNS
-	iffalse UnknownScript_0x6ad78
-	writetext UnknownText_0x6b5b0
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x6ad78:
-	writetext UnknownText_0x6b5dd
-	waitbutton
-	closetext
-	end
-
-LassScript_0x6ad7e:
-	faceplayer
-	opentext
-	checkevent EVENT_GAVE_KURT_APRICORNS
-	iffalse UnknownScript_0x6ad8c
-	writetext UnknownText_0x6b64b
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x6ad8c:
-	writetext UnknownText_0x6b698
-	waitbutton
-	closetext
-	end
-
-YoungsterScript_0x6ad92:
-	faceplayer
-	opentext
-	checkevent EVENT_GAVE_KURT_APRICORNS
-	iffalse UnknownScript_0x6ada0
-	writetext UnknownText_0x6b6b8
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x6ada0:
-	writetext UnknownText_0x6b6e9
-	waitbutton
-	closetext
-	end
-
-YoungsterScript_0x6ada6:
-	faceplayer
-	opentext
-	checkevent EVENT_GAVE_KURT_APRICORNS
-	iffalse UnknownScript_0x6adb4
-	writetext UnknownText_0x6b71b
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x6adb4:
-	writetext UnknownText_0x6b740
-	waitbutton
-	closetext
-	end
-
-YoungsterScript_0x6adba:
-	faceplayer
-	opentext
-	checkevent EVENT_GAVE_KURT_APRICORNS
-	iffalse UnknownScript_0x6adc8
-	writetext UnknownText_0x6b76f
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x6adc8:
-	writetext UnknownText_0x6b7af
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x6adce:
-	jumptext UnknownText_0x6b84c
-
-MovementData_0x6add1:
-	big_step DOWN
-	big_step RIGHT
-	turn_head UP
-	step_end
-
-UnknownText_0x6add5:
-	text "Today's @"
-	text_from_ram StringBuffer3
-	text "."
-	line "That means the"
-
-	para "Bug-Catching Con-"
-	line "test is on today."
-
-	para "The rules are sim-"
-	line "ple."
-
-	para "Using one of your"
-	line "#MON, catch a"
-
-	para "bug #MON to be"
-	line "judged."
-
-	para "Would you like to"
-	line "give it a try?"
-	done
-
-UnknownText_0x6ae87:
-	text "Here are the PARK"
-	line "BALLS for the"
-	cont "Contest."
-	done
-
-UnknownText_0x6aeb1:
-	text "<PLAYER> received"
-	line "20 PARK BALLS."
-	done
-
-UnknownText_0x6aecc:
-	text "The person who"
-	line "gets the strong-"
-	cont "est bug #MON"
-	cont "is the winner."
-
-	para "You have 20"
-	line "minutes."
-
-	para "If you run out of"
-	line "PARK BALLS, you're"
-	cont "done."
-
-	para "You can keep the"
-	line "last #MON you"
-	cont "catch as your own."
-
-	para "Go out and catch"
-	line "the strongest bug"
-
-	para "#MON you can"
-	line "find!"
-	done
-
-UnknownText_0x6afb0:
-	text "Uh-oh…"
-
-	para "You have more than"
-	line "one #MON."
-
-	para "You'll have to use"
-	line "@"
-	text_from_ram StringBuffer3
-	text ", the"
-
-	para "first #MON in"
-	line "your party."
-
-	para "Is that OK with"
-	line "you?"
-	done
-
-UnknownText_0x6b021:
-	text "Fine, we'll hold"
-	line "your other #MON"
-	cont "while you compete."
-	done
-
-UnknownText_0x6b055:
-	text "<PLAYER>'s #MON"
-	line "were left with the"
-	cont "CONTEST HELPER."
-	done
-
-UnknownText_0x6b081:
-	text "Please choose the"
-	line "#MON to be used"
-
-	para "in the Contest,"
-	line "then come see me."
-	done
-
-UnknownText_0x6b0c6:
-	text "OK. We hope you'll"
-	line "take part in the"
-	cont "future."
-	done
-
-UnknownText_0x6b0f2:
-	text "Uh-oh…"
-	line "The first #MON"
-
-	para "in your party"
-	line "can't battle."
-
-	para "Please switch it"
-	line "with the #MON"
-
-	para "you want to use,"
-	line "then come see me."
-	done
-
-UnknownText_0x6b166:
-	text "Uh-oh…"
-	line "Both your party"
-
-	para "and your PC BOX"
-	line "are full."
-
-	para "You have no room"
-	line "to put the bug"
-	cont "#MON you catch."
-
-	para "Please make room"
-	line "in your party or"
-
-	para "your PC BOX, then"
-	line "come see me."
-	done
-
-UnknownText_0x6b209:
-	text "Uh-oh…"
-	line "You have an EGG as"
-
-	para "the first #MON"
-	line "in your party."
-
-	para "Please switch it"
-	line "with the #MON"
-
-	para "you want to use,"
-	line "then come see me."
-	done
-
-UnknownText_0x6b284:
-	text "You still have @"
-	text_from_ram StringBuffer3
-	text ""
-	line "minute(s) left."
-
-	para "Do you want to"
-	line "finish now?"
-	done
-
-UnknownText_0x6b2c5:
-	text "OK. Please wait"
-	line "here for the"
-
-	para "announcement of"
-	line "the winners."
-	done
-
-UnknownText_0x6b300:
-	text "OK. Please go back"
-	line "outside and finish"
-	cont "up."
-	done
-
-UnknownText_0x6b32b:
-	text "Today's Contest is"
-	line "over. We hope you"
-
-	para "will participate"
-	line "in the future."
-	done
-
-UnknownText_0x6b370:
-	text "Some #MON can"
-	line "only be seen in"
-	cont "the PARK."
-	done
-
-UnknownText_0x6b399:
-	text "DON: Wow, you beat"
-	line "me. You're pretty"
-	cont "good."
-	done
-
-UnknownText_0x6b3c4:
-	text "DON: Luck plays a"
-	line "big part in this."
-
-	para "You never know"
-	line "what #MON will"
-	cont "appear."
-	done
-
-UnknownText_0x6b40f:
-	text "ED: I envy you."
-	line "I just couldn't"
-	cont "do it this time."
-	done
-
-UnknownText_0x6b440:
-	text "ED: Maybe you win"
-	line "with big #MON?"
-	done
-
-UnknownText_0x6b462:
-	text "NICK: Well done!"
-	line "I'm going to raise"
-	cont "my #MON better."
-	done
-
-UnknownText_0x6b496:
-	text "NICK: Maybe you"
-	line "get a higher score"
-
-	para "for a #MON of"
-	line "an unusual color."
-	done
-
-UnknownText_0x6b4da:
-	text "WILLIAM: You're"
-	line "the winner? What"
-	cont "did you catch?"
-	done
-
-UnknownText_0x6b50a:
-	text "WILLIAM: Well, I'm"
-	line "satisfied because"
-
-	para "I caught a #MON"
-	line "that I wanted."
-	done
-
-UnknownText_0x6b54e:
-	text "BENNY: Congrats!"
-	line "You have earned my"
-	cont "respect!"
-	done
-
-UnknownText_0x6b57c:
-	text "BENNY: I caught a"
-	line "SCYTHER before,"
-	cont "but I didn't win."
-	done
-
-UnknownText_0x6b5b0:
-	text "BARRY: That #-"
-	line "MON you caught…"
-	cont "it's awesome!"
-	done
-
-UnknownText_0x6b5dd:
-	text "BARRY: It's easier"
-	line "to win if you get"
-
-	para "a high-level bug"
-	line "#MON."
-
-	para "But I think they"
-	line "also consider some"
-	cont "other points."
-	done
-
-UnknownText_0x6b64b:
-	text "CINDY: You won?"
-	line "That's great!"
-
-	para "Do you feel like"
-	line "looking for bug"
-	cont "#MON with me?"
-	done
-
-UnknownText_0x6b698:
-	text "CINDY: I really"
-	line "love bug #MON!"
-	done
-
-UnknownText_0x6b6b8:
-	text "JOSH: I… I can't"
-	line "believe I lost at"
-	cont "bug-catching…"
-	done
-
-UnknownText_0x6b6e9:
-	text "JOSH: I heard that"
-	line "somebody won with"
-	cont "a CATERPIE!"
-	done
-
-UnknownText_0x6b71b:
-	text "SAMUEL: Next time,"
-	line "I'm going to win."
-	done
-
-UnknownText_0x6b740:
-	text "SAMUEL: Darn."
-	line "I thought I would"
-	cont "score higher…"
-	done
-
-UnknownText_0x6b76f:
-	text "KIPP: Could you"
-	line "give me some tips?"
-
-	para "I want to study"
-	line "your style."
-	done
-
-UnknownText_0x6b7af:
-	text "KIPP: I study a"
-	line "lot, but that's"
-
-	para "not good enough to"
-	line "win."
-	done
-
-; This text is unused and unreferenced in the final game.
-; The tree Pokémon is Sudowoodo.
-; The Silph Scope 2 was later reworked into the Squirtbottle.
-
-UnusedSudowoodoText:
-	text "I hear there's a"
-	line "#MON that looks"
-	cont "just like a tree."
-
-	para "You can reveal its"
-	line "identity using a"
-	cont "SILPHSCOPE 2."
-	done
-
-UnknownText_0x6b84c:
-	text "The Bug-Catching"
-	line "Contest is held on"
-
-	para "Tuesday, Thursday"
-	line "and Saturday."
-
-	para "Not only do you"
-	line "earn a prize just"
-
-	para "for participating,"
-	line "you also get to"
-
-	para "keep the bug"
-	line "#MON you may"
-
-	para "have at the end of"
-	line "the contest."
-	done
-
-UnknownText_0x6b910:
-	text "Uh-oh… Your PACK"
-	line "is full."
-
-	para "We'll hold on to"
-	line "your prize, but"
-	cont "only for today."
-
-	para "Please make room,"
-	line "then come see me."
-	done
-
-UnknownText_0x6b97f:
-	text "<PLAYER>?"
-
-	para "Here's the prize"
-	line "we were holding"
-	cont "for you."
-	done
-
-Route36NationalParkgate_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 4
-	warp_def $4, $0, 1, NATIONAL_PARK
-	warp_def $5, $0, 2, NATIONAL_PARK
-	warp_def $4, $9, 1, ROUTE_36
-	warp_def $5, $9, 2, ROUTE_36
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 1
-	signpost 0, 6, SIGNPOST_READ, MapRoute36NationalParkgateSignpost0Script
-
-.PersonEvents:
-	db 12
-	person_event SPRITE_OFFICER, 3, 0, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, Route36OfficerScriptContest, EVENT_ROUTE_36_NATIONAL_PARK_GATE_OFFICER_CONTEST_DAY
-	person_event SPRITE_YOUNGSTER, 5, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x6ad06, EVENT_BUG_CATCHING_CONTESTANT_1B
-	person_event SPRITE_YOUNGSTER, 5, 4, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x6ad1a, EVENT_BUG_CATCHING_CONTESTANT_2B
-	person_event SPRITE_ROCKER, 6, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, RockerScript_0x6ad2e, EVENT_BUG_CATCHING_CONTESTANT_3B
-	person_event SPRITE_POKEFAN_M, 5, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x6ad42, EVENT_BUG_CATCHING_CONTESTANT_4B
-	person_event SPRITE_YOUNGSTER, 7, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x6ad56, EVENT_BUG_CATCHING_CONTESTANT_5B
-	person_event SPRITE_YOUNGSTER, 6, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x6ad6a, EVENT_BUG_CATCHING_CONTESTANT_6B
-	person_event SPRITE_LASS, 6, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, LassScript_0x6ad7e, EVENT_BUG_CATCHING_CONTESTANT_7B
-	person_event SPRITE_YOUNGSTER, 7, 4, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x6ad92, EVENT_BUG_CATCHING_CONTESTANT_8B
-	person_event SPRITE_YOUNGSTER, 7, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x6ada6, EVENT_BUG_CATCHING_CONTESTANT_9B
-	person_event SPRITE_YOUNGSTER, 6, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x6adba, EVENT_BUG_CATCHING_CONTESTANT_10B
-	person_event SPRITE_OFFICER, 2, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, OfficerScript_0x6acf4, EVENT_ROUTE_36_NATIONAL_PARK_GATE_OFFICER_NOT_CONTEST_DAY
--- a/maps/Route36NationalParkgate.blk
+++ /dev/null
@@ -1,1 +1,0 @@
--,0
#7$
\ No newline at end of file
--- /dev/null
+++ b/maps/Route36RuinsOfAlphGate.asm
@@ -1,0 +1,57 @@
+const_value set 2
+	const ROUTE36RUINSOFALPHGATE_OFFICER
+	const ROUTE36RUINSOFALPHGATE_GRAMPS
+
+Route36RuinsOfAlphGate_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+OfficerScript_0x6aa1a:
+	jumptextfaceplayer UnknownText_0x6aa20
+
+GrampsScript_0x6aa1d:
+	jumptextfaceplayer UnknownText_0x6aa5b
+
+UnknownText_0x6aa20:
+	text "Don't you wonder"
+	line "who'd make some-"
+	cont "thing like this?"
+	cont "And why?"
+	done
+
+UnknownText_0x6aa5b:
+	text "Did you see that"
+	line "strange tree in"
+	cont "the road?"
+
+	para "That may explain"
+	line "why fewer people"
+
+	para "are visiting the"
+	line "RUINS OF ALPH."
+	done
+
+Route36RuinsOfAlphGate_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 4
+	warp_def $0, $4, 3, ROUTE_36
+	warp_def $0, $5, 4, ROUTE_36
+	warp_def $7, $4, 9, RUINS_OF_ALPH_OUTSIDE
+	warp_def $7, $5, 9, RUINS_OF_ALPH_OUTSIDE
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 2
+	person_event SPRITE_OFFICER, 4, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, OfficerScript_0x6aa1a, -1
+	person_event SPRITE_GRAMPS, 5, 7, SPRITEMOVEDATA_WANDER, 2, 1, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, GrampsScript_0x6aa1d, -1
--- a/maps/Route36RuinsofAlphgate.asm
+++ /dev/null
@@ -1,57 +1,0 @@
-const_value set 2
-	const ROUTE36RUINSOFALPHGATE_OFFICER
-	const ROUTE36RUINSOFALPHGATE_GRAMPS
-
-Route36RuinsofAlphgate_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-OfficerScript_0x6aa1a:
-	jumptextfaceplayer UnknownText_0x6aa20
-
-GrampsScript_0x6aa1d:
-	jumptextfaceplayer UnknownText_0x6aa5b
-
-UnknownText_0x6aa20:
-	text "Don't you wonder"
-	line "who'd make some-"
-	cont "thing like this?"
-	cont "And why?"
-	done
-
-UnknownText_0x6aa5b:
-	text "Did you see that"
-	line "strange tree in"
-	cont "the road?"
-
-	para "That may explain"
-	line "why fewer people"
-
-	para "are visiting the"
-	line "RUINS OF ALPH."
-	done
-
-Route36RuinsofAlphgate_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 4
-	warp_def $0, $4, 3, ROUTE_36
-	warp_def $0, $5, 4, ROUTE_36
-	warp_def $7, $4, 9, RUINS_OF_ALPH_OUTSIDE
-	warp_def $7, $5, 9, RUINS_OF_ALPH_OUTSIDE
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 2
-	person_event SPRITE_OFFICER, 4, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, OfficerScript_0x6aa1a, -1
-	person_event SPRITE_GRAMPS, 5, 7, SPRITEMOVEDATA_WANDER, 2, 1, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, GrampsScript_0x6aa1d, -1
--- a/maps/Route37.asm
+++ b/maps/Route37.asm
@@ -13,12 +13,9 @@
 
 .MapCallbacks:
 	db 1
+	dbw MAPCALLBACK_OBJECTS, .Sunny
 
-	; callbacks
-
-	dbw MAPCALLBACK_OBJECTS, SunnyCallback
-
-SunnyCallback:
+.Sunny:
 	checkcode VAR_WEEKDAY
 	if_equal SUNDAY, .SunnyAppears
 	disappear ROUTE37_SUNNY
@@ -34,7 +31,7 @@
 TwinsAnnandanne1Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a8e62
+	writetext TwinsAnnandanne1AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -45,7 +42,7 @@
 TwinsAnnandanne2Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a8eec
+	writetext TwinsAnnandanne2AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -56,7 +53,7 @@
 PsychicGregScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a8f80
+	writetext PsychicGregAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -131,7 +128,7 @@
 	line "little too strong."
 	done
 
-UnknownText_0x1a8e62:
+TwinsAnnandanne1AfterBattleText:
 	text "ANN: I can tell"
 	line "what my sister and"
 
@@ -150,7 +147,7 @@
 	line "little too strong."
 	done
 
-UnknownText_0x1a8eec:
+TwinsAnnandanne2AfterBattleText:
 	text "ANNE: We share the"
 	line "same feelings as"
 	cont "our #MON."
@@ -170,7 +167,7 @@
 	line "pretty sad…"
 	done
 
-UnknownText_0x1a8f80:
+PsychicGregAfterBattleText:
 	text "Putting #MON to"
 	line "sleep or paralyz-"
 	cont "ing them are good"
@@ -258,9 +255,9 @@
 
 .PersonEvents:
 	db 7
-	person_event SPRITE_WEIRD_TREE, 12, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerTwinsAnnandanne1, -1
-	person_event SPRITE_WEIRD_TREE, 12, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerTwinsAnnandanne2, -1
-	person_event SPRITE_YOUNGSTER, 6, 6, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerPsychicGreg, -1
+	person_event SPRITE_WEIRD_TREE, 12, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 1, TrainerTwinsAnnandanne1, -1
+	person_event SPRITE_WEIRD_TREE, 12, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 1, TrainerTwinsAnnandanne2, -1
+	person_event SPRITE_YOUNGSTER, 6, 6, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 1, TrainerPsychicGreg, -1
 	person_event SPRITE_FRUIT_TREE, 5, 13, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x1a8e09, -1
 	person_event SPRITE_BUG_CATCHER, 8, 16, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SunnyScript, EVENT_ROUTE_37_SUNNY_OF_SUNDAY
 	person_event SPRITE_FRUIT_TREE, 5, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x1a8e0b, -1
--- a/maps/Route38.asm
+++ b/maps/Route38.asm
@@ -491,10 +491,10 @@
 
 .PersonEvents:
 	db 7
-	person_event SPRITE_STANDING_YOUNGSTER, 1, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerSchoolboyChad1, -1
-	person_event SPRITE_LASS, 3, 15, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 2, TrainerLassDana1, -1
-	person_event SPRITE_STANDING_YOUNGSTER, 15, 12, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerBird_keeperToby, -1
-	person_event SPRITE_BUENA, 9, 19, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerBeautyValerie, -1
-	person_event SPRITE_SAILOR, 5, 24, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 2, TrainerSailorHarry, -1
+	person_event SPRITE_STANDING_YOUNGSTER, 1, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 1, TrainerSchoolboyChad1, -1
+	person_event SPRITE_LASS, 3, 15, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 2, TrainerLassDana1, -1
+	person_event SPRITE_STANDING_YOUNGSTER, 15, 12, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 1, TrainerBird_keeperToby, -1
+	person_event SPRITE_BUENA, 9, 19, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 1, TrainerBeautyValerie, -1
+	person_event SPRITE_SAILOR, 5, 24, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 2, TrainerSailorHarry, -1
 	person_event SPRITE_FRUIT_TREE, 10, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x1a1f33, -1
-	person_event SPRITE_BUENA, 8, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerBeautyOlivia, -1
+	person_event SPRITE_BUENA, 8, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 1, TrainerBeautyOlivia, -1
--- a/maps/Route38EcruteakGate.asm
+++ b/maps/Route38EcruteakGate.asm
@@ -43,4 +43,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_OFFICER, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, OfficerScript_0x9cbd7, -1
+	person_event SPRITE_OFFICER, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, OfficerScript_0x9cbd7, -1
--- a/maps/Route39.asm
+++ b/maps/Route39.asm
@@ -110,7 +110,7 @@
 PokefanfRuthScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a5db2
+	writetext PokefanfRuthAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -121,7 +121,7 @@
 SailorEugeneScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a5c4d
+	writetext SailorEugeneAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -132,7 +132,7 @@
 PsychicNormanScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a5e57
+	writetext PsychicNormanAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -199,7 +199,7 @@
 	text "Awaaargh!"
 	done
 
-UnknownText_0x1a5c4d:
+SailorEugeneAfterBattleText:
 	text "My #MON were"
 	line "caught and raised"
 	cont "overseas."
@@ -245,7 +245,7 @@
 	line "losing."
 	done
 
-UnknownText_0x1a5db2:
+PokefanfRuthAfterBattleText:
 	text "Do you know about"
 	line "baby #MON?"
 
@@ -269,7 +269,7 @@
 	line "have potential."
 	done
 
-UnknownText_0x1a5e57:
+PsychicNormanAfterBattleText:
 	text "You know how #-"
 	line "MON have different"
 	cont "abilities?"
@@ -365,13 +365,13 @@
 
 .PersonEvents:
 	db 10
-	person_event SPRITE_SAILOR, 29, 13, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 5, TrainerSailorEugene, -1
-	person_event SPRITE_POKEFAN_M, 22, 10, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 4, TrainerPokefanmDerek1, -1
-	person_event SPRITE_POKEFAN_F, 19, 11, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 4, TrainerPokefanfRuth, -1
+	person_event SPRITE_SAILOR, 29, 13, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 5, TrainerSailorEugene, -1
+	person_event SPRITE_POKEFAN_M, 22, 10, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 4, TrainerPokefanmDerek1, -1
+	person_event SPRITE_POKEFAN_F, 19, 11, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 4, TrainerPokefanfRuth, -1
 	person_event SPRITE_TAUROS, 12, 3, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route39Miltank, -1
 	person_event SPRITE_TAUROS, 11, 6, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route39Miltank, -1
 	person_event SPRITE_TAUROS, 15, 4, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route39Miltank, -1
 	person_event SPRITE_TAUROS, 13, 8, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route39Miltank, -1
-	person_event SPRITE_STANDING_YOUNGSTER, 7, 13, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 1, TrainerPsychicNorman, -1
+	person_event SPRITE_STANDING_YOUNGSTER, 7, 13, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 1, TrainerPsychicNorman, -1
 	person_event SPRITE_FRUIT_TREE, 3, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x1a5bf4, -1
-	person_event SPRITE_POKEFAN_F, 22, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, PokefanFScript_0x1a5bbe, -1
+	person_event SPRITE_POKEFAN_F, 22, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, PokefanFScript_0x1a5bbe, -1
--- a/maps/Route39Barn.asm
+++ b/maps/Route39Barn.asm
@@ -206,5 +206,5 @@
 .PersonEvents:
 	db 3
 	person_event SPRITE_TWIN, 3, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, TwinScript_0x9cc76, -1
-	person_event SPRITE_TWIN, 3, 4, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, TwinScript_0x9cc90, -1
+	person_event SPRITE_TWIN, 3, 4, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, TwinScript_0x9cc90, -1
 	person_event SPRITE_TAUROS, 3, 3, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, MooMoo, -1
--- a/maps/Route39Farmhouse.asm
+++ b/maps/Route39Farmhouse.asm
@@ -211,5 +211,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_POKEFAN_M, 2, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, PokefanM_DairyFarmer, -1
-	person_event SPRITE_POKEFAN_F, 4, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, PokefanF_SnoreFarmer, -1
+	person_event SPRITE_POKEFAN_M, 2, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, PokefanM_DairyFarmer, -1
+	person_event SPRITE_POKEFAN_F, 4, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, PokefanF_SnoreFarmer, -1
--- a/maps/Route4.asm
+++ b/maps/Route4.asm
@@ -17,7 +17,7 @@
 Bird_keeperHankScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ae258
+	writetext Bird_keeperHankAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -28,7 +28,7 @@
 PicnickerHopeScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ae320
+	writetext PicnickerHopeAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -39,7 +39,7 @@
 PicnickerSharonScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ae369
+	writetext PicnickerSharonAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -65,7 +65,7 @@
 	line "one…"
 	done
 
-UnknownText_0x1ae258:
+Bird_keeperHankAfterBattleText:
 	text "If you have a"
 	line "specific #MON"
 
@@ -92,7 +92,7 @@
 	line "strong."
 	done
 
-UnknownText_0x1ae320:
+PicnickerHopeAfterBattleText:
 	text "I heard CLEFAIRY"
 	line "appear at MT.MOON."
 
@@ -109,7 +109,7 @@
 	text "…"
 	done
 
-UnknownText_0x1ae369:
+PicnickerSharonAfterBattleText:
 	text "……I'll go train"
 	line "some more…"
 	done
@@ -139,7 +139,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_YOUNGSTER, 9, 17, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerBird_keeperHank, -1
-	person_event SPRITE_LASS, 8, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 4, TrainerPicnickerHope, -1
-	person_event SPRITE_LASS, 6, 21, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 4, TrainerPicnickerSharon, -1
+	person_event SPRITE_YOUNGSTER, 9, 17, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerBird_keeperHank, -1
+	person_event SPRITE_LASS, 8, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 4, TrainerPicnickerHope, -1
+	person_event SPRITE_LASS, 6, 21, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 4, TrainerPicnickerSharon, -1
 	person_event SPRITE_POKE_BALL, 3, 26, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route4HPUp, EVENT_ROUTE_4_HP_UP
--- a/maps/Route40.asm
+++ b/maps/Route40.asm
@@ -18,12 +18,9 @@
 
 .MapCallbacks:
 	db 1
+	dbw MAPCALLBACK_OBJECTS, .MonicaCallback
 
-	; callbacks
-
-	dbw MAPCALLBACK_OBJECTS, MonicaCallback
-
-MonicaCallback:
+.MonicaCallback:
 	clearevent EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
 	checkcode VAR_WEEKDAY
 	if_equal MONDAY, .MonicaAppears
@@ -40,7 +37,7 @@
 SwimmerfElaineScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a637b
+	writetext SwimmerfElaineAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -51,7 +48,7 @@
 SwimmerfPaulaScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a63f5
+	writetext SwimmerfPaulaAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -62,7 +59,7 @@
 SwimmermSimonScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a6282
+	writetext SwimmermSimonAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -73,7 +70,7 @@
 SwimmermRandallScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a62fa
+	writetext SwimmermRandallAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -177,7 +174,7 @@
 	text "OK! Uncle! I give!"
 	done
 
-UnknownText_0x1a6282:
+SwimmermSimonAfterBattleText:
 	text "CIANWOOD CITY is"
 	line "a good distance"
 	cont "away from here."
@@ -195,7 +192,7 @@
 	text "Uh-oh. I lost…"
 	done
 
-UnknownText_0x1a62fa:
+SwimmermRandallAfterBattleText:
 	text "Swimming exercises"
 	line "your entire body."
 	cont "It's healthy."
@@ -213,7 +210,7 @@
 	text "I lost that one!"
 	done
 
-UnknownText_0x1a637b:
+SwimmerfElaineAfterBattleText:
 	text "I'd say I'm a bet-"
 	line "ter swimmer than"
 	cont "you. Yeah!"
@@ -232,7 +229,7 @@
 	line "dizzy!"
 	done
 
-UnknownText_0x1a63f5:
+SwimmerfPaulaAfterBattleText:
 	text "While I float like"
 	line "this, the waves"
 	cont "carry me along."
@@ -358,10 +355,10 @@
 
 .PersonEvents:
 	db 12
-	person_event SPRITE_OLIVINE_RIVAL, 15, 14, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 4, TrainerSwimmermSimon, -1
-	person_event SPRITE_OLIVINE_RIVAL, 30, 18, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 5, TrainerSwimmermRandall, -1
-	person_event SPRITE_SWIMMER_GIRL, 19, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 4, TrainerSwimmerfElaine, -1
-	person_event SPRITE_SWIMMER_GIRL, 25, 10, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerSwimmerfPaula, -1
+	person_event SPRITE_OLIVINE_RIVAL, 15, 14, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 4, TrainerSwimmermSimon, -1
+	person_event SPRITE_OLIVINE_RIVAL, 30, 18, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 5, TrainerSwimmermRandall, -1
+	person_event SPRITE_SWIMMER_GIRL, 19, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 4, TrainerSwimmerfElaine, -1
+	person_event SPRITE_SWIMMER_GIRL, 25, 10, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 3, TrainerSwimmerfPaula, -1
 	person_event SPRITE_ROCK, 11, 7, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route40Rock, -1
 	person_event SPRITE_ROCK, 9, 6, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route40Rock, -1
 	person_event SPRITE_ROCK, 8, 7, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, Route40Rock, -1
@@ -368,5 +365,5 @@
 	person_event SPRITE_LASS, 13, 11, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, LassScript_0x1a61c4, -1
 	person_event SPRITE_BUENA, 10, 8, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, MonicaScript, EVENT_ROUTE_40_MONICA_OF_MONDAY
 	person_event SPRITE_POKEFAN_M, 6, 7, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x1a61c7, -1
-	person_event SPRITE_LASS, 4, 13, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x1a61d3, -1
-	person_event SPRITE_STANDING_YOUNGSTER, 9, 16, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, StandingYoungsterScript_0x1a61d6, EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
+	person_event SPRITE_LASS, 4, 13, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x1a61d3, -1
+	person_event SPRITE_STANDING_YOUNGSTER, 9, 16, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, StandingYoungsterScript_0x1a61d6, EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
--- a/maps/Route40BattleTowerGate.asm
+++ b/maps/Route40BattleTowerGate.asm
@@ -8,12 +8,9 @@
 
 .MapCallbacks:
 	db 1
+	dbw MAPCALLBACK_OBJECTS, .ShowSailor
 
-	; callbacks
-
-	dbw MAPCALLBACK_OBJECTS, UnknownScript_0x9f665
-
-UnknownScript_0x9f665:
+.ShowSailor:
 	clearevent EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
 	return
 
@@ -92,5 +89,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_ROCKER, 3, 3, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, RockerScript_0x9f669, EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
-	person_event SPRITE_TWIN, 5, 7, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, TwinScript_0x9f66c, -1
+	person_event SPRITE_ROCKER, 3, 3, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, RockerScript_0x9f669, EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
+	person_event SPRITE_TWIN, 5, 7, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, TwinScript_0x9f66c, -1
--- a/maps/Route41.asm
+++ b/maps/Route41.asm
@@ -23,7 +23,7 @@
 SwimmerfKayleeScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a6c7f
+	writetext SwimmerfKayleeAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -34,7 +34,7 @@
 SwimmerfSusieScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a6d11
+	writetext SwimmerfSusieAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -45,7 +45,7 @@
 SwimmerfDeniseScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a6d79
+	writetext SwimmerfDeniseAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -56,7 +56,7 @@
 SwimmerfKaraScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a6e58
+	writetext SwimmerfKaraAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -67,7 +67,7 @@
 SwimmerfWendyScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a6ec2
+	writetext SwimmerfWendyAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -78,7 +78,7 @@
 SwimmermCharlieScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a696e
+	writetext SwimmermCharlieAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -89,7 +89,7 @@
 SwimmermGeorgeScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a69d4
+	writetext SwimmermGeorgeAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -100,7 +100,7 @@
 SwimmermBerkeScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a6aa4
+	writetext SwimmermBerkeAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -111,7 +111,7 @@
 SwimmermKirkScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a6b6c
+	writetext SwimmermKirkAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -122,7 +122,7 @@
 SwimmermMathewScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a6bed
+	writetext SwimmermMathewAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -148,7 +148,7 @@
 	line "prune skin!"
 	done
 
-UnknownText_0x1a696e:
+SwimmermCharlieAfterBattleText:
 	text "Isn't it relaxing"
 	line "just floating like"
 	cont "this?"
@@ -164,7 +164,7 @@
 	text "Pant, pant…"
 	done
 
-UnknownText_0x1a69d4:
+SwimmermGeorgeAfterBattleText:
 	text "It's so far to"
 	line "CIANWOOD."
 
@@ -189,7 +189,7 @@
 	line "to your strength?"
 	done
 
-UnknownText_0x1a6aa4:
+SwimmermBerkeAfterBattleText:
 	text "It was a dark and"
 	line "stormy night…"
 
@@ -214,7 +214,7 @@
 	text "I'm beat!"
 	done
 
-UnknownText_0x1a6b6c:
+SwimmermKirkAfterBattleText:
 	text "The currents keep"
 	line "me from reaching"
 	cont "that island."
@@ -231,7 +231,7 @@
 	line "great endurance!"
 	done
 
-UnknownText_0x1a6bed:
+SwimmermMathewAfterBattleText:
 	text "A secret about"
 	line "WHIRL ISLANDS…"
 
@@ -252,7 +252,7 @@
 	line "it?"
 	done
 
-UnknownText_0x1a6c7f:
+SwimmerfKayleeAfterBattleText:
 	text "There's supposed"
 	line "to be a big #-"
 	cont "MON deep beneath"
@@ -272,7 +272,7 @@
 	text "I'm crushed…"
 	done
 
-UnknownText_0x1a6d11:
+SwimmerfSusieAfterBattleText:
 	text "Wasn't there a hit"
 	line "song about a boy"
 	cont "riding a LAPRAS?"
@@ -288,7 +288,7 @@
 	text "Ohhh!"
 	done
 
-UnknownText_0x1a6d79:
+SwimmerfDeniseAfterBattleText:
 	text "A sunburn is the"
 	line "worst for skin."
 
@@ -316,7 +316,7 @@
 	line "energy than I do."
 	done
 
-UnknownText_0x1a6e58:
+SwimmerfKaraAfterBattleText:
 	text "I heard roars from"
 	line "deep inside the"
 	cont "ISLANDS."
@@ -332,7 +332,7 @@
 	text "Oh, dear…"
 	done
 
-UnknownText_0x1a6ec2:
+SwimmerfWendyAfterBattleText:
 	text "The clusters of"
 	line "STARYU light up"
 	cont "at the same time."
@@ -361,13 +361,13 @@
 
 .PersonEvents:
 	db 10
-	person_event SPRITE_OLIVINE_RIVAL, 6, 32, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerSwimmermCharlie, -1
-	person_event SPRITE_OLIVINE_RIVAL, 8, 46, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerSwimmermGeorge, -1
-	person_event SPRITE_OLIVINE_RIVAL, 26, 20, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerSwimmermBerke, -1
-	person_event SPRITE_OLIVINE_RIVAL, 30, 32, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerSwimmermKirk, -1
-	person_event SPRITE_OLIVINE_RIVAL, 46, 19, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerSwimmermMathew, -1
-	person_event SPRITE_SWIMMER_GIRL, 4, 17, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerSwimmerfKaylee, -1
-	person_event SPRITE_SWIMMER_GIRL, 19, 23, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerSwimmerfSusie, -1
-	person_event SPRITE_SWIMMER_GIRL, 34, 27, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerSwimmerfDenise, -1
-	person_event SPRITE_SWIMMER_GIRL, 28, 44, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 4, TrainerSwimmerfKara, -1
-	person_event SPRITE_SWIMMER_GIRL, 50, 9, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 2, TrainerSwimmerfWendy, -1
+	person_event SPRITE_OLIVINE_RIVAL, 6, 32, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerSwimmermCharlie, -1
+	person_event SPRITE_OLIVINE_RIVAL, 8, 46, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerSwimmermGeorge, -1
+	person_event SPRITE_OLIVINE_RIVAL, 26, 20, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerSwimmermBerke, -1
+	person_event SPRITE_OLIVINE_RIVAL, 30, 32, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerSwimmermKirk, -1
+	person_event SPRITE_OLIVINE_RIVAL, 46, 19, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerSwimmermMathew, -1
+	person_event SPRITE_SWIMMER_GIRL, 4, 17, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 3, TrainerSwimmerfKaylee, -1
+	person_event SPRITE_SWIMMER_GIRL, 19, 23, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 3, TrainerSwimmerfSusie, -1
+	person_event SPRITE_SWIMMER_GIRL, 34, 27, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 3, TrainerSwimmerfDenise, -1
+	person_event SPRITE_SWIMMER_GIRL, 28, 44, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 4, TrainerSwimmerfKara, -1
+	person_event SPRITE_SWIMMER_GIRL, 50, 9, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 2, TrainerSwimmerfWendy, -1
--- a/maps/Route42.asm
+++ b/maps/Route42.asm
@@ -12,18 +12,16 @@
 Route42_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
 
-	; triggers
-	dw UnknownScript_0x1a9216, 0
-	dw UnknownScript_0x1a9217, 0
-
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x1a9216:
+.DummyTrigger0:
 	end
 
-UnknownScript_0x1a9217:
+.DummyTrigger1:
 	end
 
 Route42SuicuneScript:
@@ -170,7 +168,7 @@
 PokemaniacShaneScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a94d6
+	writetext PokemaniacShaneAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -181,7 +179,7 @@
 HikerBenjaminScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a943f
+	writetext HikerBenjaminAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -260,7 +258,7 @@
 	text "Gahahah!"
 	done
 
-UnknownText_0x1a943f:
+HikerBenjaminAfterBattleText:
 	text "Losing feels in-"
 	line "significant if you"
 
@@ -281,7 +279,7 @@
 	line "my MOON STONE…"
 	done
 
-UnknownText_0x1a94d6:
+PokemaniacShaneAfterBattleText:
 	text "You're working on"
 	line "a #DEX?"
 
@@ -347,12 +345,12 @@
 
 .PersonEvents:
 	db 9
-	person_event SPRITE_FISHER, 10, 40, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 1, TrainerFisherTully1, -1
-	person_event SPRITE_POKEFAN_M, 9, 51, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 3, TrainerHikerBenjamin, -1
-	person_event SPRITE_SUPER_NERD, 8, 47, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerPokemaniacShane, -1
+	person_event SPRITE_FISHER, 10, 40, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 1, TrainerFisherTully1, -1
+	person_event SPRITE_POKEFAN_M, 9, 51, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 3, TrainerHikerBenjamin, -1
+	person_event SPRITE_SUPER_NERD, 8, 47, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerPokemaniacShane, -1
 	person_event SPRITE_FRUIT_TREE, 16, 27, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x1a934d, -1
 	person_event SPRITE_FRUIT_TREE, 16, 28, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x1a934f, -1
 	person_event SPRITE_FRUIT_TREE, 16, 29, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x1a9351, -1
 	person_event SPRITE_POKE_BALL, 4, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route42UltraBall, EVENT_ROUTE_42_ULTRA_BALL
 	person_event SPRITE_POKE_BALL, 8, 33, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route42SuperPotion, EVENT_ROUTE_42_SUPER_POTION
-	person_event SPRITE_SUICUNE, 16, 26, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_SAW_SUICUNE_ON_ROUTE_42
+	person_event SPRITE_SUICUNE, 16, 26, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_SAW_SUICUNE_ON_ROUTE_42
--- a/maps/Route42EcruteakGate.asm
+++ b/maps/Route42EcruteakGate.asm
@@ -38,4 +38,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_OFFICER, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, OfficerScript_0x19a4b5, -1
+	person_event SPRITE_OFFICER, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, OfficerScript_0x19a4b5, -1
--- a/maps/Route43.asm
+++ b/maps/Route43.asm
@@ -14,18 +14,15 @@
 
 .MapCallbacks:
 	db 1
+	dbw MAPCALLBACK_NEWMAP, .CheckIfRockets
 
-	; callbacks
-
-	dbw MAPCALLBACK_NEWMAP, UnknownScript_0x19d051
-
-UnknownScript_0x19d051:
+.CheckIfRockets:
 	checkevent EVENT_CLEARED_ROCKET_HIDEOUT
-	iftrue UnknownScript_0x19d05c
+	iftrue .NoRockets
 	domaptrigger ROUTE_43_GATE, $0
 	return
 
-UnknownScript_0x19d05c:
+.NoRockets:
 	domaptrigger ROUTE_43_GATE, $1
 	return
 
@@ -35,7 +32,7 @@
 CamperSpencerScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19d57e
+	writetext CamperSpencerAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -46,7 +43,7 @@
 PokemaniacBenScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19d2d2
+	writetext PokemaniacBenAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -162,7 +159,7 @@
 PokemaniacRonScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19d3f8
+	writetext PokemaniacRonAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -173,7 +170,7 @@
 FisherMarvinScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19d4d3
+	writetext FisherMarvinAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -342,7 +339,7 @@
 	line "this to me?"
 	done
 
-UnknownText_0x19d2d2:
+PokemaniacBenAfterBattleText:
 	text "What else do I"
 	line "like besides"
 	cont "#MON?"
@@ -384,7 +381,7 @@
 	line "pretty right on!"
 	done
 
-UnknownText_0x19d3f8:
+PokemaniacRonAfterBattleText:
 	text "It's okay for"
 	line "people to like"
 
@@ -411,7 +408,7 @@
 	line "better anyway."
 	done
 
-UnknownText_0x19d4d3:
+FisherMarvinAfterBattleText:
 	text "KURT's LURE BALL"
 	line "is the best for"
 
@@ -434,7 +431,7 @@
 	line "at all…"
 	done
 
-UnknownText_0x19d57e:
+CamperSpencerAfterBattleText:
 	text "What is going on"
 	line "at LAKE OF RAGE?"
 
@@ -526,11 +523,11 @@
 
 .PersonEvents:
 	db 8
-	person_event SPRITE_SUPER_NERD, 5, 13, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 2, TrainerPokemaniacBen, -1
-	person_event SPRITE_SUPER_NERD, 20, 13, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerPokemaniacBrent1, -1
-	person_event SPRITE_SUPER_NERD, 7, 14, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 2, TrainerPokemaniacRon, -1
-	person_event SPRITE_FISHER, 16, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 4, TrainerFisherMarvin, -1
-	person_event SPRITE_LASS, 25, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 2, TrainerPicnickerTiffany3, -1
-	person_event SPRITE_YOUNGSTER, 40, 13, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerCamperSpencer, -1
+	person_event SPRITE_SUPER_NERD, 5, 13, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 2, TrainerPokemaniacBen, -1
+	person_event SPRITE_SUPER_NERD, 20, 13, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerPokemaniacBrent1, -1
+	person_event SPRITE_SUPER_NERD, 7, 14, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 2, TrainerPokemaniacRon, -1
+	person_event SPRITE_FISHER, 16, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 4, TrainerFisherMarvin, -1
+	person_event SPRITE_LASS, 25, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 2, TrainerPicnickerTiffany3, -1
+	person_event SPRITE_YOUNGSTER, 40, 13, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 3, TrainerCamperSpencer, -1
 	person_event SPRITE_FRUIT_TREE, 26, 1, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x19d266, -1
 	person_event SPRITE_POKE_BALL, 32, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route43MaxEther, EVENT_ROUTE_43_MAX_ETHER
--- a/maps/Route43Gate.asm
+++ b/maps/Route43Gate.asm
@@ -6,36 +6,31 @@
 Route43Gate_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .RocketShakedown
+	maptrigger .DummyTrigger
 
-	; triggers
-	dw .Trigger0, 0
-	dw .Trigger1, 0
-
 .MapCallbacks:
 	db 1
+	dbw MAPCALLBACK_NEWMAP, .CheckIfRockets
 
-	; callbacks
-
-	dbw MAPCALLBACK_NEWMAP, GateScript_CheckIfRockets
-
-.Trigger0:
-	priorityjump GateScript_RocketTakeover
+.RocketShakedown:
+	priorityjump .RocketTakeover
 	end
 
-.Trigger1:
+.DummyTrigger:
 	end
 
-GateScript_CheckIfRockets:
+.CheckIfRockets:
 	checkevent EVENT_CLEARED_ROCKET_HIDEOUT
-	iftrue GateScript_NoRockets
+	iftrue .NoRockets
 	domaptrigger ROUTE_43, $0
 	return
 
-GateScript_NoRockets:
+.NoRockets:
 	domaptrigger ROUTE_43, $1
 	return
 
-GateScript_RocketTakeover:
+.RocketTakeover:
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	checkcode VAR_FACING
 	if_equal DOWN, RocketScript_Southbound
@@ -269,6 +264,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_OFFICER, 4, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, OfficerScript_GuardWithSludgeBomb, EVENT_LAKE_OF_RAGE_CIVILIANS
+	person_event SPRITE_OFFICER, 4, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, OfficerScript_GuardWithSludgeBomb, EVENT_LAKE_OF_RAGE_CIVILIANS
 	person_event SPRITE_ROCKET, 4, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, RocketScript_MakingABundle, EVENT_ROUTE_43_GATE_ROCKETS
 	person_event SPRITE_ROCKET, 4, 7, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, RocketScript_MakingABundle, EVENT_ROUTE_43_GATE_ROCKETS
--- a/maps/Route43MahoganyGate.asm
+++ b/maps/Route43MahoganyGate.asm
@@ -57,4 +57,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_OFFICER, 4, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, OfficerScript_0x19ab0b, -1
+	person_event SPRITE_OFFICER, 4, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, OfficerScript_0x19ab0b, -1
--- a/maps/Route44.asm
+++ b/maps/Route44.asm
@@ -155,7 +155,7 @@
 PsychicPhilScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19dcfc
+	writetext PsychicPhilAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -261,7 +261,7 @@
 FisherEdgarScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19db6f
+	writetext FisherEdgarAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -272,7 +272,7 @@
 CooltrainerfCybilScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19df4d
+	writetext CooltrainerfCybilAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -283,7 +283,7 @@
 PokemaniacZachScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19dd7e
+	writetext PokemaniacZachAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -294,7 +294,7 @@
 CooltrainermAllenScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19de66
+	writetext CooltrainermAllenAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -360,7 +360,7 @@
 	line "This isn't right."
 	done
 
-UnknownText_0x19db6f:
+FisherEdgarAfterBattleText:
 	text "That's 100 wins"
 	line "to 101 losses."
 
@@ -412,7 +412,7 @@
 	line "shocking loss…"
 	done
 
-UnknownText_0x19dcfc:
+PsychicPhilAfterBattleText:
 	text "It's important to"
 	line "have conviction"
 	cont "on your side."
@@ -429,7 +429,7 @@
 	line "are so appealing."
 	done
 
-UnknownText_0x19dd7e:
+PokemaniacZachAfterBattleText:
 	text "If a #MON has"
 	line "different colors"
 
@@ -455,7 +455,7 @@
 	line "loss on my part."
 	done
 
-UnknownText_0x19de66:
+CooltrainermAllenAfterBattleText:
 	text "Wow. You have a"
 	line "lot of BADGES."
 
@@ -485,7 +485,7 @@
 	line "do at all."
 	done
 
-UnknownText_0x19df4d:
+CooltrainerfCybilAfterBattleText:
 	text "We all get better"
 	line "by experiencing"
 	cont "many battles."
@@ -526,13 +526,13 @@
 
 .PersonEvents:
 	db 11
-	person_event SPRITE_FISHER, 3, 35, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 1, TrainerFisherWilton1, -1
-	person_event SPRITE_FISHER, 13, 19, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 1, TrainerFisherEdgar, -1
-	person_event SPRITE_YOUNGSTER, 9, 10, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerPsychicPhil, -1
-	person_event SPRITE_SUPER_NERD, 2, 43, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerPokemaniacZach, -1
-	person_event SPRITE_YOUNGSTER, 5, 51, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 2, TrainerBird_keeperVance1, -1
-	person_event SPRITE_COOLTRAINER_M, 15, 41, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 5, TrainerCooltrainermAllen, -1
-	person_event SPRITE_COOLTRAINER_F, 14, 31, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 5, TrainerCooltrainerfCybil, -1
+	person_event SPRITE_FISHER, 3, 35, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 1, TrainerFisherWilton1, -1
+	person_event SPRITE_FISHER, 13, 19, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 1, TrainerFisherEdgar, -1
+	person_event SPRITE_YOUNGSTER, 9, 10, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerPsychicPhil, -1
+	person_event SPRITE_SUPER_NERD, 2, 43, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 3, TrainerPokemaniacZach, -1
+	person_event SPRITE_YOUNGSTER, 5, 51, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 2, TrainerBird_keeperVance1, -1
+	person_event SPRITE_COOLTRAINER_M, 15, 41, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 5, TrainerCooltrainermAllen, -1
+	person_event SPRITE_COOLTRAINER_F, 14, 31, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 5, TrainerCooltrainerfCybil, -1
 	person_event SPRITE_FRUIT_TREE, 5, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x19da40, -1
 	person_event SPRITE_POKE_BALL, 8, 30, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route44MaxRevive, EVENT_ROUTE_44_MAX_REVIVE
 	person_event SPRITE_POKE_BALL, 4, 45, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route44UltraBall, EVENT_ROUTE_44_ULTRA_BALL
--- a/maps/Route45.asm
+++ b/maps/Route45.asm
@@ -130,7 +130,7 @@
 HikerErikScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19e301
+	writetext HikerErikAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -141,7 +141,7 @@
 HikerMichaelScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19e3b1
+	writetext HikerMichaelAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -238,7 +238,7 @@
 HikerTimothyScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19e4f1
+	writetext HikerTimothyAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -249,7 +249,7 @@
 CooltrainermRyanScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19e70d
+	writetext CooltrainermRyanAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -260,7 +260,7 @@
 CooltrainerfKellyScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19e7d1
+	writetext CooltrainerfKellyAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -328,7 +328,7 @@
 	text "Oh, I lost that!"
 	done
 
-UnknownText_0x19e301:
+HikerErikAfterBattleText:
 	text "I'll head back to"
 	line "BLACKTHORN's ICE"
 
@@ -350,7 +350,7 @@
 	line "spunky enough!"
 	done
 
-UnknownText_0x19e3b1:
+HikerMichaelAfterBattleText:
 	text "Boy, do I love"
 	line "HP UP! Mmmm, yum!"
 
@@ -397,7 +397,7 @@
 	line "They're there too!"
 	done
 
-UnknownText_0x19e4f1:
+HikerTimothyAfterBattleText:
 	text "The best thing to"
 	line "ever happen to me"
 
@@ -467,7 +467,7 @@
 	line "respect."
 	done
 
-UnknownText_0x19e70d:
+CooltrainermRyanAfterBattleText:
 	text "I see you're rais-"
 	line "ing your #MON"
 	cont "with care."
@@ -490,7 +490,7 @@
 	text "Fine. I lost."
 	done
 
-UnknownText_0x19e7d1:
+CooltrainerfKellyAfterBattleText:
 	text "I'm not in favor"
 	line "of overly power-"
 	cont "ful moves."
@@ -550,16 +550,16 @@
 
 .PersonEvents:
 	db 13
-	person_event SPRITE_POKEFAN_M, 16, 10, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 1, TrainerHikerErik, -1
-	person_event SPRITE_POKEFAN_M, 65, 15, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 2, TrainerHikerMichael, -1
-	person_event SPRITE_POKEFAN_M, 28, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 2, TrainerHikerParry, -1
-	person_event SPRITE_POKEFAN_M, 65, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 1, TrainerHikerTimothy, -1
-	person_event SPRITE_BLACK_BELT, 50, 11, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 2, TrainerBlackbeltKenji, -1
-	person_event SPRITE_COOLTRAINER_M, 18, 17, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerCooltrainermRyan, -1
-	person_event SPRITE_COOLTRAINER_F, 36, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainerfKelly, -1
+	person_event SPRITE_POKEFAN_M, 16, 10, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 1, TrainerHikerErik, -1
+	person_event SPRITE_POKEFAN_M, 65, 15, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 2, TrainerHikerMichael, -1
+	person_event SPRITE_POKEFAN_M, 28, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 2, TrainerHikerParry, -1
+	person_event SPRITE_POKEFAN_M, 65, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 1, TrainerHikerTimothy, -1
+	person_event SPRITE_BLACK_BELT, 50, 11, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 2, TrainerBlackbeltKenji, -1
+	person_event SPRITE_COOLTRAINER_M, 18, 17, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 1, TrainerCooltrainermRyan, -1
+	person_event SPRITE_COOLTRAINER_F, 36, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainerfKelly, -1
 	person_event SPRITE_FRUIT_TREE, 82, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x19e294, -1
 	person_event SPRITE_POKE_BALL, 51, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route45Nugget, EVENT_ROUTE_45_NUGGET
 	person_event SPRITE_POKE_BALL, 66, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route45Revive, EVENT_ROUTE_45_REVIVE
 	person_event SPRITE_POKE_BALL, 20, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route45Elixer, EVENT_ROUTE_45_ELIXER
 	person_event SPRITE_POKE_BALL, 33, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route45MaxPotion, EVENT_ROUTE_45_MAX_POTION
-	person_event SPRITE_YOUNGSTER, 70, 4, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x19e269, -1
+	person_event SPRITE_YOUNGSTER, 70, 4, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x19e269, -1
--- a/maps/Route46.asm
+++ b/maps/Route46.asm
@@ -19,7 +19,7 @@
 CamperTedScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a9851
+	writetext CamperTedAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -153,7 +153,7 @@
 HikerBaileyScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1a97e8
+	writetext HikerBaileyAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -181,7 +181,7 @@
 	line "me your power!"
 	done
 
-UnknownText_0x1a97e8:
+HikerBaileyAfterBattleText:
 	text "It's over. I don't"
 	line "mind. We HIKERS"
 	cont "are like that."
@@ -199,7 +199,7 @@
 	text "Wha…?"
 	done
 
-UnknownText_0x1a9851:
+CamperTedAfterBattleText:
 	text "I did my best but"
 	line "came up short."
 
@@ -269,9 +269,9 @@
 
 .PersonEvents:
 	db 6
-	person_event SPRITE_POKEFAN_M, 19, 12, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 2, TrainerHikerBailey, -1
-	person_event SPRITE_YOUNGSTER, 14, 4, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 2, TrainerCamperTed, -1
-	person_event SPRITE_LASS, 13, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 2, TrainerPicnickerErin1, -1
+	person_event SPRITE_POKEFAN_M, 19, 12, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 2, TrainerHikerBailey, -1
+	person_event SPRITE_YOUNGSTER, 14, 4, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 2, TrainerCamperTed, -1
+	person_event SPRITE_LASS, 13, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 2, TrainerPicnickerErin1, -1
 	person_event SPRITE_FRUIT_TREE, 5, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x1a978f, -1
 	person_event SPRITE_FRUIT_TREE, 6, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x1a9791, -1
 	person_event SPRITE_POKE_BALL, 15, 1, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, Route46XSpeed, EVENT_ROUTE_46_X_SPEED
--- a/maps/Route5.asm
+++ b/maps/Route5.asm
@@ -60,4 +60,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_POKEFAN_M, 16, 17, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x1adb19, EVENT_ROUTE_5_6_POKEFAN_M_BLOCKS_UNDERGROUND_PATH
+	person_event SPRITE_POKEFAN_M, 16, 17, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x1adb19, EVENT_ROUTE_5_6_POKEFAN_M_BLOCKS_UNDERGROUND_PATH
--- a/maps/Route5CleanseTagSpeechHouse.asm
+++ b/maps/Route5CleanseTagSpeechHouse.asm
@@ -79,5 +79,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_GRANNY, 5, 2, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, GrannyScript_0x18b634, -1
-	person_event SPRITE_TEACHER, 3, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, TeacherScript_0x18b64f, -1
+	person_event SPRITE_GRANNY, 5, 2, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, GrannyScript_0x18b634, -1
+	person_event SPRITE_TEACHER, 3, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, TeacherScript_0x18b64f, -1
--- a/maps/Route5SaffronCityGate.asm
+++ b/maps/Route5SaffronCityGate.asm
@@ -39,4 +39,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_OFFICER, 4, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, OfficerScript_0x18b5b9, -1
+	person_event SPRITE_OFFICER, 4, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, OfficerScript_0x18b5b9, -1
--- a/maps/Route5UndergroundEntrance.asm
+++ b/maps/Route5UndergroundEntrance.asm
@@ -37,4 +37,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_TEACHER, 2, 2, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, TeacherScript_0x18b555, -1
+	person_event SPRITE_TEACHER, 2, 2, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, TeacherScript_0x18b555, -1
--- a/maps/Route6.asm
+++ b/maps/Route6.asm
@@ -16,7 +16,7 @@
 PokefanmRexScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ad9ff
+	writetext PokefanmRexAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -27,7 +27,7 @@
 PokefanmAllanScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ada88
+	writetext PokefanmAllanAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -63,7 +63,7 @@
 	text "My PHANPY!"
 	done
 
-UnknownText_0x1ad9ff:
+PokefanmRexAfterBattleText:
 	text "Look how adorable"
 	line "my PHANPY acts!"
 
@@ -82,7 +82,7 @@
 	text "My TEDDIURSA!"
 	done
 
-UnknownText_0x1ada88:
+PokefanmAllanAfterBattleText:
 	text "Look how adorable"
 	line "my TEDDIURSA acts!"
 
@@ -109,6 +109,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_POKEFAN_M, 4, 17, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 2, PokefanMScript_0x1ad951, EVENT_ROUTE_5_6_POKEFAN_M_BLOCKS_UNDERGROUND_PATH
-	person_event SPRITE_POKEFAN_M, 12, 9, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 0, TrainerPokefanmRex, -1
-	person_event SPRITE_POKEFAN_M, 12, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 0, TrainerPokefanmAllan, -1
+	person_event SPRITE_POKEFAN_M, 4, 17, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 2, PokefanMScript_0x1ad951, EVENT_ROUTE_5_6_POKEFAN_M_BLOCKS_UNDERGROUND_PATH
+	person_event SPRITE_POKEFAN_M, 12, 9, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 0, TrainerPokefanmRex, -1
+	person_event SPRITE_POKEFAN_M, 12, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 0, TrainerPokefanmAllan, -1
--- a/maps/Route6SaffronGate.asm
+++ b/maps/Route6SaffronGate.asm
@@ -4,14 +4,12 @@
 Route6SaffronGate_MapScriptHeader:
 .MapTriggers:
 	db 1
+	maptrigger .DummyTrigger
 
-	; triggers
-	dw UnknownScript_0x1926e9, 0
-
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x1926e9:
+.DummyTrigger:
 	end
 
 OfficerScript_0x1926ea:
@@ -78,4 +76,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_OFFICER, 4, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, OfficerScript_0x1926ea, -1
+	person_event SPRITE_OFFICER, 4, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, OfficerScript_0x1926ea, -1
--- a/maps/Route7SaffronGate.asm
+++ b/maps/Route7SaffronGate.asm
@@ -64,4 +64,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_OFFICER, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, OfficerScript_0x73518, -1
+	person_event SPRITE_OFFICER, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, OfficerScript_0x73518, -1
--- a/maps/Route8.asm
+++ b/maps/Route8.asm
@@ -19,7 +19,7 @@
 BikerDwayneScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x6c0c8
+	writetext BikerDwayneAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -30,7 +30,7 @@
 BikerHarrisScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x6c143
+	writetext BikerHarrisAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -41,7 +41,7 @@
 BikerZekeScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x6c1a3
+	writetext BikerZekeAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -52,7 +52,7 @@
 SupernerdSamScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x6c219
+	writetext SupernerdSamAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -63,7 +63,7 @@
 SupernerdTomScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x6c27e
+	writetext SupernerdTomAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -90,7 +90,7 @@
 	text "S-sorry!"
 	done
 
-UnknownText_0x6c0c8:
+BikerDwayneAfterBattleText:
 	text "The KANTO #MON"
 	line "FEDERATION will"
 	cont "never fall!"
@@ -108,7 +108,7 @@
 	text "F-forgive me!"
 	done
 
-UnknownText_0x6c143:
+BikerHarrisAfterBattleText:
 	text "Wiped out by some"
 	line "punk from JOHTO…"
 	done
@@ -124,7 +124,7 @@
 	text "Yikes! Sorry!"
 	done
 
-UnknownText_0x6c1a3:
+BikerZekeAfterBattleText:
 	text "We'll try not to"
 	line "disturb anyone"
 	cont "from now on…"
@@ -140,7 +140,7 @@
 	line "the MAGNET TRAIN…"
 	done
 
-UnknownText_0x6c219:
+SupernerdSamAfterBattleText:
 	text "The power of mag-"
 	line "nets is awesome!"
 	done
@@ -155,7 +155,7 @@
 	line "You're tough!"
 	done
 
-UnknownText_0x6c27e:
+SupernerdTomAfterBattleText:
 	text "GYM BADGES give"
 	line "you advantages in"
 	cont "battles."
@@ -191,9 +191,9 @@
 
 .PersonEvents:
 	db 6
-	person_event SPRITE_BIKER, 8, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 5, TrainerBikerDwayne, -1
-	person_event SPRITE_BIKER, 9, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 5, TrainerBikerHarris, -1
-	person_event SPRITE_BIKER, 10, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 5, TrainerBikerZeke, -1
-	person_event SPRITE_SUPER_NERD, 2, 23, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 3, TrainerSupernerdSam, -1
-	person_event SPRITE_SUPER_NERD, 12, 31, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 4, TrainerSupernerdTom, -1
+	person_event SPRITE_BIKER, 8, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 5, TrainerBikerDwayne, -1
+	person_event SPRITE_BIKER, 9, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 5, TrainerBikerHarris, -1
+	person_event SPRITE_BIKER, 10, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 5, TrainerBikerZeke, -1
+	person_event SPRITE_SUPER_NERD, 2, 23, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 3, TrainerSupernerdSam, -1
+	person_event SPRITE_SUPER_NERD, 12, 31, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 4, TrainerSupernerdTom, -1
 	person_event SPRITE_FRUIT_TREE, 5, 33, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, FruitTreeScript_0x6c06c, -1
--- a/maps/Route8SaffronGate.asm
+++ b/maps/Route8SaffronGate.asm
@@ -38,4 +38,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_OFFICER, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, OfficerScript_0x7f416, -1
+	person_event SPRITE_OFFICER, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, OfficerScript_0x7f416, -1
--- a/maps/Route9.asm
+++ b/maps/Route9.asm
@@ -19,7 +19,7 @@
 CamperDeanScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1aafd9
+	writetext CamperDeanAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -30,7 +30,7 @@
 PicnickerHeidiScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ab07c
+	writetext PicnickerHeidiAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -41,7 +41,7 @@
 CamperSidScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ab0f6
+	writetext CamperSidAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -52,7 +52,7 @@
 PicnickerEdnaScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ab15f
+	writetext PicnickerEdnaAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -63,7 +63,7 @@
 HikerTimScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ab210
+	writetext HikerTimAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -74,7 +74,7 @@
 HikerSidneyScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1ab278
+	writetext HikerSidneyAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -95,7 +95,7 @@
 	text "Whoa! Danger, man."
 	done
 
-UnknownText_0x1aafd9:
+CamperDeanAfterBattleText:
 	text "My #MON were"
 	line "hurt before even"
 
@@ -119,7 +119,7 @@
 	text "Ohhhh!"
 	done
 
-UnknownText_0x1ab07c:
+PicnickerHeidiAfterBattleText:
 	text "We bake lots of"
 	line "goodies and share"
 
@@ -137,7 +137,7 @@
 	line "ing out…"
 	done
 
-UnknownText_0x1ab0f6:
+CamperSidAfterBattleText:
 	text "Sorry. You weren't"
 	line "littering. It was"
 	cont "my mistake."
@@ -153,7 +153,7 @@
 	text "Ohh… I lost…"
 	done
 
-UnknownText_0x1ab15f:
+PicnickerEdnaAfterBattleText:
 	text "Conserving energy"
 	line "is important, but"
 
@@ -175,7 +175,7 @@
 	line "singing…"
 	done
 
-UnknownText_0x1ab210:
+HikerTimAfterBattleText:
 	text "Battles are about"
 	line "concentration."
 	done
@@ -193,7 +193,7 @@
 	line "I lost that…"
 	done
 
-UnknownText_0x1ab278:
+HikerSidneyAfterBattleText:
 	text "The POWER PLANT is"
 	line "across a small"
 	cont "river."
@@ -224,9 +224,9 @@
 
 .PersonEvents:
 	db 6
-	person_event SPRITE_YOUNGSTER, 11, 23, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerCamperDean, -1
-	person_event SPRITE_LASS, 8, 39, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 3, TrainerPicnickerHeidi, -1
-	person_event SPRITE_YOUNGSTER, 4, 11, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 5, TrainerCamperSid, -1
-	person_event SPRITE_LASS, 15, 12, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 1, TrainerPicnickerEdna, -1
-	person_event SPRITE_POKEFAN_M, 3, 28, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 2, TrainerHikerTim, -1
-	person_event SPRITE_POKEFAN_M, 15, 36, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 4, TrainerHikerSidney, -1
+	person_event SPRITE_YOUNGSTER, 11, 23, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 3, TrainerCamperDean, -1
+	person_event SPRITE_LASS, 8, 39, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 3, TrainerPicnickerHeidi, -1
+	person_event SPRITE_YOUNGSTER, 4, 11, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 5, TrainerCamperSid, -1
+	person_event SPRITE_LASS, 15, 12, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 1, TrainerPicnickerEdna, -1
+	person_event SPRITE_POKEFAN_M, 3, 28, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 2, TrainerHikerTim, -1
+	person_event SPRITE_POKEFAN_M, 15, 36, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 4, TrainerHikerSidney, -1
--- /dev/null
+++ b/maps/RuinsOfAlphAerodactylChamber.asm
@@ -1,0 +1,171 @@
+RuinsOfAlphAerodactylChamber_MapScriptHeader:
+.MapTriggers:
+	db 2
+	maptrigger .CheckWall
+	maptrigger .DummyTrigger
+
+.MapCallbacks:
+	db 1
+	dbw MAPCALLBACK_TILES, .HiddenDoors
+
+.CheckWall:
+	checkevent EVENT_WALL_OPENED_IN_AERODACTYL_CHAMBER
+	iftrue .OpenWall
+	end
+
+.OpenWall:
+	priorityjump .WallOpenScript
+	end
+
+.DummyTrigger:
+	end
+
+.HiddenDoors:
+	checkevent EVENT_WALL_OPENED_IN_AERODACTYL_CHAMBER
+	iftrue .WallOpen
+	changeblock $4, $0, $2e
+.WallOpen:
+	checkevent EVENT_SOLVED_AERODACTYL_PUZZLE
+	iffalse .FloorClosed
+	return
+
+.FloorClosed:
+	changeblock $2, $2, $1
+	changeblock $4, $2, $2
+	return
+
+.WallOpenScript:
+	pause 30
+	earthquake 30
+	showemote EMOTE_SHOCK, PLAYER, 20
+	pause 30
+	playsound SFX_STRENGTH
+	changeblock $4, $0, $30
+	reloadmappart
+	earthquake 50
+	dotrigger $1
+	closetext
+	end
+
+MapRuinsOfAlphAerodactylChamberSignpost2Script:
+	refreshscreen $0
+	writebyte $2
+	special Special_UnownPuzzle
+	closetext
+	iftrue UnknownScript_0x58df7
+	end
+
+UnknownScript_0x58df7:
+	setevent EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
+	setevent EVENT_SOLVED_AERODACTYL_PUZZLE
+	setflag ENGINE_UNLOCKED_UNOWNS_3
+	domaptrigger RUINS_OF_ALPH_INNER_CHAMBER, $1
+	earthquake 30
+	showemote EMOTE_SHOCK, PLAYER, 15
+	changeblock $2, $2, $18
+	changeblock $4, $2, $19
+	reloadmappart
+	playsound SFX_STRENGTH
+	earthquake 80
+	applymovement PLAYER, MovementData_0x58e4d
+	playsound SFX_KINESIS
+	waitsfx
+	pause 20
+	warpcheck
+	end
+
+MapRuinsOfAlphAerodactylChamberSignpost1Script:
+	jumptext UnknownText_0x58ec2
+
+MapRuinsOfAlphAerodactylChamberSignpost3Script:
+	jumptext UnknownText_0x58ee7
+
+MapRuinsOfAlphAerodactylChamberSignpost4Script:
+	opentext
+	writetext UnknownText_0x58e4f
+	writebyte $1
+	special Special_DisplayUnownWords
+	closetext
+	end
+
+MapRuinsOfAlphAerodactylChamberSignpost5Script:
+	checkevent EVENT_WALL_OPENED_IN_AERODACTYL_CHAMBER
+	iftrue UnknownScript_0x58e46
+	opentext
+	writetext UnknownText_0x58e81
+	writebyte $1
+	special Special_DisplayUnownWords
+	closetext
+	end
+
+UnknownScript_0x58e46:
+	opentext
+	writetext UnknownText_0x58ea2
+	waitbutton
+	closetext
+	end
+
+MovementData_0x58e4d:
+	db $59 ; movement
+	step_end
+
+UnknownText_0x58e4f:
+	text "Patterns appeared"
+	line "on the walls…"
+	done
+
+; possibly unused.. again?
+UnknownText_0x58e70:
+	text "It's UNOWN text!"
+	done
+
+UnknownText_0x58e81:
+	text "Patterns appeared"
+	line "on the walls…"
+	done
+
+UnknownText_0x58ea2:
+	text "There's a big hole"
+	line "in the wall!"
+	done
+
+UnknownText_0x58ec2:
+	text "It's a replica of"
+	line "an ancient #-"
+	cont "MON."
+	done
+
+UnknownText_0x58ee7:
+	text "This flying #-"
+	line "MON attacked its"
+
+	para "prey with saw-like"
+	line "fangs."
+	done
+
+RuinsOfAlphAerodactylChamber_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 5
+	warp_def $9, $3, 4, RUINS_OF_ALPH_OUTSIDE
+	warp_def $9, $4, 4, RUINS_OF_ALPH_OUTSIDE
+	warp_def $3, $3, 8, RUINS_OF_ALPH_INNER_CHAMBER
+	warp_def $3, $4, 9, RUINS_OF_ALPH_INNER_CHAMBER
+	warp_def $0, $4, 1, RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 6
+	signpost 3, 2, SIGNPOST_READ, MapRuinsOfAlphAerodactylChamberSignpost1Script
+	signpost 3, 5, SIGNPOST_READ, MapRuinsOfAlphAerodactylChamberSignpost1Script
+	signpost 2, 3, SIGNPOST_UP, MapRuinsOfAlphAerodactylChamberSignpost2Script
+	signpost 2, 4, SIGNPOST_UP, MapRuinsOfAlphAerodactylChamberSignpost3Script
+	signpost 0, 3, SIGNPOST_UP, MapRuinsOfAlphAerodactylChamberSignpost4Script
+	signpost 0, 4, SIGNPOST_UP, MapRuinsOfAlphAerodactylChamberSignpost5Script
+
+.PersonEvents:
+	db 0
--- /dev/null
+++ b/maps/RuinsOfAlphAerodactylItemRoom.asm
@@ -1,0 +1,59 @@
+const_value set 2
+	const RUINSOFALPHAERODACTYLITEMROOM_POKE_BALL1
+	const RUINSOFALPHAERODACTYLITEMROOM_POKE_BALL2
+	const RUINSOFALPHAERODACTYLITEMROOM_POKE_BALL3
+	const RUINSOFALPHAERODACTYLITEMROOM_POKE_BALL4
+
+RuinsOfAlphAerodactylItemRoom_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+RuinsOfAlphAerodactylItemRoomGoldBerry:
+	itemball GOLD_BERRY
+
+RuinsOfAlphAerodactylItemRoomMoonStone:
+	itemball MOON_STONE
+
+RuinsOfAlphAerodactylItemRoomHealPowder:
+	itemball HEAL_POWDER
+
+RuinsOfAlphAerodactylItemRoomEnergyRoot:
+	itemball ENERGY_ROOT
+
+MapRuinsOfAlphAerodactylItemRoomSignpost1Script:
+	jumptext UnknownText_0x59ac1
+
+UnknownText_0x59ac1:
+	text "It's a replica of"
+	line "an ancient #-"
+	cont "MON."
+	done
+
+RuinsOfAlphAerodactylItemRoom_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 4
+	warp_def $9, $3, 5, RUINS_OF_ALPH_AERODACTYL_CHAMBER
+	warp_def $9, $4, 5, RUINS_OF_ALPH_AERODACTYL_CHAMBER
+	warp_def $1, $3, 1, RUINS_OF_ALPH_AERODACTYL_WORD_ROOM
+	warp_def $1, $4, 2, RUINS_OF_ALPH_AERODACTYL_WORD_ROOM
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 2
+	signpost 1, 2, SIGNPOST_READ, MapRuinsOfAlphAerodactylItemRoomSignpost1Script
+	signpost 1, 5, SIGNPOST_READ, MapRuinsOfAlphAerodactylItemRoomSignpost1Script
+
+.PersonEvents:
+	db 4
+	person_event SPRITE_POKE_BALL, 6, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsOfAlphAerodactylItemRoomGoldBerry, EVENT_PICKED_UP_GOLD_BERRY_FROM_AERODACTYL_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 6, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsOfAlphAerodactylItemRoomMoonStone, EVENT_PICKED_UP_MOON_STONE_FROM_AERODACTYL_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 4, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsOfAlphAerodactylItemRoomHealPowder, EVENT_PICKED_UP_HEAL_POWDER_FROM_AERODACTYL_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 4, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsOfAlphAerodactylItemRoomEnergyRoot, EVENT_PICKED_UP_ENERGY_ROOT_FROM_AERODACTYL_ITEM_ROOM
--- /dev/null
+++ b/maps/RuinsOfAlphAerodactylWordRoom.asm
@@ -1,0 +1,25 @@
+RuinsOfAlphAerodactylWordRoom_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+RuinsOfAlphAerodactylWordRoom_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 3
+	warp_def $5, $9, 3, RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM
+	warp_def $5, $a, 4, RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM
+	warp_def $b, $11, 8, RUINS_OF_ALPH_INNER_CHAMBER
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 0
--- /dev/null
+++ b/maps/RuinsOfAlphAerodactylWordRoom.blk
@@ -1,0 +1,2 @@
+	
+
!"#$%    
\ No newline at end of file
--- /dev/null
+++ b/maps/RuinsOfAlphHoOhChamber.asm
@@ -1,0 +1,172 @@
+RuinsOfAlphHoOhChamber_MapScriptHeader:
+.MapTriggers:
+	db 2
+	maptrigger .CheckWall
+	maptrigger .DummyTrigger
+
+.MapCallbacks:
+	db 1
+	dbw MAPCALLBACK_TILES, .HiddenDoors
+
+.CheckWall:
+	special SpecialHoOhChamber
+	checkevent EVENT_WALL_OPENED_IN_HO_OH_CHAMBER
+	iftrue .OpenWall
+	end
+
+.OpenWall:
+	priorityjump .WallOpenScript
+	end
+
+.DummyTrigger:
+	end
+
+.HiddenDoors:
+	checkevent EVENT_WALL_OPENED_IN_HO_OH_CHAMBER
+	iftrue .WallOpen
+	changeblock $4, $0, $2e
+.WallOpen:
+	checkevent EVENT_SOLVED_HO_OH_PUZZLE
+	iffalse .FloorClosed
+	return
+
+.FloorClosed:
+	changeblock $2, $2, $1
+	changeblock $4, $2, $2
+	return
+
+.WallOpenScript:
+	pause 30
+	earthquake 30
+	showemote EMOTE_SHOCK, PLAYER, 20
+	pause 30
+	playsound SFX_STRENGTH
+	changeblock $4, $0, $30
+	reloadmappart
+	earthquake 50
+	dotrigger $1
+	closetext
+	end
+
+MapRuinsOfAlphHoOhChamberSignpost2Script:
+	refreshscreen $0
+	writebyte $3
+	special Special_UnownPuzzle
+	closetext
+	iftrue UnknownScript_0x585ba
+	end
+
+UnknownScript_0x585ba:
+	setevent EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
+	setevent EVENT_SOLVED_HO_OH_PUZZLE
+	setflag ENGINE_UNLOCKED_UNOWNS_4
+	domaptrigger RUINS_OF_ALPH_INNER_CHAMBER, $1
+	earthquake 30
+	showemote EMOTE_SHOCK, PLAYER, 15
+	changeblock $2, $2, $18
+	changeblock $4, $2, $19
+	reloadmappart
+	playsound SFX_STRENGTH
+	earthquake 80
+	applymovement PLAYER, MovementData_0x58610
+	playsound SFX_KINESIS
+	waitsfx
+	pause 20
+	warpcheck
+	end
+
+MapRuinsOfAlphHoOhChamberSignpost1Script:
+	jumptext UnknownText_0x58685
+
+MapRuinsOfAlphHoOhChamberSignpost3Script:
+	jumptext UnknownText_0x586aa
+
+MapRuinsOfAlphHoOhChamberSignpost4Script:
+	opentext
+	writetext UnknownText_0x58612
+	writebyte $3
+	special Special_DisplayUnownWords
+	closetext
+	end
+
+MapRuinsOfAlphHoOhChamberSignpost5Script:
+	checkevent EVENT_WALL_OPENED_IN_HO_OH_CHAMBER
+	iftrue UnknownScript_0x58609
+	opentext
+	writetext UnknownText_0x58644
+	writebyte $3
+	special Special_DisplayUnownWords
+	closetext
+	end
+
+UnknownScript_0x58609:
+	opentext
+	writetext UnknownText_0x58665
+	waitbutton
+	closetext
+	end
+
+MovementData_0x58610:
+	db $59 ; movement
+	step_end
+
+UnknownText_0x58612:
+	text "Patterns appeared"
+	line "on the walls…"
+	done
+
+; possibly unused
+UnknownText_0x58633:
+	text "It's UNOWN text!"
+	done
+
+UnknownText_0x58644:
+	text "Patterns appeared"
+	line "on the walls…"
+	done
+
+UnknownText_0x58665:
+	text "There's a big hole"
+	line "in the wall!"
+	done
+
+UnknownText_0x58685:
+	text "It's a replica of"
+	line "an ancient #-"
+	cont "MON."
+	done
+
+UnknownText_0x586aa:
+	text "A #MON that"
+	line "flew gracefully on"
+
+	para "rainbow-colored"
+	line "wings."
+	done
+
+RuinsOfAlphHoOhChamber_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 5
+	warp_def $9, $3, 1, RUINS_OF_ALPH_OUTSIDE
+	warp_def $9, $4, 1, RUINS_OF_ALPH_OUTSIDE
+	warp_def $3, $3, 2, RUINS_OF_ALPH_INNER_CHAMBER
+	warp_def $3, $4, 3, RUINS_OF_ALPH_INNER_CHAMBER
+	warp_def $0, $4, 1, RUINS_OF_ALPH_HO_OH_ITEM_ROOM
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 6
+	signpost 3, 2, SIGNPOST_READ, MapRuinsOfAlphHoOhChamberSignpost1Script
+	signpost 3, 5, SIGNPOST_READ, MapRuinsOfAlphHoOhChamberSignpost1Script
+	signpost 2, 3, SIGNPOST_UP, MapRuinsOfAlphHoOhChamberSignpost2Script
+	signpost 2, 4, SIGNPOST_UP, MapRuinsOfAlphHoOhChamberSignpost3Script
+	signpost 0, 3, SIGNPOST_UP, MapRuinsOfAlphHoOhChamberSignpost4Script
+	signpost 0, 4, SIGNPOST_UP, MapRuinsOfAlphHoOhChamberSignpost5Script
+
+.PersonEvents:
+	db 0
--- /dev/null
+++ b/maps/RuinsOfAlphHoOhItemRoom.asm
@@ -1,0 +1,59 @@
+const_value set 2
+	const RUINSOFALPHHOOHITEMROOM_POKE_BALL1
+	const RUINSOFALPHHOOHITEMROOM_POKE_BALL2
+	const RUINSOFALPHHOOHITEMROOM_POKE_BALL3
+	const RUINSOFALPHHOOHITEMROOM_POKE_BALL4
+
+RuinsOfAlphHoOhItemRoom_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+RuinsOfAlphHoOhItemRoomGoldBerry:
+	itemball GOLD_BERRY
+
+RuinsOfAlphHoOhItemRoomMysteryberry:
+	itemball MYSTERYBERRY
+
+RuinsOfAlphHoOhItemRoomRevivalHerb:
+	itemball REVIVAL_HERB
+
+RuinsOfAlphHoOhItemRoomCharcoal:
+	itemball CHARCOAL
+
+MapRuinsOfAlphHoOhItemRoomSignpost1Script:
+	jumptext UnknownText_0x59923
+
+UnknownText_0x59923:
+	text "It's a replica of"
+	line "an ancient #-"
+	cont "MON."
+	done
+
+RuinsOfAlphHoOhItemRoom_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 4
+	warp_def $9, $3, 5, RUINS_OF_ALPH_HO_OH_CHAMBER
+	warp_def $9, $4, 5, RUINS_OF_ALPH_HO_OH_CHAMBER
+	warp_def $1, $3, 1, RUINS_OF_ALPH_HO_OH_WORD_ROOM
+	warp_def $1, $4, 2, RUINS_OF_ALPH_HO_OH_WORD_ROOM
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 2
+	signpost 1, 2, SIGNPOST_READ, MapRuinsOfAlphHoOhItemRoomSignpost1Script
+	signpost 1, 5, SIGNPOST_READ, MapRuinsOfAlphHoOhItemRoomSignpost1Script
+
+.PersonEvents:
+	db 4
+	person_event SPRITE_POKE_BALL, 6, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsOfAlphHoOhItemRoomGoldBerry, EVENT_PICKED_UP_GOLD_BERRY_FROM_HO_OH_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 6, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsOfAlphHoOhItemRoomMysteryberry, EVENT_PICKED_UP_MYSTERYBERRY_FROM_HO_OH_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 4, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsOfAlphHoOhItemRoomRevivalHerb, EVENT_PICKED_UP_REVIVAL_HERB_FROM_HO_OH_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 4, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsOfAlphHoOhItemRoomCharcoal, EVENT_PICKED_UP_CHARCOAL_FROM_HO_OH_ITEM_ROOM
--- /dev/null
+++ b/maps/RuinsOfAlphHoOhWordRoom.asm
@@ -1,0 +1,25 @@
+RuinsOfAlphHoOhWordRoom_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+RuinsOfAlphHoOhWordRoom_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 3
+	warp_def $9, $9, 3, RUINS_OF_ALPH_HO_OH_ITEM_ROOM
+	warp_def $9, $a, 4, RUINS_OF_ALPH_HO_OH_ITEM_ROOM
+	warp_def $15, $11, 2, RUINS_OF_ALPH_INNER_CHAMBER
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 0
--- /dev/null
+++ b/maps/RuinsOfAlphHoOhWordRoom.blk
@@ -1,0 +1,2 @@
+	
+
!"#$%&'()*+,-./0123456789:;<=    
\ No newline at end of file
--- /dev/null
+++ b/maps/RuinsOfAlphInnerChamber.asm
@@ -1,0 +1,131 @@
+const_value set 2
+	const RUINSOFALPHINNERCHAMBER_FISHER
+	const RUINSOFALPHINNERCHAMBER_TEACHER
+	const RUINSOFALPHINNERCHAMBER_GRAMPS
+
+RuinsOfAlphInnerChamber_MapScriptHeader:
+.MapTriggers:
+	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .UnownAppear
+
+.MapCallbacks:
+	db 0
+
+.DummyTrigger0:
+	end
+
+.UnownAppear:
+	priorityjump .StrangePresenceScript
+	end
+
+.StrangePresenceScript:
+	opentext
+	writetext RuinsOfAlphStrangePresenceText
+	waitbutton
+	closetext
+	dotrigger $0
+	setevent EVENT_MADE_UNOWN_APPEAR_IN_RUINS
+	clearevent EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_FISHER
+	end
+
+RuinsOfAlphInnerChamberFisherScript:
+	jumptextfaceplayer RuinsOfAlphInnerChamberFisherText
+
+RuinsOfAlphInnerChamberTeacherScript:
+	jumptextfaceplayer RuinsOfAlphInnerChamberTeacherText
+
+RuinsOfAlphInnerChamberGrampsScript:
+	jumptextfaceplayer RuinsOfAlphInnerChamberGrampsText
+
+RuinsOfAlphInnerChamberStatue:
+	jumptext RuinsOfAlphInnerChamberStatueText
+
+RuinsOfAlphStrangePresenceText:
+	text "There is a strange"
+	line "presence here…"
+	done
+
+RuinsOfAlphInnerChamberFisherText:
+	text "This is a big"
+	line "room, but there's"
+	cont "nothing here."
+	done
+
+RuinsOfAlphInnerChamberTeacherText:
+	text "This place has a"
+	line "mystical quality"
+	cont "to it."
+
+	para "It feels sort of"
+	line "ethereal even."
+	done
+
+RuinsOfAlphInnerChamberGrampsText:
+	text "Ancient buildings"
+	line "are often tombs of"
+	cont "kings."
+
+	para "Like the pyramids,"
+	line "for instance."
+	done
+
+RuinsOfAlphInnerChamberStatueText:
+	text "It's a replica of"
+	line "an ancient #-"
+	cont "MON."
+	done
+
+RuinsOfAlphInnerChamber_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 9
+	warp_def $d, $a, 5, RUINS_OF_ALPH_OUTSIDE
+	warp_def $f, $3, 3, RUINS_OF_ALPH_HO_OH_CHAMBER
+	warp_def $f, $4, 4, RUINS_OF_ALPH_HO_OH_CHAMBER
+	warp_def $3, $f, 3, RUINS_OF_ALPH_KABUTO_CHAMBER
+	warp_def $3, $10, 4, RUINS_OF_ALPH_KABUTO_CHAMBER
+	warp_def $15, $3, 3, RUINS_OF_ALPH_OMANYTE_CHAMBER
+	warp_def $15, $4, 4, RUINS_OF_ALPH_OMANYTE_CHAMBER
+	warp_def $18, $f, 3, RUINS_OF_ALPH_AERODACTYL_CHAMBER
+	warp_def $18, $10, 4, RUINS_OF_ALPH_AERODACTYL_CHAMBER
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 26
+	signpost 3, 2, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 3, 5, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 3, 8, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 3, 11, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 3, 14, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 3, 17, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 8, 2, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 8, 5, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 8, 8, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 8, 11, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 8, 14, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 8, 17, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 13, 2, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 13, 17, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 18, 2, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 18, 5, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 18, 8, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 18, 11, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 18, 14, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 18, 17, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 24, 2, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 24, 5, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 24, 8, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 24, 11, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 24, 14, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+	signpost 24, 17, SIGNPOST_READ, RuinsOfAlphInnerChamberStatue
+
+.PersonEvents:
+	db 3
+	person_event SPRITE_FISHER, 7, 3, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, RuinsOfAlphInnerChamberFisherScript, EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
+	person_event SPRITE_TEACHER, 13, 14, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, RuinsOfAlphInnerChamberTeacherScript, EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
+	person_event SPRITE_GRAMPS, 19, 11, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, RuinsOfAlphInnerChamberGrampsScript, EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
--- /dev/null
+++ b/maps/RuinsOfAlphInnerChamber.blk
@@ -1,0 +1,7 @@
+


+
+
+

 
 
 





+
+
+

 
 
 

 
 
 &*'*'*'*'(
\ No newline at end of file
--- /dev/null
+++ b/maps/RuinsOfAlphItemRoom.blk
@@ -1,0 +1,1 @@
+451212,+
\ No newline at end of file
--- /dev/null
+++ b/maps/RuinsOfAlphKabutoChamber.asm
@@ -1,0 +1,285 @@
+const_value set 2
+	const RUINSOFALPHKABUTOCHAMBER_RECEPTIONIST
+	const RUINSOFALPHKABUTOCHAMBER_SCIENTIST
+
+RuinsOfAlphKabutoChamber_MapScriptHeader:
+.MapTriggers:
+	db 2
+	maptrigger .CheckWall
+	maptrigger .DummyTrigger
+
+.MapCallbacks:
+	db 1
+	dbw MAPCALLBACK_TILES, .HiddenDoors
+
+.CheckWall:
+	checkevent EVENT_WALL_OPENED_IN_KABUTO_CHAMBER
+	iftrue .OpenWall
+	end
+
+.OpenWall:
+	priorityjump .WallOpenScript
+	end
+
+.DummyTrigger:
+	end
+
+.HiddenDoors:
+	checkevent EVENT_WALL_OPENED_IN_KABUTO_CHAMBER
+	iftrue .WallOpen
+	changeblock $4, $0, $2e
+.WallOpen:
+	checkevent EVENT_SOLVED_KABUTO_PUZZLE
+	iffalse .FloorClosed
+	return
+
+.FloorClosed:
+	changeblock $2, $2, $1
+	changeblock $4, $2, $2
+	return
+
+.WallOpenScript:
+	pause 30
+	earthquake 30
+	showemote EMOTE_SHOCK, PLAYER, 20
+	pause 30
+	playsound SFX_STRENGTH
+	changeblock $4, $0, $30
+	reloadmappart
+	earthquake 50
+	dotrigger $1
+	closetext
+	end
+
+ReceptionistScript_0x58769:
+	jumptextfaceplayer UnknownText_0x58800
+
+MapRuinsOfAlphKabutoChamberSignpost2Script:
+	refreshscreen $0
+	writebyte $0
+	special Special_UnownPuzzle
+	closetext
+	iftrue UnknownScript_0x58778
+	end
+
+UnknownScript_0x58778:
+	setevent EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
+	setevent EVENT_SOLVED_KABUTO_PUZZLE
+	setflag ENGINE_UNLOCKED_UNOWNS_1
+	setevent EVENT_RUINS_OF_ALPH_KABUTO_CHAMBER_RECEPTIONIST
+	domaptrigger RUINS_OF_ALPH_INNER_CHAMBER, $1
+	earthquake 30
+	showemote EMOTE_SHOCK, PLAYER, 15
+	changeblock $2, $2, $18
+	changeblock $4, $2, $19
+	reloadmappart
+	playsound SFX_STRENGTH
+	earthquake 80
+	applymovement PLAYER, MovementData_0x587fe
+	playsound SFX_KINESIS
+	waitsfx
+	pause 20
+	warpcheck
+	end
+
+ScientistScript_0x587a8:
+	faceplayer
+	opentext
+	checkcode VAR_UNOWNCOUNT
+	if_equal 26, UnknownScript_0x587cf
+	checkevent EVENT_WALL_OPENED_IN_KABUTO_CHAMBER
+	iftrue UnknownScript_0x587c9
+	checkevent EVENT_SOLVED_KABUTO_PUZZLE
+	iffalse UnknownScript_0x587c0
+	writetext UnknownText_0x589b8
+	buttonsound
+UnknownScript_0x587c0:
+	writetext UnknownText_0x588f5
+	waitbutton
+	closetext
+	spriteface RUINSOFALPHKABUTOCHAMBER_SCIENTIST, UP
+	end
+
+UnknownScript_0x587c9:
+	writetext UnknownText_0x5897c
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x587cf:
+	writetext UnknownText_0x594cb
+	waitbutton
+	closetext
+	end
+
+MapRuinsOfAlphKabutoChamberSignpost1Script:
+	jumptext UnknownText_0x58b1a
+
+MapRuinsOfAlphKabutoChamberSignpost3Script:
+	jumptext UnknownText_0x58b3f
+
+MapRuinsOfAlphKabutoChamberSignpost4Script:
+	opentext
+	writetext UnknownText_0x58aa7
+	writebyte $0
+	special Special_DisplayUnownWords
+	closetext
+	end
+
+MapRuinsOfAlphKabutoChamberSignpost5Script:
+	checkevent EVENT_WALL_OPENED_IN_KABUTO_CHAMBER
+	iftrue UnknownScript_0x587f7
+	opentext
+	writetext UnknownText_0x58ad9
+	writebyte $0
+	special Special_DisplayUnownWords
+	closetext
+	end
+
+UnknownScript_0x587f7:
+	opentext
+	writetext UnknownText_0x58afa
+	waitbutton
+	closetext
+	end
+
+MovementData_0x587fe:
+	db $59 ; movement
+	step_end
+
+UnknownText_0x58800:
+	text "Welcome to this"
+	line "chamber."
+
+	para "There are sliding"
+	line "panels that depict"
+
+	para "a #MON drawn by"
+	line "the ancients."
+
+	para "Slide the panels"
+	line "around to form the"
+	cont "picture."
+
+	para "To the right is a"
+	line "description of the"
+	cont "#MON."
+
+	para "Scientists in the"
+	line "back are examining"
+
+	para "some newly found"
+	line "patterns."
+	done
+
+UnknownText_0x588f5:
+	text "Recently, strange,"
+	line "cryptic patterns"
+	cont "have appeared."
+
+	para "It's odd. They"
+	line "weren't here a"
+	cont "little while ago…"
+
+	para "You should take a"
+	line "look at the walls."
+	done
+
+UnknownText_0x5897c:
+	text "Ah! Here's another"
+	line "huge hole!"
+
+	para "It's big enough to"
+	line "go through!"
+	done
+
+UnknownText_0x589b8:
+	text "That tremor was"
+	line "pretty scary!"
+
+	para "But I'm more"
+	line "concerned about"
+	cont "this wall here…"
+	done
+
+; possibly unused
+UnknownText_0x58a03:
+	text "The patterns on"
+	line "the wall appear to"
+	cont "be words!"
+
+	para "And those sliding"
+	line "stone panels seem"
+
+	para "to be signals of"
+	line "some kind."
+
+	para "I think they make"
+	line "#MON appear,"
+
+	para "but it's not clear"
+	line "yet…"
+	done
+
+UnknownText_0x58aa7:
+	text "Patterns appeared"
+	line "on the walls…"
+	done
+
+; possibly unused
+UnknownText_0x58ac8:
+	text "It's UNOWN text!"
+	done
+
+UnknownText_0x58ad9:
+	text "Patterns appeared"
+	line "on the walls…"
+	done
+
+UnknownText_0x58afa:
+	text "There's a big hole"
+	line "in the wall!"
+	done
+
+UnknownText_0x58b1a:
+	text "It's a replica of"
+	line "an ancient #-"
+	cont "MON."
+	done
+
+UnknownText_0x58b3f:
+	text "A #MON that hid"
+	line "on the sea floor."
+
+	para "Eyes on its back"
+	line "scanned the area."
+	done
+
+RuinsOfAlphKabutoChamber_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 5
+	warp_def $9, $3, 2, RUINS_OF_ALPH_OUTSIDE
+	warp_def $9, $4, 2, RUINS_OF_ALPH_OUTSIDE
+	warp_def $3, $3, 4, RUINS_OF_ALPH_INNER_CHAMBER
+	warp_def $3, $4, 5, RUINS_OF_ALPH_INNER_CHAMBER
+	warp_def $0, $4, 1, RUINS_OF_ALPH_KABUTO_ITEM_ROOM
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 6
+	signpost 3, 2, SIGNPOST_READ, MapRuinsOfAlphKabutoChamberSignpost1Script
+	signpost 3, 5, SIGNPOST_READ, MapRuinsOfAlphKabutoChamberSignpost1Script
+	signpost 2, 3, SIGNPOST_UP, MapRuinsOfAlphKabutoChamberSignpost2Script
+	signpost 2, 4, SIGNPOST_UP, MapRuinsOfAlphKabutoChamberSignpost3Script
+	signpost 0, 3, SIGNPOST_UP, MapRuinsOfAlphKabutoChamberSignpost4Script
+	signpost 0, 4, SIGNPOST_UP, MapRuinsOfAlphKabutoChamberSignpost5Script
+
+.PersonEvents:
+	db 2
+	person_event SPRITE_RECEPTIONIST, 5, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ReceptionistScript_0x58769, EVENT_RUINS_OF_ALPH_KABUTO_CHAMBER_RECEPTIONIST
+	person_event SPRITE_SCIENTIST, 1, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, ScientistScript_0x587a8, -1
--- /dev/null
+++ b/maps/RuinsOfAlphKabutoItemRoom.asm
@@ -1,0 +1,59 @@
+const_value set 2
+	const RUINSOFALPHKABUTOITEMROOM_POKE_BALL1
+	const RUINSOFALPHKABUTOITEMROOM_POKE_BALL2
+	const RUINSOFALPHKABUTOITEMROOM_POKE_BALL3
+	const RUINSOFALPHKABUTOITEMROOM_POKE_BALL4
+
+RuinsOfAlphKabutoItemRoom_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+RuinsOfAlphKabutoItemRoomBerry:
+	itemball BERRY
+
+RuinsOfAlphKabutoItemRoomPsncureberry:
+	itemball PSNCUREBERRY
+
+RuinsOfAlphKabutoItemRoomHealPowder:
+	itemball HEAL_POWDER
+
+RuinsOfAlphKabutoItemRoomEnergypowder:
+	itemball ENERGYPOWDER
+
+MapRuinsOfAlphKabutoItemRoomSignpost1Script:
+	jumptext UnknownText_0x599ad
+
+UnknownText_0x599ad:
+	text "It's a replica of"
+	line "an ancient #-"
+	cont "MON."
+	done
+
+RuinsOfAlphKabutoItemRoom_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 4
+	warp_def $9, $3, 5, RUINS_OF_ALPH_KABUTO_CHAMBER
+	warp_def $9, $4, 5, RUINS_OF_ALPH_KABUTO_CHAMBER
+	warp_def $1, $3, 1, RUINS_OF_ALPH_KABUTO_WORD_ROOM
+	warp_def $1, $4, 2, RUINS_OF_ALPH_KABUTO_WORD_ROOM
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 2
+	signpost 1, 2, SIGNPOST_READ, MapRuinsOfAlphKabutoItemRoomSignpost1Script
+	signpost 1, 5, SIGNPOST_READ, MapRuinsOfAlphKabutoItemRoomSignpost1Script
+
+.PersonEvents:
+	db 4
+	person_event SPRITE_POKE_BALL, 6, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsOfAlphKabutoItemRoomBerry, EVENT_PICKED_UP_BERRY_FROM_KABUTO_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 6, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsOfAlphKabutoItemRoomPsncureberry, EVENT_PICKED_UP_PSNCUREBERRY_FROM_KABUTO_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 4, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsOfAlphKabutoItemRoomHealPowder, EVENT_PICKED_UP_HEAL_POWDER_FROM_KABUTO_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 4, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsOfAlphKabutoItemRoomEnergypowder, EVENT_PICKED_UP_ENERGYPOWDER_FROM_KABUTO_ITEM_ROOM
--- /dev/null
+++ b/maps/RuinsOfAlphKabutoWordRoom.asm
@@ -1,0 +1,25 @@
+RuinsOfAlphKabutoWordRoom_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+RuinsOfAlphKabutoWordRoom_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 3
+	warp_def $5, $9, 3, RUINS_OF_ALPH_KABUTO_ITEM_ROOM
+	warp_def $5, $a, 4, RUINS_OF_ALPH_KABUTO_ITEM_ROOM
+	warp_def $b, $11, 4, RUINS_OF_ALPH_INNER_CHAMBER
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 0
--- /dev/null
+++ b/maps/RuinsOfAlphKabutoWordRoom.blk
@@ -1,0 +1,2 @@
+	
+
!"#$%    
\ No newline at end of file
--- /dev/null
+++ b/maps/RuinsOfAlphOmanyteChamber.asm
@@ -1,0 +1,172 @@
+RuinsOfAlphOmanyteChamber_MapScriptHeader:
+.MapTriggers:
+	db 2
+	maptrigger .CheckWall
+	maptrigger .DummyTrigger
+
+.MapCallbacks:
+	db 1
+	dbw MAPCALLBACK_TILES, .HiddenDoors
+
+.CheckWall:
+	special SpecialOmanyteChamber
+	checkevent EVENT_WALL_OPENED_IN_OMANYTE_CHAMBER
+	iftrue .OpenWall
+	end
+
+.OpenWall:
+	priorityjump .WallOpenScript
+	end
+
+.DummyTrigger:
+	end
+
+.HiddenDoors:
+	checkevent EVENT_WALL_OPENED_IN_OMANYTE_CHAMBER
+	iftrue .WallOpen
+	changeblock $4, $0, $2e
+.WallOpen:
+	checkevent EVENT_SOLVED_OMANYTE_PUZZLE
+	iffalse .FloorClosed
+	return
+
+.FloorClosed:
+	changeblock $2, $2, $1
+	changeblock $4, $2, $2
+	return
+
+.WallOpenScript:
+	pause 30
+	earthquake 30
+	showemote EMOTE_SHOCK, PLAYER, 20
+	pause 30
+	playsound SFX_STRENGTH
+	changeblock $4, $0, $30
+	reloadmappart
+	earthquake 50
+	dotrigger $1
+	closetext
+	end
+
+MapRuinsOfAlphOmanyteChamberSignpost2Script:
+	refreshscreen $0
+	writebyte $1
+	special Special_UnownPuzzle
+	closetext
+	iftrue UnknownScript_0x58c36
+	end
+
+UnknownScript_0x58c36:
+	setevent EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
+	setevent EVENT_SOLVED_OMANYTE_PUZZLE
+	setflag ENGINE_UNLOCKED_UNOWNS_2
+	domaptrigger RUINS_OF_ALPH_INNER_CHAMBER, $1
+	earthquake 30
+	showemote EMOTE_SHOCK, PLAYER, 15
+	changeblock $2, $2, $18
+	changeblock $4, $2, $19
+	reloadmappart
+	playsound SFX_STRENGTH
+	earthquake 80
+	applymovement PLAYER, MovementData_0x58c8c
+	playsound SFX_KINESIS
+	waitsfx
+	pause 20
+	warpcheck
+	end
+
+MapRuinsOfAlphOmanyteChamberSignpost1Script:
+	jumptext UnknownText_0x58d01
+
+MapRuinsOfAlphOmanyteChamberSignpost3Script:
+	jumptext UnknownText_0x58d26
+
+MapRuinsOfAlphOmanyteChamberSignpost4Script:
+	opentext
+	writetext UnknownText_0x58c8e
+	writebyte $2
+	special Special_DisplayUnownWords
+	closetext
+	end
+
+MapRuinsOfAlphOmanyteChamberSignpost5Script:
+	checkevent EVENT_WALL_OPENED_IN_OMANYTE_CHAMBER
+	iftrue UnknownScript_0x58c85
+	opentext
+	writetext UnknownText_0x58cc0
+	writebyte $2
+	special Special_DisplayUnownWords
+	closetext
+	end
+
+UnknownScript_0x58c85:
+	opentext
+	writetext UnknownText_0x58ce1
+	waitbutton
+	closetext
+	end
+
+MovementData_0x58c8c:
+	db $59 ; movement
+	step_end
+
+UnknownText_0x58c8e:
+	text "Patterns appeared"
+	line "on the walls…"
+	done
+
+; possibly unused.. this again?
+UnknownText_0x58caf:
+	text "It's UNOWN text!"
+	done
+
+UnknownText_0x58cc0:
+	text "Patterns appeared"
+	line "on the walls…"
+	done
+
+UnknownText_0x58ce1:
+	text "There's a big hole"
+	line "in the wall!"
+	done
+
+UnknownText_0x58d01:
+	text "It's a replica of"
+	line "an ancient #-"
+	cont "MON."
+	done
+
+UnknownText_0x58d26:
+	text "This #MON"
+	line "drifted in the"
+
+	para "sea by twisting"
+	line "its ten tentacles."
+	done
+
+RuinsOfAlphOmanyteChamber_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 5
+	warp_def $9, $3, 3, RUINS_OF_ALPH_OUTSIDE
+	warp_def $9, $4, 3, RUINS_OF_ALPH_OUTSIDE
+	warp_def $3, $3, 6, RUINS_OF_ALPH_INNER_CHAMBER
+	warp_def $3, $4, 7, RUINS_OF_ALPH_INNER_CHAMBER
+	warp_def $0, $4, 1, RUINS_OF_ALPH_OMANYTE_ITEM_ROOM
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 6
+	signpost 3, 2, SIGNPOST_READ, MapRuinsOfAlphOmanyteChamberSignpost1Script
+	signpost 3, 5, SIGNPOST_READ, MapRuinsOfAlphOmanyteChamberSignpost1Script
+	signpost 2, 3, SIGNPOST_UP, MapRuinsOfAlphOmanyteChamberSignpost2Script
+	signpost 2, 4, SIGNPOST_UP, MapRuinsOfAlphOmanyteChamberSignpost3Script
+	signpost 0, 3, SIGNPOST_UP, MapRuinsOfAlphOmanyteChamberSignpost4Script
+	signpost 0, 4, SIGNPOST_UP, MapRuinsOfAlphOmanyteChamberSignpost5Script
+
+.PersonEvents:
+	db 0
--- /dev/null
+++ b/maps/RuinsOfAlphOmanyteItemRoom.asm
@@ -1,0 +1,59 @@
+const_value set 2
+	const RUINSOFALPHOMANYTEITEMROOM_POKE_BALL1
+	const RUINSOFALPHOMANYTEITEMROOM_POKE_BALL2
+	const RUINSOFALPHOMANYTEITEMROOM_POKE_BALL3
+	const RUINSOFALPHOMANYTEITEMROOM_POKE_BALL4
+
+RuinsOfAlphOmanyteItemRoom_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+RuinsOfAlphOmanyteItemRoomMysteryberry:
+	itemball MYSTERYBERRY
+
+RuinsOfAlphOmanyteItemRoomMysticWater:
+	itemball MYSTIC_WATER
+
+RuinsOfAlphOmanyteItemRoomStardust:
+	itemball STARDUST
+
+RuinsOfAlphOmanyteItemRoomStarPiece:
+	itemball STAR_PIECE
+
+MapRuinsOfAlphOmanyteItemRoomSignpost1Script:
+	jumptext UnknownText_0x59a37
+
+UnknownText_0x59a37:
+	text "It's a replica of"
+	line "an ancient #-"
+	cont "MON."
+	done
+
+RuinsOfAlphOmanyteItemRoom_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 4
+	warp_def $9, $3, 5, RUINS_OF_ALPH_OMANYTE_CHAMBER
+	warp_def $9, $4, 5, RUINS_OF_ALPH_OMANYTE_CHAMBER
+	warp_def $1, $3, 1, RUINS_OF_ALPH_OMANYTE_WORD_ROOM
+	warp_def $1, $4, 2, RUINS_OF_ALPH_OMANYTE_WORD_ROOM
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 2
+	signpost 1, 2, SIGNPOST_READ, MapRuinsOfAlphOmanyteItemRoomSignpost1Script
+	signpost 1, 5, SIGNPOST_READ, MapRuinsOfAlphOmanyteItemRoomSignpost1Script
+
+.PersonEvents:
+	db 4
+	person_event SPRITE_POKE_BALL, 6, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsOfAlphOmanyteItemRoomMysteryberry, EVENT_PICKED_UP_MYSTERYBERRY_FROM_OMANYTE_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 6, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsOfAlphOmanyteItemRoomMysticWater, EVENT_PICKED_UP_MYSTIC_WATER_FROM_OMANYTE_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 4, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsOfAlphOmanyteItemRoomStardust, EVENT_PICKED_UP_STARDUST_FROM_OMANYTE_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 4, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsOfAlphOmanyteItemRoomStarPiece, EVENT_PICKED_UP_STAR_PIECE_FROM_OMANYTE_ITEM_ROOM
--- /dev/null
+++ b/maps/RuinsOfAlphOmanyteWordRoom.asm
@@ -1,0 +1,25 @@
+RuinsOfAlphOmanyteWordRoom_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+RuinsOfAlphOmanyteWordRoom_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 3
+	warp_def $7, $9, 3, RUINS_OF_ALPH_OMANYTE_ITEM_ROOM
+	warp_def $7, $a, 4, RUINS_OF_ALPH_OMANYTE_ITEM_ROOM
+	warp_def $d, $11, 6, RUINS_OF_ALPH_INNER_CHAMBER
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 0
--- /dev/null
+++ b/maps/RuinsOfAlphOmanyteWordRoom.blk
@@ -1,0 +1,2 @@
+	
+
!"#$%&'()*+,-    
\ No newline at end of file
--- /dev/null
+++ b/maps/RuinsOfAlphOutside.asm
@@ -1,0 +1,320 @@
+const_value set 2
+	const RUINSOFALPHOUTSIDE_YOUNGSTER1
+	const RUINSOFALPHOUTSIDE_SCIENTIST
+	const RUINSOFALPHOUTSIDE_FISHER
+	const RUINSOFALPHOUTSIDE_YOUNGSTER2
+	const RUINSOFALPHOUTSIDE_YOUNGSTER3
+
+RuinsOfAlphOutside_MapScriptHeader:
+.MapTriggers:
+	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
+
+.MapCallbacks:
+	db 1
+	dbw MAPCALLBACK_OBJECTS, .ScientistCallback
+
+.DummyTrigger0:
+	end
+
+.DummyTrigger1:
+	end
+
+.ScientistCallback:
+	checkflag ENGINE_UNOWN_DEX
+	iftrue .NoScientist
+	checkevent EVENT_MADE_UNOWN_APPEAR_IN_RUINS
+	iftrue .MaybeScientist
+	jump .NoScientist
+
+.MaybeScientist:
+	checkcode VAR_UNOWNCOUNT
+	if_greater_than $2, .YesScientist
+	jump .NoScientist
+
+.YesScientist:
+	appear RUINSOFALPHOUTSIDE_SCIENTIST
+	dotrigger $1
+	return
+
+.NoScientist:
+	disappear RUINSOFALPHOUTSIDE_SCIENTIST
+	dotrigger $0
+	return
+
+RuinsOfAlphOutsideScientistTrigger1:
+	spriteface RUINSOFALPHOUTSIDE_SCIENTIST, UP
+	spriteface PLAYER, DOWN
+	jump UnknownScript_0x58044
+
+RuinsOfAlphOutsideScientistTrigger2:
+	spriteface RUINSOFALPHOUTSIDE_SCIENTIST, LEFT
+	spriteface PLAYER, RIGHT
+	jump UnknownScript_0x58044
+
+ScientistScript_0x58043:
+	faceplayer
+UnknownScript_0x58044:
+	opentext
+	writetext UnknownText_0x580c7
+	waitbutton
+	closetext
+	playmusic MUSIC_SHOW_ME_AROUND
+	follow RUINSOFALPHOUTSIDE_SCIENTIST, PLAYER
+	applymovement RUINSOFALPHOUTSIDE_SCIENTIST, MovementData_0x580ba
+	disappear RUINSOFALPHOUTSIDE_SCIENTIST
+	stopfollow
+	applymovement PLAYER, MovementData_0x580c5
+	domaptrigger RUINS_OF_ALPH_RESEARCH_CENTER, $1
+	warpcheck
+	end
+
+FisherScript_0x58061:
+	faceplayer
+	opentext
+	checkevent EVENT_TALKED_TO_RUINS_COWARD
+	iftrue .Next
+	setevent EVENT_TALKED_TO_RUINS_COWARD
+	writetext UnknownText_0x583a4
+	buttonsound
+.Next:
+	writetext UnknownText_0x58420
+	waitbutton
+	closetext
+	end
+
+YoungsterScript_0x58076:
+	faceplayer
+	opentext
+	writetext UnknownText_0x58449
+	waitbutton
+	closetext
+	end
+
+YoungsterScript_0x5807e:
+	faceplayer
+	opentext
+	writetext UnknownText_0x5848e
+	waitbutton
+	closetext
+	spriteface RUINSOFALPHOUTSIDE_YOUNGSTER3, UP
+	end
+
+TrainerPsychicNathan:
+	trainer EVENT_BEAT_PSYCHIC_NATHAN, PSYCHIC_T, NATHAN, PsychicNathanSeenText, PsychicNathanBeatenText, 0, PsychicNathanScript
+
+PsychicNathanScript:
+	end_if_just_battled
+	opentext
+	writetext PsychicNathanAfterBattleText
+	waitbutton
+	closetext
+	end
+
+
+TrainerSuperNerdStan:
+	trainer EVENT_BEAT_SUPER_NERD_STAN, SUPER_NERD, STAN, UnknownText_0x581e5, UnknownText_0x58217, 0, UnknownScript_0x580a9
+
+UnknownScript_0x580a9:
+	end_if_just_battled
+	opentext
+	writetext UnknownText_0x58250
+	waitbutton
+	closetext
+	end
+
+
+RuinsOfAlphOutsideSignpost0Script:
+	jumptext UnknownText_0x58325
+
+RuinsOfAlphOutsideSignpost1Script:
+	jumptext UnknownText_0x58342
+
+RuinsOfAlphOutsideSignpost2Script:
+	jumptext UnknownText_0x58362
+
+MovementData_0x580ba:
+	step RIGHT
+	step RIGHT
+	step RIGHT
+	step RIGHT
+	step UP
+	step UP
+	step RIGHT
+	step RIGHT
+	step UP
+	step UP
+	step_end
+
+MovementData_0x580c5:
+	step UP
+	step_end
+
+UnknownText_0x580c7:
+	text "Hm? That's a #-"
+	line "DEX, isn't it?"
+	cont "May I see it?"
+
+	para "There are so many"
+	line "kinds of #MON."
+
+	para "Hm? What's this?"
+
+	para "What is this"
+	line "#MON?"
+
+	para "It looks like the"
+	line "strange writing on"
+
+	para "the walls of the"
+	line "RUINS."
+
+	para "If those drawings"
+	line "are really #-"
+	cont "MON, there should"
+	cont "be many more."
+
+	para "I know! Let me up-"
+	line "grade your #-"
+	cont "DEX. Follow me."
+	done
+
+UnknownText_0x581e5:
+	text "What do you want?"
+	line "I'm studying--"
+	cont "don't disturb me!"
+	done
+
+UnknownText_0x58217:
+	text "Sorry…"
+	line "I'm frustrated by"
+
+	para "our lack of real"
+	line "understanding…"
+	done
+
+UnknownText_0x58250:
+	text "The RUINS are from"
+	line "about 1500 years"
+	cont "ago."
+
+	para "Nobody knows who"
+	line "built them."
+
+	para "It's also not"
+	line "known if the #-"
+	cont "MON statues have"
+	cont "any meaning."
+
+	para "It's all one big"
+	line "mystery…"
+	done
+
+PsychicNathanSeenText:
+	text "Hmmm… This is a"
+	line "strange place."
+	done
+
+PsychicNathanBeatenText:
+	text "…"
+	done
+
+PsychicNathanAfterBattleText:
+	text "I like thinking"
+	line "here."
+	done
+
+UnknownText_0x58325:
+	text "MYSTERY STONE"
+	line "PANEL CHAMBER"
+	done
+
+UnknownText_0x58342:
+	text "RUINS OF ALPH"
+	line "VISITORS WELCOME"
+	done
+
+UnknownText_0x58362:
+	text "RUINS OF ALPH"
+	line "RESEARCH CENTER"
+
+	para "THE AUTHORITY ON"
+	line "THE RUINS OF ALPH"
+	done
+
+UnknownText_0x583a4:
+	text "While exploring"
+	line "the RUINS, we"
+
+	para "suddenly noticed"
+	line "an odd presence."
+
+	para "We all got scared"
+	line "and ran away."
+
+	para "You should be"
+	line "careful too."
+	done
+
+UnknownText_0x58420:
+	text "The RUINS hide a"
+	line "huge secret!"
+
+	para "…I think…"
+	done
+
+UnknownText_0x58449:
+	text "There are many"
+	line "kinds of UNOWN, so"
+
+	para "we use them for"
+	line "our secret codes."
+	done
+
+UnknownText_0x5848e:
+	text "A… H… E… A… D…"
+	line "Hmm…"
+
+	para "What?"
+
+	para "I'm decoding this"
+	line "message!"
+	done
+
+RuinsOfAlphOutside_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 11
+	warp_def $11, $2, 1, RUINS_OF_ALPH_HO_OH_CHAMBER
+	warp_def $7, $e, 1, RUINS_OF_ALPH_KABUTO_CHAMBER
+	warp_def $1d, $2, 1, RUINS_OF_ALPH_OMANYTE_CHAMBER
+	warp_def $21, $10, 1, RUINS_OF_ALPH_AERODACTYL_CHAMBER
+	warp_def $d, $a, 1, RUINS_OF_ALPH_INNER_CHAMBER
+	warp_def $b, $11, 1, RUINS_OF_ALPH_RESEARCH_CENTER
+	warp_def $13, $6, 1, UNION_CAVE_B1F
+	warp_def $1b, $6, 2, UNION_CAVE_B1F
+	warp_def $5, $7, 3, ROUTE_36_RUINS_OF_ALPH_GATE
+	warp_def $14, $d, 1, ROUTE_32_RUINS_OF_ALPH_GATE
+	warp_def $15, $d, 2, ROUTE_32_RUINS_OF_ALPH_GATE
+
+.XYTriggers:
+	db 2
+	xy_trigger 1, $e, $b, $0, RuinsOfAlphOutsideScientistTrigger1, $0, $0
+	xy_trigger 1, $f, $a, $0, RuinsOfAlphOutsideScientistTrigger2, $0, $0
+
+.Signposts:
+	db 3
+	signpost 8, 16, SIGNPOST_READ, RuinsOfAlphOutsideSignpost0Script
+	signpost 16, 12, SIGNPOST_READ, RuinsOfAlphOutsideSignpost1Script
+	signpost 12, 18, SIGNPOST_READ, RuinsOfAlphOutsideSignpost2Script
+
+.PersonEvents:
+	db 5
+	person_event SPRITE_YOUNGSTER, 20, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 1, TrainerPsychicNathan, -1
+	person_event SPRITE_SCIENTIST, 15, 11, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ScientistScript_0x58043, EVENT_RUINS_OF_ALPH_OUTSIDE_SCIENTIST
+	person_event SPRITE_FISHER, 17, 13, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, FisherScript_0x58061, EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_FISHER
+	person_event SPRITE_YOUNGSTER, 11, 14, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x58076, EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_YOUNGSTERS
+	person_event SPRITE_YOUNGSTER, 8, 12, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x5807e, EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_YOUNGSTERS
--- /dev/null
+++ b/maps/RuinsOfAlphOutside.blk
@@ -1,0 +1,12 @@
+
	
+
+
+jppkTUlrsmXYE
+XYjppk
+XYhosmEjppqilsnqiE
+Zlsm	
+
+jpkjpqqi
+
+jqosniTUjklsmlmXYhi
+PVVQjqiVVVQlsm
\ No newline at end of file
--- /dev/null
+++ b/maps/RuinsOfAlphPuzzleChamber.blk
@@ -1,0 +1,1 @@
+-0

,+
\ No newline at end of file
--- /dev/null
+++ b/maps/RuinsOfAlphResearchCenter.asm
@@ -1,0 +1,417 @@
+const_value set 2
+	const RUINSOFALPHRESEARCHCENTER_SCIENTIST1
+	const RUINSOFALPHRESEARCHCENTER_SCIENTIST2
+	const RUINSOFALPHRESEARCHCENTER_SCIENTIST3
+
+RuinsOfAlphResearchCenter_MapScriptHeader:
+.MapTriggers:
+	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .GetUnownDex
+
+.MapCallbacks:
+	db 1
+	dbw MAPCALLBACK_OBJECTS, .ScientistCallback
+
+.DummyTrigger0:
+	end
+
+.GetUnownDex:
+	priorityjump .GetUnownDexScript
+	end
+
+.ScientistCallback:
+	checktriggers
+	if_equal $1, .ShowScientist
+	return
+
+.ShowScientist:
+	moveperson RUINSOFALPHRESEARCHCENTER_SCIENTIST3, $3, $7
+	appear RUINSOFALPHRESEARCHCENTER_SCIENTIST3
+	return
+
+.GetUnownDexScript:
+	applymovement RUINSOFALPHRESEARCHCENTER_SCIENTIST3, MovementData_0x5926f
+	playsound SFX_BOOT_PC
+	pause 60
+	playsound SFX_SWITCH_POKEMON
+	pause 30
+	playsound SFX_TALLY
+	pause 30
+	playsound SFX_TRANSACTION
+	pause 30
+	spriteface RUINSOFALPHRESEARCHCENTER_SCIENTIST3, DOWN
+	opentext
+	writetext UnknownText_0x59278
+	waitbutton
+	closetext
+	applymovement RUINSOFALPHRESEARCHCENTER_SCIENTIST3, MovementData_0x59274
+	opentext
+	writetext UnknownText_0x592fa
+	playsound SFX_ITEM
+	waitsfx
+	setflag ENGINE_UNOWN_DEX
+	writetext UnknownText_0x59311
+	waitbutton
+	closetext
+	applymovement RUINSOFALPHRESEARCHCENTER_SCIENTIST3, MovementData_0x59276
+	dotrigger $0
+	special RestartMapMusic
+	end
+
+ScientistScript_0x591d1:
+	faceplayer
+	opentext
+	checkcode VAR_UNOWNCOUNT
+	if_equal 26, UnknownScript_0x591df
+	writetext UnknownText_0x59311
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x591df:
+	writetext UnknownText_0x5935f
+	waitbutton
+	closetext
+	end
+
+ScientistScript_0x591e5:
+	faceplayer
+	opentext
+	checkcode VAR_UNOWNCOUNT
+	if_equal 26, UnknownScript_0x5920b
+	checkflag ENGINE_UNOWN_DEX
+	iftrue UnknownScript_0x59205
+	checkevent EVENT_MADE_UNOWN_APPEAR_IN_RUINS
+	iftrue UnknownScript_0x591ff
+	writetext UnknownText_0x593ed
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x591ff:
+	writetext UnknownText_0x59478
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x59205:
+	writetext UnknownText_0x59445
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x5920b:
+	writetext UnknownText_0x594cb
+	waitbutton
+	closetext
+	clearevent EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_YOUNGSTERS
+	end
+
+ScientistScript_0x59214:
+	faceplayer
+	opentext
+	checkcode VAR_UNOWNCOUNT
+	if_equal 26, UnknownScript_0x5922e
+	checkevent EVENT_MADE_UNOWN_APPEAR_IN_RUINS
+	iftrue UnknownScript_0x59228
+	writetext UnknownText_0x5954f
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x59228:
+	writetext UnknownText_0x595cb
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x5922e:
+	writetext UnknownText_0x59769
+	waitbutton
+	closetext
+	end
+
+MapRuinsOfAlphResearchCenterSignpost1Script:
+	opentext
+	checkevent EVENT_RUINS_OF_ALPH_RESEARCH_CENTER_SCIENTIST
+	iftrue UnknownScript_0x59241
+	checkcode VAR_UNOWNCOUNT
+	if_equal 26, UnknownScript_0x59247
+UnknownScript_0x59241:
+	writetext UnknownText_0x597b6
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x59247:
+	writetext UnknownText_0x597d9
+	waitbutton
+	closetext
+	end
+
+MapRuinsOfAlphResearchCenterSignpost2Script:
+	opentext
+	checkevent EVENT_RUINS_OF_ALPH_RESEARCH_CENTER_SCIENTIST
+	iftrue UnknownScript_0x5925a
+	checkcode VAR_UNOWNCOUNT
+	if_equal 26, UnknownScript_0x59260
+UnknownScript_0x5925a:
+	writetext UnknownText_0x5980e
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x59260:
+	writetext UnknownText_0x5982d
+	waitbutton
+	special Special_UnownPrinter
+	closetext
+	end
+
+UnknownScript_0x59269:
+	jumptext UnknownText_0x59848
+
+MapRuinsOfAlphResearchCenterSignpost0Script:
+	jumptext UnknownText_0x59886
+
+MovementData_0x5926f:
+	step UP
+	step UP
+	step LEFT
+	turn_head UP
+	step_end
+
+MovementData_0x59274:
+	step DOWN
+	step_end
+
+MovementData_0x59276:
+	step UP
+	step_end
+
+UnknownText_0x59278:
+	text "Done!"
+
+	para "I modified your"
+	line "#DEX."
+
+	para "I added an"
+	line "optional #DEX"
+
+	para "to store UNOWN"
+	line "data."
+
+	para "It records them in"
+	line "the sequence that"
+	cont "they were caught."
+	done
+
+UnknownText_0x592fa:
+	text "<PLAYER>'s #DEX"
+	line "was upgraded."
+	done
+
+UnknownText_0x59311:
+	text "The UNOWN you"
+	line "catch will all be"
+	cont "recorded."
+
+	para "Check to see how"
+	line "many kinds exist."
+	done
+
+UnknownText_0x5935f:
+	text "You caught all the"
+	line "UNOWN variations?"
+
+	para "That's a great"
+	line "achievement!"
+
+	para "I've set up the"
+	line "printer here for"
+	cont "handling UNOWN."
+
+	para "Feel free to use"
+	line "it anytime."
+	done
+
+UnknownText_0x593ed:
+	text "The RUINS are"
+	line "about 1500 years"
+	cont "old."
+
+	para "But it's not known"
+	line "why they were"
+	cont "built--or by whom."
+	done
+
+UnknownText_0x59445:
+	text "I wonder how many"
+	line "kinds of #MON"
+	cont "are in the RUINS?"
+	done
+
+UnknownText_0x59478:
+	text "#MON appeared"
+	line "in the RUINS?"
+
+	para "That's incredible"
+	line "news!"
+
+	para "We'll need to"
+	line "investigate this."
+	done
+
+UnknownText_0x594cb:
+	text "Our investigation,"
+	line "with your help, is"
+
+	para "giving us insight"
+	line "into the RUINS."
+
+	para "The RUINS appear"
+	line "to have been built"
+
+	para "as a habitat for"
+	line "#MON."
+	done
+
+UnknownText_0x5954f:
+	text "There are odd pat-"
+	line "terns drawn on the"
+
+	para "walls of the"
+	line "RUINS."
+
+	para "They must be the"
+	line "keys for unravel-"
+	cont "ing the mystery"
+	cont "of the RUINS."
+	done
+
+UnknownText_0x595cb:
+	text "The strange #-"
+	line "MON you saw in the"
+	cont "RUINS?"
+
+	para "They appear to be"
+	line "very much like the"
+
+	para "drawings on the"
+	line "walls there."
+
+	para "Hmm…"
+
+	para "That must mean"
+	line "there are many"
+	cont "kinds of them…"
+	done
+
+; possibly unused
+UnknownText_0x59669:
+	text "We think something"
+	line "caused the cryptic"
+
+	para "patterns to appear"
+	line "in the RUINS."
+
+	para "We've focused our"
+	line "studies on that."
+	done
+
+; possibly unused
+UnknownText_0x596d3:
+	text "According to my"
+	line "research…"
+
+	para "Those mysterious"
+	line "patterns appeared"
+
+	para "when the #COM"
+	line "CENTER was built."
+
+	para "It must mean that"
+	line "radio waves have"
+
+	para "some sort of a"
+	line "link…"
+	done
+
+UnknownText_0x59769:
+	text "Why did those"
+	line "ancient patterns"
+
+	para "appear on the wall"
+	line "now?"
+
+	para "The mystery"
+	line "deepens…"
+	done
+
+UnknownText_0x597b6:
+	text "RUINS OF ALPH"
+
+	para "Exploration"
+	line "Year 10"
+	done
+
+UnknownText_0x597d9:
+	text "Mystery #MON"
+	line "Name: UNOWN"
+
+	para "A total of 26"
+	line "kinds found."
+	done
+
+UnknownText_0x5980e:
+	text "This doesn't seem"
+	line "to work yet."
+	done
+
+UnknownText_0x5982d:
+	text "UNOWN may be"
+	line "printed out."
+	done
+
+; possibly unused
+UnknownText_0x59848:
+	text "It's a photo of"
+	line "the RESEARCH"
+
+	para "CENTER'S founder,"
+	line "PROF.SILKTREE."
+	done
+
+UnknownText_0x59886:
+	text "There are many"
+	line "academic books."
+
+	para "Ancient Ruins…"
+	line "Mysteries of the"
+	cont "Ancients…"
+	done
+
+RuinsOfAlphResearchCenter_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 2
+	warp_def $7, $2, 6, RUINS_OF_ALPH_OUTSIDE
+	warp_def $7, $3, 6, RUINS_OF_ALPH_OUTSIDE
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 3
+	signpost 5, 6, SIGNPOST_READ, MapRuinsOfAlphResearchCenterSignpost0Script
+	signpost 4, 3, SIGNPOST_READ, MapRuinsOfAlphResearchCenterSignpost1Script
+	signpost 1, 7, SIGNPOST_READ, MapRuinsOfAlphResearchCenterSignpost2Script
+
+.PersonEvents:
+	db 3
+	person_event SPRITE_SCIENTIST, 5, 4, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, ScientistScript_0x591e5, -1
+	person_event SPRITE_SCIENTIST, 2, 5, SPRITEMOVEDATA_WANDER, 1, 2, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, ScientistScript_0x59214, -1
+	person_event SPRITE_SCIENTIST, 5, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, ScientistScript_0x591d1, EVENT_RUINS_OF_ALPH_RESEARCH_CENTER_SCIENTIST
--- /dev/null
+++ b/maps/RuinsOfAlphResearchCenter.blk
@@ -1,0 +1,1 @@
+;()

\ No newline at end of file
--- a/maps/RuinsofAlphAerodactylChamber.asm
+++ /dev/null
@@ -1,176 +1,0 @@
-RuinsofAlphAerodactylChamber_MapScriptHeader:
-.MapTriggers:
-	db 2
-
-	; triggers
-	dw UnknownScript_0x58dad, 0
-	dw UnknownScript_0x58db8, 0
-
-.MapCallbacks:
-	db 1
-
-	; callbacks
-
-	dbw MAPCALLBACK_TILES, UnknownScript_0x58db9
-
-UnknownScript_0x58dad:
-	checkevent EVENT_WALL_OPENED_IN_AERODACTYL_CHAMBER
-	iftrue UnknownScript_0x58db4
-	end
-
-UnknownScript_0x58db4:
-	priorityjump UnknownScript_0x58dd3
-	end
-
-UnknownScript_0x58db8:
-	end
-
-UnknownScript_0x58db9:
-	checkevent EVENT_WALL_OPENED_IN_AERODACTYL_CHAMBER
-	iftrue UnknownScript_0x58dc3
-	changeblock $4, $0, $2e
-UnknownScript_0x58dc3:
-	checkevent EVENT_SOLVED_AERODACTYL_PUZZLE
-	iffalse UnknownScript_0x58dca
-	return
-
-UnknownScript_0x58dca:
-	changeblock $2, $2, $1
-	changeblock $4, $2, $2
-	return
-
-UnknownScript_0x58dd3:
-	pause 30
-	earthquake 30
-	showemote EMOTE_SHOCK, PLAYER, 20
-	pause 30
-	playsound SFX_STRENGTH
-	changeblock $4, $0, $30
-	reloadmappart
-	earthquake 50
-	dotrigger $1
-	closetext
-	end
-
-MapRuinsofAlphAerodactylChamberSignpost2Script:
-	refreshscreen $0
-	writebyte $2
-	special Special_UnownPuzzle
-	closetext
-	iftrue UnknownScript_0x58df7
-	end
-
-UnknownScript_0x58df7:
-	setevent EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
-	setevent EVENT_SOLVED_AERODACTYL_PUZZLE
-	setflag ENGINE_UNLOCKED_UNOWNS_3
-	domaptrigger RUINS_OF_ALPH_INNER_CHAMBER, $1
-	earthquake 30
-	showemote EMOTE_SHOCK, PLAYER, 15
-	changeblock $2, $2, $18
-	changeblock $4, $2, $19
-	reloadmappart
-	playsound SFX_STRENGTH
-	earthquake 80
-	applymovement PLAYER, MovementData_0x58e4d
-	playsound SFX_KINESIS
-	waitsfx
-	pause 20
-	warpcheck
-	end
-
-MapRuinsofAlphAerodactylChamberSignpost1Script:
-	jumptext UnknownText_0x58ec2
-
-MapRuinsofAlphAerodactylChamberSignpost3Script:
-	jumptext UnknownText_0x58ee7
-
-MapRuinsofAlphAerodactylChamberSignpost4Script:
-	opentext
-	writetext UnknownText_0x58e4f
-	writebyte $1
-	special Special_DisplayUnownWords
-	closetext
-	end
-
-MapRuinsofAlphAerodactylChamberSignpost5Script:
-	checkevent EVENT_WALL_OPENED_IN_AERODACTYL_CHAMBER
-	iftrue UnknownScript_0x58e46
-	opentext
-	writetext UnknownText_0x58e81
-	writebyte $1
-	special Special_DisplayUnownWords
-	closetext
-	end
-
-UnknownScript_0x58e46:
-	opentext
-	writetext UnknownText_0x58ea2
-	waitbutton
-	closetext
-	end
-
-MovementData_0x58e4d:
-	db $59 ; movement
-	step_end
-
-UnknownText_0x58e4f:
-	text "Patterns appeared"
-	line "on the walls…"
-	done
-
-; possibly unused.. again?
-UnknownText_0x58e70:
-	text "It's UNOWN text!"
-	done
-
-UnknownText_0x58e81:
-	text "Patterns appeared"
-	line "on the walls…"
-	done
-
-UnknownText_0x58ea2:
-	text "There's a big hole"
-	line "in the wall!"
-	done
-
-UnknownText_0x58ec2:
-	text "It's a replica of"
-	line "an ancient #-"
-	cont "MON."
-	done
-
-UnknownText_0x58ee7:
-	text "This flying #-"
-	line "MON attacked its"
-
-	para "prey with saw-like"
-	line "fangs."
-	done
-
-RuinsofAlphAerodactylChamber_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 5
-	warp_def $9, $3, 4, RUINS_OF_ALPH_OUTSIDE
-	warp_def $9, $4, 4, RUINS_OF_ALPH_OUTSIDE
-	warp_def $3, $3, 8, RUINS_OF_ALPH_INNER_CHAMBER
-	warp_def $3, $4, 9, RUINS_OF_ALPH_INNER_CHAMBER
-	warp_def $0, $4, 1, RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 6
-	signpost 3, 2, SIGNPOST_READ, MapRuinsofAlphAerodactylChamberSignpost1Script
-	signpost 3, 5, SIGNPOST_READ, MapRuinsofAlphAerodactylChamberSignpost1Script
-	signpost 2, 3, SIGNPOST_UP, MapRuinsofAlphAerodactylChamberSignpost2Script
-	signpost 2, 4, SIGNPOST_UP, MapRuinsofAlphAerodactylChamberSignpost3Script
-	signpost 0, 3, SIGNPOST_UP, MapRuinsofAlphAerodactylChamberSignpost4Script
-	signpost 0, 4, SIGNPOST_UP, MapRuinsofAlphAerodactylChamberSignpost5Script
-
-.PersonEvents:
-	db 0
--- a/maps/RuinsofAlphAerodactylItemRoom.asm
+++ /dev/null
@@ -1,59 +1,0 @@
-const_value set 2
-	const RUINSOFALPHAERODACTYLITEMROOM_POKE_BALL1
-	const RUINSOFALPHAERODACTYLITEMROOM_POKE_BALL2
-	const RUINSOFALPHAERODACTYLITEMROOM_POKE_BALL3
-	const RUINSOFALPHAERODACTYLITEMROOM_POKE_BALL4
-
-RuinsofAlphAerodactylItemRoom_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-RuinsofAlphAerodactylItemRoomGoldBerry:
-	itemball GOLD_BERRY
-
-RuinsofAlphAerodactylItemRoomMoonStone:
-	itemball MOON_STONE
-
-RuinsofAlphAerodactylItemRoomHealPowder:
-	itemball HEAL_POWDER
-
-RuinsofAlphAerodactylItemRoomEnergyRoot:
-	itemball ENERGY_ROOT
-
-MapRuinsofAlphAerodactylItemRoomSignpost1Script:
-	jumptext UnknownText_0x59ac1
-
-UnknownText_0x59ac1:
-	text "It's a replica of"
-	line "an ancient #-"
-	cont "MON."
-	done
-
-RuinsofAlphAerodactylItemRoom_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 4
-	warp_def $9, $3, 5, RUINS_OF_ALPH_AERODACTYL_CHAMBER
-	warp_def $9, $4, 5, RUINS_OF_ALPH_AERODACTYL_CHAMBER
-	warp_def $1, $3, 1, RUINS_OF_ALPH_AERODACTYL_WORD_ROOM
-	warp_def $1, $4, 2, RUINS_OF_ALPH_AERODACTYL_WORD_ROOM
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 2
-	signpost 1, 2, SIGNPOST_READ, MapRuinsofAlphAerodactylItemRoomSignpost1Script
-	signpost 1, 5, SIGNPOST_READ, MapRuinsofAlphAerodactylItemRoomSignpost1Script
-
-.PersonEvents:
-	db 4
-	person_event SPRITE_POKE_BALL, 6, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphAerodactylItemRoomGoldBerry, EVENT_PICKED_UP_GOLD_BERRY_FROM_AERODACTYL_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 6, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphAerodactylItemRoomMoonStone, EVENT_PICKED_UP_MOON_STONE_FROM_AERODACTYL_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 4, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphAerodactylItemRoomHealPowder, EVENT_PICKED_UP_HEAL_POWDER_FROM_AERODACTYL_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 4, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphAerodactylItemRoomEnergyRoot, EVENT_PICKED_UP_ENERGY_ROOT_FROM_AERODACTYL_ITEM_ROOM
--- a/maps/RuinsofAlphAerodactylWordRoom.asm
+++ /dev/null
@@ -1,25 +1,0 @@
-RuinsofAlphAerodactylWordRoom_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-RuinsofAlphAerodactylWordRoom_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 3
-	warp_def $5, $9, 3, RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM
-	warp_def $5, $a, 4, RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM
-	warp_def $b, $11, 8, RUINS_OF_ALPH_INNER_CHAMBER
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 0
--- a/maps/RuinsofAlphAerodactylWordRoom.blk
+++ /dev/null
@@ -1,2 +1,0 @@
-	
-
!"#$%    
\ No newline at end of file
--- a/maps/RuinsofAlphHoOhChamber.asm
+++ /dev/null
@@ -1,177 +1,0 @@
-RuinsofAlphHoOhChamber_MapScriptHeader:
-.MapTriggers:
-	db 2
-
-	; triggers
-	dw UnknownScript_0x5856d, 0
-	dw UnknownScript_0x5857b, 0
-
-.MapCallbacks:
-	db 1
-
-	; callbacks
-
-	dbw MAPCALLBACK_TILES, UnknownScript_0x5857c
-
-UnknownScript_0x5856d:
-	special SpecialHoOhChamber
-	checkevent EVENT_WALL_OPENED_IN_HO_OH_CHAMBER
-	iftrue UnknownScript_0x58577
-	end
-
-UnknownScript_0x58577:
-	priorityjump UnknownScript_0x58596
-	end
-
-UnknownScript_0x5857b:
-	end
-
-UnknownScript_0x5857c:
-	checkevent EVENT_WALL_OPENED_IN_HO_OH_CHAMBER
-	iftrue UnknownScript_0x58586
-	changeblock $4, $0, $2e
-UnknownScript_0x58586:
-	checkevent EVENT_SOLVED_HO_OH_PUZZLE
-	iffalse UnknownScript_0x5858d
-	return
-
-UnknownScript_0x5858d:
-	changeblock $2, $2, $1
-	changeblock $4, $2, $2
-	return
-
-UnknownScript_0x58596:
-	pause 30
-	earthquake 30
-	showemote EMOTE_SHOCK, PLAYER, 20
-	pause 30
-	playsound SFX_STRENGTH
-	changeblock $4, $0, $30
-	reloadmappart
-	earthquake 50
-	dotrigger $1
-	closetext
-	end
-
-MapRuinsofAlphHoOhChamberSignpost2Script:
-	refreshscreen $0
-	writebyte $3
-	special Special_UnownPuzzle
-	closetext
-	iftrue UnknownScript_0x585ba
-	end
-
-UnknownScript_0x585ba:
-	setevent EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
-	setevent EVENT_SOLVED_HO_OH_PUZZLE
-	setflag ENGINE_UNLOCKED_UNOWNS_4
-	domaptrigger RUINS_OF_ALPH_INNER_CHAMBER, $1
-	earthquake 30
-	showemote EMOTE_SHOCK, PLAYER, 15
-	changeblock $2, $2, $18
-	changeblock $4, $2, $19
-	reloadmappart
-	playsound SFX_STRENGTH
-	earthquake 80
-	applymovement PLAYER, MovementData_0x58610
-	playsound SFX_KINESIS
-	waitsfx
-	pause 20
-	warpcheck
-	end
-
-MapRuinsofAlphHoOhChamberSignpost1Script:
-	jumptext UnknownText_0x58685
-
-MapRuinsofAlphHoOhChamberSignpost3Script:
-	jumptext UnknownText_0x586aa
-
-MapRuinsofAlphHoOhChamberSignpost4Script:
-	opentext
-	writetext UnknownText_0x58612
-	writebyte $3
-	special Special_DisplayUnownWords
-	closetext
-	end
-
-MapRuinsofAlphHoOhChamberSignpost5Script:
-	checkevent EVENT_WALL_OPENED_IN_HO_OH_CHAMBER
-	iftrue UnknownScript_0x58609
-	opentext
-	writetext UnknownText_0x58644
-	writebyte $3
-	special Special_DisplayUnownWords
-	closetext
-	end
-
-UnknownScript_0x58609:
-	opentext
-	writetext UnknownText_0x58665
-	waitbutton
-	closetext
-	end
-
-MovementData_0x58610:
-	db $59 ; movement
-	step_end
-
-UnknownText_0x58612:
-	text "Patterns appeared"
-	line "on the walls…"
-	done
-
-; possibly unused
-UnknownText_0x58633:
-	text "It's UNOWN text!"
-	done
-
-UnknownText_0x58644:
-	text "Patterns appeared"
-	line "on the walls…"
-	done
-
-UnknownText_0x58665:
-	text "There's a big hole"
-	line "in the wall!"
-	done
-
-UnknownText_0x58685:
-	text "It's a replica of"
-	line "an ancient #-"
-	cont "MON."
-	done
-
-UnknownText_0x586aa:
-	text "A #MON that"
-	line "flew gracefully on"
-
-	para "rainbow-colored"
-	line "wings."
-	done
-
-RuinsofAlphHoOhChamber_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 5
-	warp_def $9, $3, 1, RUINS_OF_ALPH_OUTSIDE
-	warp_def $9, $4, 1, RUINS_OF_ALPH_OUTSIDE
-	warp_def $3, $3, 2, RUINS_OF_ALPH_INNER_CHAMBER
-	warp_def $3, $4, 3, RUINS_OF_ALPH_INNER_CHAMBER
-	warp_def $0, $4, 1, RUINS_OF_ALPH_HO_OH_ITEM_ROOM
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 6
-	signpost 3, 2, SIGNPOST_READ, MapRuinsofAlphHoOhChamberSignpost1Script
-	signpost 3, 5, SIGNPOST_READ, MapRuinsofAlphHoOhChamberSignpost1Script
-	signpost 2, 3, SIGNPOST_UP, MapRuinsofAlphHoOhChamberSignpost2Script
-	signpost 2, 4, SIGNPOST_UP, MapRuinsofAlphHoOhChamberSignpost3Script
-	signpost 0, 3, SIGNPOST_UP, MapRuinsofAlphHoOhChamberSignpost4Script
-	signpost 0, 4, SIGNPOST_UP, MapRuinsofAlphHoOhChamberSignpost5Script
-
-.PersonEvents:
-	db 0
--- a/maps/RuinsofAlphHoOhItemRoom.asm
+++ /dev/null
@@ -1,59 +1,0 @@
-const_value set 2
-	const RUINSOFALPHHOOHITEMROOM_POKE_BALL1
-	const RUINSOFALPHHOOHITEMROOM_POKE_BALL2
-	const RUINSOFALPHHOOHITEMROOM_POKE_BALL3
-	const RUINSOFALPHHOOHITEMROOM_POKE_BALL4
-
-RuinsofAlphHoOhItemRoom_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-RuinsofAlphHoOhItemRoomGoldBerry:
-	itemball GOLD_BERRY
-
-RuinsofAlphHoOhItemRoomMysteryberry:
-	itemball MYSTERYBERRY
-
-RuinsofAlphHoOhItemRoomRevivalHerb:
-	itemball REVIVAL_HERB
-
-RuinsofAlphHoOhItemRoomCharcoal:
-	itemball CHARCOAL
-
-MapRuinsofAlphHoOhItemRoomSignpost1Script:
-	jumptext UnknownText_0x59923
-
-UnknownText_0x59923:
-	text "It's a replica of"
-	line "an ancient #-"
-	cont "MON."
-	done
-
-RuinsofAlphHoOhItemRoom_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 4
-	warp_def $9, $3, 5, RUINS_OF_ALPH_HO_OH_CHAMBER
-	warp_def $9, $4, 5, RUINS_OF_ALPH_HO_OH_CHAMBER
-	warp_def $1, $3, 1, RUINS_OF_ALPH_HO_OH_WORD_ROOM
-	warp_def $1, $4, 2, RUINS_OF_ALPH_HO_OH_WORD_ROOM
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 2
-	signpost 1, 2, SIGNPOST_READ, MapRuinsofAlphHoOhItemRoomSignpost1Script
-	signpost 1, 5, SIGNPOST_READ, MapRuinsofAlphHoOhItemRoomSignpost1Script
-
-.PersonEvents:
-	db 4
-	person_event SPRITE_POKE_BALL, 6, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphHoOhItemRoomGoldBerry, EVENT_PICKED_UP_GOLD_BERRY_FROM_HO_OH_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 6, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphHoOhItemRoomMysteryberry, EVENT_PICKED_UP_MYSTERYBERRY_FROM_HO_OH_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 4, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphHoOhItemRoomRevivalHerb, EVENT_PICKED_UP_REVIVAL_HERB_FROM_HO_OH_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 4, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphHoOhItemRoomCharcoal, EVENT_PICKED_UP_CHARCOAL_FROM_HO_OH_ITEM_ROOM
--- a/maps/RuinsofAlphHoOhWordRoom.asm
+++ /dev/null
@@ -1,25 +1,0 @@
-RuinsofAlphHoOhWordRoom_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-RuinsofAlphHoOhWordRoom_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 3
-	warp_def $9, $9, 3, RUINS_OF_ALPH_HO_OH_ITEM_ROOM
-	warp_def $9, $a, 4, RUINS_OF_ALPH_HO_OH_ITEM_ROOM
-	warp_def $15, $11, 2, RUINS_OF_ALPH_INNER_CHAMBER
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 0
--- a/maps/RuinsofAlphHoOhWordRoom.blk
+++ /dev/null
@@ -1,2 +1,0 @@
-	
-
!"#$%&'()*+,-./0123456789:;<=    
\ No newline at end of file
--- a/maps/RuinsofAlphInnerChamber.asm
+++ /dev/null
@@ -1,135 +1,0 @@
-const_value set 2
-	const RUINSOFALPHINNERCHAMBER_FISHER
-	const RUINSOFALPHINNERCHAMBER_TEACHER
-	const RUINSOFALPHINNERCHAMBER_GRAMPS
-
-RuinsofAlphInnerChamber_MapScriptHeader:
-.MapTriggers:
-	db 2
-
-	; triggers
-	dw UnknownScript_0x58f69, 0
-	dw UnknownScript_0x58f6a, 0
-
-.MapCallbacks:
-	db 0
-
-UnknownScript_0x58f69:
-	end
-
-UnknownScript_0x58f6a:
-	priorityjump UnknownScript_0x58f6e
-
-UnknownScript_0x58f6d:
-	end
-
-UnknownScript_0x58f6e:
-	opentext
-	writetext UnknownText_0x58f89
-	waitbutton
-	closetext
-	dotrigger $0
-	setevent EVENT_MADE_UNOWN_APPEAR_IN_RUINS
-	clearevent EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_FISHER
-	end
-
-FisherScript_0x58f7d:
-	jumptextfaceplayer UnknownText_0x58fac
-
-TeacherScript_0x58f80:
-	jumptextfaceplayer UnknownText_0x58fda
-
-GrampsScript_0x58f83:
-	jumptextfaceplayer UnknownText_0x59024
-
-MapRuinsofAlphInnerChamberSignpost25Script:
-	jumptext UnknownText_0x59072
-
-UnknownText_0x58f89:
-	text "There is a strange"
-	line "presence here…"
-	done
-
-UnknownText_0x58fac:
-	text "This is a big"
-	line "room, but there's"
-	cont "nothing here."
-	done
-
-UnknownText_0x58fda:
-	text "This place has a"
-	line "mystical quality"
-	cont "to it."
-
-	para "It feels sort of"
-	line "ethereal even."
-	done
-
-UnknownText_0x59024:
-	text "Ancient buildings"
-	line "are often tombs of"
-	cont "kings."
-
-	para "Like the pyramids,"
-	line "for instance."
-	done
-
-UnknownText_0x59072:
-	text "It's a replica of"
-	line "an ancient #-"
-	cont "MON."
-	done
-
-RuinsofAlphInnerChamber_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 9
-	warp_def $d, $a, 5, RUINS_OF_ALPH_OUTSIDE
-	warp_def $f, $3, 3, RUINS_OF_ALPH_HO_OH_CHAMBER
-	warp_def $f, $4, 4, RUINS_OF_ALPH_HO_OH_CHAMBER
-	warp_def $3, $f, 3, RUINS_OF_ALPH_KABUTO_CHAMBER
-	warp_def $3, $10, 4, RUINS_OF_ALPH_KABUTO_CHAMBER
-	warp_def $15, $3, 3, RUINS_OF_ALPH_OMANYTE_CHAMBER
-	warp_def $15, $4, 4, RUINS_OF_ALPH_OMANYTE_CHAMBER
-	warp_def $18, $f, 3, RUINS_OF_ALPH_AERODACTYL_CHAMBER
-	warp_def $18, $10, 4, RUINS_OF_ALPH_AERODACTYL_CHAMBER
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 26
-	signpost 3, 2, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 3, 5, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 3, 8, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 3, 11, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 3, 14, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 3, 17, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 8, 2, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 8, 5, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 8, 8, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 8, 11, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 8, 14, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 8, 17, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 13, 2, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 13, 17, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 18, 2, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 18, 5, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 18, 8, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 18, 11, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 18, 14, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 18, 17, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 24, 2, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 24, 5, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 24, 8, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 24, 11, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 24, 14, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 24, 17, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
-
-.PersonEvents:
-	db 3
-	person_event SPRITE_FISHER, 7, 3, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, FisherScript_0x58f7d, EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
-	person_event SPRITE_TEACHER, 13, 14, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, TeacherScript_0x58f80, EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
-	person_event SPRITE_GRAMPS, 19, 11, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, GrampsScript_0x58f83, EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
--- a/maps/RuinsofAlphInnerChamber.blk
+++ /dev/null
@@ -1,7 +1,0 @@
-


-
-
-

 
 
 





-
-
-

 
 
 

 
 
 &*'*'*'*'(
\ No newline at end of file
--- a/maps/RuinsofAlphItemRoom.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-451212,+
\ No newline at end of file
--- a/maps/RuinsofAlphKabutoChamber.asm
+++ /dev/null
@@ -1,292 +1,0 @@
-const_value set 2
-	const RUINSOFALPHKABUTOCHAMBER_RECEPTIONIST
-	const RUINSOFALPHKABUTOCHAMBER_SCIENTIST
-
-RuinsofAlphKabutoChamber_MapScriptHeader:
-.MapTriggers:
-	db 2
-
-	; triggers
-	dw UnknownScript_0x5872b, 0
-	dw UnknownScript_0x58736, 0
-
-.MapCallbacks:
-	db 1
-
-	; callbacks
-
-	dbw MAPCALLBACK_TILES, UnknownScript_0x58737
-
-UnknownScript_0x5872b:
-	checkevent EVENT_WALL_OPENED_IN_KABUTO_CHAMBER
-	iftrue UnknownScript_0x58732
-	end
-
-UnknownScript_0x58732:
-	priorityjump UnknownScript_0x58751
-
-UnknownScript_0x58735:
-	end
-
-UnknownScript_0x58736:
-	end
-
-UnknownScript_0x58737:
-	checkevent EVENT_WALL_OPENED_IN_KABUTO_CHAMBER
-	iftrue UnknownScript_0x58741
-	changeblock $4, $0, $2e
-UnknownScript_0x58741:
-	checkevent EVENT_SOLVED_KABUTO_PUZZLE
-	iffalse UnknownScript_0x58748
-	return
-
-UnknownScript_0x58748:
-	changeblock $2, $2, $1
-	changeblock $4, $2, $2
-	return
-
-UnknownScript_0x58751:
-	pause 30
-	earthquake 30
-	showemote EMOTE_SHOCK, PLAYER, 20
-	pause 30
-	playsound SFX_STRENGTH
-	changeblock $4, $0, $30
-	reloadmappart
-	earthquake 50
-	dotrigger $1
-	closetext
-	end
-
-ReceptionistScript_0x58769:
-	jumptextfaceplayer UnknownText_0x58800
-
-MapRuinsofAlphKabutoChamberSignpost2Script:
-	refreshscreen $0
-	writebyte $0
-	special Special_UnownPuzzle
-	closetext
-	iftrue UnknownScript_0x58778
-	end
-
-UnknownScript_0x58778:
-	setevent EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
-	setevent EVENT_SOLVED_KABUTO_PUZZLE
-	setflag ENGINE_UNLOCKED_UNOWNS_1
-	setevent EVENT_RUINS_OF_ALPH_KABUTO_CHAMBER_RECEPTIONIST
-	domaptrigger RUINS_OF_ALPH_INNER_CHAMBER, $1
-	earthquake 30
-	showemote EMOTE_SHOCK, PLAYER, 15
-	changeblock $2, $2, $18
-	changeblock $4, $2, $19
-	reloadmappart
-	playsound SFX_STRENGTH
-	earthquake 80
-	applymovement PLAYER, MovementData_0x587fe
-	playsound SFX_KINESIS
-	waitsfx
-	pause 20
-	warpcheck
-	end
-
-ScientistScript_0x587a8:
-	faceplayer
-	opentext
-	checkcode VAR_UNOWNCOUNT
-	if_equal 26, UnknownScript_0x587cf
-	checkevent EVENT_WALL_OPENED_IN_KABUTO_CHAMBER
-	iftrue UnknownScript_0x587c9
-	checkevent EVENT_SOLVED_KABUTO_PUZZLE
-	iffalse UnknownScript_0x587c0
-	writetext UnknownText_0x589b8
-	buttonsound
-UnknownScript_0x587c0:
-	writetext UnknownText_0x588f5
-	waitbutton
-	closetext
-	spriteface RUINSOFALPHKABUTOCHAMBER_SCIENTIST, UP
-	end
-
-UnknownScript_0x587c9:
-	writetext UnknownText_0x5897c
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x587cf:
-	writetext UnknownText_0x594cb
-	waitbutton
-	closetext
-	end
-
-MapRuinsofAlphKabutoChamberSignpost1Script:
-	jumptext UnknownText_0x58b1a
-
-MapRuinsofAlphKabutoChamberSignpost3Script:
-	jumptext UnknownText_0x58b3f
-
-MapRuinsofAlphKabutoChamberSignpost4Script:
-	opentext
-	writetext UnknownText_0x58aa7
-	writebyte $0
-	special Special_DisplayUnownWords
-	closetext
-	end
-
-MapRuinsofAlphKabutoChamberSignpost5Script:
-	checkevent EVENT_WALL_OPENED_IN_KABUTO_CHAMBER
-	iftrue UnknownScript_0x587f7
-	opentext
-	writetext UnknownText_0x58ad9
-	writebyte $0
-	special Special_DisplayUnownWords
-	closetext
-	end
-
-UnknownScript_0x587f7:
-	opentext
-	writetext UnknownText_0x58afa
-	waitbutton
-	closetext
-	end
-
-MovementData_0x587fe:
-	db $59 ; movement
-	step_end
-
-UnknownText_0x58800:
-	text "Welcome to this"
-	line "chamber."
-
-	para "There are sliding"
-	line "panels that depict"
-
-	para "a #MON drawn by"
-	line "the ancients."
-
-	para "Slide the panels"
-	line "around to form the"
-	cont "picture."
-
-	para "To the right is a"
-	line "description of the"
-	cont "#MON."
-
-	para "Scientists in the"
-	line "back are examining"
-
-	para "some newly found"
-	line "patterns."
-	done
-
-UnknownText_0x588f5:
-	text "Recently, strange,"
-	line "cryptic patterns"
-	cont "have appeared."
-
-	para "It's odd. They"
-	line "weren't here a"
-	cont "little while ago…"
-
-	para "You should take a"
-	line "look at the walls."
-	done
-
-UnknownText_0x5897c:
-	text "Ah! Here's another"
-	line "huge hole!"
-
-	para "It's big enough to"
-	line "go through!"
-	done
-
-UnknownText_0x589b8:
-	text "That tremor was"
-	line "pretty scary!"
-
-	para "But I'm more"
-	line "concerned about"
-	cont "this wall here…"
-	done
-
-; possibly unused
-UnknownText_0x58a03:
-	text "The patterns on"
-	line "the wall appear to"
-	cont "be words!"
-
-	para "And those sliding"
-	line "stone panels seem"
-
-	para "to be signals of"
-	line "some kind."
-
-	para "I think they make"
-	line "#MON appear,"
-
-	para "but it's not clear"
-	line "yet…"
-	done
-
-UnknownText_0x58aa7:
-	text "Patterns appeared"
-	line "on the walls…"
-	done
-
-; possibly unused
-UnknownText_0x58ac8:
-	text "It's UNOWN text!"
-	done
-
-UnknownText_0x58ad9:
-	text "Patterns appeared"
-	line "on the walls…"
-	done
-
-UnknownText_0x58afa:
-	text "There's a big hole"
-	line "in the wall!"
-	done
-
-UnknownText_0x58b1a:
-	text "It's a replica of"
-	line "an ancient #-"
-	cont "MON."
-	done
-
-UnknownText_0x58b3f:
-	text "A #MON that hid"
-	line "on the sea floor."
-
-	para "Eyes on its back"
-	line "scanned the area."
-	done
-
-RuinsofAlphKabutoChamber_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 5
-	warp_def $9, $3, 2, RUINS_OF_ALPH_OUTSIDE
-	warp_def $9, $4, 2, RUINS_OF_ALPH_OUTSIDE
-	warp_def $3, $3, 4, RUINS_OF_ALPH_INNER_CHAMBER
-	warp_def $3, $4, 5, RUINS_OF_ALPH_INNER_CHAMBER
-	warp_def $0, $4, 1, RUINS_OF_ALPH_KABUTO_ITEM_ROOM
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 6
-	signpost 3, 2, SIGNPOST_READ, MapRuinsofAlphKabutoChamberSignpost1Script
-	signpost 3, 5, SIGNPOST_READ, MapRuinsofAlphKabutoChamberSignpost1Script
-	signpost 2, 3, SIGNPOST_UP, MapRuinsofAlphKabutoChamberSignpost2Script
-	signpost 2, 4, SIGNPOST_UP, MapRuinsofAlphKabutoChamberSignpost3Script
-	signpost 0, 3, SIGNPOST_UP, MapRuinsofAlphKabutoChamberSignpost4Script
-	signpost 0, 4, SIGNPOST_UP, MapRuinsofAlphKabutoChamberSignpost5Script
-
-.PersonEvents:
-	db 2
-	person_event SPRITE_RECEPTIONIST, 5, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ReceptionistScript_0x58769, EVENT_RUINS_OF_ALPH_KABUTO_CHAMBER_RECEPTIONIST
-	person_event SPRITE_SCIENTIST, 1, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ScientistScript_0x587a8, -1
--- a/maps/RuinsofAlphKabutoItemRoom.asm
+++ /dev/null
@@ -1,59 +1,0 @@
-const_value set 2
-	const RUINSOFALPHKABUTOITEMROOM_POKE_BALL1
-	const RUINSOFALPHKABUTOITEMROOM_POKE_BALL2
-	const RUINSOFALPHKABUTOITEMROOM_POKE_BALL3
-	const RUINSOFALPHKABUTOITEMROOM_POKE_BALL4
-
-RuinsofAlphKabutoItemRoom_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-RuinsofAlphKabutoItemRoomBerry:
-	itemball BERRY
-
-RuinsofAlphKabutoItemRoomPsncureberry:
-	itemball PSNCUREBERRY
-
-RuinsofAlphKabutoItemRoomHealPowder:
-	itemball HEAL_POWDER
-
-RuinsofAlphKabutoItemRoomEnergypowder:
-	itemball ENERGYPOWDER
-
-MapRuinsofAlphKabutoItemRoomSignpost1Script:
-	jumptext UnknownText_0x599ad
-
-UnknownText_0x599ad:
-	text "It's a replica of"
-	line "an ancient #-"
-	cont "MON."
-	done
-
-RuinsofAlphKabutoItemRoom_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 4
-	warp_def $9, $3, 5, RUINS_OF_ALPH_KABUTO_CHAMBER
-	warp_def $9, $4, 5, RUINS_OF_ALPH_KABUTO_CHAMBER
-	warp_def $1, $3, 1, RUINS_OF_ALPH_KABUTO_WORD_ROOM
-	warp_def $1, $4, 2, RUINS_OF_ALPH_KABUTO_WORD_ROOM
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 2
-	signpost 1, 2, SIGNPOST_READ, MapRuinsofAlphKabutoItemRoomSignpost1Script
-	signpost 1, 5, SIGNPOST_READ, MapRuinsofAlphKabutoItemRoomSignpost1Script
-
-.PersonEvents:
-	db 4
-	person_event SPRITE_POKE_BALL, 6, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphKabutoItemRoomBerry, EVENT_PICKED_UP_BERRY_FROM_KABUTO_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 6, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphKabutoItemRoomPsncureberry, EVENT_PICKED_UP_PSNCUREBERRY_FROM_KABUTO_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 4, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphKabutoItemRoomHealPowder, EVENT_PICKED_UP_HEAL_POWDER_FROM_KABUTO_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 4, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphKabutoItemRoomEnergypowder, EVENT_PICKED_UP_ENERGYPOWDER_FROM_KABUTO_ITEM_ROOM
--- a/maps/RuinsofAlphKabutoWordRoom.asm
+++ /dev/null
@@ -1,25 +1,0 @@
-RuinsofAlphKabutoWordRoom_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-RuinsofAlphKabutoWordRoom_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 3
-	warp_def $5, $9, 3, RUINS_OF_ALPH_KABUTO_ITEM_ROOM
-	warp_def $5, $a, 4, RUINS_OF_ALPH_KABUTO_ITEM_ROOM
-	warp_def $b, $11, 4, RUINS_OF_ALPH_INNER_CHAMBER
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 0
--- a/maps/RuinsofAlphKabutoWordRoom.blk
+++ /dev/null
@@ -1,2 +1,0 @@
-	
-
!"#$%    
\ No newline at end of file
--- a/maps/RuinsofAlphOmanyteChamber.asm
+++ /dev/null
@@ -1,177 +1,0 @@
-RuinsofAlphOmanyteChamber_MapScriptHeader:
-.MapTriggers:
-	db 2
-
-	; triggers
-	dw UnknownScript_0x58be9, 0
-	dw UnknownScript_0x58bf7, 0
-
-.MapCallbacks:
-	db 1
-
-	; callbacks
-
-	dbw MAPCALLBACK_TILES, UnknownScript_0x58bf8
-
-UnknownScript_0x58be9:
-	special SpecialOmanyteChamber
-	checkevent EVENT_WALL_OPENED_IN_OMANYTE_CHAMBER
-	iftrue UnknownScript_0x58bf3
-	end
-
-UnknownScript_0x58bf3:
-	priorityjump UnknownScript_0x58c12
-	end
-
-UnknownScript_0x58bf7:
-	end
-
-UnknownScript_0x58bf8:
-	checkevent EVENT_WALL_OPENED_IN_OMANYTE_CHAMBER
-	iftrue UnknownScript_0x58c02
-	changeblock $4, $0, $2e
-UnknownScript_0x58c02:
-	checkevent EVENT_SOLVED_OMANYTE_PUZZLE
-	iffalse UnknownScript_0x58c09
-	return
-
-UnknownScript_0x58c09:
-	changeblock $2, $2, $1
-	changeblock $4, $2, $2
-	return
-
-UnknownScript_0x58c12:
-	pause 30
-	earthquake 30
-	showemote EMOTE_SHOCK, PLAYER, 20
-	pause 30
-	playsound SFX_STRENGTH
-	changeblock $4, $0, $30
-	reloadmappart
-	earthquake 50
-	dotrigger $1
-	closetext
-	end
-
-MapRuinsofAlphOmanyteChamberSignpost2Script:
-	refreshscreen $0
-	writebyte $1
-	special Special_UnownPuzzle
-	closetext
-	iftrue UnknownScript_0x58c36
-	end
-
-UnknownScript_0x58c36:
-	setevent EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
-	setevent EVENT_SOLVED_OMANYTE_PUZZLE
-	setflag ENGINE_UNLOCKED_UNOWNS_2
-	domaptrigger RUINS_OF_ALPH_INNER_CHAMBER, $1
-	earthquake 30
-	showemote EMOTE_SHOCK, PLAYER, 15
-	changeblock $2, $2, $18
-	changeblock $4, $2, $19
-	reloadmappart
-	playsound SFX_STRENGTH
-	earthquake 80
-	applymovement PLAYER, MovementData_0x58c8c
-	playsound SFX_KINESIS
-	waitsfx
-	pause 20
-	warpcheck
-	end
-
-MapRuinsofAlphOmanyteChamberSignpost1Script:
-	jumptext UnknownText_0x58d01
-
-MapRuinsofAlphOmanyteChamberSignpost3Script:
-	jumptext UnknownText_0x58d26
-
-MapRuinsofAlphOmanyteChamberSignpost4Script:
-	opentext
-	writetext UnknownText_0x58c8e
-	writebyte $2
-	special Special_DisplayUnownWords
-	closetext
-	end
-
-MapRuinsofAlphOmanyteChamberSignpost5Script:
-	checkevent EVENT_WALL_OPENED_IN_OMANYTE_CHAMBER
-	iftrue UnknownScript_0x58c85
-	opentext
-	writetext UnknownText_0x58cc0
-	writebyte $2
-	special Special_DisplayUnownWords
-	closetext
-	end
-
-UnknownScript_0x58c85:
-	opentext
-	writetext UnknownText_0x58ce1
-	waitbutton
-	closetext
-	end
-
-MovementData_0x58c8c:
-	db $59 ; movement
-	step_end
-
-UnknownText_0x58c8e:
-	text "Patterns appeared"
-	line "on the walls…"
-	done
-
-; possibly unused.. this again?
-UnknownText_0x58caf:
-	text "It's UNOWN text!"
-	done
-
-UnknownText_0x58cc0:
-	text "Patterns appeared"
-	line "on the walls…"
-	done
-
-UnknownText_0x58ce1:
-	text "There's a big hole"
-	line "in the wall!"
-	done
-
-UnknownText_0x58d01:
-	text "It's a replica of"
-	line "an ancient #-"
-	cont "MON."
-	done
-
-UnknownText_0x58d26:
-	text "This #MON"
-	line "drifted in the"
-
-	para "sea by twisting"
-	line "its ten tentacles."
-	done
-
-RuinsofAlphOmanyteChamber_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 5
-	warp_def $9, $3, 3, RUINS_OF_ALPH_OUTSIDE
-	warp_def $9, $4, 3, RUINS_OF_ALPH_OUTSIDE
-	warp_def $3, $3, 6, RUINS_OF_ALPH_INNER_CHAMBER
-	warp_def $3, $4, 7, RUINS_OF_ALPH_INNER_CHAMBER
-	warp_def $0, $4, 1, RUINS_OF_ALPH_OMANYTE_ITEM_ROOM
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 6
-	signpost 3, 2, SIGNPOST_READ, MapRuinsofAlphOmanyteChamberSignpost1Script
-	signpost 3, 5, SIGNPOST_READ, MapRuinsofAlphOmanyteChamberSignpost1Script
-	signpost 2, 3, SIGNPOST_UP, MapRuinsofAlphOmanyteChamberSignpost2Script
-	signpost 2, 4, SIGNPOST_UP, MapRuinsofAlphOmanyteChamberSignpost3Script
-	signpost 0, 3, SIGNPOST_UP, MapRuinsofAlphOmanyteChamberSignpost4Script
-	signpost 0, 4, SIGNPOST_UP, MapRuinsofAlphOmanyteChamberSignpost5Script
-
-.PersonEvents:
-	db 0
--- a/maps/RuinsofAlphOmanyteItemRoom.asm
+++ /dev/null
@@ -1,59 +1,0 @@
-const_value set 2
-	const RUINSOFALPHOMANYTEITEMROOM_POKE_BALL1
-	const RUINSOFALPHOMANYTEITEMROOM_POKE_BALL2
-	const RUINSOFALPHOMANYTEITEMROOM_POKE_BALL3
-	const RUINSOFALPHOMANYTEITEMROOM_POKE_BALL4
-
-RuinsofAlphOmanyteItemRoom_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-RuinsofAlphOmanyteItemRoomMysteryberry:
-	itemball MYSTERYBERRY
-
-RuinsofAlphOmanyteItemRoomMysticWater:
-	itemball MYSTIC_WATER
-
-RuinsofAlphOmanyteItemRoomStardust:
-	itemball STARDUST
-
-RuinsofAlphOmanyteItemRoomStarPiece:
-	itemball STAR_PIECE
-
-MapRuinsofAlphOmanyteItemRoomSignpost1Script:
-	jumptext UnknownText_0x59a37
-
-UnknownText_0x59a37:
-	text "It's a replica of"
-	line "an ancient #-"
-	cont "MON."
-	done
-
-RuinsofAlphOmanyteItemRoom_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 4
-	warp_def $9, $3, 5, RUINS_OF_ALPH_OMANYTE_CHAMBER
-	warp_def $9, $4, 5, RUINS_OF_ALPH_OMANYTE_CHAMBER
-	warp_def $1, $3, 1, RUINS_OF_ALPH_OMANYTE_WORD_ROOM
-	warp_def $1, $4, 2, RUINS_OF_ALPH_OMANYTE_WORD_ROOM
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 2
-	signpost 1, 2, SIGNPOST_READ, MapRuinsofAlphOmanyteItemRoomSignpost1Script
-	signpost 1, 5, SIGNPOST_READ, MapRuinsofAlphOmanyteItemRoomSignpost1Script
-
-.PersonEvents:
-	db 4
-	person_event SPRITE_POKE_BALL, 6, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphOmanyteItemRoomMysteryberry, EVENT_PICKED_UP_MYSTERYBERRY_FROM_OMANYTE_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 6, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphOmanyteItemRoomMysticWater, EVENT_PICKED_UP_MYSTIC_WATER_FROM_OMANYTE_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 4, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphOmanyteItemRoomStardust, EVENT_PICKED_UP_STARDUST_FROM_OMANYTE_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 4, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, RuinsofAlphOmanyteItemRoomStarPiece, EVENT_PICKED_UP_STAR_PIECE_FROM_OMANYTE_ITEM_ROOM
--- a/maps/RuinsofAlphOmanyteWordRoom.asm
+++ /dev/null
@@ -1,25 +1,0 @@
-RuinsofAlphOmanyteWordRoom_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-RuinsofAlphOmanyteWordRoom_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 3
-	warp_def $7, $9, 3, RUINS_OF_ALPH_OMANYTE_ITEM_ROOM
-	warp_def $7, $a, 4, RUINS_OF_ALPH_OMANYTE_ITEM_ROOM
-	warp_def $d, $11, 6, RUINS_OF_ALPH_INNER_CHAMBER
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 0
--- a/maps/RuinsofAlphOmanyteWordRoom.blk
+++ /dev/null
@@ -1,2 +1,0 @@
-	
-
!"#$%&'()*+,-    
\ No newline at end of file
--- a/maps/RuinsofAlphOutside.asm
+++ /dev/null
@@ -1,325 +1,0 @@
-const_value set 2
-	const RUINSOFALPHOUTSIDE_YOUNGSTER1
-	const RUINSOFALPHOUTSIDE_SCIENTIST
-	const RUINSOFALPHOUTSIDE_FISHER
-	const RUINSOFALPHOUTSIDE_YOUNGSTER2
-	const RUINSOFALPHOUTSIDE_YOUNGSTER3
-
-RuinsofAlphOutside_MapScriptHeader:
-.MapTriggers:
-	db 2
-
-	; triggers
-	dw UnknownScript_0x5800d, 0
-	dw UnknownScript_0x5800e, 0
-
-.MapCallbacks:
-	db 1
-
-	; callbacks
-
-	dbw MAPCALLBACK_OBJECTS, UnknownScript_0x5800f
-
-UnknownScript_0x5800d:
-	end
-
-UnknownScript_0x5800e:
-	end
-
-UnknownScript_0x5800f:
-	checkflag ENGINE_UNOWN_DEX
-	iftrue UnknownScript_0x5802c
-	checkevent EVENT_MADE_UNOWN_APPEAR_IN_RUINS
-	iftrue UnknownScript_0x5801e
-	jump UnknownScript_0x5802c
-
-UnknownScript_0x5801e:
-	checkcode VAR_UNOWNCOUNT
-	if_greater_than $2, UnknownScript_0x58027
-	jump UnknownScript_0x5802c
-
-UnknownScript_0x58027:
-	appear RUINSOFALPHOUTSIDE_SCIENTIST
-	dotrigger $1
-	return
-
-UnknownScript_0x5802c:
-	disappear RUINSOFALPHOUTSIDE_SCIENTIST
-	dotrigger $0
-	return
-
-UnknownScript_0x58031:
-	spriteface RUINSOFALPHOUTSIDE_SCIENTIST, UP
-	spriteface PLAYER, DOWN
-	jump UnknownScript_0x58044
-
-UnknownScript_0x5803a:
-	spriteface RUINSOFALPHOUTSIDE_SCIENTIST, LEFT
-	spriteface PLAYER, RIGHT
-	jump UnknownScript_0x58044
-
-ScientistScript_0x58043:
-	faceplayer
-UnknownScript_0x58044:
-	opentext
-	writetext UnknownText_0x580c7
-	waitbutton
-	closetext
-	playmusic MUSIC_SHOW_ME_AROUND
-	follow RUINSOFALPHOUTSIDE_SCIENTIST, PLAYER
-	applymovement RUINSOFALPHOUTSIDE_SCIENTIST, MovementData_0x580ba
-	disappear RUINSOFALPHOUTSIDE_SCIENTIST
-	stopfollow
-	applymovement PLAYER, MovementData_0x580c5
-	domaptrigger RUINS_OF_ALPH_RESEARCH_CENTER, $1
-	warpcheck
-	end
-
-FisherScript_0x58061:
-	faceplayer
-	opentext
-	checkevent EVENT_TALKED_TO_RUINS_COWARD
-	iftrue .Next
-	setevent EVENT_TALKED_TO_RUINS_COWARD
-	writetext UnknownText_0x583a4
-	buttonsound
-.Next:
-	writetext UnknownText_0x58420
-	waitbutton
-	closetext
-	end
-
-YoungsterScript_0x58076:
-	faceplayer
-	opentext
-	writetext UnknownText_0x58449
-	waitbutton
-	closetext
-	end
-
-YoungsterScript_0x5807e:
-	faceplayer
-	opentext
-	writetext UnknownText_0x5848e
-	waitbutton
-	closetext
-	spriteface RUINSOFALPHOUTSIDE_YOUNGSTER3, UP
-	end
-
-TrainerPsychicNathan:
-	trainer EVENT_BEAT_PSYCHIC_NATHAN, PSYCHIC_T, NATHAN, PsychicNathanSeenText, PsychicNathanBeatenText, 0, PsychicNathanScript
-
-PsychicNathanScript:
-	end_if_just_battled
-	opentext
-	writetext UnknownText_0x5830e
-	waitbutton
-	closetext
-	end
-
-
-TrainerSuperNerdStan:
-	trainer EVENT_BEAT_SUPER_NERD_STAN, SUPER_NERD, STAN, UnknownText_0x581e5, UnknownText_0x58217, 0, UnknownScript_0x580a9
-
-UnknownScript_0x580a9:
-	end_if_just_battled
-	opentext
-	writetext UnknownText_0x58250
-	waitbutton
-	closetext
-	end
-
-
-MapRuinsofAlphOutsideSignpost0Script:
-	jumptext UnknownText_0x58325
-
-MapRuinsofAlphOutsideSignpost1Script:
-	jumptext UnknownText_0x58342
-
-MapRuinsofAlphOutsideSignpost2Script:
-	jumptext UnknownText_0x58362
-
-MovementData_0x580ba:
-	step RIGHT
-	step RIGHT
-	step RIGHT
-	step RIGHT
-	step UP
-	step UP
-	step RIGHT
-	step RIGHT
-	step UP
-	step UP
-	step_end
-
-MovementData_0x580c5:
-	step UP
-	step_end
-
-UnknownText_0x580c7:
-	text "Hm? That's a #-"
-	line "DEX, isn't it?"
-	cont "May I see it?"
-
-	para "There are so many"
-	line "kinds of #MON."
-
-	para "Hm? What's this?"
-
-	para "What is this"
-	line "#MON?"
-
-	para "It looks like the"
-	line "strange writing on"
-
-	para "the walls of the"
-	line "RUINS."
-
-	para "If those drawings"
-	line "are really #-"
-	cont "MON, there should"
-	cont "be many more."
-
-	para "I know! Let me up-"
-	line "grade your #-"
-	cont "DEX. Follow me."
-	done
-
-UnknownText_0x581e5:
-	text "What do you want?"
-	line "I'm studying--"
-	cont "don't disturb me!"
-	done
-
-UnknownText_0x58217:
-	text "Sorry…"
-	line "I'm frustrated by"
-
-	para "our lack of real"
-	line "understanding…"
-	done
-
-UnknownText_0x58250:
-	text "The RUINS are from"
-	line "about 1500 years"
-	cont "ago."
-
-	para "Nobody knows who"
-	line "built them."
-
-	para "It's also not"
-	line "known if the #-"
-	cont "MON statues have"
-	cont "any meaning."
-
-	para "It's all one big"
-	line "mystery…"
-	done
-
-PsychicNathanSeenText:
-	text "Hmmm… This is a"
-	line "strange place."
-	done
-
-PsychicNathanBeatenText:
-	text "…"
-	done
-
-UnknownText_0x5830e:
-	text "I like thinking"
-	line "here."
-	done
-
-UnknownText_0x58325:
-	text "MYSTERY STONE"
-	line "PANEL CHAMBER"
-	done
-
-UnknownText_0x58342:
-	text "RUINS OF ALPH"
-	line "VISITORS WELCOME"
-	done
-
-UnknownText_0x58362:
-	text "RUINS OF ALPH"
-	line "RESEARCH CENTER"
-
-	para "THE AUTHORITY ON"
-	line "THE RUINS OF ALPH"
-	done
-
-UnknownText_0x583a4:
-	text "While exploring"
-	line "the RUINS, we"
-
-	para "suddenly noticed"
-	line "an odd presence."
-
-	para "We all got scared"
-	line "and ran away."
-
-	para "You should be"
-	line "careful too."
-	done
-
-UnknownText_0x58420:
-	text "The RUINS hide a"
-	line "huge secret!"
-
-	para "…I think…"
-	done
-
-UnknownText_0x58449:
-	text "There are many"
-	line "kinds of UNOWN, so"
-
-	para "we use them for"
-	line "our secret codes."
-	done
-
-UnknownText_0x5848e:
-	text "A… H… E… A… D…"
-	line "Hmm…"
-
-	para "What?"
-
-	para "I'm decoding this"
-	line "message!"
-	done
-
-RuinsofAlphOutside_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 11
-	warp_def $11, $2, 1, RUINS_OF_ALPH_HO_OH_CHAMBER
-	warp_def $7, $e, 1, RUINS_OF_ALPH_KABUTO_CHAMBER
-	warp_def $1d, $2, 1, RUINS_OF_ALPH_OMANYTE_CHAMBER
-	warp_def $21, $10, 1, RUINS_OF_ALPH_AERODACTYL_CHAMBER
-	warp_def $d, $a, 1, RUINS_OF_ALPH_INNER_CHAMBER
-	warp_def $b, $11, 1, RUINS_OF_ALPH_RESEARCH_CENTER
-	warp_def $13, $6, 1, UNION_CAVE_B1F
-	warp_def $1b, $6, 2, UNION_CAVE_B1F
-	warp_def $5, $7, 3, ROUTE_36_RUINS_OF_ALPH_GATE
-	warp_def $14, $d, 1, ROUTE_32_RUINS_OF_ALPH_GATE
-	warp_def $15, $d, 2, ROUTE_32_RUINS_OF_ALPH_GATE
-
-.XYTriggers:
-	db 2
-	xy_trigger 1, $e, $b, $0, UnknownScript_0x58031, $0, $0
-	xy_trigger 1, $f, $a, $0, UnknownScript_0x5803a, $0, $0
-
-.Signposts:
-	db 3
-	signpost 8, 16, SIGNPOST_READ, MapRuinsofAlphOutsideSignpost0Script
-	signpost 16, 12, SIGNPOST_READ, MapRuinsofAlphOutsideSignpost1Script
-	signpost 12, 18, SIGNPOST_READ, MapRuinsofAlphOutsideSignpost2Script
-
-.PersonEvents:
-	db 5
-	person_event SPRITE_YOUNGSTER, 20, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 1, TrainerPsychicNathan, -1
-	person_event SPRITE_SCIENTIST, 15, 11, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ScientistScript_0x58043, EVENT_RUINS_OF_ALPH_OUTSIDE_SCIENTIST
-	person_event SPRITE_FISHER, 17, 13, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, FisherScript_0x58061, EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_FISHER
-	person_event SPRITE_YOUNGSTER, 11, 14, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x58076, EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_YOUNGSTERS
-	person_event SPRITE_YOUNGSTER, 8, 12, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x5807e, EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_YOUNGSTERS
--- a/maps/RuinsofAlphOutside.blk
+++ /dev/null
@@ -1,12 +1,0 @@
-
	
-
-
-jppkTUlrsmXYE
-XYjppk
-XYhosmEjppqilsnqiE
-Zlsm	
-
-jpkjpqqi
-
-jqosniTUjklsmlmXYhi
-PVVQjqiVVVQlsm
\ No newline at end of file
--- a/maps/RuinsofAlphPuzzleChamber.blk
+++ /dev/null
@@ -1,1 +1,0 @@
--0

,+
\ No newline at end of file
--- a/maps/RuinsofAlphResearchCenter.asm
+++ /dev/null
@@ -1,422 +1,0 @@
-const_value set 2
-	const RUINSOFALPHRESEARCHCENTER_SCIENTIST1
-	const RUINSOFALPHRESEARCHCENTER_SCIENTIST2
-	const RUINSOFALPHRESEARCHCENTER_SCIENTIST3
-
-RuinsofAlphResearchCenter_MapScriptHeader:
-.MapTriggers:
-	db 2
-
-	; triggers
-	dw UnknownScript_0x59180, 0
-	dw UnknownScript_0x59181, 0
-
-.MapCallbacks:
-	db 1
-
-	; callbacks
-
-	dbw MAPCALLBACK_OBJECTS, UnknownScript_0x59185
-
-UnknownScript_0x59180:
-	end
-
-UnknownScript_0x59181:
-	priorityjump UnknownScript_0x59192
-	end
-
-UnknownScript_0x59185:
-	checktriggers
-	if_equal $1, UnknownScript_0x5918b
-	return
-
-UnknownScript_0x5918b:
-	moveperson RUINSOFALPHRESEARCHCENTER_SCIENTIST3, $3, $7
-	appear RUINSOFALPHRESEARCHCENTER_SCIENTIST3
-	return
-
-UnknownScript_0x59192:
-	applymovement RUINSOFALPHRESEARCHCENTER_SCIENTIST3, MovementData_0x5926f
-	playsound SFX_BOOT_PC
-	pause 60
-	playsound SFX_SWITCH_POKEMON
-	pause 30
-	playsound SFX_TALLY
-	pause 30
-	playsound SFX_TRANSACTION
-	pause 30
-	spriteface RUINSOFALPHRESEARCHCENTER_SCIENTIST3, DOWN
-	opentext
-	writetext UnknownText_0x59278
-	waitbutton
-	closetext
-	applymovement RUINSOFALPHRESEARCHCENTER_SCIENTIST3, MovementData_0x59274
-	opentext
-	writetext UnknownText_0x592fa
-	playsound SFX_ITEM
-	waitsfx
-	setflag ENGINE_UNOWN_DEX
-	writetext UnknownText_0x59311
-	waitbutton
-	closetext
-	applymovement RUINSOFALPHRESEARCHCENTER_SCIENTIST3, MovementData_0x59276
-	dotrigger $0
-	special RestartMapMusic
-	end
-
-ScientistScript_0x591d1:
-	faceplayer
-	opentext
-	checkcode VAR_UNOWNCOUNT
-	if_equal 26, UnknownScript_0x591df
-	writetext UnknownText_0x59311
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x591df:
-	writetext UnknownText_0x5935f
-	waitbutton
-	closetext
-	end
-
-ScientistScript_0x591e5:
-	faceplayer
-	opentext
-	checkcode VAR_UNOWNCOUNT
-	if_equal 26, UnknownScript_0x5920b
-	checkflag ENGINE_UNOWN_DEX
-	iftrue UnknownScript_0x59205
-	checkevent EVENT_MADE_UNOWN_APPEAR_IN_RUINS
-	iftrue UnknownScript_0x591ff
-	writetext UnknownText_0x593ed
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x591ff:
-	writetext UnknownText_0x59478
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x59205:
-	writetext UnknownText_0x59445
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x5920b:
-	writetext UnknownText_0x594cb
-	waitbutton
-	closetext
-	clearevent EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_YOUNGSTERS
-	end
-
-ScientistScript_0x59214:
-	faceplayer
-	opentext
-	checkcode VAR_UNOWNCOUNT
-	if_equal 26, UnknownScript_0x5922e
-	checkevent EVENT_MADE_UNOWN_APPEAR_IN_RUINS
-	iftrue UnknownScript_0x59228
-	writetext UnknownText_0x5954f
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x59228:
-	writetext UnknownText_0x595cb
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x5922e:
-	writetext UnknownText_0x59769
-	waitbutton
-	closetext
-	end
-
-MapRuinsofAlphResearchCenterSignpost1Script:
-	opentext
-	checkevent EVENT_RUINS_OF_ALPH_RESEARCH_CENTER_SCIENTIST
-	iftrue UnknownScript_0x59241
-	checkcode VAR_UNOWNCOUNT
-	if_equal 26, UnknownScript_0x59247
-UnknownScript_0x59241:
-	writetext UnknownText_0x597b6
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x59247:
-	writetext UnknownText_0x597d9
-	waitbutton
-	closetext
-	end
-
-MapRuinsofAlphResearchCenterSignpost2Script:
-	opentext
-	checkevent EVENT_RUINS_OF_ALPH_RESEARCH_CENTER_SCIENTIST
-	iftrue UnknownScript_0x5925a
-	checkcode VAR_UNOWNCOUNT
-	if_equal 26, UnknownScript_0x59260
-UnknownScript_0x5925a:
-	writetext UnknownText_0x5980e
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x59260:
-	writetext UnknownText_0x5982d
-	waitbutton
-	special Special_UnownPrinter
-	closetext
-	end
-
-UnknownScript_0x59269:
-	jumptext UnknownText_0x59848
-
-MapRuinsofAlphResearchCenterSignpost0Script:
-	jumptext UnknownText_0x59886
-
-MovementData_0x5926f:
-	step UP
-	step UP
-	step LEFT
-	turn_head UP
-	step_end
-
-MovementData_0x59274:
-	step DOWN
-	step_end
-
-MovementData_0x59276:
-	step UP
-	step_end
-
-UnknownText_0x59278:
-	text "Done!"
-
-	para "I modified your"
-	line "#DEX."
-
-	para "I added an"
-	line "optional #DEX"
-
-	para "to store UNOWN"
-	line "data."
-
-	para "It records them in"
-	line "the sequence that"
-	cont "they were caught."
-	done
-
-UnknownText_0x592fa:
-	text "<PLAYER>'s #DEX"
-	line "was upgraded."
-	done
-
-UnknownText_0x59311:
-	text "The UNOWN you"
-	line "catch will all be"
-	cont "recorded."
-
-	para "Check to see how"
-	line "many kinds exist."
-	done
-
-UnknownText_0x5935f:
-	text "You caught all the"
-	line "UNOWN variations?"
-
-	para "That's a great"
-	line "achievement!"
-
-	para "I've set up the"
-	line "printer here for"
-	cont "handling UNOWN."
-
-	para "Feel free to use"
-	line "it anytime."
-	done
-
-UnknownText_0x593ed:
-	text "The RUINS are"
-	line "about 1500 years"
-	cont "old."
-
-	para "But it's not known"
-	line "why they were"
-	cont "built--or by whom."
-	done
-
-UnknownText_0x59445:
-	text "I wonder how many"
-	line "kinds of #MON"
-	cont "are in the RUINS?"
-	done
-
-UnknownText_0x59478:
-	text "#MON appeared"
-	line "in the RUINS?"
-
-	para "That's incredible"
-	line "news!"
-
-	para "We'll need to"
-	line "investigate this."
-	done
-
-UnknownText_0x594cb:
-	text "Our investigation,"
-	line "with your help, is"
-
-	para "giving us insight"
-	line "into the RUINS."
-
-	para "The RUINS appear"
-	line "to have been built"
-
-	para "as a habitat for"
-	line "#MON."
-	done
-
-UnknownText_0x5954f:
-	text "There are odd pat-"
-	line "terns drawn on the"
-
-	para "walls of the"
-	line "RUINS."
-
-	para "They must be the"
-	line "keys for unravel-"
-	cont "ing the mystery"
-	cont "of the RUINS."
-	done
-
-UnknownText_0x595cb:
-	text "The strange #-"
-	line "MON you saw in the"
-	cont "RUINS?"
-
-	para "They appear to be"
-	line "very much like the"
-
-	para "drawings on the"
-	line "walls there."
-
-	para "Hmm…"
-
-	para "That must mean"
-	line "there are many"
-	cont "kinds of them…"
-	done
-
-; possibly unused
-UnknownText_0x59669:
-	text "We think something"
-	line "caused the cryptic"
-
-	para "patterns to appear"
-	line "in the RUINS."
-
-	para "We've focused our"
-	line "studies on that."
-	done
-
-; possibly unused
-UnknownText_0x596d3:
-	text "According to my"
-	line "research…"
-
-	para "Those mysterious"
-	line "patterns appeared"
-
-	para "when the #COM"
-	line "CENTER was built."
-
-	para "It must mean that"
-	line "radio waves have"
-
-	para "some sort of a"
-	line "link…"
-	done
-
-UnknownText_0x59769:
-	text "Why did those"
-	line "ancient patterns"
-
-	para "appear on the wall"
-	line "now?"
-
-	para "The mystery"
-	line "deepens…"
-	done
-
-UnknownText_0x597b6:
-	text "RUINS OF ALPH"
-
-	para "Exploration"
-	line "Year 10"
-	done
-
-UnknownText_0x597d9:
-	text "Mystery #MON"
-	line "Name: UNOWN"
-
-	para "A total of 26"
-	line "kinds found."
-	done
-
-UnknownText_0x5980e:
-	text "This doesn't seem"
-	line "to work yet."
-	done
-
-UnknownText_0x5982d:
-	text "UNOWN may be"
-	line "printed out."
-	done
-
-; possibly unused
-UnknownText_0x59848:
-	text "It's a photo of"
-	line "the RESEARCH"
-
-	para "CENTER'S founder,"
-	line "PROF.SILKTREE."
-	done
-
-UnknownText_0x59886:
-	text "There are many"
-	line "academic books."
-
-	para "Ancient Ruins…"
-	line "Mysteries of the"
-	cont "Ancients…"
-	done
-
-RuinsofAlphResearchCenter_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 2
-	warp_def $7, $2, 6, RUINS_OF_ALPH_OUTSIDE
-	warp_def $7, $3, 6, RUINS_OF_ALPH_OUTSIDE
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 3
-	signpost 5, 6, SIGNPOST_READ, MapRuinsofAlphResearchCenterSignpost0Script
-	signpost 4, 3, SIGNPOST_READ, MapRuinsofAlphResearchCenterSignpost1Script
-	signpost 1, 7, SIGNPOST_READ, MapRuinsofAlphResearchCenterSignpost2Script
-
-.PersonEvents:
-	db 3
-	person_event SPRITE_SCIENTIST, 5, 4, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ScientistScript_0x591e5, -1
-	person_event SPRITE_SCIENTIST, 2, 5, SPRITEMOVEDATA_WANDER, 1, 2, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ScientistScript_0x59214, -1
-	person_event SPRITE_SCIENTIST, 5, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ScientistScript_0x591d1, EVENT_RUINS_OF_ALPH_RESEARCH_CENTER_SCIENTIST
--- a/maps/RuinsofAlphResearchCenter.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-;()

\ No newline at end of file
--- a/maps/SafariZoneWardensHome.asm
+++ b/maps/SafariZoneWardensHome.asm
@@ -97,4 +97,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_LASS, 4, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, WardensGranddaughter, -1
+	person_event SPRITE_LASS, 4, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, WardensGranddaughter, -1
--- a/maps/SaffronCity.asm
+++ b/maps/SaffronCity.asm
@@ -14,8 +14,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
 	dbw MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
@@ -103,7 +101,7 @@
 SaffronCityMagnetTrainStationSign:
 	jumptext SaffronCityMagnetTrainStationSignText
 
-SaffronCityPokeCenterSign:
+SaffronCityPokecenterSign:
 	jumpstd pokecentersign
 
 SaffronCityMartSign:
@@ -300,16 +298,16 @@
 	signpost 21, 15, SIGNPOST_READ, SilphCoSign
 	signpost 29, 25, SIGNPOST_READ, MrPsychicsHouseSign
 	signpost 5, 11, SIGNPOST_READ, SaffronCityMagnetTrainStationSign
-	signpost 29, 10, SIGNPOST_READ, SaffronCityPokeCenterSign
+	signpost 29, 10, SIGNPOST_READ, SaffronCityPokecenterSign
 	signpost 11, 26, SIGNPOST_READ, SaffronCityMartSign
 
 .PersonEvents:
 	db 8
-	person_event SPRITE_LASS, 14, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, LassScript_0x19932a, -1
-	person_event SPRITE_POKEFAN_M, 30, 19, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x19933e, -1
-	person_event SPRITE_COOLTRAINER_M, 7, 32, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x199352, -1
-	person_event SPRITE_COOLTRAINER_F, 24, 20, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x199355, -1
-	person_event SPRITE_FISHER, 12, 27, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, FisherScript_0x199358, -1
-	person_event SPRITE_YOUNGSTER, 19, 15, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x19936c, -1
-	person_event SPRITE_YOUNGSTER, 22, 35, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x19936f, -1
-	person_event SPRITE_LASS, 8, 19, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x199372, -1
+	person_event SPRITE_LASS, 14, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, LassScript_0x19932a, -1
+	person_event SPRITE_POKEFAN_M, 30, 19, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x19933e, -1
+	person_event SPRITE_COOLTRAINER_M, 7, 32, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x199352, -1
+	person_event SPRITE_COOLTRAINER_F, 24, 20, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x199355, -1
+	person_event SPRITE_FISHER, 12, 27, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, FisherScript_0x199358, -1
+	person_event SPRITE_YOUNGSTER, 19, 15, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x19936c, -1
+	person_event SPRITE_YOUNGSTER, 22, 35, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x19936f, -1
+	person_event SPRITE_LASS, 8, 19, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x199372, -1
--- a/maps/SaffronGym.asm
+++ b/maps/SaffronGym.asm
@@ -52,7 +52,7 @@
 MediumRebeccaScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x18a034
+	writetext MediumRebeccaAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -63,7 +63,7 @@
 PsychicFranklinScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x18a0a6
+	writetext PsychicFranklinAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -74,7 +74,7 @@
 MediumDorisScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x18a136
+	writetext MediumDorisAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -85,7 +85,7 @@
 PsychicJaredScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x18a1b3
+	writetext PsychicJaredAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -206,7 +206,7 @@
 	line "Far too strong…"
 	done
 
-UnknownText_0x18a034:
+MediumRebeccaAfterBattleText:
 	text "What is the source"
 	line "of your power?"
 	done
@@ -222,7 +222,7 @@
 	line "power than mine!"
 	done
 
-UnknownText_0x18a0a6:
+PsychicFranklinAfterBattleText:
 	text "You made your soul"
 	line "stronger, not just"
 	cont "your abilities."
@@ -241,7 +241,7 @@
 	line "I still lost…"
 	done
 
-UnknownText_0x18a136:
+MediumDorisAfterBattleText:
 	text "Darn! I forgot"
 	line "that I predicted I"
 	cont "would lose to you."
@@ -257,7 +257,7 @@
 	text "I was no match…"
 	done
 
-UnknownText_0x18a1b3:
+PsychicJaredAfterBattleText:
 	text "KARATE KING, the"
 	line "master of the"
 
@@ -338,9 +338,9 @@
 
 .PersonEvents:
 	db 6
-	person_event SPRITE_SABRINA, 8, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, SabrinaScript_0x189c2e, -1
-	person_event SPRITE_GRANNY, 16, 17, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 3, TrainerMediumRebecca, -1
-	person_event SPRITE_YOUNGSTER, 16, 3, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerPsychicFranklin, -1
-	person_event SPRITE_GRANNY, 4, 3, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 2, TrainerMediumDoris, -1
-	person_event SPRITE_YOUNGSTER, 4, 17, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 2, TrainerPsychicJared, -1
-	person_event SPRITE_GYM_GUY, 14, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, SaffronGymGuyScript, -1
+	person_event SPRITE_SABRINA, 8, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, SabrinaScript_0x189c2e, -1
+	person_event SPRITE_GRANNY, 16, 17, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 3, TrainerMediumRebecca, -1
+	person_event SPRITE_YOUNGSTER, 16, 3, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerPsychicFranklin, -1
+	person_event SPRITE_GRANNY, 4, 3, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 2, TrainerMediumDoris, -1
+	person_event SPRITE_YOUNGSTER, 4, 17, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 2, TrainerPsychicJared, -1
+	person_event SPRITE_GYM_GUY, 14, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, SaffronGymGuyScript, -1
--- a/maps/SaffronMart.asm
+++ b/maps/SaffronMart.asm
@@ -55,5 +55,5 @@
 .PersonEvents:
 	db 3
 	person_event SPRITE_CLERK, 3, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ClerkScript_0x18a3bf, -1
-	person_event SPRITE_COOLTRAINER_M, 2, 7, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x18a3c6, -1
-	person_event SPRITE_COOLTRAINER_F, 6, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x18a3c9, -1
+	person_event SPRITE_COOLTRAINER_M, 2, 7, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x18a3c6, -1
+	person_event SPRITE_COOLTRAINER_F, 6, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x18a3c9, -1
--- a/maps/SaffronPokeCenter1F.asm
+++ /dev/null
@@ -1,135 +1,0 @@
-const_value set 2
-	const SAFFRONPOKECENTER1F_NURSE
-	const SAFFRONPOKECENTER1F_TEACHER
-	const SAFFRONPOKECENTER1F_FISHER
-	const SAFFRONPOKECENTER1F_YOUNGSTER
-
-SaffronPokeCenter1F_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-NurseScript_0x18a47d:
-	jumpstd pokecenternurse
-
-TeacherScript_0x18a480:
-	special Mobile_DummyReturnFalse
-	iftrue .mobile
-	jumptextfaceplayer UnknownText_0x18a4a3
-
-.mobile
-	jumptextfaceplayer UnknownText_0x18a532
-
-FisherScript_0x18a48c:
-	faceplayer
-	opentext
-	checkevent EVENT_RETURNED_MACHINE_PART
-	iftrue .SolvedKantoPowerCrisis
-	writetext UnknownText_0x18a5d3
-	waitbutton
-	closetext
-	end
-
-.SolvedKantoPowerCrisis:
-	writetext UnknownText_0x18a62e
-	waitbutton
-	closetext
-	end
-
-YoungsterScript_0x18a4a0:
-	jumptextfaceplayer UnknownText_0x18a6c5
-
-UnknownText_0x18a4a3:
-	text "What are JOHTO's"
-	line "#MON CENTERS"
-	cont "like?"
-
-	para "…Oh, I see. So"
-	line "they're not much"
-
-	para "different from the"
-	line "ones in KANTO."
-
-	para "I can go to JOHTO"
-	line "without worrying,"
-	cont "then!"
-	done
-
-UnknownText_0x18a532:
-	text "What are JOHTO's"
-	line "#MON CENTERS"
-	cont "like?"
-
-	para "…Oh, I see."
-	line "So they let you"
-
-	para "link with people"
-	line "far away?"
-
-	para "Then I'll get my"
-	line "friend in JOHTO to"
-
-	para "catch a MARILL and"
-	line "trade it to me!"
-	done
-
-UnknownText_0x18a5d3:
-	text "I just happened to"
-	line "come through ROCK"
-
-	para "TUNNEL. There was"
-	line "some commotion at"
-	cont "the POWER PLANT."
-	done
-
-UnknownText_0x18a62e:
-	text "Caves collapse"
-	line "easily."
-
-	para "Several caves have"
-	line "disappeared in the"
-
-	para "past few years,"
-	line "like the one out-"
-	cont "side CERULEAN."
-
-	para "As a pro HIKER,"
-	line "that's common"
-	cont "knowledge."
-	done
-
-UnknownText_0x18a6c5:
-	text "SILPH CO.'s HEAD"
-	line "OFFICE and the"
-
-	para "MAGNET TRAIN STA-"
-	line "TION--they're the"
-
-	para "places to see in"
-	line "SAFFRON."
-	done
-
-SaffronPokeCenter1F_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 3
-	warp_def $7, $3, 4, SAFFRON_CITY
-	warp_def $7, $4, 4, SAFFRON_CITY
-	warp_def $7, $0, 1, POKECENTER_2F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 4
-	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x18a47d, -1
-	person_event SPRITE_TEACHER, 2, 7, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, TeacherScript_0x18a480, -1
-	person_event SPRITE_FISHER, 6, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, FisherScript_0x18a48c, -1
-	person_event SPRITE_YOUNGSTER, 4, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x18a4a0, -1
--- a/maps/SaffronPokeCenter2FBeta.asm
+++ /dev/null
@@ -1,23 +1,0 @@
-SaffronPokeCenter2FBeta_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-SaffronPokeCenter2FBeta_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 1
-	warp_def $7, $0, 3, SAFFRON_POKECENTER_1F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 0
--- /dev/null
+++ b/maps/SaffronPokecenter1F.asm
@@ -1,0 +1,135 @@
+const_value set 2
+	const SAFFRONPOKECENTER1F_NURSE
+	const SAFFRONPOKECENTER1F_TEACHER
+	const SAFFRONPOKECENTER1F_FISHER
+	const SAFFRONPOKECENTER1F_YOUNGSTER
+
+SaffronPokecenter1F_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+NurseScript_0x18a47d:
+	jumpstd pokecenternurse
+
+TeacherScript_0x18a480:
+	special Mobile_DummyReturnFalse
+	iftrue .mobile
+	jumptextfaceplayer UnknownText_0x18a4a3
+
+.mobile
+	jumptextfaceplayer UnknownText_0x18a532
+
+FisherScript_0x18a48c:
+	faceplayer
+	opentext
+	checkevent EVENT_RETURNED_MACHINE_PART
+	iftrue .SolvedKantoPowerCrisis
+	writetext UnknownText_0x18a5d3
+	waitbutton
+	closetext
+	end
+
+.SolvedKantoPowerCrisis:
+	writetext UnknownText_0x18a62e
+	waitbutton
+	closetext
+	end
+
+YoungsterScript_0x18a4a0:
+	jumptextfaceplayer UnknownText_0x18a6c5
+
+UnknownText_0x18a4a3:
+	text "What are JOHTO's"
+	line "#MON CENTERS"
+	cont "like?"
+
+	para "…Oh, I see. So"
+	line "they're not much"
+
+	para "different from the"
+	line "ones in KANTO."
+
+	para "I can go to JOHTO"
+	line "without worrying,"
+	cont "then!"
+	done
+
+UnknownText_0x18a532:
+	text "What are JOHTO's"
+	line "#MON CENTERS"
+	cont "like?"
+
+	para "…Oh, I see."
+	line "So they let you"
+
+	para "link with people"
+	line "far away?"
+
+	para "Then I'll get my"
+	line "friend in JOHTO to"
+
+	para "catch a MARILL and"
+	line "trade it to me!"
+	done
+
+UnknownText_0x18a5d3:
+	text "I just happened to"
+	line "come through ROCK"
+
+	para "TUNNEL. There was"
+	line "some commotion at"
+	cont "the POWER PLANT."
+	done
+
+UnknownText_0x18a62e:
+	text "Caves collapse"
+	line "easily."
+
+	para "Several caves have"
+	line "disappeared in the"
+
+	para "past few years,"
+	line "like the one out-"
+	cont "side CERULEAN."
+
+	para "As a pro HIKER,"
+	line "that's common"
+	cont "knowledge."
+	done
+
+UnknownText_0x18a6c5:
+	text "SILPH CO.'s HEAD"
+	line "OFFICE and the"
+
+	para "MAGNET TRAIN STA-"
+	line "TION--they're the"
+
+	para "places to see in"
+	line "SAFFRON."
+	done
+
+SaffronPokecenter1F_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 3
+	warp_def $7, $3, 4, SAFFRON_CITY
+	warp_def $7, $4, 4, SAFFRON_CITY
+	warp_def $7, $0, 1, POKECENTER_2F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 4
+	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x18a47d, -1
+	person_event SPRITE_TEACHER, 2, 7, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, TeacherScript_0x18a480, -1
+	person_event SPRITE_FISHER, 6, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, FisherScript_0x18a48c, -1
+	person_event SPRITE_YOUNGSTER, 4, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x18a4a0, -1
--- /dev/null
+++ b/maps/SaffronPokecenter2FBeta.asm
@@ -1,0 +1,23 @@
+SaffronPokecenter2FBeta_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+SaffronPokecenter2FBeta_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 1
+	warp_def $7, $0, 3, SAFFRON_POKECENTER_1F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 0
--- a/maps/SaffronTrainStation.asm
+++ b/maps/SaffronTrainStation.asm
@@ -7,14 +7,12 @@
 SaffronTrainStation_MapScriptHeader:
 .MapTriggers:
 	db 1
+	maptrigger .DummyTrigger
 
-	; triggers
-	maptrigger .Trigger0
-
 .MapCallbacks:
 	db 0
 
-.Trigger0:
+.DummyTrigger:
 	end
 
 OfficerScript_0x18a81e:
@@ -240,4 +238,4 @@
 	person_event SPRITE_OFFICER, 9, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, OfficerScript_0x18a81e, -1
 	person_event SPRITE_GYM_GUY, 14, 10, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GymGuyScript_0x18a875, -1
 	person_event SPRITE_TEACHER, 11, 6, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, TeacherScript_0x18a889, EVENT_SAFFRON_TRAIN_STATION_POPULATION
-	person_event SPRITE_LASS, 10, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x18a88c, EVENT_SAFFRON_TRAIN_STATION_POPULATION
+	person_event SPRITE_LASS, 10, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x18a88c, EVENT_SAFFRON_TRAIN_STATION_POPULATION
--- a/maps/SeafoamGym.asm
+++ b/maps/SeafoamGym.asm
@@ -5,14 +5,12 @@
 SeafoamGym_MapScriptHeader:
 .MapTriggers:
 	db 1
+	maptrigger .DummyTrigger
 
-	; triggers
-	dw UnknownScript_0x1ab4fa, 0
-
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x1ab4fa:
+.DummyTrigger:
 	end
 
 BlaineScript_0x1ab4fb:
@@ -175,5 +173,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_BLAINE, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, BlaineScript_0x1ab4fb, -1
-	person_event SPRITE_GYM_GUY, 5, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, SeafoamGymGuyScript, EVENT_SEAFOAM_GYM_GYM_GUY
+	person_event SPRITE_BLAINE, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, BlaineScript_0x1ab4fb, -1
+	person_event SPRITE_GYM_GUY, 5, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, SeafoamGymGuyScript, EVENT_SEAFOAM_GYM_GYM_GUY
--- a/maps/SilphCo1F.asm
+++ b/maps/SilphCo1F.asm
@@ -72,5 +72,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_RECEPTIONIST, 2, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, SilphCoReceptionist, -1
-	person_event SPRITE_OFFICER, 1, 13, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, OfficerScript_0x18abe8, -1
+	person_event SPRITE_RECEPTIONIST, 2, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, SilphCoReceptionist, -1
+	person_event SPRITE_OFFICER, 1, 13, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, OfficerScript_0x18abe8, -1
--- a/maps/SilverCaveOutside.asm
+++ b/maps/SilverCaveOutside.asm
@@ -4,8 +4,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
 	dbw MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
@@ -12,7 +10,7 @@
 	setflag ENGINE_FLYPOINT_SILVER_CAVE
 	return
 
-MtSilverPokeCenterSign:
+MtSilverPokecenterSign:
 	jumpstd pokecentersign
 
 MtSilverSign:
@@ -39,7 +37,7 @@
 
 .Signposts:
 	db 3
-	signpost 19, 24, SIGNPOST_READ, MtSilverPokeCenterSign
+	signpost 19, 24, SIGNPOST_READ, MtSilverPokecenterSign
 	signpost 13, 17, SIGNPOST_READ, MtSilverSign
 	signpost 25, 9, SIGNPOST_ITEM, SilverCaveOutsideHiddenFullRestore
 
--- a/maps/SilverCavePokeCenter1F.asm
+++ /dev/null
@@ -1,51 +1,0 @@
-const_value set 2
-	const SILVERCAVEPOKECENTER1F_NURSE
-	const SILVERCAVEPOKECENTER1F_GRANNY
-
-SilverCavePokeCenter1F_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-NurseScript_0x1ae59a:
-	jumpstd pokecenternurse
-
-GrannyScript_0x1ae59d:
-	jumptextfaceplayer UnknownText_0x1ae5a0
-
-UnknownText_0x1ae5a0:
-	text "Trainers who seek"
-	line "power climb MT."
-
-	para "SILVER despite its"
-	line "many dangers…"
-
-	para "With their trusted"
-	line "#MON, they must"
-
-	para "feel they can go"
-	line "anywhere…"
-	done
-
-SilverCavePokeCenter1F_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 3
-	warp_def $7, $3, 1, SILVER_CAVE_OUTSIDE
-	warp_def $7, $4, 1, SILVER_CAVE_OUTSIDE
-	warp_def $7, $0, 1, POKECENTER_2F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 2
-	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x1ae59a, -1
-	person_event SPRITE_GRANNY, 5, 1, SPRITEMOVEDATA_STANDING_LEFT, 1, 2, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GrannyScript_0x1ae59d, -1
--- /dev/null
+++ b/maps/SilverCavePokecenter1F.asm
@@ -1,0 +1,51 @@
+const_value set 2
+	const SILVERCAVEPOKECENTER1F_NURSE
+	const SILVERCAVEPOKECENTER1F_GRANNY
+
+SilverCavePokecenter1F_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+NurseScript_0x1ae59a:
+	jumpstd pokecenternurse
+
+GrannyScript_0x1ae59d:
+	jumptextfaceplayer UnknownText_0x1ae5a0
+
+UnknownText_0x1ae5a0:
+	text "Trainers who seek"
+	line "power climb MT."
+
+	para "SILVER despite its"
+	line "many dangers…"
+
+	para "With their trusted"
+	line "#MON, they must"
+
+	para "feel they can go"
+	line "anywhere…"
+	done
+
+SilverCavePokecenter1F_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 3
+	warp_def $7, $3, 1, SILVER_CAVE_OUTSIDE
+	warp_def $7, $4, 1, SILVER_CAVE_OUTSIDE
+	warp_def $7, $0, 1, POKECENTER_2F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 2
+	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x1ae59a, -1
+	person_event SPRITE_GRANNY, 5, 1, SPRITEMOVEDATA_STANDING_LEFT, 1, 2, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GrannyScript_0x1ae59d, -1
--- a/maps/SilverCaveRoom3.asm
+++ b/maps/SilverCaveRoom3.asm
@@ -66,4 +66,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_RED, 10, 9, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, Red, EVENT_RED_IN_MT_SILVER
+	person_event SPRITE_RED, 10, 9, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, Red, EVENT_RED_IN_MT_SILVER
--- a/maps/SlowpokeWellB1F.asm
+++ b/maps/SlowpokeWellB1F.asm
@@ -25,7 +25,7 @@
 GruntM29Script:
 	end_if_just_battled
 	opentext
-	writetext TrainerGruntM29SlowpokeProfitText
+	writetext GruntM29AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -79,7 +79,7 @@
 GruntM2Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5aaf2
+	writetext GruntM2AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -90,7 +90,7 @@
 GruntF1Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5ab8d
+	writetext GruntF1AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -207,7 +207,7 @@
 	line "my day!"
 	done
 
-TrainerGruntM29SlowpokeProfitText:
+GruntM29AfterBattleText:
 	text "Sure, we've been"
 	line "hacking the tails"
 
@@ -266,7 +266,7 @@
 	line "Too strong…"
 	done
 
-UnknownText_0x5aaf2:
+GruntM2AfterBattleText:
 	text "We need the money,"
 	line "but selling SLOW-"
 	cont "POKETAILS?"
@@ -286,7 +286,7 @@
 	text "You rotten brat!"
 	done
 
-UnknownText_0x5ab8d:
+GruntF1AfterBattleText:
 	text "SLOWPOKETAILS"
 	line "grow back fast!"
 
@@ -340,9 +340,9 @@
 	person_event SPRITE_ROCKET, 7, 15, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 3, TrainerGruntM29, EVENT_SLOWPOKE_WELL_ROCKETS
 	person_event SPRITE_ROCKET, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 1, TrainerGruntM1, EVENT_SLOWPOKE_WELL_ROCKETS
 	person_event SPRITE_ROCKET, 6, 5, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 2, TrainerGruntM2, EVENT_SLOWPOKE_WELL_ROCKETS
-	person_event SPRITE_ROCKET_GIRL, 4, 10, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 4, TrainerGruntF1, EVENT_SLOWPOKE_WELL_ROCKETS
-	person_event SPRITE_SLOWPOKE, 4, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, SlowpokeScript_0x5a681, EVENT_SLOWPOKE_WELL_SLOWPOKES
-	person_event SPRITE_SLOWPOKE, 2, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, SlowpokeScript_0x5a695, EVENT_SLOWPOKE_WELL_SLOWPOKES
+	person_event SPRITE_ROCKET_GIRL, 4, 10, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 4, TrainerGruntF1, EVENT_SLOWPOKE_WELL_ROCKETS
+	person_event SPRITE_SLOWPOKE, 4, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, SlowpokeScript_0x5a681, EVENT_SLOWPOKE_WELL_SLOWPOKES
+	person_event SPRITE_SLOWPOKE, 2, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, SlowpokeScript_0x5a695, EVENT_SLOWPOKE_WELL_SLOWPOKES
 	person_event SPRITE_KURT, 14, 16, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, KurtScript_0x5a5d5, EVENT_SLOWPOKE_WELL_KURT
 	person_event SPRITE_BOULDER, 2, 3, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SlowpokeWellB1FBoulder, -1
 	person_event SPRITE_POKE_BALL, 3, 10, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, SlowpokeWellB1FSuperPotion, EVENT_SLOWPOKE_WELL_B1F_SUPER_POTION
--- a/maps/SoulHouse.asm
+++ b/maps/SoulHouse.asm
@@ -89,7 +89,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_GRAMPS, 2, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, MrFuji, -1
-	person_event SPRITE_TEACHER, 3, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, TeacherScript_0x7ec4a, -1
-	person_event SPRITE_LASS, 5, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, LassScript_0x7ec4d, -1
-	person_event SPRITE_GRANNY, 3, 1, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, GrannyScript_0x7ec50, -1
+	person_event SPRITE_GRAMPS, 2, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, MrFuji, -1
+	person_event SPRITE_TEACHER, 3, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, TeacherScript_0x7ec4a, -1
+	person_event SPRITE_LASS, 5, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, LassScript_0x7ec4d, -1
+	person_event SPRITE_GRANNY, 3, 1, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, GrannyScript_0x7ec50, -1
--- a/maps/SproutTower1F.asm
+++ b/maps/SproutTower1F.asm
@@ -31,7 +31,7 @@
 SageChowScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x184583
+	writetext SageChowAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -55,7 +55,7 @@
 	text "Th-Thank you!"
 	done
 
-UnknownText_0x184583:
+SageChowAfterBattleText:
 	text "All living beings"
 	line "coexist through"
 	cont "cooperation."
@@ -124,9 +124,9 @@
 
 .PersonEvents:
 	db 6
-	person_event SPRITE_SAGE, 4, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, SageScript_0x1844fe, -1
-	person_event SPRITE_SAGE, 7, 6, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, SageScript_0x184501, -1
+	person_event SPRITE_SAGE, 4, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, SageScript_0x1844fe, -1
+	person_event SPRITE_SAGE, 7, 6, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, SageScript_0x184501, -1
 	person_event SPRITE_GRANNY, 12, 11, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GrannyScript_0x184504, -1
 	person_event SPRITE_TEACHER, 9, 9, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, TeacherScript_0x184507, -1
-	person_event SPRITE_SAGE, 5, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 4, TrainerSageChow, -1
+	person_event SPRITE_SAGE, 5, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 4, TrainerSageChow, -1
 	person_event SPRITE_POKE_BALL, 7, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, SproutTower1FParlyzHeal, EVENT_SPROUT_TOWER1F_PARLYZ_HEAL
--- a/maps/SproutTower2F.asm
+++ b/maps/SproutTower2F.asm
@@ -16,7 +16,7 @@
 SageNicoScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1847ff
+	writetext SageNicoAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -27,7 +27,7 @@
 SageEdmondScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x18486f
+	writetext SageEdmondAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -49,7 +49,7 @@
 	line "I'm too weak."
 	done
 
-UnknownText_0x1847ff:
+SageNicoAfterBattleText:
 	text "The flexible pil-"
 	line "lar protects the"
 
@@ -66,7 +66,7 @@
 	text "Oh, I'm weak!"
 	done
 
-UnknownText_0x18486f:
+SageEdmondAfterBattleText:
 	text "I tried to copy"
 	line "BELLSPROUT's"
 
@@ -104,6 +104,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_SAGE, 3, 12, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 4, TrainerSageNico, -1
-	person_event SPRITE_SAGE, 14, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 5, TrainerSageEdmond, -1
+	person_event SPRITE_SAGE, 3, 12, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 4, TrainerSageNico, -1
+	person_event SPRITE_SAGE, 14, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 5, TrainerSageEdmond, -1
 	person_event SPRITE_POKE_BALL, 1, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, SproutTower2FXAccuracy, EVENT_SPROUT_TOWER2F_X_ACCURACY
--- a/maps/SproutTower3F.asm
+++ b/maps/SproutTower3F.asm
@@ -10,18 +10,16 @@
 SproutTower3F_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
 
-	; triggers
-	dw UnknownScript_0x184945, 0
-	dw UnknownScript_0x184946, 0
-
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x184945:
+.DummyTrigger0:
 	end
 
-UnknownScript_0x184946:
+.DummyTrigger1:
 	end
 
 UnknownScript_0x184947:
@@ -100,7 +98,7 @@
 SageJinScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x184dfa
+	writetext SageJinAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -111,7 +109,7 @@
 SageTroyScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x184ea4
+	writetext SageTroyAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -122,7 +120,7 @@
 SageNealScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x184f12
+	writetext SageNealAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -274,7 +272,7 @@
 	line "incomplete…"
 	done
 
-UnknownText_0x184dfa:
+SageJinAfterBattleText:
 	text "As #MON grow"
 	line "stronger, so does"
 	cont "the trainer."
@@ -297,7 +295,7 @@
 	line "real!"
 	done
 
-UnknownText_0x184ea4:
+SageTroyAfterBattleText:
 	text "It is not far to"
 	line "the ELDER."
 	done
@@ -313,7 +311,7 @@
 	line "is bright!"
 	done
 
-UnknownText_0x184f12:
+SageNealAfterBattleText:
 	text "Let there be light"
 	line "on your journey."
 	done
@@ -354,10 +352,10 @@
 
 .PersonEvents:
 	db 7
-	person_event SPRITE_SAGE, 13, 8, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerSageJin, -1
-	person_event SPRITE_SAGE, 8, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 2, TrainerSageTroy, -1
-	person_event SPRITE_SAGE, 2, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, SageLiScript, -1
-	person_event SPRITE_SAGE, 11, 11, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerSageNeal, -1
+	person_event SPRITE_SAGE, 13, 8, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerSageJin, -1
+	person_event SPRITE_SAGE, 8, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 2, TrainerSageTroy, -1
+	person_event SPRITE_SAGE, 2, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, SageLiScript, -1
+	person_event SPRITE_SAGE, 11, 11, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerSageNeal, -1
 	person_event SPRITE_POKE_BALL, 14, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, SproutTower3FPotion, EVENT_SPROUT_TOWER_3F_POTION
 	person_event SPRITE_POKE_BALL, 1, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, SproutTower3FEscapeRope, EVENT_SPROUT_TOWER_3F_ESCAPE_ROPE
 	person_event SPRITE_SILVER, 4, 10, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_RIVAL_SPROUT_TOWER
--- a/maps/TeamRocketBaseB1F.asm
+++ b/maps/TeamRocketBaseB1F.asm
@@ -9,21 +9,16 @@
 TeamRocketBaseB1F_MapScriptHeader:
 .MapTriggers:
 	db 1
+	maptrigger .DummyTrigger
 
-	; triggers
-	maptrigger .Trigger0
-
 .MapCallbacks:
 	db 1
+	dbw MAPCALLBACK_OBJECTS, .HideSecurityGrunt
 
-	; callbacks
-
-	dbw MAPCALLBACK_OBJECTS, .Callback1
-
-.Trigger0:
+.DummyTrigger:
 	end
 
-.Callback1:
+.HideSecurityGrunt:
 	disappear TEAMROCKETBASEB1F_ROCKET1
 	return
 
@@ -491,7 +486,7 @@
 ScientistJedScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x6cc16
+	writetext ScientistJedAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -502,7 +497,7 @@
 GruntM16Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x6cd1b
+	writetext GruntM16AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -673,7 +668,7 @@
 	text "I get it…"
 	done
 
-UnknownText_0x6cc16:
+ScientistJedAfterBattleText:
 	text "All right. I'll"
 	line "divulge a secret"
 	cont "about our hideout."
@@ -704,7 +699,7 @@
 	text "Kaboom!"
 	done
 
-UnknownText_0x6cd1b:
+GruntM16AfterBattleText:
 	text "I don't even know"
 	line "where the traps"
 	cont "are planted."
@@ -796,7 +791,7 @@
 	db 6
 	person_event SPRITE_ROCKET, 0, 0, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_SECURITY_GRUNTS
 	person_event SPRITE_ROCKET, 4, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 3, TrainerGruntM16, EVENT_TEAM_ROCKET_BASE_POPULATION
-	person_event SPRITE_SCIENTIST, 12, 18, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerScientistJed, EVENT_TEAM_ROCKET_BASE_POPULATION
+	person_event SPRITE_SCIENTIST, 12, 18, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerScientistJed, EVENT_TEAM_ROCKET_BASE_POPULATION
 	person_event SPRITE_POKE_BALL, 6, 27, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, TeamRocketBaseB1FHyperPotion, EVENT_TEAM_ROCKET_BASE_B1F_HYPER_POTION
 	person_event SPRITE_POKE_BALL, 15, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, TeamRocketBaseB1FNugget, EVENT_TEAM_ROCKET_BASE_B1F_NUGGET
 	person_event SPRITE_POKE_BALL, 12, 21, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, TeamRocketBaseB1FGuardSpec, EVENT_TEAM_ROCKET_BASE_B1F_GUARD_SPEC
--- a/maps/TeamRocketBaseB2F.asm
+++ b/maps/TeamRocketBaseB2F.asm
@@ -17,33 +17,28 @@
 TeamRocketBaseB2F_MapScriptHeader:
 .MapTriggers:
 	db 4
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
+	maptrigger .DummyTrigger2
+	maptrigger .DummyTrigger3
 
-	; triggers
-	dw UnknownScript_0x6cf85, 0
-	dw UnknownScript_0x6cf86, 0
-	dw UnknownScript_0x6cf87, 0
-	dw UnknownScript_0x6cf88, 0
-
 .MapCallbacks:
 	db 1
+	dbw MAPCALLBACK_TILES, .TransmitterDoorCallback
 
-	; callbacks
-
-	dbw MAPCALLBACK_TILES, TransmitterDoorCallback
-
-UnknownScript_0x6cf85:
+.DummyTrigger0:
 	end
 
-UnknownScript_0x6cf86:
+.DummyTrigger1:
 	end
 
-UnknownScript_0x6cf87:
+.DummyTrigger2:
 	end
 
-UnknownScript_0x6cf88:
+.DummyTrigger3:
 	end
 
-TransmitterDoorCallback:
+.TransmitterDoorCallback:
 	checkevent EVENT_OPENED_DOOR_TO_ROCKET_HIDEOUT_TRANSMITTER
 	iftrue .Change
 	return
@@ -199,7 +194,7 @@
 GruntM17Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x6db88
+	writetext GruntM17AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -210,7 +205,7 @@
 GruntM18Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x6dc1a
+	writetext GruntM18AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -221,7 +216,7 @@
 GruntM19Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x6dcd1
+	writetext GruntM19AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -319,12 +314,10 @@
 	setevent EVENT_SECURITY_CAMERA_5
 	end
 
-MapTeamRocketBaseB2FSignpostPtr1:
-	dw EVENT_OPENED_DOOR_TO_ROCKET_HIDEOUT_TRANSMITTER
-	dw MapTeamRocketBaseB2FSignpost1Script
+TeamRocketBaseB2FLockedDoor:
+	dw EVENT_OPENED_DOOR_TO_ROCKET_HIDEOUT_TRANSMITTER, .Script
 
-
-MapTeamRocketBaseB2FSignpost1Script:
+.Script:
 	opentext
 	checkevent EVENT_LEARNED_HAIL_GIOVANNI
 	iftrue UnknownScript_0x6d1e8
@@ -344,16 +337,16 @@
 	waitsfx
 	end
 
-MapTeamRocketBaseB2FSignpost21Script:
+TeamRocketBaseB2FTransmitterScript:
 	opentext
 	checkevent EVENT_CLEARED_ROCKET_HIDEOUT
-	iftrue UnknownScript_0x6d207
+	iftrue .Deactivated
 	writetext UnknownText_0x6dda7
 	waitbutton
 	closetext
 	end
 
-UnknownScript_0x6d207:
+.Deactivated:
 	writetext UnknownText_0x6de03
 	waitbutton
 	closetext
@@ -826,7 +819,7 @@
 	text "What? I lost?"
 	done
 
-UnknownText_0x6db88:
+GruntM17AfterBattleText:
 	text "Heh, I'm just a"
 	line "GRUNT."
 
@@ -847,7 +840,7 @@
 	text "I knew I'd lose…"
 	done
 
-UnknownText_0x6dc1a:
+GruntM18AfterBattleText:
 	text "I got wiped out on"
 	line "the last mission"
 	cont "by a kid too."
@@ -871,7 +864,7 @@
 	text "Grrrr…"
 	done
 
-UnknownText_0x6dcd1:
+GruntM19AfterBattleText:
 	text "Heh, only the boss"
 	line "knows the password"
 	cont "for that door."
@@ -942,34 +935,34 @@
 
 .Signposts:
 	db 23
-	signpost 12, 14, SIGNPOST_IFNOTSET, MapTeamRocketBaseB2FSignpostPtr1
-	signpost 12, 15, SIGNPOST_IFNOTSET, MapTeamRocketBaseB2FSignpostPtr1
-	signpost 9, 17, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
-	signpost 9, 16, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
-	signpost 9, 15, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
-	signpost 9, 14, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
-	signpost 9, 13, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
-	signpost 9, 12, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
-	signpost 8, 12, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
-	signpost 7, 12, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
-	signpost 6, 12, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
-	signpost 5, 12, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
-	signpost 4, 12, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
-	signpost 4, 13, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
-	signpost 4, 14, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
-	signpost 4, 15, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
-	signpost 4, 16, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
-	signpost 4, 17, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
-	signpost 5, 17, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
-	signpost 6, 17, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
-	signpost 7, 17, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
-	signpost 8, 17, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 12, 14, SIGNPOST_IFNOTSET, TeamRocketBaseB2FLockedDoor
+	signpost 12, 15, SIGNPOST_IFNOTSET, TeamRocketBaseB2FLockedDoor
+	signpost 9, 17, SIGNPOST_READ, TeamRocketBaseB2FTransmitterScript
+	signpost 9, 16, SIGNPOST_READ, TeamRocketBaseB2FTransmitterScript
+	signpost 9, 15, SIGNPOST_READ, TeamRocketBaseB2FTransmitterScript
+	signpost 9, 14, SIGNPOST_READ, TeamRocketBaseB2FTransmitterScript
+	signpost 9, 13, SIGNPOST_READ, TeamRocketBaseB2FTransmitterScript
+	signpost 9, 12, SIGNPOST_READ, TeamRocketBaseB2FTransmitterScript
+	signpost 8, 12, SIGNPOST_READ, TeamRocketBaseB2FTransmitterScript
+	signpost 7, 12, SIGNPOST_READ, TeamRocketBaseB2FTransmitterScript
+	signpost 6, 12, SIGNPOST_READ, TeamRocketBaseB2FTransmitterScript
+	signpost 5, 12, SIGNPOST_READ, TeamRocketBaseB2FTransmitterScript
+	signpost 4, 12, SIGNPOST_READ, TeamRocketBaseB2FTransmitterScript
+	signpost 4, 13, SIGNPOST_READ, TeamRocketBaseB2FTransmitterScript
+	signpost 4, 14, SIGNPOST_READ, TeamRocketBaseB2FTransmitterScript
+	signpost 4, 15, SIGNPOST_READ, TeamRocketBaseB2FTransmitterScript
+	signpost 4, 16, SIGNPOST_READ, TeamRocketBaseB2FTransmitterScript
+	signpost 4, 17, SIGNPOST_READ, TeamRocketBaseB2FTransmitterScript
+	signpost 5, 17, SIGNPOST_READ, TeamRocketBaseB2FTransmitterScript
+	signpost 6, 17, SIGNPOST_READ, TeamRocketBaseB2FTransmitterScript
+	signpost 7, 17, SIGNPOST_READ, TeamRocketBaseB2FTransmitterScript
+	signpost 8, 17, SIGNPOST_READ, TeamRocketBaseB2FTransmitterScript
 	signpost 7, 26, SIGNPOST_ITEM, TeamRocketBaseB2FHiddenFullHeal
 
 .PersonEvents:
 	db 14
 	person_event SPRITE_ROCKET, 16, 20, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_GRUNT_WITH_EXECUTIVE
-	person_event SPRITE_ROCKET_GIRL, 16, 20, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_EXECUTIVE
+	person_event SPRITE_ROCKET_GIRL, 16, 20, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_EXECUTIVE
 	person_event SPRITE_LANCE, 13, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_LANCE
 	person_event SPRITE_DRAGON, 13, 9, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_DRAGONITE
 	person_event SPRITE_VOLTORB, 5, 7, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, RocketElectrode1, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_1
--- a/maps/TeamRocketBaseB3F.asm
+++ b/maps/TeamRocketBaseB3F.asm
@@ -17,31 +17,26 @@
 TeamRocketBaseB3F_MapScriptHeader:
 .MapTriggers:
 	db 4
+	maptrigger .LanceGetsPassword
+	maptrigger .DummyTrigger1
+	maptrigger .DummyTrigger2
+	maptrigger .DummyTrigger3
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-	maptrigger .Trigger2
-	maptrigger .Trigger3
-
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_TILES, .CheckGiovanniDoor
 
-.Trigger0:
+.LanceGetsPassword:
 	priorityjump LanceGetPasswordScript
 	end
 
-.Trigger1:
+.DummyTrigger1:
 	end
 
-.Trigger2:
+.DummyTrigger2:
 	end
 
-.Trigger3:
+.DummyTrigger3:
 	end
 
 .CheckGiovanniDoor:
@@ -138,7 +133,7 @@
 GruntF5Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x6e611
+	writetext GruntF5AfterBattleText
 	waitbutton
 	closetext
 	setevent EVENT_LEARNED_SLOWPOKETAIL
@@ -150,7 +145,7 @@
 GruntM28Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x6e737
+	writetext GruntM28AfterBattleText
 	waitbutton
 	closetext
 	setevent EVENT_LEARNED_RATICATE_TAIL
@@ -162,7 +157,7 @@
 ScientistRossScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x6e822
+	writetext ScientistRossAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -173,14 +168,13 @@
 ScientistMitchScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x6e90a
+	writetext ScientistMitchAfterBattleText
 	waitbutton
 	closetext
 	end
 
-BossDoor:
-	dw EVENT_OPENED_DOOR_TO_GIOVANNIS_OFFICE
-	dw .Script
+TeamRocketBaseB3FLockedDoor:
+	dw EVENT_OPENED_DOOR_TO_GIOVANNIS_OFFICE, .Script
 
 .Script:
 	opentext
@@ -207,7 +201,7 @@
 	waitsfx
 	end
 
-MapTeamRocketBaseB3FSignpost9Script:
+TeamRocketBaseB3FOathScript:
 	jumpstd teamrocketoath
 
 TeamRocketBaseB3FProtein:
@@ -456,7 +450,7 @@
 	line "I'll tell you."
 	done
 
-UnknownText_0x6e611:
+GruntF5AfterBattleText:
 	text "The password to"
 	line "the boss's room is"
 
@@ -490,7 +484,7 @@
 	line "You're good!"
 	done
 
-UnknownText_0x6e737:
+GruntM28AfterBattleText:
 	text "Hyuck-hyuck-hyuck!"
 
 	para "The password to"
@@ -517,7 +511,7 @@
 	line "error cost me…"
 	done
 
-UnknownText_0x6e822:
+ScientistRossAfterBattleText:
 	text "A radio signal"
 	line "that drives #-"
 	cont "MON mad…"
@@ -544,7 +538,7 @@
 	cont "battling."
 	done
 
-UnknownText_0x6e90a:
+ScientistMitchAfterBattleText:
 	text "If we turn up the"
 	line "power of our radio"
 
@@ -590,26 +584,26 @@
 
 .Signposts:
 	db 10
-	signpost 9, 10, SIGNPOST_IFNOTSET, BossDoor
-	signpost 9, 11, SIGNPOST_IFNOTSET, BossDoor
-	signpost 1, 10, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script
-	signpost 1, 11, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script
-	signpost 1, 12, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script
-	signpost 1, 13, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script
-	signpost 13, 4, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script
-	signpost 13, 5, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script
-	signpost 13, 6, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script
-	signpost 13, 7, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script
+	signpost 9, 10, SIGNPOST_IFNOTSET, TeamRocketBaseB3FLockedDoor
+	signpost 9, 11, SIGNPOST_IFNOTSET, TeamRocketBaseB3FLockedDoor
+	signpost 1, 10, SIGNPOST_READ, TeamRocketBaseB3FOathScript
+	signpost 1, 11, SIGNPOST_READ, TeamRocketBaseB3FOathScript
+	signpost 1, 12, SIGNPOST_READ, TeamRocketBaseB3FOathScript
+	signpost 1, 13, SIGNPOST_READ, TeamRocketBaseB3FOathScript
+	signpost 13, 4, SIGNPOST_READ, TeamRocketBaseB3FOathScript
+	signpost 13, 5, SIGNPOST_READ, TeamRocketBaseB3FOathScript
+	signpost 13, 6, SIGNPOST_READ, TeamRocketBaseB3FOathScript
+	signpost 13, 7, SIGNPOST_READ, TeamRocketBaseB3FOathScript
 
 .PersonEvents:
 	db 14
 	person_event SPRITE_LANCE, 14, 25, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, LanceGetPasswordScript, EVENT_TEAM_ROCKET_BASE_B3F_LANCE_PASSWORDS
 	person_event SPRITE_ROCKET, 3, 8, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B3F_EXECUTIVE
-	person_event SPRITE_MOLTRES, 2, 7, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, RocketBaseMurkrow, EVENT_TEAM_ROCKET_BASE_POPULATION
-	person_event SPRITE_ROCKET_GIRL, 7, 21, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 0, SlowpokeTailGrunt, EVENT_TEAM_ROCKET_BASE_POPULATION
+	person_event SPRITE_MOLTRES, 2, 7, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, RocketBaseMurkrow, EVENT_TEAM_ROCKET_BASE_POPULATION
+	person_event SPRITE_ROCKET_GIRL, 7, 21, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 0, SlowpokeTailGrunt, EVENT_TEAM_ROCKET_BASE_POPULATION
 	person_event SPRITE_ROCKET, 14, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 3, RaticateTailGrunt, EVENT_TEAM_ROCKET_BASE_POPULATION
-	person_event SPRITE_SCIENTIST, 11, 23, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 0, TrainerScientistRoss, EVENT_TEAM_ROCKET_BASE_POPULATION
-	person_event SPRITE_SCIENTIST, 15, 11, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerScientistMitch, EVENT_TEAM_ROCKET_BASE_POPULATION
+	person_event SPRITE_SCIENTIST, 11, 23, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 0, TrainerScientistRoss, EVENT_TEAM_ROCKET_BASE_POPULATION
+	person_event SPRITE_SCIENTIST, 15, 11, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerScientistMitch, EVENT_TEAM_ROCKET_BASE_POPULATION
 	person_event SPRITE_ROCKET, 14, 24, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, RocketScript_0x6e048, EVENT_TEAM_ROCKET_BASE_POPULATION
 	person_event SPRITE_SILVER, 5, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_RIVAL_TEAM_ROCKET_BASE
 	person_event SPRITE_POKE_BALL, 12, 1, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, TeamRocketBaseB3FProtein, EVENT_TEAM_ROCKET_BASE_B3F_PROTEIN
--- a/maps/TimeCapsule.asm
+++ b/maps/TimeCapsule.asm
@@ -5,26 +5,21 @@
 TimeCapsule_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .InitializeTimeCapsule
+	maptrigger .DummyTrigger
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-
 .MapCallbacks:
 	db 1
+	dbw MAPCALLBACK_OBJECTS, .SetWhichChris
 
-	; callbacks
-
-	dbw MAPCALLBACK_OBJECTS, TimeCapsule_SetWhichChris
-
-.Trigger0:
-	priorityjump TimeCapsule_Initialize
+.InitializeTimeCapsule:
+	priorityjump .InitializeAndPreparePokecenter2F
 	end
 
-.Trigger1:
+.DummyTrigger:
 	end
 
-TimeCapsule_SetWhichChris:
+.SetWhichChris:
 	special Special_CableClubCheckWhichChris
 	iffalse .Chris2
 	disappear TIMECAPSULE_CHRIS2
@@ -36,7 +31,7 @@
 	appear TIMECAPSULE_CHRIS2
 	return
 
-TimeCapsule_Initialize:
+.InitializeAndPreparePokecenter2F:
 	dotrigger $1
 	domaptrigger POKECENTER_2F, $3
 	end
--- a/maps/TinTower1F.asm
+++ b/maps/TinTower1F.asm
@@ -13,37 +13,31 @@
 TinTower1F_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .FaceSuicune
+	maptrigger .DummyTrigger
 
-	; triggers
-	dw UnknownScript_0x18502a, 0
-	dw UnknownScript_0x18502e, 0
-
 .MapCallbacks:
 	db 2
+	dbw MAPCALLBACK_OBJECTS, .NPCsCallback
+	dbw MAPCALLBACK_TILES, .StairsCallback
 
-	; callbacks
-
-	dbw MAPCALLBACK_OBJECTS, UnknownScript_0x18502f
-
-	dbw MAPCALLBACK_TILES, TinTowerStairsCallback
-
-UnknownScript_0x18502a:
-	priorityjump SuicuneBattle
+.FaceSuicune:
+	priorityjump .SuicuneBattle
 	end
 
-UnknownScript_0x18502e:
+.DummyTrigger:
 	end
 
-UnknownScript_0x18502f:
+.NPCsCallback:
 	checkevent EVENT_GOT_RAINBOW_WING
-	iftrue UnknownScript_0x185047
+	iftrue .GotRainbowWing
 	checkevent EVENT_BEAT_ELITE_FOUR
-	iffalse UnknownScript_0x185050
+	iffalse .FaceBeasts
 	special SpecialBeastsCheck
-	iffalse UnknownScript_0x185050
+	iffalse .FaceBeasts
 	clearevent EVENT_TIN_TOWER_1F_WISE_TRIO_2
 	setevent EVENT_TIN_TOWER_1F_WISE_TRIO_1
-UnknownScript_0x185047:
+.GotRainbowWing:
 	checkevent EVENT_FOUGHT_HO_OH
 	iffalse .Done
 	appear TINTOWER1F_EUSINE
@@ -50,31 +44,31 @@
 .Done:
 	return
 
-UnknownScript_0x185050:
+.FaceBeasts:
 	checkevent EVENT_FOUGHT_SUICUNE
-	iftrue UnknownScript_0x185077
+	iftrue .FoughtSuicune
 	appear TINTOWER1F_SUICUNE
 	writebyte RAIKOU
 	special SpecialMonCheck
-	iftrue UnknownScript_0x185065
+	iftrue .NoRaikou
 	appear TINTOWER1F_RAIKOU
-	jump UnknownScript_0x185067
+	jump .CheckEntei
 
-UnknownScript_0x185065:
+.NoRaikou:
 	disappear TINTOWER1F_RAIKOU
-UnknownScript_0x185067:
+.CheckEntei:
 	writebyte ENTEI
 	special SpecialMonCheck
-	iftrue UnknownScript_0x185074
+	iftrue .NoEntei
 	appear TINTOWER1F_ENTEI
-	jump UnknownScript_0x185076
+	jump .BeastsDone
 
-UnknownScript_0x185074:
+.NoEntei:
 	disappear TINTOWER1F_ENTEI
-UnknownScript_0x185076:
+.BeastsDone:
 	return
 
-UnknownScript_0x185077:
+.FoughtSuicune:
 	disappear TINTOWER1F_SUICUNE
 	disappear TINTOWER1F_RAIKOU
 	disappear TINTOWER1F_ENTEI
@@ -82,14 +76,14 @@
 	setevent EVENT_TIN_TOWER_1F_WISE_TRIO_2
 	return
 
-TinTowerStairsCallback:
+.StairsCallback:
 	checkevent EVENT_GOT_RAINBOW_WING
-	iftrue .NoChange
+	iftrue .DontHideStairs
 	changeblock $a, $2, $9
-.NoChange:
+.DontHideStairs:
 	return
 
-SuicuneBattle:
+.SuicuneBattle:
 	applymovement PLAYER, TinTowerPlayerMovement1
 	pause 15
 	writebyte RAIKOU
@@ -546,10 +540,10 @@
 
 .PersonEvents:
 	db 10
-	person_event SPRITE_SUICUNE, 9, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_TIN_TOWER_1F_SUICUNE
-	person_event SPRITE_RAIKOU, 9, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_TIN_TOWER_1F_RAIKOU
-	person_event SPRITE_ENTEI, 9, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_TIN_TOWER_1F_ENTEI
-	person_event SPRITE_SUPER_NERD, 3, 8, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, TinTowerEusine, EVENT_TIN_TOWER_1F_EUSINE
+	person_event SPRITE_SUICUNE, 9, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_TIN_TOWER_1F_SUICUNE
+	person_event SPRITE_RAIKOU, 9, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_TIN_TOWER_1F_RAIKOU
+	person_event SPRITE_ENTEI, 9, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_TIN_TOWER_1F_ENTEI
+	person_event SPRITE_SUPER_NERD, 3, 8, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, TinTowerEusine, EVENT_TIN_TOWER_1F_EUSINE
 	person_event SPRITE_SAGE, 9, 5, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SageScript_0x185173, EVENT_TIN_TOWER_1F_WISE_TRIO_1
 	person_event SPRITE_SAGE, 11, 11, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SageScript_0x185176, EVENT_TIN_TOWER_1F_WISE_TRIO_1
 	person_event SPRITE_SAGE, 6, 14, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SageScript_0x185179, EVENT_TIN_TOWER_1F_WISE_TRIO_1
--- a/maps/TinTowerRoof.asm
+++ b/maps/TinTowerRoof.asm
@@ -7,9 +7,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_OBJECTS, .HoOh
 
 .HoOh:
@@ -63,4 +60,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_HO_OH, 5, 9, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, TinTowerHoOh, EVENT_TIN_TOWER_ROOF_HO_OH
+	person_event SPRITE_HO_OH, 5, 9, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, TinTowerHoOh, EVENT_TIN_TOWER_ROOF_HO_OH
--- a/maps/TradeCenter.asm
+++ b/maps/TradeCenter.asm
@@ -5,26 +5,21 @@
 TradeCenter_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .InitializeTradeCenter
+	maptrigger .DummyTrigger
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-
 .MapCallbacks:
 	db 1
+	dbw MAPCALLBACK_OBJECTS, .SetWhichChris
 
-	; callbacks
-
-	dbw MAPCALLBACK_OBJECTS, TradeCenter_SetWhichChris
-
-.Trigger0:
-	priorityjump TradeCenter_Initialize
+.InitializeTradeCenter:
+	priorityjump .InitializeAndPreparePokecenter2F
 	end
 
-.Trigger1:
+.DummyTrigger:
 	end
 
-TradeCenter_SetWhichChris:
+.SetWhichChris:
 	special Special_CableClubCheckWhichChris
 	iffalse .Chris2
 	disappear TRADECENTER_CHRIS2
@@ -36,7 +31,7 @@
 	appear TRADECENTER_CHRIS2
 	return
 
-TradeCenter_Initialize:
+.InitializeAndPreparePokecenter2F:
 	dotrigger $1
 	domaptrigger POKECENTER_2F, $1
 	end
--- a/maps/TrainerHouse1F.asm
+++ b/maps/TrainerHouse1F.asm
@@ -158,8 +158,8 @@
 
 .PersonEvents:
 	db 5
-	person_event SPRITE_RECEPTIONIST, 11, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, ReceptionistScript_0x9af67, -1
+	person_event SPRITE_RECEPTIONIST, 11, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, ReceptionistScript_0x9af67, -1
 	person_event SPRITE_COOLTRAINER_M, 11, 7, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x9af6a, -1
-	person_event SPRITE_COOLTRAINER_F, 2, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 2, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x9af6d, -1
-	person_event SPRITE_YOUNGSTER, 8, 4, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x9af70, -1
+	person_event SPRITE_COOLTRAINER_F, 2, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 2, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x9af6d, -1
+	person_event SPRITE_YOUNGSTER, 8, 4, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x9af70, -1
 	person_event SPRITE_GENTLEMAN, 4, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x9af73, -1
--- a/maps/TrainerHouseB1F.asm
+++ b/maps/TrainerHouseB1F.asm
@@ -5,14 +5,12 @@
 TrainerHouseB1F_MapScriptHeader:
 .MapTriggers:
 	db 1
+	maptrigger .DummyTrigger
 
-	; triggers
-	dw Trigger0, 0
-
 .MapCallbacks:
 	db 0
 
-Trigger0:
+.DummyTrigger:
 	end
 
 TrainerHouseReceptionistScript:
@@ -188,5 +186,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_RECEPTIONIST, 1, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, ObjectEvent, -1
-	person_event SPRITE_CHRIS, 11, 6, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, ObjectEvent, -1
+	person_event SPRITE_RECEPTIONIST, 1, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, ObjectEvent, -1
+	person_event SPRITE_CHRIS, 11, 6, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, ObjectEvent, -1
--- a/maps/UndergroundPathSwitchRoomEntrances.asm
+++ b/maps/UndergroundPathSwitchRoomEntrances.asm
@@ -46,22 +46,17 @@
 UndergroundPathSwitchRoomEntrances_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_TILES, .UpdateDoorPositions
 
-.Trigger0:
+.DummyTrigger0:
 	end
 
-.Trigger1:
+.DummyTrigger1:
 	end
 
 .UpdateDoorPositions:
@@ -216,7 +211,7 @@
 GruntM11Script:
 	end_if_just_battled
 	opentext
-	writetext GruntM11AfterText
+	writetext GruntM11AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -227,7 +222,7 @@
 GruntM25Script:
 	end_if_just_battled
 	opentext
-	writetext GruntM25AfterText
+	writetext GruntM25AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -238,7 +233,7 @@
 BurglarDuncanScript:
 	end_if_just_battled
 	opentext
-	writetext BurglarDuncanAfterText
+	writetext BurglarDuncanAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -249,7 +244,7 @@
 BurglarEddieScript:
 	end_if_just_battled
 	opentext
-	writetext BurglarEddieAfterText
+	writetext BurglarEddieAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -260,7 +255,7 @@
 GruntM13Script:
 	end_if_just_battled
 	opentext
-	writetext GruntM13AfterText
+	writetext GruntM13AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -271,7 +266,7 @@
 GruntF3Script:
 	end_if_just_battled
 	opentext
-	writetext GruntF3AfterText
+	writetext GruntF3AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -790,7 +785,7 @@
 	line "by indecision!"
 	done
 
-GruntM11AfterText:
+GruntM11AfterBattleText:
 	text "I'm confused too…"
 	line "The switch on the"
 
@@ -814,7 +809,7 @@
 	line "I blew it."
 	done
 
-GruntM25AfterText:
+GruntM25AfterBattleText:
 	text "All right. A hint!"
 
 	para "Change the order"
@@ -834,7 +829,7 @@
 	text "Mercy!"
 	done
 
-BurglarDuncanAfterText:
+BurglarDuncanAfterBattleText:
 	text "Steal and sell!"
 	line "That's basic in"
 	cont "crime, kid!"
@@ -853,7 +848,7 @@
 	text "Over the top!"
 	done
 
-BurglarEddieAfterText:
+BurglarEddieAfterBattleText:
 	text "UNDERGROUND WARE-"
 	line "HOUSE?"
 
@@ -878,7 +873,7 @@
 	line "you're cool, huh?"
 	done
 
-GruntM13AfterText:
+GruntM13AfterBattleText:
 	text "You must have ice"
 	line "in your veins to"
 	cont "dis TEAM ROCKET."
@@ -905,7 +900,7 @@
 	text "How could you?"
 	done
 
-GruntF3AfterText:
+GruntF3AfterBattleText:
 	text "Go wherever you'd"
 	line "like! Get lost!"
 	cont "See if I care!"
@@ -968,12 +963,12 @@
 
 .PersonEvents:
 	db 11
-	person_event SPRITE_PHARMACIST, 12, 9, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 2, TrainerBurglarDuncan, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
-	person_event SPRITE_PHARMACIST, 8, 4, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_TRAINER, 2, TrainerBurglarEddie, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_PHARMACIST, 12, 9, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 2, TrainerBurglarDuncan, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_PHARMACIST, 8, 4, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_TRAINER, 2, TrainerBurglarEddie, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_ROCKET, 2, 17, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 3, TrainerGruntM13, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_ROCKET, 2, 11, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 3, TrainerGruntM11, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_ROCKET, 2, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_TRAINER, 3, TrainerGruntM25, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
-	person_event SPRITE_ROCKET_GIRL, 12, 19, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerGruntF3, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_ROCKET_GIRL, 12, 19, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 1, TrainerGruntF3, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_TEACHER, 27, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, TeacherScript_0x7ca7d, -1
 	person_event SPRITE_SUPER_NERD, 27, 19, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x7ca7a, -1
 	person_event SPRITE_POKE_BALL, 12, 1, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, UndergroundPathSwitchRoomEntrancesSmokeBall, EVENT_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES_SMOKE_BALL
--- a/maps/UndergroundWarehouse.asm
+++ b/maps/UndergroundWarehouse.asm
@@ -13,9 +13,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_NEWMAP, .ResetSwitches
 
 .ResetSwitches:
@@ -44,7 +41,7 @@
 GruntM24Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x7da48
+	writetext GruntM24AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -55,7 +52,7 @@
 GruntM14Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x7db01
+	writetext GruntM14AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -66,7 +63,7 @@
 GruntM15Script:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x7db8e
+	writetext GruntM15AfterBattleText
 	waitbutton
 	closetext
 	end
@@ -113,7 +110,7 @@
 	text "I got disposed of…"
 	done
 
-UnknownText_0x7da48:
+GruntM24AfterBattleText:
 	text "TEAM ROCKET will"
 	line "keep going, wait-"
 	cont "ing for the return"
@@ -136,7 +133,7 @@
 	text "Blast it!"
 	done
 
-UnknownText_0x7db01:
+GruntM14AfterBattleText:
 	text "I lost…"
 
 	para "Please forgive me,"
@@ -156,7 +153,7 @@
 	line "So, that's how?"
 	done
 
-UnknownText_0x7db8e:
+GruntM15AfterBattleText:
 	text "Hyuck-hyuck-hyuck!"
 	line "That was a blast!"
 	cont "I'll remember you!"
--- a/maps/UnionCave1F.asm
+++ b/maps/UnionCave1F.asm
@@ -22,7 +22,7 @@
 PokemaniacLarryScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x59d31
+	writetext PokemaniacLarryAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -33,7 +33,7 @@
 HikerRussellScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x59c6c
+	writetext HikerRussellAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -44,7 +44,7 @@
 HikerDanielScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x59dc9
+	writetext HikerDanielAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -55,7 +55,7 @@
 FirebreatherBillScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x59e6f
+	writetext FirebreatherBillAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -66,7 +66,7 @@
 FirebreatherRayScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x59efc
+	writetext FirebreatherRayAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -99,7 +99,7 @@
 	text "Oh, oh, oh!"
 	done
 
-UnknownText_0x59c6c:
+HikerRussellAfterBattleText:
 	text "All right, then!"
 	line "I've decided."
 
@@ -125,7 +125,7 @@
 	line "MON…"
 	done
 
-UnknownText_0x59d31:
+PokemaniacLarryAfterBattleText:
 	text "Every Friday, you"
 	line "can hear #MON"
 
@@ -146,7 +146,7 @@
 	line "big time!"
 	done
 
-UnknownText_0x59dc9:
+HikerDanielAfterBattleText:
 	text "I was conned into"
 	line "buying a SLOWPOKE-"
 	cont "TAIL."
@@ -168,7 +168,7 @@
 	text "I flamed out!"
 	done
 
-UnknownText_0x59e6f:
+FirebreatherBillAfterBattleText:
 	text "On weekends, you"
 	line "can hear strange"
 
@@ -189,7 +189,7 @@
 	text "FLASH!"
 	done
 
-UnknownText_0x59efc:
+FirebreatherRayAfterBattleText:
 	text "It's my #MON's"
 	line "fire that lights"
 	cont "up this cave."
@@ -218,11 +218,11 @@
 
 .PersonEvents:
 	db 9
-	person_event SPRITE_POKEFAN_M, 6, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 2, TrainerHikerDaniel, -1
-	person_event SPRITE_SUPER_NERD, 21, 4, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerPokemaniacLarry, -1
-	person_event SPRITE_POKEFAN_M, 8, 11, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 1, TrainerHikerRussell, -1
-	person_event SPRITE_FISHER, 27, 15, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 4, TrainerFirebreatherRay, -1
-	person_event SPRITE_FISHER, 19, 14, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 4, TrainerFirebreatherBill, -1
+	person_event SPRITE_POKEFAN_M, 6, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 2, TrainerHikerDaniel, -1
+	person_event SPRITE_SUPER_NERD, 21, 4, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerPokemaniacLarry, -1
+	person_event SPRITE_POKEFAN_M, 8, 11, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 1, TrainerHikerRussell, -1
+	person_event SPRITE_FISHER, 27, 15, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 4, TrainerFirebreatherRay, -1
+	person_event SPRITE_FISHER, 19, 14, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 4, TrainerFirebreatherBill, -1
 	person_event SPRITE_POKE_BALL, 21, 17, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, UnionCave1FGreatBall, EVENT_UNION_CAVE_1F_GREAT_BALL
 	person_event SPRITE_POKE_BALL, 2, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, UnionCave1FXAttack, EVENT_UNION_CAVE_1F_X_ATTACK
 	person_event SPRITE_POKE_BALL, 17, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, UnionCave1FPotion, EVENT_UNION_CAVE_1F_POTION
--- a/maps/UnionCaveB1F.asm
+++ b/maps/UnionCaveB1F.asm
@@ -20,7 +20,7 @@
 PokemaniacAndrewScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5a181
+	writetext PokemaniacAndrewAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -31,7 +31,7 @@
 PokemaniacCalvinScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5a230
+	writetext PokemaniacCalvinAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -42,7 +42,7 @@
 HikerPhillipScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5a073
+	writetext HikerPhillipAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -53,7 +53,7 @@
 HikerLeonardScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5a0fb
+	writetext HikerLeonardAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -80,7 +80,7 @@
 	text "Uurggh…"
 	done
 
-UnknownText_0x5a073:
+HikerPhillipAfterBattleText:
 	text "I've been lost for"
 	line "a long time…"
 
@@ -99,7 +99,7 @@
 	line "feisty one!"
 	done
 
-UnknownText_0x5a0fb:
+HikerLeonardAfterBattleText:
 	text "I live down here."
 
 	para "You can, too, if"
@@ -121,7 +121,7 @@
 	line "Go away!"
 	done
 
-UnknownText_0x5a181:
+PokemaniacAndrewAfterBattleText:
 	text "Just me and my"
 	line "#MON. I'm de-"
 	cont "lirious with joy."
@@ -142,7 +142,7 @@
 	line "on me!"
 	done
 
-UnknownText_0x5a230:
+PokemaniacCalvinAfterBattleText:
 	text "I should compile"
 	line "and announce my"
 	cont "study findings."
@@ -172,10 +172,10 @@
 
 .PersonEvents:
 	db 7
-	person_event SPRITE_POKEFAN_M, 4, 9, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 3, TrainerHikerPhillip, -1
-	person_event SPRITE_POKEFAN_M, 7, 16, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 3, TrainerHikerLeonard, -1
-	person_event SPRITE_SUPER_NERD, 32, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerPokemaniacAndrew, -1
-	person_event SPRITE_SUPER_NERD, 30, 17, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerPokemaniacCalvin, -1
+	person_event SPRITE_POKEFAN_M, 4, 9, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 3, TrainerHikerPhillip, -1
+	person_event SPRITE_POKEFAN_M, 7, 16, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 3, TrainerHikerLeonard, -1
+	person_event SPRITE_SUPER_NERD, 32, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerPokemaniacAndrew, -1
+	person_event SPRITE_SUPER_NERD, 30, 17, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerPokemaniacCalvin, -1
 	person_event SPRITE_POKE_BALL, 16, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, UnionCaveB1FTMSwift, EVENT_UNION_CAVE_B1F_TM_SWIFT
 	person_event SPRITE_BOULDER, 10, 7, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, UnionCaveB1FBoulder, -1
 	person_event SPRITE_POKE_BALL, 23, 17, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, UnionCaveB1FXDefend, EVENT_UNION_CAVE_B1F_X_DEFEND
--- a/maps/UnionCaveB2F.asm
+++ b/maps/UnionCaveB2F.asm
@@ -12,9 +12,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_OBJECTS, .Lapras
 
 .Lapras:
@@ -46,7 +43,7 @@
 CooltrainermNickScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5a3f0
+	writetext CooltrainermNickAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -57,7 +54,7 @@
 CooltrainerfGwenScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5a488
+	writetext CooltrainerfGwenAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -68,7 +65,7 @@
 CooltrainerfEmmaScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x5a52b
+	writetext CooltrainerfEmmaAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -96,7 +93,7 @@
 	line "dazzling style!"
 	done
 
-UnknownText_0x5a3f0:
+CooltrainermNickAfterBattleText:
 	text "Your #MON style"
 	line "is stunning and"
 	cont "colorful, I admit."
@@ -115,7 +112,7 @@
 	line "too good for me."
 	done
 
-UnknownText_0x5a488:
+CooltrainerfGwenAfterBattleText:
 	text "I'm going to train"
 	line "by myself until I"
 	cont "improve."
@@ -135,7 +132,7 @@
 	line "babies than this!"
 	done
 
-UnknownText_0x5a52b:
+CooltrainerfEmmaAfterBattleText:
 	text "Just once a week,"
 	line "a #MON comes to"
 	cont "the water's edge."
@@ -160,9 +157,9 @@
 
 .PersonEvents:
 	db 6
-	person_event SPRITE_ROCKER, 19, 15, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainermNick, -1
-	person_event SPRITE_COOLTRAINER_F, 13, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 1, TrainerCooltrainerfGwen, -1
-	person_event SPRITE_COOLTRAINER_F, 30, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainerfEmma, -1
+	person_event SPRITE_ROCKER, 19, 15, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainermNick, -1
+	person_event SPRITE_COOLTRAINER_F, 13, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 1, TrainerCooltrainerfGwen, -1
+	person_event SPRITE_COOLTRAINER_F, 30, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerCooltrainerfEmma, -1
 	person_event SPRITE_POKE_BALL, 2, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, UnionCaveB2FElixer, EVENT_UNION_CAVE_B2F_ELIXER
 	person_event SPRITE_POKE_BALL, 19, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, UnionCaveB2FHyperPotion, EVENT_UNION_CAVE_B2F_HYPER_POTION
-	person_event SPRITE_SURF, 31, 11, SPRITEMOVEDATA_LAPRAS, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, UnionCaveLapras, EVENT_UNION_CAVE_B2F_LAPRAS
+	person_event SPRITE_SURF, 31, 11, SPRITEMOVEDATA_LAPRAS, 1, 1, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, UnionCaveLapras, EVENT_UNION_CAVE_B2F_LAPRAS
--- a/maps/VermilionCity.asm
+++ b/maps/VermilionCity.asm
@@ -12,8 +12,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
 	dbw MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
@@ -118,7 +116,7 @@
 VermilionCityPortSign:
 	jumptext VermilionCityPortSignText
 
-VermilionCityPokeCenterSign:
+VermilionCityPokecenterSign:
 	jumpstd pokecentersign
 
 VermilionCityMartSign:
@@ -296,7 +294,7 @@
 	signpost 13, 5, SIGNPOST_READ, PokemonFanClubSign
 	signpost 9, 33, SIGNPOST_READ, VermilionCityDiglettsCaveSign
 	signpost 15, 27, SIGNPOST_READ, VermilionCityPortSign
-	signpost 5, 10, SIGNPOST_READ, VermilionCityPokeCenterSign
+	signpost 5, 10, SIGNPOST_READ, VermilionCityPokecenterSign
 	signpost 13, 22, SIGNPOST_READ, VermilionCityMartSign
 	signpost 19, 12, SIGNPOST_ITEM, VermilionCityHiddenFullHeal
 
@@ -304,7 +302,7 @@
 	db 6
 	person_event SPRITE_TEACHER, 9, 18, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, TeacherScript_0x1aa983, -1
 	person_event SPRITE_GRAMPS, 6, 23, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, VermilionMachopOwner, -1
-	person_event SPRITE_MACHOP, 7, 26, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, VermilionMachop, -1
-	person_event SPRITE_SUPER_NERD, 16, 14, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x1aa99b, -1
+	person_event SPRITE_MACHOP, 7, 26, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, VermilionMachop, -1
+	person_event SPRITE_SUPER_NERD, 16, 14, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x1aa99b, -1
 	person_event SPRITE_BIG_SNORLAX, 8, 34, SPRITEMOVEDATA_SNORLAX, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, VermilionSnorlax, EVENT_VERMILION_CITY_SNORLAX
-	person_event SPRITE_POKEFAN_M, 12, 31, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, VermilionGymBadgeGuy, -1
+	person_event SPRITE_POKEFAN_M, 12, 31, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, VermilionGymBadgeGuy, -1
--- a/maps/VermilionGym.asm
+++ b/maps/VermilionGym.asm
@@ -50,7 +50,7 @@
 GentlemanGregoryScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1923b0
+	writetext GentlemanGregoryAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -61,7 +61,7 @@
 GuitaristVincentScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x19244b
+	writetext GuitaristVincentAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -72,7 +72,7 @@
 JugglerHortonScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x1924d6
+	writetext JugglerHortonAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -175,7 +175,7 @@
 	cont "sir!"
 	done
 
-UnknownText_0x1923b0:
+GentlemanGregoryAfterBattleText:
 	text "When I was still"
 	line "in the army, LT."
 
@@ -198,7 +198,7 @@
 	text "Ooh, how shocking!"
 	done
 
-UnknownText_0x19244b:
+GuitaristVincentAfterBattleText:
 	text "If the GYM's traps"
 	line "were working, you"
 
@@ -217,7 +217,7 @@
 	line "I was overpowered…"
 	done
 
-UnknownText_0x1924d6:
+JugglerHortonAfterBattleText:
 	text "Don't get too com-"
 	line "fortable about"
 
@@ -294,8 +294,8 @@
 
 .PersonEvents:
 	db 5
-	person_event SPRITE_SURGE, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, SurgeScript_0x1920a5, -1
-	person_event SPRITE_GENTLEMAN, 8, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 4, TrainerGentlemanGregory, -1
-	person_event SPRITE_ROCKER, 7, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 3, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_TRAINER, 3, TrainerGuitaristVincent, -1
-	person_event SPRITE_SUPER_NERD, 10, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 4, TrainerJugglerHorton, -1
-	person_event SPRITE_GYM_GUY, 15, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 1, VermilionGymGuyScript, -1
+	person_event SPRITE_SURGE, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, SurgeScript_0x1920a5, -1
+	person_event SPRITE_GENTLEMAN, 8, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 4, TrainerGentlemanGregory, -1
+	person_event SPRITE_ROCKER, 7, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 3, -1, -1, PAL_NPC_RED, PERSONTYPE_TRAINER, 3, TrainerGuitaristVincent, -1
+	person_event SPRITE_SUPER_NERD, 10, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 4, TrainerJugglerHorton, -1
+	person_event SPRITE_GYM_GUY, 15, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 1, VermilionGymGuyScript, -1
--- a/maps/VermilionHouseDiglettsCaveSpeechHouse.asm
+++ b/maps/VermilionHouseDiglettsCaveSpeechHouse.asm
@@ -37,4 +37,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_GENTLEMAN, 3, 1, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x192031, -1
+	person_event SPRITE_GENTLEMAN, 3, 1, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x192031, -1
--- a/maps/VermilionHouseFishingSpeechHouse.asm
+++ b/maps/VermilionHouseFishingSpeechHouse.asm
@@ -68,4 +68,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_FISHING_GURU, 4, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, FishingDude, -1
+	person_event SPRITE_FISHING_GURU, 4, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, FishingDude, -1
--- a/maps/VermilionMagnetTrainSpeechHouse.asm
+++ b/maps/VermilionMagnetTrainSpeechHouse.asm
@@ -53,4 +53,4 @@
 .PersonEvents:
 	db 2
 	person_event SPRITE_POKEFAN_F, 3, 2, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, PokefanFScript_0x191eb7, -1
-	person_event SPRITE_YOUNGSTER, 3, 0, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x191eba, -1
+	person_event SPRITE_YOUNGSTER, 3, 0, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x191eba, -1
--- a/maps/VermilionMart.asm
+++ b/maps/VermilionMart.asm
@@ -54,5 +54,5 @@
 .PersonEvents:
 	db 3
 	person_event SPRITE_CLERK, 3, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ClerkScript_0x191f7e, -1
-	person_event SPRITE_SUPER_NERD, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x191f85, -1
-	person_event SPRITE_BUENA, 6, 8, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, BuenaScript_0x191f88, -1
+	person_event SPRITE_SUPER_NERD, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, SuperNerdScript_0x191f85, -1
+	person_event SPRITE_BUENA, 6, 8, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, BuenaScript_0x191f88, -1
--- a/maps/VermilionPokeCenter1F.asm
+++ /dev/null
@@ -1,100 +1,0 @@
-const_value set 2
-	const VERMILIONPOKECENTER1F_NURSE
-	const VERMILIONPOKECENTER1F_FISHING_GURU
-	const VERMILIONPOKECENTER1F_SAILOR
-	const VERMILIONPOKECENTER1F_BUG_CATCHER
-
-VermilionPokeCenter1F_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-NurseScript_0x191603:
-	jumpstd pokecenternurse
-
-FishingGuruScript_0x191606:
-	faceplayer
-	opentext
-	checkevent EVENT_FOUGHT_SNORLAX
-	iftrue UnknownScript_0x191614
-	writetext UnknownText_0x191620
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x191614:
-	writetext UnknownText_0x191698
-	waitbutton
-	closetext
-	end
-
-SailorScript_0x19161a:
-	jumptextfaceplayer UnknownText_0x1916fe
-
-BugCatcherScript_0x19161d:
-	jumptextfaceplayer UnknownText_0x19173b
-
-UnknownText_0x191620:
-	text "A sleeping #MON"
-	line "is lying in front"
-	cont "of DIGLETT'S CAVE."
-
-	para "It's a fantastic"
-	line "opportunity to get"
-
-	para "it, but how do you"
-	line "wake it up?"
-	done
-
-UnknownText_0x191698:
-	text "There used to be a"
-	line "sleeping #MON"
-
-	para "lying in front of"
-	line "DIGLETT'S CAVE."
-
-	para "But it seems to"
-	line "have disappeared."
-	done
-
-UnknownText_0x1916fe:
-	text "The FAST SHIP is a"
-	line "great place to"
-
-	para "meet and battle"
-	line "trainers."
-	done
-
-UnknownText_0x19173b:
-	text "Oh? You have some"
-	line "BADGES I've never"
-	cont "seen before."
-
-	para "Oh, I get it. You"
-	line "got them in JOHTO."
-	done
-
-VermilionPokeCenter1F_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 3
-	warp_def $7, $3, 2, VERMILION_CITY
-	warp_def $7, $4, 2, VERMILION_CITY
-	warp_def $7, $0, 1, POKECENTER_2F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 4
-	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x191603, -1
-	person_event SPRITE_FISHING_GURU, 2, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, FishingGuruScript_0x191606, -1
-	person_event SPRITE_SAILOR, 5, 6, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, SailorScript_0x19161a, -1
-	person_event SPRITE_BUG_CATCHER, 5, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, BugCatcherScript_0x19161d, -1
--- a/maps/VermilionPokeCenter2FBeta.asm
+++ /dev/null
@@ -1,23 +1,0 @@
-VermilionPokeCenter2FBeta_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-VermilionPokeCenter2FBeta_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 1
-	warp_def $7, $0, 3, VERMILION_POKECENTER_1F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 0
--- /dev/null
+++ b/maps/VermilionPokecenter1F.asm
@@ -1,0 +1,100 @@
+const_value set 2
+	const VERMILIONPOKECENTER1F_NURSE
+	const VERMILIONPOKECENTER1F_FISHING_GURU
+	const VERMILIONPOKECENTER1F_SAILOR
+	const VERMILIONPOKECENTER1F_BUG_CATCHER
+
+VermilionPokecenter1F_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+NurseScript_0x191603:
+	jumpstd pokecenternurse
+
+FishingGuruScript_0x191606:
+	faceplayer
+	opentext
+	checkevent EVENT_FOUGHT_SNORLAX
+	iftrue UnknownScript_0x191614
+	writetext UnknownText_0x191620
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x191614:
+	writetext UnknownText_0x191698
+	waitbutton
+	closetext
+	end
+
+SailorScript_0x19161a:
+	jumptextfaceplayer UnknownText_0x1916fe
+
+BugCatcherScript_0x19161d:
+	jumptextfaceplayer UnknownText_0x19173b
+
+UnknownText_0x191620:
+	text "A sleeping #MON"
+	line "is lying in front"
+	cont "of DIGLETT'S CAVE."
+
+	para "It's a fantastic"
+	line "opportunity to get"
+
+	para "it, but how do you"
+	line "wake it up?"
+	done
+
+UnknownText_0x191698:
+	text "There used to be a"
+	line "sleeping #MON"
+
+	para "lying in front of"
+	line "DIGLETT'S CAVE."
+
+	para "But it seems to"
+	line "have disappeared."
+	done
+
+UnknownText_0x1916fe:
+	text "The FAST SHIP is a"
+	line "great place to"
+
+	para "meet and battle"
+	line "trainers."
+	done
+
+UnknownText_0x19173b:
+	text "Oh? You have some"
+	line "BADGES I've never"
+	cont "seen before."
+
+	para "Oh, I get it. You"
+	line "got them in JOHTO."
+	done
+
+VermilionPokecenter1F_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 3
+	warp_def $7, $3, 2, VERMILION_CITY
+	warp_def $7, $4, 2, VERMILION_CITY
+	warp_def $7, $0, 1, POKECENTER_2F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 4
+	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x191603, -1
+	person_event SPRITE_FISHING_GURU, 2, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, FishingGuruScript_0x191606, -1
+	person_event SPRITE_SAILOR, 5, 6, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, SailorScript_0x19161a, -1
+	person_event SPRITE_BUG_CATCHER, 5, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, BugCatcherScript_0x19161d, -1
--- /dev/null
+++ b/maps/VermilionPokecenter2FBeta.asm
@@ -1,0 +1,23 @@
+VermilionPokecenter2FBeta_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+VermilionPokecenter2FBeta_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 1
+	warp_def $7, $0, 3, VERMILION_POKECENTER_1F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 0
--- a/maps/VermilionPort.asm
+++ b/maps/VermilionPort.asm
@@ -6,22 +6,18 @@
 VermilionPort_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .LeaveFastShip
 
-	; triggers
-	maptrigger .Trigger0
-	maptrigger .Trigger1
-
 .MapCallbacks:
 	db 1
-
-	; callbacks
 	dbw MAPCALLBACK_NEWMAP, .FlyPoint
 
-.Trigger0:
+.DummyTrigger0:
 	end
 
-.Trigger1:
-	priorityjump UnknownScript_0x74da6
+.LeaveFastShip:
+	priorityjump .LeaveFastShipScript
 	end
 
 .FlyPoint:
@@ -28,7 +24,7 @@
 	setflag ENGINE_FLYPOINT_VERMILION
 	return
 
-UnknownScript_0x74da6:
+.LeaveFastShipScript:
 	applymovement PLAYER, MovementData_0x74ef3
 	appear VERMILIONPORT_SAILOR1
 	dotrigger $0
--- a/maps/VictoryRoad.asm
+++ b/maps/VictoryRoad.asm
@@ -9,18 +9,16 @@
 VictoryRoad_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
 
-	; triggers
-	dw UnknownScript_0x74490, 0
-	dw UnknownScript_0x74491, 0
-
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x74490:
+.DummyTrigger0:
 	end
 
-UnknownScript_0x74491:
+.DummyTrigger1:
 	end
 
 UnknownScript_0x74492:
--- a/maps/VictoryRoadGate.asm
+++ b/maps/VictoryRoadGate.asm
@@ -6,62 +6,60 @@
 VictoryRoadGate_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
 
-	; triggers
-	dw UnknownScript_0x9b9fb, 0
-	dw UnknownScript_0x9b9fc, 0
-
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x9b9fb:
+.DummyTrigger0:
 	end
 
-UnknownScript_0x9b9fc:
+.DummyTrigger1:
 	end
 
-UnknownScript_0x9b9fd:
+VictoryRoadGateBadgeCheckTrigger:
 	spriteface PLAYER, LEFT
-	jump UnknownScript_0x9ba04
+	jump VictoryRoadGateBadgeCheckScript
 
-OfficerScript_0x9ba03:
+VictoryRoadGateOfficerScript:
 	faceplayer
-UnknownScript_0x9ba04:
+VictoryRoadGateBadgeCheckScript:
 	opentext
-	writetext UnknownText_0x9ba29
+	writetext VictoryRoadGateOfficerText
 	buttonsound
 	checkcode VAR_BADGES
-	if_greater_than 7, UnknownScript_0x9ba19
-	writetext UnknownText_0x9ba5f
+	if_greater_than 7, .AllEightBadges
+	writetext VictoryRoadGateNotEnoughBadgesText
 	waitbutton
 	closetext
-	applymovement PLAYER, MovementData_0x9ba27
+	applymovement PLAYER, VictoryRoadGateStepDownMovement
 	end
 
-UnknownScript_0x9ba19:
-	writetext UnknownText_0x9bab4
+.AllEightBadges:
+	writetext VictoryRoadGateEightBadgesText
 	waitbutton
 	closetext
 	dotrigger $1
 	end
 
-BlackBeltScript_0x9ba21:
-	jumptextfaceplayer UnknownText_0x9baf1
+VictoryRoadGateLeftBlackBeltScript:
+	jumptextfaceplayer VictoryRoadGateLeftBlackBeltText
 
-BlackBeltScript_0x9ba24:
-	jumptextfaceplayer UnknownText_0x9bb37
+VictoryRoadGateRightBlackBeltScript:
+	jumptextfaceplayer VictoryRoadGateRightBlackBeltText
 
-MovementData_0x9ba27:
+VictoryRoadGateStepDownMovement:
 	step DOWN
 	step_end
 
-UnknownText_0x9ba29:
+VictoryRoadGateOfficerText:
 	text "Only trainers who"
 	line "have proven them-"
 	cont "selves may pass."
 	done
 
-UnknownText_0x9ba5f:
+VictoryRoadGateNotEnoughBadgesText:
 	text "You don't have all"
 	line "the GYM BADGES of"
 	cont "JOHTO."
@@ -71,7 +69,7 @@
 	cont "through."
 	done
 
-UnknownText_0x9bab4:
+VictoryRoadGateEightBadgesText:
 	text "Oh! The eight"
 	line "BADGES of JOHTO!"
 
@@ -79,7 +77,7 @@
 	line "on through!"
 	done
 
-UnknownText_0x9baf1:
+VictoryRoadGateLeftBlackBeltText:
 	text "This way leads to"
 	line "MT.SILVER."
 
@@ -88,7 +86,7 @@
 	cont "there."
 	done
 
-UnknownText_0x9bb37:
+VictoryRoadGateRightBlackBeltText:
 	text "Off to the #MON"
 	line "LEAGUE, are you?"
 
@@ -116,7 +114,7 @@
 
 .XYTriggers:
 	db 1
-	xy_trigger 0, $b, $a, $0, UnknownScript_0x9b9fd, $0, $0
+	xy_trigger 0, $b, $a, $0, VictoryRoadGateBadgeCheckTrigger, $0, $0
 
 .Signposts:
 	db 0
@@ -123,6 +121,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_OFFICER, 11, 8, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, OfficerScript_0x9ba03, -1
-	person_event SPRITE_BLACK_BELT, 5, 7, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BlackBeltScript_0x9ba21, EVENT_OPENED_MT_SILVER
-	person_event SPRITE_BLACK_BELT, 5, 12, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, BlackBeltScript_0x9ba24, EVENT_FOUGHT_SNORLAX
+	person_event SPRITE_OFFICER, 11, 8, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, VictoryRoadGateOfficerScript, -1
+	person_event SPRITE_BLACK_BELT, 5, 7, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, VictoryRoadGateLeftBlackBeltScript, EVENT_OPENED_MT_SILVER
+	person_event SPRITE_BLACK_BELT, 5, 12, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, VictoryRoadGateRightBlackBeltScript, EVENT_FOUGHT_SNORLAX
--- a/maps/VioletCity.asm
+++ b/maps/VioletCity.asm
@@ -14,8 +14,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
 	dbw MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
@@ -84,7 +82,7 @@
 EarlsPokemonAcademySign:
 	jumptext EarlsPokemonAcademySignText
 
-VioletCityPokeCenterSign:
+VioletCityPokecenterSign:
 	jumpstd pokecentersign
 
 VioletCityMartSign:
@@ -305,17 +303,17 @@
 	signpost 17, 15, SIGNPOST_READ, VioletGymSign
 	signpost  8, 24, SIGNPOST_READ, SproutTowerSign
 	signpost 17, 27, SIGNPOST_READ, EarlsPokemonAcademySign
-	signpost 25, 32, SIGNPOST_READ, VioletCityPokeCenterSign
+	signpost 25, 32, SIGNPOST_READ, VioletCityPokecenterSign
 	signpost 17, 10, SIGNPOST_READ, VioletCityMartSign
 	signpost 14, 37, SIGNPOST_ITEM, VioletCityHiddenHyperPotion
 
 .PersonEvents:
 	db 8
-	person_event SPRITE_FISHER, 16, 13, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, VioletCityEarlScript, EVENT_VIOLET_CITY_EARL
-	person_event SPRITE_LASS, 28, 28, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, VioletCityLassScript, -1
-	person_event SPRITE_SUPER_NERD, 14, 24, SPRITEMOVEDATA_WANDER, 2, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, VioletCitySuperNerdScript, -1
+	person_event SPRITE_FISHER, 16, 13, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, VioletCityEarlScript, EVENT_VIOLET_CITY_EARL
+	person_event SPRITE_LASS, 28, 28, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, VioletCityLassScript, -1
+	person_event SPRITE_SUPER_NERD, 14, 24, SPRITEMOVEDATA_WANDER, 2, 1, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, VioletCitySuperNerdScript, -1
 	person_event SPRITE_GRAMPS, 20, 17, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, VioletCityGrampsScript, -1
-	person_event SPRITE_YOUNGSTER, 18, 5, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, VioletCityYoungsterScript, -1
+	person_event SPRITE_YOUNGSTER, 18, 5, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, VioletCityYoungsterScript, -1
 	person_event SPRITE_FRUIT_TREE, 29, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, VioletCityFruitTreeScript, -1
 	person_event SPRITE_POKE_BALL, 1, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, VioletCityPPUp, EVENT_VIOLET_CITY_PP_UP
 	person_event SPRITE_POKE_BALL, 5, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, VioletCityRareCandy, EVENT_VIOLET_CITY_RARE_CANDY
--- a/maps/VioletGym.asm
+++ b/maps/VioletGym.asm
@@ -72,7 +72,7 @@
 Bird_keeperRodScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x68837
+	writetext Bird_keeperRodAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -83,7 +83,7 @@
 Bird_keeperAbeScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x688c7
+	writetext Bird_keeperAbeAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -226,7 +226,7 @@
 	text "Gaaah!"
 	done
 
-UnknownText_0x68837:
+Bird_keeperRodAfterBattleText:
 	text "FALKNER's skills"
 	line "are for real!"
 
@@ -246,7 +246,7 @@
 	line "true!"
 	done
 
-UnknownText_0x688c7:
+Bird_keeperAbeAfterBattleText:
 	text "This is pathetic,"
 	line "losing to some"
 	cont "rookie trainer…"
@@ -300,7 +300,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_FALKNER, 1, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, FalknerScript_0x683c2, -1
-	person_event SPRITE_YOUNGSTER, 6, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 2, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerBird_keeperRod, -1
-	person_event SPRITE_YOUNGSTER, 10, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerBird_keeperAbe, -1
-	person_event SPRITE_GYM_GUY, 13, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, VioletGymGuyScript, -1
+	person_event SPRITE_FALKNER, 1, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, FalknerScript_0x683c2, -1
+	person_event SPRITE_YOUNGSTER, 6, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 2, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerBird_keeperRod, -1
+	person_event SPRITE_YOUNGSTER, 10, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 2, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerBird_keeperAbe, -1
+	person_event SPRITE_GYM_GUY, 13, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, VioletGymGuyScript, -1
--- a/maps/VioletMart.asm
+++ b/maps/VioletMart.asm
@@ -67,4 +67,4 @@
 	db 3
 	person_event SPRITE_CLERK, 3, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ClerkScript_0x68295, -1
 	person_event SPRITE_GRANNY, 6, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GrannyScript_0x6829c, -1
-	person_event SPRITE_COOLTRAINER_M, 2, 5, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x6829f, -1
+	person_event SPRITE_COOLTRAINER_M, 2, 5, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x6829f, -1
--- a/maps/VioletNicknameSpeechHouse.asm
+++ b/maps/VioletNicknameSpeechHouse.asm
@@ -62,5 +62,5 @@
 .PersonEvents:
 	db 3
 	person_event SPRITE_TEACHER, 3, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, TeacherScript_0x693e9, -1
-	person_event SPRITE_LASS, 4, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x693ec, -1
-	person_event SPRITE_BIRD, 2, 5, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, BirdScript_0x693ef, -1
+	person_event SPRITE_LASS, 4, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x693ec, -1
+	person_event SPRITE_BIRD, 2, 5, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, BirdScript_0x693ef, -1
--- a/maps/VioletOnixTradeHouse.asm
+++ b/maps/VioletOnixTradeHouse.asm
@@ -15,7 +15,7 @@
 Kyle:
 	faceplayer
 	opentext
-	trade $1
+	trade NPCTRADE_KYLE
 	waitbutton
 	closetext
 	end
@@ -50,4 +50,4 @@
 .PersonEvents:
 	db 2
 	person_event SPRITE_POKEFAN_M, 3, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x6998d, -1
-	person_event SPRITE_YOUNGSTER, 5, 6, SPRITEMOVEDATA_WALK_UP_DOWN, 2, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, Kyle, -1
+	person_event SPRITE_YOUNGSTER, 5, 6, SPRITEMOVEDATA_WALK_UP_DOWN, 2, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, Kyle, -1
--- a/maps/VioletPokeCenter1F.asm
+++ /dev/null
@@ -1,240 +1,0 @@
-const_value set 2
-	const VIOLETPOKECENTER1F_NURSE
-	const VIOLETPOKECENTER1F_GAMEBOY_KID
-	const VIOLETPOKECENTER1F_GENTLEMAN
-	const VIOLETPOKECENTER1F_YOUNGSTER
-	const VIOLETPOKECENTER1F_SCIENTIST
-
-VioletPokeCenter1F_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-VioletPokeCenterNurse:
-	jumpstd pokecenternurse
-
-VioletPokeCenter1F_ElmsAideScript:
-	faceplayer
-	opentext
-	checkevent EVENT_REFUSED_TO_TAKE_EGG_FROM_ELMS_AIDE
-	iftrue .SecondTimeAsking
-	writetext UnknownText_0x69555
-.AskTakeEgg:
-	yesorno
-	iffalse .RefusedEgg
-	checkcode VAR_PARTYCOUNT
-	if_equal PARTY_LENGTH, .PartyFull
-	giveegg TOGEPI, 5
-	stringtotext .eggname, $1
-	scall .AideGivesEgg
-	setevent EVENT_GOT_TOGEPI_EGG_FROM_ELMS_AIDE
-	clearevent EVENT_ELMS_AIDE_IN_LAB
-	clearevent EVENT_TOGEPI_HATCHED
-	domaptrigger ROUTE_32, $1
-	writetext UnknownText_0x695c5
-	waitbutton
-	closetext
-	checkcode VAR_FACING
-	if_equal UP, .AideWalksAroundPlayer
-	spriteface PLAYER, DOWN
-	applymovement VIOLETPOKECENTER1F_SCIENTIST, MovementData_AideWalksStraightOutOfPokecenter
-	playsound SFX_EXIT_BUILDING
-	disappear VIOLETPOKECENTER1F_SCIENTIST
-	waitsfx
-	end
-
-.AideWalksAroundPlayer:
-	applymovement VIOLETPOKECENTER1F_SCIENTIST, MovementData_AideWalksLeftToExitPokecenter
-	spriteface PLAYER, DOWN
-	applymovement VIOLETPOKECENTER1F_SCIENTIST, MovementData_AideFinishesLeavingPokecenter
-	playsound SFX_EXIT_BUILDING
-	disappear VIOLETPOKECENTER1F_SCIENTIST
-	waitsfx
-	end
-
-.eggname
-	db "EGG@"
-
-.AideGivesEgg:
-	jumpstd receivetogepiegg
-	end
-
-.PartyFull:
-	writetext UnknownText_0x69693
-	waitbutton
-	closetext
-	end
-
-.RefusedEgg:
-	writetext UnknownText_0x696f2
-	waitbutton
-	closetext
-	setevent EVENT_REFUSED_TO_TAKE_EGG_FROM_ELMS_AIDE
-	end
-
-.SecondTimeAsking:
-	writetext UnknownText_0x69712
-	jump .AskTakeEgg
-
-GameboyKidScript_0x69540:
-	jumptextfaceplayer UnknownText_0x69809
-
-GentlemanScript_0x69543:
-	jumptextfaceplayer UnknownText_0x6983c
-
-YoungsterScript_0x69546:
-	jumptextfaceplayer UnknownText_0x698b8
-
-MovementData_AideWalksStraightOutOfPokecenter:
-	step DOWN
-	step DOWN
-	step DOWN
-	step DOWN
-	step_end
-
-MovementData_AideWalksLeftToExitPokecenter:
-	step LEFT
-	step DOWN
-	step_end
-
-MovementData_AideFinishesLeavingPokecenter:
-	step DOWN
-	step DOWN
-	step DOWN
-	step_end
-
-UnknownText_0x69555:
-	text "<PLAY_G>, long"
-	line "time, no see."
-
-	para "PROF.ELM asked me"
-	line "to find you."
-
-	para "He has another"
-	line "favor to ask."
-
-	para "Would you take the"
-	line "#MON EGG?"
-	done
-
-UnknownText_0x695c5:
-	text "We discovered that"
-	line "a #MON will not"
-
-	para "hatch until it"
-	line "grows in the EGG."
-
-	para "It also has to be"
-	line "with other active"
-	cont "#MON to hatch."
-
-	para "<PLAY_G>, you're"
-	line "the only person"
-	cont "we can rely on."
-
-	para "Please call PROF."
-	line "ELM when that EGG"
-	cont "hatches!"
-	done
-
-UnknownText_0x69693:
-	text "Oh, no. You can't"
-	line "carry any more"
-	cont "#MON with you."
-
-	para "I'll wait here"
-	line "while you make"
-	cont "room for the EGG."
-	done
-
-UnknownText_0x696f2:
-	text "B-but… PROF.ELM"
-	line "asked for you…"
-	done
-
-UnknownText_0x69712:
-	text "<PLAY_G>, will you"
-	line "take the EGG?"
-	done
-
-UnknownText_0x6972d:
-	text "I've been thinking"
-	line "it'd be great to"
-
-	para "be able to link up"
-	line "and battle with my"
-
-	para "friends who live"
-	line "far away."
-	done
-
-UnknownText_0x69791:
-	text "I just battled a"
-	line "friend in CIANWOOD"
-	cont "over a link."
-
-	para "If you connect a"
-	line "MOBILE ADAPTER,"
-
-	para "you can link with"
-	line "a friend far away."
-	done
-
-UnknownText_0x69809:
-	text "A guy named BILL"
-	line "made the #MON"
-	cont "PC storage system."
-	done
-
-UnknownText_0x6983c:
-	text "It was around"
-	line "three years ago."
-
-	para "TEAM ROCKET was up"
-	line "to no good with"
-	cont "#MON."
-
-	para "But justice pre-"
-	line "vailed--a young"
-	cont "kid broke 'em up."
-	done
-
-UnknownText_0x698b8:
-	text "#MON are smart."
-	line "They won't obey a"
-
-	para "trainer they don't"
-	line "respect."
-
-	para "Without the right"
-	line "GYM BADGES, they"
-
-	para "will just do as"
-	line "they please."
-	done
-
-VioletPokeCenter1F_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 3
-	warp_def $7, $3, 5, VIOLET_CITY
-	warp_def $7, $4, 5, VIOLET_CITY
-	warp_def $7, $0, 1, POKECENTER_2F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 5
-	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, VioletPokeCenterNurse, -1
-	person_event SPRITE_GAMEBOY_KID, 6, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, GameboyKidScript_0x69540, -1
-	person_event SPRITE_GENTLEMAN, 4, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x69543, -1
-	person_event SPRITE_YOUNGSTER, 1, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x69546, -1
-	person_event SPRITE_SCIENTIST, 3, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, VioletPokeCenter1F_ElmsAideScript, EVENT_ELMS_AIDE_IN_VIOLET_POKEMON_CENTER
--- /dev/null
+++ b/maps/VioletPokecenter1F.asm
@@ -1,0 +1,240 @@
+const_value set 2
+	const VIOLETPOKECENTER1F_NURSE
+	const VIOLETPOKECENTER1F_GAMEBOY_KID
+	const VIOLETPOKECENTER1F_GENTLEMAN
+	const VIOLETPOKECENTER1F_YOUNGSTER
+	const VIOLETPOKECENTER1F_SCIENTIST
+
+VioletPokecenter1F_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+VioletPokecenterNurse:
+	jumpstd pokecenternurse
+
+VioletPokecenter1F_ElmsAideScript:
+	faceplayer
+	opentext
+	checkevent EVENT_REFUSED_TO_TAKE_EGG_FROM_ELMS_AIDE
+	iftrue .SecondTimeAsking
+	writetext UnknownText_0x69555
+.AskTakeEgg:
+	yesorno
+	iffalse .RefusedEgg
+	checkcode VAR_PARTYCOUNT
+	if_equal PARTY_LENGTH, .PartyFull
+	giveegg TOGEPI, 5
+	stringtotext .eggname, $1
+	scall .AideGivesEgg
+	setevent EVENT_GOT_TOGEPI_EGG_FROM_ELMS_AIDE
+	clearevent EVENT_ELMS_AIDE_IN_LAB
+	clearevent EVENT_TOGEPI_HATCHED
+	domaptrigger ROUTE_32, $1
+	writetext UnknownText_0x695c5
+	waitbutton
+	closetext
+	checkcode VAR_FACING
+	if_equal UP, .AideWalksAroundPlayer
+	spriteface PLAYER, DOWN
+	applymovement VIOLETPOKECENTER1F_SCIENTIST, MovementData_AideWalksStraightOutOfPokecenter
+	playsound SFX_EXIT_BUILDING
+	disappear VIOLETPOKECENTER1F_SCIENTIST
+	waitsfx
+	end
+
+.AideWalksAroundPlayer:
+	applymovement VIOLETPOKECENTER1F_SCIENTIST, MovementData_AideWalksLeftToExitPokecenter
+	spriteface PLAYER, DOWN
+	applymovement VIOLETPOKECENTER1F_SCIENTIST, MovementData_AideFinishesLeavingPokecenter
+	playsound SFX_EXIT_BUILDING
+	disappear VIOLETPOKECENTER1F_SCIENTIST
+	waitsfx
+	end
+
+.eggname
+	db "EGG@"
+
+.AideGivesEgg:
+	jumpstd receivetogepiegg
+	end
+
+.PartyFull:
+	writetext UnknownText_0x69693
+	waitbutton
+	closetext
+	end
+
+.RefusedEgg:
+	writetext UnknownText_0x696f2
+	waitbutton
+	closetext
+	setevent EVENT_REFUSED_TO_TAKE_EGG_FROM_ELMS_AIDE
+	end
+
+.SecondTimeAsking:
+	writetext UnknownText_0x69712
+	jump .AskTakeEgg
+
+GameboyKidScript_0x69540:
+	jumptextfaceplayer UnknownText_0x69809
+
+GentlemanScript_0x69543:
+	jumptextfaceplayer UnknownText_0x6983c
+
+YoungsterScript_0x69546:
+	jumptextfaceplayer UnknownText_0x698b8
+
+MovementData_AideWalksStraightOutOfPokecenter:
+	step DOWN
+	step DOWN
+	step DOWN
+	step DOWN
+	step_end
+
+MovementData_AideWalksLeftToExitPokecenter:
+	step LEFT
+	step DOWN
+	step_end
+
+MovementData_AideFinishesLeavingPokecenter:
+	step DOWN
+	step DOWN
+	step DOWN
+	step_end
+
+UnknownText_0x69555:
+	text "<PLAY_G>, long"
+	line "time, no see."
+
+	para "PROF.ELM asked me"
+	line "to find you."
+
+	para "He has another"
+	line "favor to ask."
+
+	para "Would you take the"
+	line "#MON EGG?"
+	done
+
+UnknownText_0x695c5:
+	text "We discovered that"
+	line "a #MON will not"
+
+	para "hatch until it"
+	line "grows in the EGG."
+
+	para "It also has to be"
+	line "with other active"
+	cont "#MON to hatch."
+
+	para "<PLAY_G>, you're"
+	line "the only person"
+	cont "we can rely on."
+
+	para "Please call PROF."
+	line "ELM when that EGG"
+	cont "hatches!"
+	done
+
+UnknownText_0x69693:
+	text "Oh, no. You can't"
+	line "carry any more"
+	cont "#MON with you."
+
+	para "I'll wait here"
+	line "while you make"
+	cont "room for the EGG."
+	done
+
+UnknownText_0x696f2:
+	text "B-but… PROF.ELM"
+	line "asked for you…"
+	done
+
+UnknownText_0x69712:
+	text "<PLAY_G>, will you"
+	line "take the EGG?"
+	done
+
+UnknownText_0x6972d:
+	text "I've been thinking"
+	line "it'd be great to"
+
+	para "be able to link up"
+	line "and battle with my"
+
+	para "friends who live"
+	line "far away."
+	done
+
+UnknownText_0x69791:
+	text "I just battled a"
+	line "friend in CIANWOOD"
+	cont "over a link."
+
+	para "If you connect a"
+	line "MOBILE ADAPTER,"
+
+	para "you can link with"
+	line "a friend far away."
+	done
+
+UnknownText_0x69809:
+	text "A guy named BILL"
+	line "made the #MON"
+	cont "PC storage system."
+	done
+
+UnknownText_0x6983c:
+	text "It was around"
+	line "three years ago."
+
+	para "TEAM ROCKET was up"
+	line "to no good with"
+	cont "#MON."
+
+	para "But justice pre-"
+	line "vailed--a young"
+	cont "kid broke 'em up."
+	done
+
+UnknownText_0x698b8:
+	text "#MON are smart."
+	line "They won't obey a"
+
+	para "trainer they don't"
+	line "respect."
+
+	para "Without the right"
+	line "GYM BADGES, they"
+
+	para "will just do as"
+	line "they please."
+	done
+
+VioletPokecenter1F_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 3
+	warp_def $7, $3, 5, VIOLET_CITY
+	warp_def $7, $4, 5, VIOLET_CITY
+	warp_def $7, $0, 1, POKECENTER_2F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 5
+	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, VioletPokecenterNurse, -1
+	person_event SPRITE_GAMEBOY_KID, 6, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, GameboyKidScript_0x69540, -1
+	person_event SPRITE_GENTLEMAN, 4, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GentlemanScript_0x69543, -1
+	person_event SPRITE_YOUNGSTER, 1, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x69546, -1
+	person_event SPRITE_SCIENTIST, 3, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, VioletPokecenter1F_ElmsAideScript, EVENT_ELMS_AIDE_IN_VIOLET_POKEMON_CENTER
--- a/maps/ViridianCity.asm
+++ b/maps/ViridianCity.asm
@@ -10,8 +10,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
 	dbw MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
@@ -83,7 +81,7 @@
 TrainerHouseSign:
 	jumptext TrainerHouseSignText
 
-ViridianCityPokeCenterSign:
+ViridianCityPokecenterSign:
 	jumpstd pokecentersign
 
 ViridianCityMartSign:
@@ -238,12 +236,12 @@
 	signpost 7, 27, SIGNPOST_READ, ViridianGymSign
 	signpost 1, 19, SIGNPOST_READ, ViridianCityWelcomeSign
 	signpost 15, 21, SIGNPOST_READ, TrainerHouseSign
-	signpost 25, 24, SIGNPOST_READ, ViridianCityPokeCenterSign
+	signpost 25, 24, SIGNPOST_READ, ViridianCityPokecenterSign
 	signpost 19, 30, SIGNPOST_READ, ViridianCityMartSign
 
 .PersonEvents:
 	db 4
 	person_event SPRITE_GRAMPS, 5, 18, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, 0, PERSONTYPE_SCRIPT, 0, GrampsScript_0x1a9a4c, -1
-	person_event SPRITE_GRAMPS, 8, 30, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, GrampsScript_0x1a9a61, -1
-	person_event SPRITE_FISHER, 23, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, FisherScript_0x1a9a75, -1
-	person_event SPRITE_YOUNGSTER, 21, 17, SPRITEMOVEDATA_WANDER, 3, 3, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x1a9a90, -1
+	person_event SPRITE_GRAMPS, 8, 30, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, GrampsScript_0x1a9a61, -1
+	person_event SPRITE_FISHER, 23, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, FisherScript_0x1a9a75, -1
+	person_event SPRITE_YOUNGSTER, 21, 17, SPRITEMOVEDATA_WANDER, 3, 3, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, YoungsterScript_0x1a9a90, -1
--- a/maps/ViridianGym.asm
+++ b/maps/ViridianGym.asm
@@ -189,4 +189,4 @@
 .PersonEvents:
 	db 2
 	person_event SPRITE_BLUE, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ViridianGymBlueScript, EVENT_VIRIDIAN_GYM_BLUE
-	person_event SPRITE_GYM_GUY, 13, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, ViridianGymGuyScript, EVENT_VIRIDIAN_GYM_BLUE
+	person_event SPRITE_GYM_GUY, 13, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, ViridianGymGuyScript, EVENT_VIRIDIAN_GYM_BLUE
--- a/maps/ViridianNicknameSpeechHouse.asm
+++ b/maps/ViridianNicknameSpeechHouse.asm
@@ -78,7 +78,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_POKEFAN_M, 4, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x9ae3a, -1
-	person_event SPRITE_LASS, 4, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x9ae3d, -1
-	person_event SPRITE_MOLTRES, 2, 5, SPRITEMOVEDATA_POKEMON, 0, 2, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, Speary, -1
-	person_event SPRITE_GROWLITHE, 3, 6, SPRITEMOVEDATA_POKEMON, 0, 2, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, Rattey, -1
+	person_event SPRITE_POKEFAN_M, 4, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x9ae3a, -1
+	person_event SPRITE_LASS, 4, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, LassScript_0x9ae3d, -1
+	person_event SPRITE_MOLTRES, 2, 5, SPRITEMOVEDATA_POKEMON, 0, 2, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, Speary, -1
+	person_event SPRITE_GROWLITHE, 3, 6, SPRITEMOVEDATA_POKEMON, 0, 2, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, Rattey, -1
--- a/maps/ViridianPokeCenter1F.asm
+++ /dev/null
@@ -1,95 +1,0 @@
-const_value set 2
-	const VIRIDIANPOKECENTER1F_NURSE
-	const VIRIDIANPOKECENTER1F_COOLTRAINER_M
-	const VIRIDIANPOKECENTER1F_COOLTRAINER_F
-	const VIRIDIANPOKECENTER1F_BUG_CATCHER
-
-ViridianPokeCenter1F_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-NurseScript_0x9b690:
-	jumpstd pokecenternurse
-
-CooltrainerMScript_0x9b693:
-	faceplayer
-	opentext
-	checkevent EVENT_BLUE_IN_CINNABAR
-	iftrue .BlueReturned
-	writetext UnknownText_0x9b6ad
-	waitbutton
-	closetext
-	end
-
-.BlueReturned:
-	writetext UnknownText_0x9b6f5
-	waitbutton
-	closetext
-	end
-
-CooltrainerFScript_0x9b6a7:
-	jumptextfaceplayer UnknownText_0x9b76b
-
-BugCatcherScript_0x9b6aa:
-	jumptextfaceplayer UnknownText_0x9b7c8
-
-UnknownText_0x9b6ad:
-	text "Where in the world"
-	line "is VIRIDIAN's GYM"
-
-	para "LEADER? I wanted"
-	line "to challenge him."
-	done
-
-UnknownText_0x9b6f5:
-	text "There are no GYM"
-	line "TRAINERS at the"
-	cont "VIRIDIAN GYM."
-
-	para "The LEADER claims"
-	line "his policy is to"
-
-	para "win without having"
-	line "any underlings."
-	done
-
-UnknownText_0x9b76b:
-	text "I heard that the"
-	line "GYM in CINNABAR is"
-	cont "gone."
-
-	para "I wonder what be-"
-	line "came of BLAINE,"
-	cont "the GYM LEADER."
-	done
-
-UnknownText_0x9b7c8:
-	text "My dream is to be-"
-	line "come a GYM LEADER."
-	done
-
-ViridianPokeCenter1F_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 3
-	warp_def $7, $3, 5, VIRIDIAN_CITY
-	warp_def $7, $4, 5, VIRIDIAN_CITY
-	warp_def $7, $0, 1, POKECENTER_2F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 4
-	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x9b690, -1
-	person_event SPRITE_COOLTRAINER_M, 4, 8, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x9b693, -1
-	person_event SPRITE_COOLTRAINER_F, 3, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x9b6a7, -1
-	person_event SPRITE_BUG_CATCHER, 6, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, BugCatcherScript_0x9b6aa, -1
--- a/maps/ViridianPokeCenter2FBeta.asm
+++ /dev/null
@@ -1,23 +1,0 @@
-ViridianPokeCenter2FBeta_MapScriptHeader:
-.MapTriggers:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-ViridianPokeCenter2FBeta_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 1
-	warp_def $7, $0, 3, VIRIDIAN_POKECENTER_1F
-
-.XYTriggers:
-	db 0
-
-.Signposts:
-	db 0
-
-.PersonEvents:
-	db 0
--- /dev/null
+++ b/maps/ViridianPokecenter1F.asm
@@ -1,0 +1,95 @@
+const_value set 2
+	const VIRIDIANPOKECENTER1F_NURSE
+	const VIRIDIANPOKECENTER1F_COOLTRAINER_M
+	const VIRIDIANPOKECENTER1F_COOLTRAINER_F
+	const VIRIDIANPOKECENTER1F_BUG_CATCHER
+
+ViridianPokecenter1F_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+NurseScript_0x9b690:
+	jumpstd pokecenternurse
+
+CooltrainerMScript_0x9b693:
+	faceplayer
+	opentext
+	checkevent EVENT_BLUE_IN_CINNABAR
+	iftrue .BlueReturned
+	writetext UnknownText_0x9b6ad
+	waitbutton
+	closetext
+	end
+
+.BlueReturned:
+	writetext UnknownText_0x9b6f5
+	waitbutton
+	closetext
+	end
+
+CooltrainerFScript_0x9b6a7:
+	jumptextfaceplayer UnknownText_0x9b76b
+
+BugCatcherScript_0x9b6aa:
+	jumptextfaceplayer UnknownText_0x9b7c8
+
+UnknownText_0x9b6ad:
+	text "Where in the world"
+	line "is VIRIDIAN's GYM"
+
+	para "LEADER? I wanted"
+	line "to challenge him."
+	done
+
+UnknownText_0x9b6f5:
+	text "There are no GYM"
+	line "TRAINERS at the"
+	cont "VIRIDIAN GYM."
+
+	para "The LEADER claims"
+	line "his policy is to"
+
+	para "win without having"
+	line "any underlings."
+	done
+
+UnknownText_0x9b76b:
+	text "I heard that the"
+	line "GYM in CINNABAR is"
+	cont "gone."
+
+	para "I wonder what be-"
+	line "came of BLAINE,"
+	cont "the GYM LEADER."
+	done
+
+UnknownText_0x9b7c8:
+	text "My dream is to be-"
+	line "come a GYM LEADER."
+	done
+
+ViridianPokecenter1F_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 3
+	warp_def $7, $3, 5, VIRIDIAN_CITY
+	warp_def $7, $4, 5, VIRIDIAN_CITY
+	warp_def $7, $0, 1, POKECENTER_2F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 4
+	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x9b690, -1
+	person_event SPRITE_COOLTRAINER_M, 4, 8, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, CooltrainerMScript_0x9b693, -1
+	person_event SPRITE_COOLTRAINER_F, 3, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x9b6a7, -1
+	person_event SPRITE_BUG_CATCHER, 6, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, BugCatcherScript_0x9b6aa, -1
--- /dev/null
+++ b/maps/ViridianPokecenter2FBeta.asm
@@ -1,0 +1,23 @@
+ViridianPokecenter2FBeta_MapScriptHeader:
+.MapTriggers:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+ViridianPokecenter2FBeta_MapEventHeader:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 1
+	warp_def $7, $0, 3, VIRIDIAN_POKECENTER_1F
+
+.XYTriggers:
+	db 0
+
+.Signposts:
+	db 0
+
+.PersonEvents:
+	db 0
--- a/maps/WarehouseEntrance.asm
+++ b/maps/WarehouseEntrance.asm
@@ -15,13 +15,8 @@
 
 .MapCallbacks:
 	db 3
-
-	; callbacks
-
 	dbw MAPCALLBACK_NEWMAP, .ResetSwitches
-
 	dbw MAPCALLBACK_TILES, .CheckBasementKey
-
 	dbw MAPCALLBACK_OBJECTS, .CheckDayOfWeek
 
 .ResetSwitches:
@@ -121,7 +116,7 @@
 SupernerdEricScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x7c36c
+	writetext SupernerdEricAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -132,7 +127,7 @@
 SupernerdTeruScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x7c410
+	writetext SupernerdTeruAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -143,7 +138,7 @@
 PokemaniacIssacScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x7c498
+	writetext PokemaniacIssacAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -154,7 +149,7 @@
 PokemaniacDonaldScript:
 	end_if_just_battled
 	opentext
-	writetext UnknownText_0x7c52f
+	writetext PokemaniacDonaldAfterBattleText
 	waitbutton
 	closetext
 	end
@@ -439,7 +434,7 @@
 	text "…Grumble…"
 	done
 
-UnknownText_0x7c36c:
+SupernerdEricAfterBattleText:
 	text "I guess I have to"
 	line "do things fair and"
 	cont "square…"
@@ -461,7 +456,7 @@
 	text "Ow, ow, ow!"
 	done
 
-UnknownText_0x7c410:
+SupernerdTeruAfterBattleText:
 	text "I know my #MON"
 	line "type alignments."
 
@@ -481,7 +476,7 @@
 	text "Aiyeeee!"
 	done
 
-UnknownText_0x7c498:
+PokemaniacIssacAfterBattleText:
 	text "Your #MON will"
 	line "like you more if"
 
@@ -502,7 +497,7 @@
 	line "That makes me mad!"
 	done
 
-UnknownText_0x7c52f:
+PokemaniacDonaldAfterBattleText:
 	text "Are you making a"
 	line "#DEX? Here's a"
 	cont "hot tip."
@@ -680,12 +675,12 @@
 
 .PersonEvents:
 	db 9
-	person_event SPRITE_SUPER_NERD, 31, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 3, TrainerSupernerdEric, -1
-	person_event SPRITE_SUPER_NERD, 9, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_TRAINER, 2, TrainerSupernerdTeru, -1
-	person_event SPRITE_SUPER_NERD, 27, 3, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 2, TrainerPokemaniacIssac, -1
-	person_event SPRITE_SUPER_NERD, 6, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_TRAINER, 3, TrainerPokemaniacDonald, -1
+	person_event SPRITE_SUPER_NERD, 31, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 3, TrainerSupernerdEric, -1
+	person_event SPRITE_SUPER_NERD, 9, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_TRAINER, 2, TrainerSupernerdTeru, -1
+	person_event SPRITE_SUPER_NERD, 27, 3, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 2, TrainerPokemaniacIssac, -1
+	person_event SPRITE_SUPER_NERD, 6, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_TRAINER, 3, TrainerPokemaniacDonald, -1
 	person_event SPRITE_POKE_BALL, 25, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, PERSONTYPE_ITEMBALL, 0, WarehouseEntranceCoinCase, EVENT_WAREHOUSE_ENTRANCE_COIN_CASE
-	person_event SPRITE_GRAMPS, 11, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, GrampsScript_0x7c146, EVENT_WAREHOUSE_ENTRANCE_GRAMPS
-	person_event SPRITE_SUPER_NERD, 14, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, OlderHaircutBrotherScript, EVENT_WAREHOUSE_ENTRANCE_OLDER_HAIRCUT_BROTHER
-	person_event SPRITE_SUPER_NERD, 15, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, YoungerHaircutBrotherScript, EVENT_WAREHOUSE_ENTRANCE_YOUNGER_HAIRCUT_BROTHER
-	person_event SPRITE_GRANNY, 21, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, PERSONTYPE_SCRIPT, 0, GrannyScript_0x7c132, EVENT_WAREHOUSE_ENTRANCE_GRANNY
+	person_event SPRITE_GRAMPS, 11, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, GrampsScript_0x7c146, EVENT_WAREHOUSE_ENTRANCE_GRAMPS
+	person_event SPRITE_SUPER_NERD, 14, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, OlderHaircutBrotherScript, EVENT_WAREHOUSE_ENTRANCE_OLDER_HAIRCUT_BROTHER
+	person_event SPRITE_SUPER_NERD, 15, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, PERSONTYPE_SCRIPT, 0, YoungerHaircutBrotherScript, EVENT_WAREHOUSE_ENTRANCE_YOUNGER_HAIRCUT_BROTHER
+	person_event SPRITE_GRANNY, 21, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BROWN, PERSONTYPE_SCRIPT, 0, GrannyScript_0x7c132, EVENT_WAREHOUSE_ENTRANCE_GRANNY
--- a/maps/WhirlIslandLugiaChamber.asm
+++ b/maps/WhirlIslandLugiaChamber.asm
@@ -7,9 +7,6 @@
 
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_OBJECTS, .Lugia
 
 .Lugia:
@@ -62,4 +59,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_LUGIA, 5, 9, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT, 0, Lugia, EVENT_WHIRL_ISLAND_LUGIA_CHAMBER_LUGIA
+	person_event SPRITE_LUGIA, 5, 9, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_BLUE, PERSONTYPE_SCRIPT, 0, Lugia, EVENT_WHIRL_ISLAND_LUGIA_CHAMBER_LUGIA
--- a/maps/WillsRoom.asm
+++ b/maps/WillsRoom.asm
@@ -4,34 +4,29 @@
 WillsRoom_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .LockDoor
+	maptrigger .DummyTrigger
 
-	; triggers
-	dw .Trigger0, 0
-	dw .Trigger1, 0
-
 .MapCallbacks:
 	db 1
-
-	; callbacks
-
 	dbw MAPCALLBACK_TILES, .WillsRoomDoors
 
-.Trigger0:
+.LockDoor:
 	priorityjump .WillsDoorLocksBehindYou
 	end
 
-.Trigger1:
+.DummyTrigger:
 	end
 
 .WillsRoomDoors:
 	checkevent EVENT_WILLS_ROOM_ENTRANCE_CLOSED
-	iffalse .KeepDoorClosed
+	iffalse .KeepDoorsClosed
 	changeblock $4, $e, $2a
-.KeepDoorClosed:
+.KeepDoorsClosed:
 	checkevent EVENT_WILLS_ROOM_EXIT_OPEN
-	iffalse .OpenDoor
+	iffalse .OpenDoors
 	changeblock $4, $2, $16
-.OpenDoor:
+.OpenDoors:
 	return
 
 .WillsDoorLocksBehindYou:
@@ -151,4 +146,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_WILL, 7, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT, 0, WillScript_Battle, -1
+	person_event SPRITE_WILL, 7, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, PERSONTYPE_SCRIPT, 0, WillScript_Battle, -1
--- a/maps/WiseTriosRoom.asm
+++ b/maps/WiseTriosRoom.asm
@@ -9,41 +9,36 @@
 WiseTriosRoom_MapScriptHeader:
 .MapTriggers:
 	db 2
+	maptrigger .DummyTrigger0
+	maptrigger .DummyTrigger1
 
-	; triggers
-	dw UnknownScript_0x98572, 0
-	dw UnknownScript_0x98573, 0
-
 .MapCallbacks:
 	db 1
+	dbw MAPCALLBACK_OBJECTS, .WiseTrioCallback
 
-	; callbacks
-
-	dbw MAPCALLBACK_OBJECTS, UnknownScript_0x98574
-
-UnknownScript_0x98572:
+.DummyTrigger0:
 	end
 
-UnknownScript_0x98573:
+.DummyTrigger1:
 	end
 
-UnknownScript_0x98574:
+.WiseTrioCallback:
 	checkevent EVENT_FOUGHT_SUICUNE
-	iftrue UnknownScript_0x98593
+	iftrue .NoWiseTrio
 	checkevent EVENT_KOJI_ALLOWS_YOU_PASSAGE_TO_TIN_TOWER
-	iftrue UnknownScript_0x9858c
+	iftrue .WiseTrio2
 	checkitem CLEAR_BELL
-	iftrue UnknownScript_0x9858c
+	iftrue .WiseTrio2
 	clearevent EVENT_WISE_TRIOS_ROOM_WISE_TRIO_1
 	setevent EVENT_WISE_TRIOS_ROOM_WISE_TRIO_2
 	return
 
-UnknownScript_0x9858c:
+.WiseTrio2:
 	setevent EVENT_WISE_TRIOS_ROOM_WISE_TRIO_1
 	clearevent EVENT_WISE_TRIOS_ROOM_WISE_TRIO_2
 	return
 
-UnknownScript_0x98593:
+.NoWiseTrio:
 	setevent EVENT_WISE_TRIOS_ROOM_WISE_TRIO_1
 	setevent EVENT_WISE_TRIOS_ROOM_WISE_TRIO_2
 	return
--- /dev/null
+++ b/maps/blockdata.asm
@@ -1,0 +1,1047 @@
+SECTION "Map Blockdata 1", ROMX
+
+Route32_BlockData:
+	INCBIN "maps/Route32.blk"
+
+Route40_BlockData:
+	INCBIN "maps/Route40.blk"
+
+Route36_BlockData:
+	INCBIN "maps/Route36.blk"
+
+Route44_BlockData:
+	INCBIN "maps/Route44.blk"
+
+Route28_BlockData:
+	INCBIN "maps/Route28.blk"
+
+BetaHerosHouse_BlockData:
+	INCBIN "maps/BetaHerosHouse.blk"
+
+CeladonCity_BlockData:
+	INCBIN "maps/CeladonCity.blk"
+
+SaffronCity_BlockData:
+	INCBIN "maps/SaffronCity.blk"
+
+Route2_BlockData:
+	INCBIN "maps/Route2.blk"
+
+ElmsHouse_BlockData:
+	INCBIN "maps/ElmsHouse.blk"
+
+BetaSproutTower1_BlockData:
+	INCBIN "maps/BetaSproutTower1.blk"
+
+Route11_BlockData:
+	INCBIN "maps/Route11.blk"
+
+BetaSproutTower5_BlockData:
+	INCBIN "maps/BetaSproutTower5.blk"
+
+Route15_BlockData:
+	INCBIN "maps/Route15.blk"
+
+BetaSproutTower9_BlockData:
+	INCBIN "maps/BetaSproutTower9.blk"
+
+Route19_BlockData:
+	INCBIN "maps/Route19.blk"
+
+BetaBlackthornCity_BlockData:
+	INCBIN "maps/BetaBlackthornCity.blk"
+
+Route10South_BlockData:
+	INCBIN "maps/Route10South.blk"
+
+Pokecenter2F_BlockData:
+CinnabarPokecenter2FBeta_BlockData:
+CeruleanPokecenter2FBeta_BlockData:
+Route10Pokecenter2FBeta_BlockData:
+VermilionPokecenter2FBeta_BlockData:
+PewterPokecenter2FBeta_BlockData:
+FuchsiaPokecenter2FBeta_BlockData:
+LavenderPokecenter2FBeta_BlockData:
+CeladonPokecenter2FBeta_BlockData:
+ViridianPokecenter2FBeta_BlockData:
+SaffronPokecenter2FBeta_BlockData:
+	INCBIN "maps/Pokecenter2F.blk"
+
+Route41_BlockData:
+	INCBIN "maps/Route41.blk"
+
+Route33_BlockData:
+	INCBIN "maps/Route33.blk"
+
+Route45_BlockData:
+	INCBIN "maps/Route45.blk"
+
+Route29_BlockData:
+	INCBIN "maps/Route29.blk"
+
+Route37_BlockData:
+	INCBIN "maps/Route37.blk"
+
+LavenderTown_BlockData:
+	INCBIN "maps/LavenderTown.blk"
+
+PalletTown_BlockData:
+	INCBIN "maps/PalletTown.blk"
+
+Route25_BlockData:
+	INCBIN "maps/Route25.blk"
+
+Route24_BlockData:
+	INCBIN "maps/Route24.blk"
+
+BetaVioletCity_BlockData:
+	INCBIN "maps/BetaVioletCity.blk"
+
+Route3_BlockData:
+	INCBIN "maps/Route3.blk"
+
+PewterCity_BlockData:
+	INCBIN "maps/PewterCity.blk"
+
+BetaIlexForest_BlockData:
+	INCBIN "maps/BetaIlexForest.blk"
+
+BetaSproutTower2_BlockData:
+	INCBIN "maps/BetaSproutTower2.blk"
+
+Route12_BlockData:
+	INCBIN "maps/Route12.blk"
+
+BetaGoldenrodCity_BlockData:
+	INCBIN "maps/BetaGoldenrodCity.blk"
+
+Route20_BlockData:
+	INCBIN "maps/Route20.blk"
+
+BetaSproutTower6_BlockData:
+	INCBIN "maps/BetaSproutTower6.blk"
+
+BetaPokecenterMainHouse_BlockData:
+	INCBIN "maps/BetaPokecenterMainHouse.blk"
+
+Route30_BlockData:
+	INCBIN "maps/Route30.blk"
+
+Route26_BlockData:
+	INCBIN "maps/Route26.blk"
+
+Route42_BlockData:
+	INCBIN "maps/Route42.blk"
+
+Route34_BlockData:
+	INCBIN "maps/Route34.blk"
+
+Route46_BlockData:
+	INCBIN "maps/Route46.blk"
+
+FuchsiaCity_BlockData:
+	INCBIN "maps/FuchsiaCity.blk"
+
+Route38_BlockData:
+	INCBIN "maps/Route38.blk"
+
+BetaCianwoodCity_BlockData:
+	INCBIN "maps/BetaCianwoodCity.blk"
+
+OlivineTimsHouse_BlockData:
+OlivineHouseBeta_BlockData:
+OlivinePunishmentSpeechHouse_BlockData:
+OlivineGoodRodHouse_BlockData:
+Route39Farmhouse_BlockData:
+MahoganyRedGyaradosSpeechHouse_BlockData:
+BlackthornDragonSpeechHouse_BlockData:
+BlackthornEmysHouse_BlockData:
+MoveDeletersHouse_BlockData:
+CeruleanGymBadgeSpeechHouse_BlockData:
+CeruleanPoliceStation_BlockData:
+CeruleanTradeSpeechHouse_BlockData:
+BillsHouse_BlockData:
+CharcoalKiln_BlockData:
+LakeOfRageHiddenPowerHouse_BlockData:
+LakeOfRageMagikarpHouse_BlockData:
+GoldenrodHappinessRater_BlockData:
+GoldenrodBillsHouse_BlockData:
+GoldenrodPPSpeechHouse_BlockData:
+GoldenrodNameRater_BlockData:
+VermilionHouseFishingSpeechHouse_BlockData:
+VermilionMagnetTrainSpeechHouse_BlockData:
+VermilionHouseDiglettsCaveSpeechHouse_BlockData:
+BluesHouse_BlockData:
+PewterNidoranSpeechHouse_BlockData:
+PewterSnoozeSpeechHouse_BlockData:
+FuchsiaBillSpeechHouse_BlockData:
+LavenderTownSpeechHouse_BlockData:
+LavenderNameRater_BlockData:
+Route12SuperRodHouse_BlockData:
+Route28FamousSpeechHouse_BlockData:
+CeladonMansionRoofHouse_BlockData:
+Route16FuchsiaSpeechHouse_BlockData:
+ManiasHouse_BlockData:
+CianwoodPharmacy_BlockData:
+CianwoodCityPhotoStudio_BlockData:
+CianwoodLugiaSpeechHouse_BlockData:
+PokeSeersHouse_BlockData:
+ViridianNicknameSpeechHouse_BlockData:
+Route2NuggetSpeechHouse_BlockData:
+KrissNeighborsHouse_BlockData:
+Route26HealSpeechHouse_BlockData:
+Route26DayofWeekSiblingsHouse_BlockData:
+Route27SandstormHouse_BlockData:
+MrPsychicsHouse_BlockData:
+Route5CleanseTagSpeechHouse_BlockData:
+CherrygroveGymSpeechHouse_BlockData:
+GuideGentsHouse_BlockData:
+CherrygroveEvolutionSpeechHouse_BlockData:
+Route30BerrySpeechHouse_BlockData:
+	INCBIN "maps/House1.blk"
+
+SafariZoneFuchsiaGateBeta_BlockData:
+Route19FuchsiaGate_BlockData:
+Route43MahoganyGate_BlockData:
+Route43Gate_BlockData:
+Route35GoldenrodGate_BlockData:
+Route36RuinsOfAlphGate_BlockData:
+Route34IlexForestGate_BlockData:
+Route6SaffronGate_BlockData:
+Route40BattleTowerGate_BlockData:
+Route2Gate_BlockData:
+Route2946Gate_BlockData:
+Route5SaffronCityGate_BlockData:
+	INCBIN "maps/NorthSouthGate.blk"
+
+BetaTeakCity_BlockData:
+	INCBIN "maps/BetaTeakCity.blk"
+
+BetaCherrygroveCity_BlockData:
+	INCBIN "maps/BetaCherrygroveCity.blk"
+
+CinnabarIsland_BlockData:
+	INCBIN "maps/CinnabarIsland.blk"
+
+Route4_BlockData:
+	INCBIN "maps/Route4.blk"
+
+Route8_BlockData:
+	INCBIN "maps/Route8.blk"
+
+BetaSproutTower3_BlockData:
+	INCBIN "maps/BetaSproutTower3.blk"
+
+ViridianCity_BlockData:
+	INCBIN "maps/ViridianCity.blk"
+
+Route13_BlockData:
+	INCBIN "maps/Route13.blk"
+
+Route21_BlockData:
+	INCBIN "maps/Route21.blk"
+
+BetaSproutTower7_BlockData:
+	INCBIN "maps/BetaSproutTower7.blk"
+
+Route17_BlockData:
+	INCBIN "maps/Route17.blk"
+
+BetaMahoganyTown_BlockData:
+	INCBIN "maps/BetaMahoganyTown.blk"
+
+Route31_BlockData:
+	INCBIN "maps/Route31.blk"
+
+Route27_BlockData:
+	INCBIN "maps/Route27.blk"
+
+Route35_BlockData:
+	INCBIN "maps/Route35.blk"
+
+Route43_BlockData:
+	INCBIN "maps/Route43.blk"
+
+Route39_BlockData:
+	INCBIN "maps/Route39.blk"
+
+KrissHouse1F_BlockData:
+	INCBIN "maps/KrissHouse1F.blk"
+
+Route38EcruteakGate_BlockData:
+Route42EcruteakGate_BlockData:
+Route32RuinsOfAlphGate_BlockData:
+IlexForestAzaleaGate_BlockData:
+Route15FuchsiaGate_BlockData:
+Route8SaffronGate_BlockData:
+Route16Gate_BlockData:
+Route7SaffronGate_BlockData:
+Route1718Gate_BlockData:
+Route31VioletGate_BlockData:
+	INCBIN "maps/EastWestGate.blk"
+
+BetaAzaleaTown_BlockData:
+	INCBIN "maps/BetaAzaleaTown.blk"
+
+VermilionCity_BlockData:
+	INCBIN "maps/VermilionCity.blk"
+
+BetaOlivineCity_BlockData:
+	INCBIN "maps/BetaOlivineCity.blk"
+
+BetaNewBarkTown_BlockData:
+	INCBIN "maps/BetaNewBarkTown.blk"
+
+ElmsLab_BlockData:
+	INCBIN "maps/ElmsLab.blk"
+
+CeruleanCity_BlockData:
+	INCBIN "maps/CeruleanCity.blk"
+
+Route1_BlockData:
+	INCBIN "maps/Route1.blk"
+
+Route5_BlockData:
+	INCBIN "maps/Route5.blk"
+
+Route9_BlockData:
+	INCBIN "maps/Route9.blk"
+
+Route22_BlockData:
+	INCBIN "maps/Route22.blk"
+
+
+SECTION "Map Blockdata 2", ROMX
+
+Route14_BlockData:
+	INCBIN "maps/Route14.blk"
+
+BetaSproutTower8_BlockData:
+	INCBIN "maps/BetaSproutTower8.blk"
+
+OlivineMart_BlockData:
+EcruteakMart_BlockData:
+BlackthornMart_BlockData:
+CeruleanMart_BlockData:
+AzaleaMart_BlockData:
+VioletMart_BlockData:
+VermilionMart_BlockData:
+PewterMart_BlockData:
+FuchsiaMart_BlockData:
+LavenderMart_BlockData:
+ViridianMart_BlockData:
+SaffronMart_BlockData:
+CherrygroveMart_BlockData:
+	INCBIN "maps/Mart.blk"
+
+Route10North_BlockData:
+	INCBIN "maps/Route10North.blk"
+
+BetaLakeOfRage_BlockData:
+	INCBIN "maps/BetaLakeOfRage.blk"
+
+OlivinePokecenter1F_BlockData:
+MahoganyPokecenter1F_BlockData:
+EcruteakPokecenter1F_BlockData:
+BlackthornPokecenter1F_BlockData:
+CinnabarPokecenter1F_BlockData:
+CeruleanPokecenter1F_BlockData:
+Route10Pokecenter1F_BlockData:
+AzaleaPokecenter1F_BlockData:
+VioletPokecenter1F_BlockData:
+Route32Pokecenter1F_BlockData:
+GoldenrodPokecenter1F_BlockData:
+VermilionPokecenter1F_BlockData:
+PewterPokecenter1F_BlockData:
+FuchsiaPokecenter1F_BlockData:
+LavenderPokecenter1F_BlockData:
+SilverCavePokecenter1F_BlockData:
+CeladonPokecenter1F_BlockData:
+CianwoodPokecenter1F_BlockData:
+ViridianPokecenter1F_BlockData:
+SaffronPokecenter1F_BlockData:
+CherrygrovePokecenter1F_BlockData:
+	INCBIN "maps/Pokecenter1F.blk"
+
+BetaPewterMuseumOfScience1F_BlockData:
+	INCBIN "maps/BetaPewterMuseumOfScience1F.blk"
+
+BetaPewterMuseumOfScience2F_BlockData:
+	INCBIN "maps/BetaPewterMuseumOfScience2F.blk"
+
+EarlsPokemonAcademy_BlockData:
+	INCBIN "maps/EarlsPokemonAcademy.blk"
+
+BetaCinnabarIslandPokemonLabHallway_BlockData:
+	INCBIN "maps/BetaCinnabarIslandPokemonLabHallway.blk"
+
+BetaCinnabarIslandPokemonLabRoom1_BlockData:
+	INCBIN "maps/BetaCinnabarIslandPokemonLabRoom1.blk"
+
+BetaCinnabarIslandPokemonLabRoom2_BlockData:
+	INCBIN "maps/BetaCinnabarIslandPokemonLabRoom2.blk"
+
+BetaCinnabarIslandPokemonLabRoom3_BlockData:
+	INCBIN "maps/BetaCinnabarIslandPokemonLabRoom3.blk"
+
+GoldenrodDeptStore1F_BlockData:
+CeladonDeptStore1F_BlockData:
+	INCBIN "maps/DeptStore1F.blk"
+
+GoldenrodDeptStore2F_BlockData:
+CeladonDeptStore2F_BlockData:
+	INCBIN "maps/DeptStore2F.blk"
+
+GoldenrodDeptStore3F_BlockData:
+CeladonDeptStore3F_BlockData:
+	INCBIN "maps/DeptStore3F.blk"
+
+GoldenrodDeptStore4F_BlockData:
+CeladonDeptStore4F_BlockData:
+	INCBIN "maps/DeptStore4F.blk"
+
+GoldenrodDeptStore5F_BlockData:
+CeladonDeptStore5F_BlockData:
+	INCBIN "maps/DeptStore5F.blk"
+
+GoldenrodDeptStore6F_BlockData:
+CeladonDeptStore6F_BlockData:
+	INCBIN "maps/DeptStore6F.blk"
+
+GoldenrodDeptStoreElevator_BlockData:
+CeladonDeptStoreElevator_BlockData:
+	INCBIN "maps/DeptStoreElevator.blk"
+
+CeladonMansion1F_BlockData:
+	INCBIN "maps/CeladonMansion1F.blk"
+
+CeladonMansion2F_BlockData:
+	INCBIN "maps/CeladonMansion2F.blk"
+
+CeladonMansion3F_BlockData:
+	INCBIN "maps/CeladonMansion3F.blk"
+
+CeladonMansionRoof_BlockData:
+	INCBIN "maps/CeladonMansionRoof.blk"
+
+BetaHouse_BlockData:
+	INCBIN "maps/BetaHouse.blk"
+
+CeladonGameCorner_BlockData:
+	INCBIN "maps/CeladonGameCorner.blk"
+
+CeladonGameCornerPrizeRoom_BlockData:
+	INCBIN "maps/CeladonGameCornerPrizeRoom.blk"
+
+Colosseum_BlockData:
+	INCBIN "maps/Colosseum.blk"
+
+TradeCenter_BlockData:
+TimeCapsule_BlockData:
+	INCBIN "maps/TradeCenter.blk"
+
+EcruteakLugiaSpeechHouse_BlockData:
+EcruteakItemfinderHouse_BlockData:
+VioletNicknameSpeechHouse_BlockData:
+VioletOnixTradeHouse_BlockData:
+	INCBIN "maps/House2.blk"
+
+BetaCave_BlockData:
+	INCBIN "maps/BetaCave.blk"
+
+UnionCaveB1F_BlockData:
+	INCBIN "maps/UnionCaveB1F.blk"
+
+UnionCaveB2F_BlockData:
+	INCBIN "maps/UnionCaveB2F.blk"
+
+UnionCave1F_BlockData:
+	INCBIN "maps/UnionCave1F.blk"
+
+NationalPark_BlockData:
+NationalParkBugContest_BlockData:
+	INCBIN "maps/NationalPark.blk"
+
+Route6UndergroundEntrance_BlockData:
+Route5UndergroundEntrance_BlockData:
+	INCBIN "maps/UndergroundPathEntrance.blk"
+
+BetaPokecenterTradeStation_BlockData:
+	INCBIN "maps/BetaPokecenterTradeStation.blk"
+
+KurtsHouse_BlockData:
+	INCBIN "maps/KurtsHouse.blk"
+
+GoldenrodMagnetTrainStation_BlockData:
+	INCBIN "maps/GoldenrodMagnetTrainStation.blk"
+
+RuinsOfAlphOutside_BlockData:
+	INCBIN "maps/RuinsOfAlphOutside.blk"
+
+BetaRuinsOfAlphUnsolvedPuzzleRoom_BlockData:
+	INCBIN "maps/BetaRuinsOfAlphUnsolvedPuzzleRoom.blk"
+
+RuinsOfAlphInnerChamber_BlockData:
+	INCBIN "maps/RuinsOfAlphInnerChamber.blk"
+
+RuinsOfAlphHoOhChamber_BlockData:
+RuinsOfAlphKabutoChamber_BlockData:
+RuinsOfAlphOmanyteChamber_BlockData:
+RuinsOfAlphAerodactylChamber_BlockData:
+	INCBIN "maps/RuinsOfAlphPuzzleChamber.blk"
+
+SproutTower1F_BlockData:
+	INCBIN "maps/SproutTower1F.blk"
+
+BetaSproutTowerCutOut1_BlockData:
+	INCBIN "maps/BetaSproutTowerCutOut1.blk"
+
+SproutTower2F_BlockData:
+	INCBIN "maps/SproutTower2F.blk"
+
+BetaSproutTowerCutOut2_BlockData:
+	INCBIN "maps/BetaSproutTowerCutOut2.blk"
+
+SproutTower3F_BlockData:
+	INCBIN "maps/SproutTower3F.blk"
+
+BetaSproutTowerCutOut3_BlockData:
+	INCBIN "maps/BetaSproutTowerCutOut3.blk"
+
+RadioTower1F_BlockData:
+	INCBIN "maps/RadioTower1F.blk"
+
+RadioTower2F_BlockData:
+	INCBIN "maps/RadioTower2F.blk"
+
+RadioTower3F_BlockData:
+	INCBIN "maps/RadioTower3F.blk"
+
+RadioTower4F_BlockData:
+	INCBIN "maps/RadioTower4F.blk"
+
+RadioTower5F_BlockData:
+	INCBIN "maps/RadioTower5F.blk"
+
+NewBarkTown_BlockData:
+	INCBIN "maps/NewBarkTown.blk"
+
+CherrygroveCity_BlockData:
+	INCBIN "maps/CherrygroveCity.blk"
+
+VioletCity_BlockData:
+	INCBIN "maps/VioletCity.blk"
+
+AzaleaTown_BlockData:
+	INCBIN "maps/AzaleaTown.blk"
+
+CianwoodCity_BlockData:
+	INCBIN "maps/CianwoodCity.blk"
+
+GoldenrodCity_BlockData:
+	INCBIN "maps/GoldenrodCity.blk"
+
+OlivineCity_BlockData:
+	INCBIN "maps/OlivineCity.blk"
+
+EcruteakCity_BlockData:
+	INCBIN "maps/EcruteakCity.blk"
+
+MahoganyTown_BlockData:
+	INCBIN "maps/MahoganyTown.blk"
+
+LakeOfRage_BlockData:
+	INCBIN "maps/LakeOfRage.blk"
+
+BlackthornCity_BlockData:
+	INCBIN "maps/BlackthornCity.blk"
+
+SilverCaveOutside_BlockData:
+	INCBIN "maps/SilverCaveOutside.blk"
+
+Route6_BlockData:
+	INCBIN "maps/Route6.blk"
+
+Route7_BlockData:
+	INCBIN "maps/Route7.blk"
+
+Route16_BlockData:
+	INCBIN "maps/Route16.blk"
+
+Route18_BlockData:
+	INCBIN "maps/Route18.blk"
+
+WarehouseEntrance_BlockData:
+	INCBIN "maps/WarehouseEntrance.blk"
+
+UndergroundPathSwitchRoomEntrances_BlockData:
+	INCBIN "maps/UndergroundPathSwitchRoomEntrances.blk"
+
+GoldenrodDeptStoreB1F_BlockData:
+	INCBIN "maps/GoldenrodDeptStoreB1F.blk"
+
+UndergroundWarehouse_BlockData:
+	INCBIN "maps/UndergroundWarehouse.blk"
+
+BetaElevator_BlockData:
+	INCBIN "maps/BetaElevator.blk"
+
+TinTower1F_BlockData:
+	INCBIN "maps/TinTower1F.blk"
+
+TinTower2F_BlockData:
+	INCBIN "maps/TinTower2F.blk"
+
+TinTower3F_BlockData:
+	INCBIN "maps/TinTower3F.blk"
+
+TinTower4F_BlockData:
+	INCBIN "maps/TinTower4F.blk"
+
+TinTower5F_BlockData:
+	INCBIN "maps/TinTower5F.blk"
+
+TinTower6F_BlockData:
+	INCBIN "maps/TinTower6F.blk"
+
+TinTower7F_BlockData:
+	INCBIN "maps/TinTower7F.blk"
+
+TinTower8F_BlockData:
+	INCBIN "maps/TinTower8F.blk"
+
+TinTower9F_BlockData:
+	INCBIN "maps/TinTower9F.blk"
+
+TinTowerRoof_BlockData:
+	INCBIN "maps/TinTowerRoof.blk"
+
+BurnedTower1F_BlockData:
+	INCBIN "maps/BurnedTower1F.blk"
+
+BurnedTowerB1F_BlockData:
+	INCBIN "maps/BurnedTowerB1F.blk"
+
+BetaCaveTestMap_BlockData:
+	INCBIN "maps/BetaCaveTestMap.blk"
+
+MountMortar1FOutside_BlockData:
+	INCBIN "maps/MountMortar1FOutside.blk"
+
+MountMortar1FInside_BlockData:
+	INCBIN "maps/MountMortar1FInside.blk"
+
+MountMortar2FInside_BlockData:
+	INCBIN "maps/MountMortar2FInside.blk"
+
+MountMortarB1F_BlockData:
+	INCBIN "maps/MountMortarB1F.blk"
+
+IcePath1F_BlockData:
+	INCBIN "maps/IcePath1F.blk"
+
+IcePathB1F_BlockData:
+	INCBIN "maps/IcePathB1F.blk"
+
+IcePathB2FMahoganySide_BlockData:
+	INCBIN "maps/IcePathB2FMahoganySide.blk"
+
+IcePathB2FBlackthornSide_BlockData:
+	INCBIN "maps/IcePathB2FBlackthornSide.blk"
+
+IcePathB3F_BlockData:
+	INCBIN "maps/IcePathB3F.blk"
+
+WhirlIslandNW_BlockData:
+	INCBIN "maps/WhirlIslandNW.blk"
+
+WhirlIslandNE_BlockData:
+	INCBIN "maps/WhirlIslandNE.blk"
+
+WhirlIslandSW_BlockData:
+	INCBIN "maps/WhirlIslandSW.blk"
+
+WhirlIslandCave_BlockData:
+	INCBIN "maps/WhirlIslandCave.blk"
+
+WhirlIslandSE_BlockData:
+	INCBIN "maps/WhirlIslandSE.blk"
+
+WhirlIslandB1F_BlockData:
+	INCBIN "maps/WhirlIslandB1F.blk"
+
+WhirlIslandB2F_BlockData:
+	INCBIN "maps/WhirlIslandB2F.blk"
+
+WhirlIslandLugiaChamber_BlockData:
+	INCBIN "maps/WhirlIslandLugiaChamber.blk"
+
+SilverCaveRoom1_BlockData:
+	INCBIN "maps/SilverCaveRoom1.blk"
+
+SilverCaveRoom2_BlockData:
+	INCBIN "maps/SilverCaveRoom2.blk"
+
+SilverCaveRoom3_BlockData:
+	INCBIN "maps/SilverCaveRoom3.blk"
+
+BetaRocketHideout1_BlockData:
+	INCBIN "maps/BetaRocketHideout1.blk"
+
+BetaRocketHideout2_BlockData:
+	INCBIN "maps/BetaRocketHideout2.blk"
+
+BetaEmptyHouse_BlockData:
+	INCBIN "maps/BetaEmptyHouse.blk"
+
+BetaRocketHideout3_BlockData:
+	INCBIN "maps/BetaRocketHideout3.blk"
+
+MahoganyMart1F_BlockData:
+MountMoonGiftShop_BlockData:
+	INCBIN "maps/GiftShop.blk"
+
+TeamRocketBaseB1F_BlockData:
+	INCBIN "maps/TeamRocketBaseB1F.blk"
+
+TeamRocketBaseB2F_BlockData:
+	INCBIN "maps/TeamRocketBaseB2F.blk"
+
+TeamRocketBaseB3F_BlockData:
+	INCBIN "maps/TeamRocketBaseB3F.blk"
+
+BetaRoute23EarlyVersion_BlockData:
+	INCBIN "maps/BetaRoute23EarlyVersion.blk"
+
+IndigoPlateauPokecenter1F_BlockData:
+	INCBIN "maps/IndigoPlateauPokecenter1F.blk"
+
+WillsRoom_BlockData:
+	INCBIN "maps/WillsRoom.blk"
+
+KogasRoom_BlockData:
+	INCBIN "maps/KogasRoom.blk"
+
+BrunosRoom_BlockData:
+	INCBIN "maps/BrunosRoom.blk"
+
+KarensRoom_BlockData:
+	INCBIN "maps/KarensRoom.blk"
+
+AzaleaGym_BlockData:
+	INCBIN "maps/AzaleaGym.blk"
+
+VioletGym_BlockData:
+	INCBIN "maps/VioletGym.blk"
+
+GoldenrodGym_BlockData:
+	INCBIN "maps/GoldenrodGym.blk"
+
+EcruteakGym_BlockData:
+	INCBIN "maps/EcruteakGym.blk"
+
+MahoganyGym_BlockData:
+	INCBIN "maps/MahoganyGym.blk"
+
+OlivineGym_BlockData:
+	INCBIN "maps/OlivineGym.blk"
+
+BetaUnknown_BlockData:
+	INCBIN "maps/BetaUnknown.blk"
+
+CianwoodGym_BlockData:
+	INCBIN "maps/CianwoodGym.blk"
+
+BlackthornGym1F_BlockData:
+	INCBIN "maps/BlackthornGym1F.blk"
+
+BlackthornGym2F_BlockData:
+	INCBIN "maps/BlackthornGym2F.blk"
+
+OlivineLighthouse1F_BlockData:
+	INCBIN "maps/OlivineLighthouse1F.blk"
+
+OlivineLighthouse2F_BlockData:
+	INCBIN "maps/OlivineLighthouse2F.blk"
+
+OlivineLighthouse3F_BlockData:
+	INCBIN "maps/OlivineLighthouse3F.blk"
+
+OlivineLighthouse4F_BlockData:
+	INCBIN "maps/OlivineLighthouse4F.blk"
+
+OlivineLighthouse5F_BlockData:
+	INCBIN "maps/OlivineLighthouse5F.blk"
+
+OlivineLighthouse6F_BlockData:
+	INCBIN "maps/OlivineLighthouse6F.blk"
+
+
+SECTION "Map Blockdata 3", ROMX
+
+BetaCave2_BlockData:
+	INCBIN "maps/BetaCave2.blk"
+
+SlowpokeWellB1F_BlockData:
+	INCBIN "maps/SlowpokeWellB1F.blk"
+
+SlowpokeWellB2F_BlockData:
+	INCBIN "maps/SlowpokeWellB2F.blk"
+
+IlexForest_BlockData:
+	INCBIN "maps/IlexForest.blk"
+
+DarkCaveVioletEntrance_BlockData:
+	INCBIN "maps/DarkCaveVioletEntrance.blk"
+
+DarkCaveBlackthornEntrance_BlockData:
+	INCBIN "maps/DarkCaveBlackthornEntrance.blk"
+
+RuinsOfAlphResearchCenter_BlockData:
+	INCBIN "maps/RuinsOfAlphResearchCenter.blk"
+
+GoldenrodBikeShop_BlockData:
+	INCBIN "maps/GoldenrodBikeShop.blk"
+
+DanceTheatre_BlockData:
+	INCBIN "maps/DanceTheatre.blk"
+
+EcruteakHouse_BlockData:
+	INCBIN "maps/EcruteakHouse.blk"
+
+GoldenrodGameCorner_BlockData:
+	INCBIN "maps/GoldenrodGameCorner.blk"
+
+Route35NationalParkGate_BlockData:
+	INCBIN "maps/Route35NationalParkGate.blk"
+
+Route36NationalParkGate_BlockData:
+	INCBIN "maps/Route36NationalParkGate.blk"
+
+FastShip1F_BlockData:
+	INCBIN "maps/FastShip1F.blk"
+
+FastShipB1F_BlockData:
+	INCBIN "maps/FastShipB1F.blk"
+
+BetaSSAquaInsideCutOut_BlockData:
+	INCBIN "maps/BetaSSAquaInsideCutOut.blk"
+
+FastShipCabins_NNW_NNE_NE_BlockData:
+	INCBIN "maps/FastShipCabins_NNW_NNE_NE.blk"
+
+FastShipCabins_SW_SSW_NW_BlockData:
+	INCBIN "maps/FastShipCabins_SW_SSW_NW.blk"
+
+FastShipCabins_SE_SSE_CaptainsCabin_BlockData:
+	INCBIN "maps/FastShipCabins_SE_SSE_CaptainsCabin.blk"
+
+OlivinePort_BlockData:
+	INCBIN "maps/OlivinePort.blk"
+
+VermilionPort_BlockData:
+	INCBIN "maps/VermilionPort.blk"
+
+OlivineCafe_BlockData:
+SafariZoneMainOffice_BlockData:
+	INCBIN "maps/OlivineCafe.blk"
+
+KrissHouse2F_BlockData:
+	INCBIN "maps/KrissHouse2F.blk"
+
+SaffronTrainStation_BlockData:
+	INCBIN "maps/SaffronTrainStation.blk"
+
+CeruleanGym_BlockData:
+	INCBIN "maps/CeruleanGym.blk"
+
+VermilionGym_BlockData:
+	INCBIN "maps/VermilionGym.blk"
+
+SaffronGym_BlockData:
+	INCBIN "maps/SaffronGym.blk"
+
+PowerPlant_BlockData:
+	INCBIN "maps/PowerPlant.blk"
+
+PokemonFanClub_BlockData:
+SafariZoneWardensHome_BlockData:
+	INCBIN "maps/PokemonFanClub.blk"
+
+FightingDojo_BlockData:
+	INCBIN "maps/FightingDojo.blk"
+
+SilphCo1F_BlockData:
+	INCBIN "maps/SilphCo1F.blk"
+
+ViridianGym_BlockData:
+	INCBIN "maps/ViridianGym.blk"
+
+TrainerHouse1F_BlockData:
+	INCBIN "maps/TrainerHouse1F.blk"
+
+TrainerHouseB1F_BlockData:
+	INCBIN "maps/TrainerHouseB1F.blk"
+
+RedsHouse1F_BlockData:
+	INCBIN "maps/RedsHouse1F.blk"
+
+RedsHouse2F_BlockData:
+	INCBIN "maps/RedsHouse2F.blk"
+
+OaksLab_BlockData:
+	INCBIN "maps/OaksLab.blk"
+
+MrFujisHouse_BlockData:
+	INCBIN "maps/MrFujisHouse.blk"
+
+LavRadioTower1F_BlockData:
+	INCBIN "maps/LavRadioTower1F.blk"
+
+SilverCaveItemRooms_BlockData:
+	INCBIN "maps/SilverCaveItemRooms.blk"
+
+DayCare_BlockData:
+	INCBIN "maps/DayCare.blk"
+
+SoulHouse_BlockData:
+	INCBIN "maps/SoulHouse.blk"
+
+PewterGym_BlockData:
+	INCBIN "maps/PewterGym.blk"
+
+CeladonGym_BlockData:
+	INCBIN "maps/CeladonGym.blk"
+
+BetaHouse2_BlockData:
+	INCBIN "maps/BetaHouse2.blk"
+
+CeladonCafe_BlockData:
+	INCBIN "maps/CeladonCafe.blk"
+
+BetaCeladonMansion_BlockData:
+	INCBIN "maps/BetaCeladonMansion.blk"
+
+RockTunnel1F_BlockData:
+	INCBIN "maps/RockTunnel1F.blk"
+
+RockTunnelB1F_BlockData:
+	INCBIN "maps/RockTunnelB1F.blk"
+
+DiglettsCave_BlockData:
+	INCBIN "maps/DiglettsCave.blk"
+
+MountMoon_BlockData:
+	INCBIN "maps/MountMoon.blk"
+
+SeafoamGym_BlockData:
+	INCBIN "maps/SeafoamGym.blk"
+
+MrPokemonsHouse_BlockData:
+	INCBIN "maps/MrPokemonsHouse.blk"
+
+VictoryRoadGate_BlockData:
+	INCBIN "maps/VictoryRoadGate.blk"
+
+OlivinePortPassage_BlockData:
+VermilionPortPassage_BlockData:
+	INCBIN "maps/PortPassage.blk"
+
+FuchsiaGym_BlockData:
+	INCBIN "maps/FuchsiaGym.blk"
+
+SafariZoneBeta_BlockData:
+	INCBIN "maps/SafariZoneBeta.blk"
+
+Underground_BlockData:
+	INCBIN "maps/Underground.blk"
+
+Route39Barn_BlockData:
+	INCBIN "maps/Route39Barn.blk"
+
+VictoryRoad_BlockData:
+	INCBIN "maps/VictoryRoad.blk"
+
+Route23_BlockData:
+	INCBIN "maps/Route23.blk"
+
+LancesRoom_BlockData:
+	INCBIN "maps/LancesRoom.blk"
+
+HallOfFame_BlockData:
+	INCBIN "maps/HallOfFame.blk"
+
+CopycatsHouse1F_BlockData:
+	INCBIN "maps/CopycatsHouse1F.blk"
+
+CopycatsHouse2F_BlockData:
+	INCBIN "maps/CopycatsHouse2F.blk"
+
+GoldenrodFlowerShop_BlockData:
+	INCBIN "maps/GoldenrodFlowerShop.blk"
+
+MountMoonSquare_BlockData:
+	INCBIN "maps/MountMoonSquare.blk"
+
+WiseTriosRoom_BlockData:
+	INCBIN "maps/WiseTriosRoom.blk"
+
+DragonsDen1F_BlockData:
+	INCBIN "maps/DragonsDen1F.blk"
+
+DragonsDenB1F_BlockData:
+	INCBIN "maps/DragonsDenB1F.blk"
+
+TohjoFalls_BlockData:
+	INCBIN "maps/TohjoFalls.blk"
+
+RuinsOfAlphHoOhItemRoom_BlockData:
+RuinsOfAlphKabutoItemRoom_BlockData:
+RuinsOfAlphOmanyteItemRoom_BlockData:
+RuinsOfAlphAerodactylItemRoom_BlockData:
+	INCBIN "maps/RuinsOfAlphItemRoom.blk"
+
+RuinsOfAlphHoOhWordRoom_BlockData:
+	INCBIN "maps/RuinsOfAlphHoOhWordRoom.blk"
+
+RuinsOfAlphKabutoWordRoom_BlockData:
+	INCBIN "maps/RuinsOfAlphKabutoWordRoom.blk"
+
+RuinsOfAlphOmanyteWordRoom_BlockData:
+	INCBIN "maps/RuinsOfAlphOmanyteWordRoom.blk"
+
+RuinsOfAlphAerodactylWordRoom_BlockData:
+	INCBIN "maps/RuinsOfAlphAerodactylWordRoom.blk"
+
+DragonShrine_BlockData:
+	INCBIN "maps/DragonShrine.blk"
+
+BattleTower1F_BlockData:
+	INCBIN "maps/BattleTower1F.blk"
+
+BattleTowerBattleRoom_BlockData:
+	INCBIN "maps/BattleTowerBattleRoom.blk"
+
+GoldenrodPokeComCenter2FMobile_BlockData:
+	INCBIN "maps/GoldenrodPokeComCenter2FMobile.blk"
+
+MobileTradeRoomMobile_BlockData:
+	INCBIN "maps/MobileTradeRoomMobile.blk"
+
+MobileBattleRoom_BlockData:
+	INCBIN "maps/MobileBattleRoom.blk"
+
+BattleTowerHallway_BlockData:
+	INCBIN "maps/BattleTowerHallway.blk"
+
+BattleTowerElevator_BlockData:
+	INCBIN "maps/BattleTowerElevator.blk"
+
+BattleTowerOutside_BlockData:
+	INCBIN "maps/BattleTowerOutside.blk"
+
+BetaBlank_BlockData:
+	INCBIN "maps/BetaBlank.blk"
+
+GoldenrodDeptStoreRoof_BlockData:
+	INCBIN "maps/GoldenrodDeptStoreRoof.blk"
--- a/maps/blockdata_1.asm
+++ /dev/null
@@ -1,309 +1,0 @@
-Route32_BlockData:
-	INCBIN "maps/Route32.blk"
-
-Route40_BlockData:
-	INCBIN "maps/Route40.blk"
-
-Route36_BlockData:
-	INCBIN "maps/Route36.blk"
-
-Route44_BlockData:
-	INCBIN "maps/Route44.blk"
-
-Route28_BlockData:
-	INCBIN "maps/Route28.blk"
-
-BetaHerosHouse_BlockData:
-	INCBIN "maps/BetaHerosHouse.blk"
-
-CeladonCity_BlockData:
-	INCBIN "maps/CeladonCity.blk"
-
-SaffronCity_BlockData:
-	INCBIN "maps/SaffronCity.blk"
-
-Route2_BlockData:
-	INCBIN "maps/Route2.blk"
-
-ElmsHouse_BlockData:
-	INCBIN "maps/ElmsHouse.blk"
-
-BetaSproutTower1_BlockData:
-	INCBIN "maps/BetaSproutTower1.blk"
-
-Route11_BlockData:
-	INCBIN "maps/Route11.blk"
-
-BetaSproutTower5_BlockData:
-	INCBIN "maps/BetaSproutTower5.blk"
-
-Route15_BlockData:
-	INCBIN "maps/Route15.blk"
-
-BetaSproutTower9_BlockData:
-	INCBIN "maps/BetaSproutTower9.blk"
-
-Route19_BlockData:
-	INCBIN "maps/Route19.blk"
-
-BetaBlackthornCity_BlockData:
-	INCBIN "maps/BetaBlackthornCity.blk"
-
-Route10South_BlockData:
-	INCBIN "maps/Route10South.blk"
-
-PokeCenter2F_BlockData:
-CinnabarPokeCenter2FBeta_BlockData:
-CeruleanPokeCenter2FBeta_BlockData:
-Route10PokeCenter2FBeta_BlockData:
-VermilionPokeCenter2FBeta_BlockData:
-PewterPokeCenter2FBeta_BlockData:
-FuchsiaPokeCenter2FBeta_BlockData:
-LavenderPokeCenter2FBeta_BlockData:
-CeladonPokeCenter2FBeta_BlockData:
-ViridianPokeCenter2FBeta_BlockData:
-SaffronPokeCenter2FBeta_BlockData:
-	INCBIN "maps/PokeCenter2F.blk"
-
-Route41_BlockData:
-	INCBIN "maps/Route41.blk"
-
-Route33_BlockData:
-	INCBIN "maps/Route33.blk"
-
-Route45_BlockData:
-	INCBIN "maps/Route45.blk"
-
-Route29_BlockData:
-	INCBIN "maps/Route29.blk"
-
-Route37_BlockData:
-	INCBIN "maps/Route37.blk"
-
-LavenderTown_BlockData:
-	INCBIN "maps/LavenderTown.blk"
-
-PalletTown_BlockData:
-	INCBIN "maps/PalletTown.blk"
-
-Route25_BlockData:
-	INCBIN "maps/Route25.blk"
-
-Route24_BlockData:
-	INCBIN "maps/Route24.blk"
-
-BetaVioletCity_BlockData:
-	INCBIN "maps/BetaVioletCity.blk"
-
-Route3_BlockData:
-	INCBIN "maps/Route3.blk"
-
-PewterCity_BlockData:
-	INCBIN "maps/PewterCity.blk"
-
-BetaIlexForest_BlockData:
-	INCBIN "maps/BetaIlexForest.blk"
-
-BetaSproutTower2_BlockData:
-	INCBIN "maps/BetaSproutTower2.blk"
-
-Route12_BlockData:
-	INCBIN "maps/Route12.blk"
-
-BetaGoldenrodCity_BlockData:
-	INCBIN "maps/BetaGoldenrodCity.blk"
-
-Route20_BlockData:
-	INCBIN "maps/Route20.blk"
-
-BetaSproutTower6_BlockData:
-	INCBIN "maps/BetaSproutTower6.blk"
-
-BetaPokecenterMainHouse_BlockData:
-	INCBIN "maps/BetaPokecenterMainHouse.blk"
-
-Route30_BlockData:
-	INCBIN "maps/Route30.blk"
-
-Route26_BlockData:
-	INCBIN "maps/Route26.blk"
-
-Route42_BlockData:
-	INCBIN "maps/Route42.blk"
-
-Route34_BlockData:
-	INCBIN "maps/Route34.blk"
-
-Route46_BlockData:
-	INCBIN "maps/Route46.blk"
-
-FuchsiaCity_BlockData:
-	INCBIN "maps/FuchsiaCity.blk"
-
-Route38_BlockData:
-	INCBIN "maps/Route38.blk"
-
-BetaCianwoodCity_BlockData:
-	INCBIN "maps/BetaCianwoodCity.blk"
-
-OlivineTimsHouse_BlockData:
-OlivineHouseBeta_BlockData:
-OlivinePunishmentSpeechHouse_BlockData:
-OlivineGoodRodHouse_BlockData:
-Route39Farmhouse_BlockData:
-MahoganyRedGyaradosSpeechHouse_BlockData:
-BlackthornDragonSpeechHouse_BlockData:
-BlackthornEmysHouse_BlockData:
-MoveDeletersHouse_BlockData:
-CeruleanGymBadgeSpeechHouse_BlockData:
-CeruleanPoliceStation_BlockData:
-CeruleanTradeSpeechHouse_BlockData:
-BillsHouse_BlockData:
-CharcoalKiln_BlockData:
-LakeofRageHiddenPowerHouse_BlockData:
-LakeofRageMagikarpHouse_BlockData:
-GoldenrodHappinessRater_BlockData:
-GoldenrodBillsHouse_BlockData:
-GoldenrodPPSpeechHouse_BlockData:
-GoldenrodNameRater_BlockData:
-VermilionHouseFishingSpeechHouse_BlockData:
-VermilionMagnetTrainSpeechHouse_BlockData:
-VermilionHouseDiglettsCaveSpeechHouse_BlockData:
-BluesHouse_BlockData:
-PewterNidoranSpeechHouse_BlockData:
-PewterSnoozeSpeechHouse_BlockData:
-FuchsiaBillSpeechHouse_BlockData:
-LavenderTownSpeechHouse_BlockData:
-LavenderNameRater_BlockData:
-Route12SuperRodHouse_BlockData:
-Route28FamousSpeechHouse_BlockData:
-CeladonMansionRoofHouse_BlockData:
-Route16FuchsiaSpeechHouse_BlockData:
-ManiasHouse_BlockData:
-CianwoodPharmacy_BlockData:
-CianwoodCityPhotoStudio_BlockData:
-CianwoodLugiaSpeechHouse_BlockData:
-PokeSeersHouse_BlockData:
-ViridianNicknameSpeechHouse_BlockData:
-Route2NuggetSpeechHouse_BlockData:
-KrissNeighborsHouse_BlockData:
-Route26HealSpeechHouse_BlockData:
-Route26DayofWeekSiblingsHouse_BlockData:
-Route27SandstormHouse_BlockData:
-MrPsychicsHouse_BlockData:
-Route5CleanseTagSpeechHouse_BlockData:
-CherrygroveGymSpeechHouse_BlockData:
-GuideGentsHouse_BlockData:
-CherrygroveEvolutionSpeechHouse_BlockData:
-Route30BerrySpeechHouse_BlockData:
-	INCBIN "maps/House1.blk"
-
-SafariZoneFuchsiaGateBeta_BlockData:
-Route19FuchsiaGate_BlockData:
-Route43MahoganyGate_BlockData:
-Route43Gate_BlockData:
-Route35Goldenrodgate_BlockData:
-Route36RuinsofAlphgate_BlockData:
-Route34IlexForestGate_BlockData:
-Route6SaffronGate_BlockData:
-Route40BattleTowerGate_BlockData:
-Route2Gate_BlockData:
-Route2946Gate_BlockData:
-Route5SaffronCityGate_BlockData:
-	INCBIN "maps/NorthSouthGate.blk"
-
-BetaTeakCity_BlockData:
-	INCBIN "maps/BetaTeakCity.blk"
-
-BetaCherrygroveCity_BlockData:
-	INCBIN "maps/BetaCherrygroveCity.blk"
-
-CinnabarIsland_BlockData:
-	INCBIN "maps/CinnabarIsland.blk"
-
-Route4_BlockData:
-	INCBIN "maps/Route4.blk"
-
-Route8_BlockData:
-	INCBIN "maps/Route8.blk"
-
-BetaSproutTower3_BlockData:
-	INCBIN "maps/BetaSproutTower3.blk"
-
-ViridianCity_BlockData:
-	INCBIN "maps/ViridianCity.blk"
-
-Route13_BlockData:
-	INCBIN "maps/Route13.blk"
-
-Route21_BlockData:
-	INCBIN "maps/Route21.blk"
-
-BetaSproutTower7_BlockData:
-	INCBIN "maps/BetaSproutTower7.blk"
-
-Route17_BlockData:
-	INCBIN "maps/Route17.blk"
-
-BetaMahoganyTown_BlockData:
-	INCBIN "maps/BetaMahoganyTown.blk"
-
-Route31_BlockData:
-	INCBIN "maps/Route31.blk"
-
-Route27_BlockData:
-	INCBIN "maps/Route27.blk"
-
-Route35_BlockData:
-	INCBIN "maps/Route35.blk"
-
-Route43_BlockData:
-	INCBIN "maps/Route43.blk"
-
-Route39_BlockData:
-	INCBIN "maps/Route39.blk"
-
-KrissHouse1F_BlockData:
-	INCBIN "maps/KrissHouse1F.blk"
-
-Route38EcruteakGate_BlockData:
-Route42EcruteakGate_BlockData:
-Route32RuinsofAlphGate_BlockData:
-IlexForestAzaleaGate_BlockData:
-Route15FuchsiaGate_BlockData:
-Route8SaffronGate_BlockData:
-Route16Gate_BlockData:
-Route7SaffronGate_BlockData:
-Route1718Gate_BlockData:
-Route31VioletGate_BlockData:
-	INCBIN "maps/EastWestGate.blk"
-
-BetaAzaleaTown_BlockData:
-	INCBIN "maps/BetaAzaleaTown.blk"
-
-VermilionCity_BlockData:
-	INCBIN "maps/VermilionCity.blk"
-
-BetaOlivineCity_BlockData:
-	INCBIN "maps/BetaOlivineCity.blk"
-
-BetaNewBarkTown_BlockData:
-	INCBIN "maps/BetaNewBarkTown.blk"
-
-ElmsLab_BlockData:
-	INCBIN "maps/ElmsLab.blk"
-
-CeruleanCity_BlockData:
-	INCBIN "maps/CeruleanCity.blk"
-
-Route1_BlockData:
-	INCBIN "maps/Route1.blk"
-
-Route5_BlockData:
-	INCBIN "maps/Route5.blk"
-
-Route9_BlockData:
-	INCBIN "maps/Route9.blk"
-
-Route22_BlockData:
-	INCBIN "maps/Route22.blk"
--- a/maps/blockdata_2.asm
+++ /dev/null
@@ -1,462 +1,0 @@
-Route14_BlockData:
-	INCBIN "maps/Route14.blk"
-
-BetaSproutTower8_BlockData:
-	INCBIN "maps/BetaSproutTower8.blk"
-
-OlivineMart_BlockData:
-EcruteakMart_BlockData:
-BlackthornMart_BlockData:
-CeruleanMart_BlockData:
-AzaleaMart_BlockData:
-VioletMart_BlockData:
-VermilionMart_BlockData:
-PewterMart_BlockData:
-FuchsiaMart_BlockData:
-LavenderMart_BlockData:
-ViridianMart_BlockData:
-SaffronMart_BlockData:
-CherrygroveMart_BlockData:
-	INCBIN "maps/Mart.blk"
-
-Route10North_BlockData:
-	INCBIN "maps/Route10North.blk"
-
-BetaLakeOfRage_BlockData:
-	INCBIN "maps/BetaLakeOfRage.blk"
-
-OlivinePokeCenter1F_BlockData:
-MahoganyPokeCenter1F_BlockData:
-EcruteakPokeCenter1F_BlockData:
-BlackthornPokeCenter1F_BlockData:
-CinnabarPokeCenter1F_BlockData:
-CeruleanPokeCenter1F_BlockData:
-Route10PokeCenter1F_BlockData:
-AzaleaPokeCenter1F_BlockData:
-VioletPokeCenter1F_BlockData:
-Route32PokeCenter1F_BlockData:
-GoldenrodPokeCenter1F_BlockData:
-VermilionPokeCenter1F_BlockData:
-PewterPokeCenter1F_BlockData:
-FuchsiaPokeCenter1F_BlockData:
-LavenderPokeCenter1F_BlockData:
-SilverCavePokeCenter1F_BlockData:
-CeladonPokeCenter1F_BlockData:
-CianwoodPokeCenter1F_BlockData:
-ViridianPokeCenter1F_BlockData:
-SaffronPokeCenter1F_BlockData:
-CherrygrovePokeCenter1F_BlockData:
-	INCBIN "maps/PokeCenter1F.blk"
-
-BetaPewterMuseumOfScience1F_BlockData:
-	INCBIN "maps/BetaPewterMuseumOfScience1F.blk"
-
-BetaPewterMuseumOfScience2F_BlockData:
-	INCBIN "maps/BetaPewterMuseumOfScience2F.blk"
-
-EarlsPokemonAcademy_BlockData:
-	INCBIN "maps/EarlsPokemonAcademy.blk"
-
-BetaCinnabarIslandPokemonLabHallway_BlockData:
-	INCBIN "maps/BetaCinnabarIslandPokemonLabHallway.blk"
-
-BetaCinnabarIslandPokemonLabRoom1_BlockData:
-	INCBIN "maps/BetaCinnabarIslandPokemonLabRoom1.blk"
-
-BetaCinnabarIslandPokemonLabRoom2_BlockData:
-	INCBIN "maps/BetaCinnabarIslandPokemonLabRoom2.blk"
-
-BetaCinnabarIslandPokemonLabRoom3_BlockData:
-	INCBIN "maps/BetaCinnabarIslandPokemonLabRoom3.blk"
-
-GoldenrodDeptStore1F_BlockData:
-CeladonDeptStore1F_BlockData:
-	INCBIN "maps/DeptStore1F.blk"
-
-GoldenrodDeptStore2F_BlockData:
-CeladonDeptStore2F_BlockData:
-	INCBIN "maps/DeptStore2F.blk"
-
-GoldenrodDeptStore3F_BlockData:
-CeladonDeptStore3F_BlockData:
-	INCBIN "maps/DeptStore3F.blk"
-
-GoldenrodDeptStore4F_BlockData:
-CeladonDeptStore4F_BlockData:
-	INCBIN "maps/DeptStore4F.blk"
-
-GoldenrodDeptStore5F_BlockData:
-CeladonDeptStore5F_BlockData:
-	INCBIN "maps/DeptStore5F.blk"
-
-GoldenrodDeptStore6F_BlockData:
-CeladonDeptStore6F_BlockData:
-	INCBIN "maps/DeptStore6F.blk"
-
-GoldenrodDeptStoreElevator_BlockData:
-CeladonDeptStoreElevator_BlockData:
-	INCBIN "maps/DeptStoreElevator.blk"
-
-CeladonMansion1F_BlockData:
-	INCBIN "maps/CeladonMansion1F.blk"
-
-CeladonMansion2F_BlockData:
-	INCBIN "maps/CeladonMansion2F.blk"
-
-CeladonMansion3F_BlockData:
-	INCBIN "maps/CeladonMansion3F.blk"
-
-CeladonMansionRoof_BlockData:
-	INCBIN "maps/CeladonMansionRoof.blk"
-
-BetaHouse_BlockData:
-	INCBIN "maps/BetaHouse.blk"
-
-CeladonGameCorner_BlockData:
-	INCBIN "maps/CeladonGameCorner.blk"
-
-CeladonGameCornerPrizeRoom_BlockData:
-	INCBIN "maps/CeladonGameCornerPrizeRoom.blk"
-
-Colosseum_BlockData:
-	INCBIN "maps/Colosseum.blk"
-
-TradeCenter_BlockData:
-TimeCapsule_BlockData:
-	INCBIN "maps/TradeCenter.blk"
-
-EcruteakLugiaSpeechHouse_BlockData:
-EcruteakItemfinderHouse_BlockData:
-VioletNicknameSpeechHouse_BlockData:
-VioletOnixTradeHouse_BlockData:
-	INCBIN "maps/House2.blk"
-
-BetaCave_BlockData:
-	INCBIN "maps/BetaCave.blk"
-
-UnionCaveB1F_BlockData:
-	INCBIN "maps/UnionCaveB1F.blk"
-
-UnionCaveB2F_BlockData:
-	INCBIN "maps/UnionCaveB2F.blk"
-
-UnionCave1F_BlockData:
-	INCBIN "maps/UnionCave1F.blk"
-
-NationalPark_BlockData:
-NationalParkBugContest_BlockData:
-	INCBIN "maps/NationalPark.blk"
-
-Route6UndergroundEntrance_BlockData:
-Route5UndergroundEntrance_BlockData:
-	INCBIN "maps/UndergroundPathEntrance.blk"
-
-BetaPokecenterTradeStation_BlockData:
-	INCBIN "maps/BetaPokecenterTradeStation.blk"
-
-KurtsHouse_BlockData:
-	INCBIN "maps/KurtsHouse.blk"
-
-GoldenrodMagnetTrainStation_BlockData:
-	INCBIN "maps/GoldenrodMagnetTrainStation.blk"
-
-RuinsofAlphOutside_BlockData:
-	INCBIN "maps/RuinsofAlphOutside.blk"
-
-BetaAlphRuinUnsolvedPuzzleRoom_BlockData:
-	INCBIN "maps/BetaAlphRuinUnsolvedPuzzleRoom.blk"
-
-RuinsofAlphInnerChamber_BlockData:
-	INCBIN "maps/RuinsofAlphInnerChamber.blk"
-
-RuinsofAlphHoOhChamber_BlockData:
-RuinsofAlphKabutoChamber_BlockData:
-RuinsofAlphOmanyteChamber_BlockData:
-RuinsofAlphAerodactylChamber_BlockData:
-	INCBIN "maps/RuinsofAlphPuzzleChamber.blk"
-
-SproutTower1F_BlockData:
-	INCBIN "maps/SproutTower1F.blk"
-
-BetaSproutTowerCutOut1_BlockData:
-	INCBIN "maps/BetaSproutTowerCutOut1.blk"
-
-SproutTower2F_BlockData:
-	INCBIN "maps/SproutTower2F.blk"
-
-BetaSproutTowerCutOut2_BlockData:
-	INCBIN "maps/BetaSproutTowerCutOut2.blk"
-
-SproutTower3F_BlockData:
-	INCBIN "maps/SproutTower3F.blk"
-
-BetaSproutTowerCutOut3_BlockData:
-	INCBIN "maps/BetaSproutTowerCutOut3.blk"
-
-RadioTower1F_BlockData:
-	INCBIN "maps/RadioTower1F.blk"
-
-RadioTower2F_BlockData:
-	INCBIN "maps/RadioTower2F.blk"
-
-RadioTower3F_BlockData:
-	INCBIN "maps/RadioTower3F.blk"
-
-RadioTower4F_BlockData:
-	INCBIN "maps/RadioTower4F.blk"
-
-RadioTower5F_BlockData:
-	INCBIN "maps/RadioTower5F.blk"
-
-NewBarkTown_BlockData:
-	INCBIN "maps/NewBarkTown.blk"
-
-CherrygroveCity_BlockData:
-	INCBIN "maps/CherrygroveCity.blk"
-
-VioletCity_BlockData:
-	INCBIN "maps/VioletCity.blk"
-
-AzaleaTown_BlockData:
-	INCBIN "maps/AzaleaTown.blk"
-
-CianwoodCity_BlockData:
-	INCBIN "maps/CianwoodCity.blk"
-
-GoldenrodCity_BlockData:
-	INCBIN "maps/GoldenrodCity.blk"
-
-OlivineCity_BlockData:
-	INCBIN "maps/OlivineCity.blk"
-
-EcruteakCity_BlockData:
-	INCBIN "maps/EcruteakCity.blk"
-
-MahoganyTown_BlockData:
-	INCBIN "maps/MahoganyTown.blk"
-
-LakeofRage_BlockData:
-	INCBIN "maps/LakeofRage.blk"
-
-BlackthornCity_BlockData:
-	INCBIN "maps/BlackthornCity.blk"
-
-SilverCaveOutside_BlockData:
-	INCBIN "maps/SilverCaveOutside.blk"
-
-Route6_BlockData:
-	INCBIN "maps/Route6.blk"
-
-Route7_BlockData:
-	INCBIN "maps/Route7.blk"
-
-Route16_BlockData:
-	INCBIN "maps/Route16.blk"
-
-Route18_BlockData:
-	INCBIN "maps/Route18.blk"
-
-WarehouseEntrance_BlockData:
-	INCBIN "maps/WarehouseEntrance.blk"
-
-UndergroundPathSwitchRoomEntrances_BlockData:
-	INCBIN "maps/UndergroundPathSwitchRoomEntrances.blk"
-
-GoldenrodDeptStoreB1F_BlockData:
-	INCBIN "maps/GoldenrodDeptStoreB1F.blk"
-
-UndergroundWarehouse_BlockData:
-	INCBIN "maps/UndergroundWarehouse.blk"
-
-BetaElevator_BlockData:
-	INCBIN "maps/BetaElevator.blk"
-
-TinTower1F_BlockData:
-	INCBIN "maps/TinTower1F.blk"
-
-TinTower2F_BlockData:
-	INCBIN "maps/TinTower2F.blk"
-
-TinTower3F_BlockData:
-	INCBIN "maps/TinTower3F.blk"
-
-TinTower4F_BlockData:
-	INCBIN "maps/TinTower4F.blk"
-
-TinTower5F_BlockData:
-	INCBIN "maps/TinTower5F.blk"
-
-TinTower6F_BlockData:
-	INCBIN "maps/TinTower6F.blk"
-
-TinTower7F_BlockData:
-	INCBIN "maps/TinTower7F.blk"
-
-TinTower8F_BlockData:
-	INCBIN "maps/TinTower8F.blk"
-
-TinTower9F_BlockData:
-	INCBIN "maps/TinTower9F.blk"
-
-TinTowerRoof_BlockData:
-	INCBIN "maps/TinTowerRoof.blk"
-
-BurnedTower1F_BlockData:
-	INCBIN "maps/BurnedTower1F.blk"
-
-BurnedTowerB1F_BlockData:
-	INCBIN "maps/BurnedTowerB1F.blk"
-
-BetaCaveTestMap_BlockData:
-	INCBIN "maps/BetaCaveTestMap.blk"
-
-MountMortar1FOutside_BlockData:
-	INCBIN "maps/MountMortar1FOutside.blk"
-
-MountMortar1FInside_BlockData:
-	INCBIN "maps/MountMortar1FInside.blk"
-
-MountMortar2FInside_BlockData:
-	INCBIN "maps/MountMortar2FInside.blk"
-
-MountMortarB1F_BlockData:
-	INCBIN "maps/MountMortarB1F.blk"
-
-IcePath1F_BlockData:
-	INCBIN "maps/IcePath1F.blk"
-
-IcePathB1F_BlockData:
-	INCBIN "maps/IcePathB1F.blk"
-
-IcePathB2FMahoganySide_BlockData:
-	INCBIN "maps/IcePathB2FMahoganySide.blk"
-
-IcePathB2FBlackthornSide_BlockData:
-	INCBIN "maps/IcePathB2FBlackthornSide.blk"
-
-IcePathB3F_BlockData:
-	INCBIN "maps/IcePathB3F.blk"
-
-WhirlIslandNW_BlockData:
-	INCBIN "maps/WhirlIslandNW.blk"
-
-WhirlIslandNE_BlockData:
-	INCBIN "maps/WhirlIslandNE.blk"
-
-WhirlIslandSW_BlockData:
-	INCBIN "maps/WhirlIslandSW.blk"
-
-WhirlIslandCave_BlockData:
-	INCBIN "maps/WhirlIslandCave.blk"
-
-WhirlIslandSE_BlockData:
-	INCBIN "maps/WhirlIslandSE.blk"
-
-WhirlIslandB1F_BlockData:
-	INCBIN "maps/WhirlIslandB1F.blk"
-
-WhirlIslandB2F_BlockData:
-	INCBIN "maps/WhirlIslandB2F.blk"
-
-WhirlIslandLugiaChamber_BlockData:
-	INCBIN "maps/WhirlIslandLugiaChamber.blk"
-
-SilverCaveRoom1_BlockData:
-	INCBIN "maps/SilverCaveRoom1.blk"
-
-SilverCaveRoom2_BlockData:
-	INCBIN "maps/SilverCaveRoom2.blk"
-
-SilverCaveRoom3_BlockData:
-	INCBIN "maps/SilverCaveRoom3.blk"
-
-BetaRocketHideout1_BlockData:
-	INCBIN "maps/BetaRocketHideout1.blk"
-
-BetaRocketHideout2_BlockData:
-	INCBIN "maps/BetaRocketHideout2.blk"
-
-BetaEmptyHouse_BlockData:
-	INCBIN "maps/BetaEmptyHouse.blk"
-
-BetaRocketHideout3_BlockData:
-	INCBIN "maps/BetaRocketHideout3.blk"
-
-MahoganyMart1F_BlockData:
-MountMoonGiftShop_BlockData:
-	INCBIN "maps/GiftShop.blk"
-
-TeamRocketBaseB1F_BlockData:
-	INCBIN "maps/TeamRocketBaseB1F.blk"
-
-TeamRocketBaseB2F_BlockData:
-	INCBIN "maps/TeamRocketBaseB2F.blk"
-
-TeamRocketBaseB3F_BlockData:
-	INCBIN "maps/TeamRocketBaseB3F.blk"
-
-BetaRoute23EarlyVersion_BlockData:
-	INCBIN "maps/BetaRoute23EarlyVersion.blk"
-
-IndigoPlateauPokeCenter1F_BlockData:
-	INCBIN "maps/IndigoPlateauPokeCenter1F.blk"
-
-WillsRoom_BlockData:
-	INCBIN "maps/WillsRoom.blk"
-
-KogasRoom_BlockData:
-	INCBIN "maps/KogasRoom.blk"
-
-BrunosRoom_BlockData:
-	INCBIN "maps/BrunosRoom.blk"
-
-KarensRoom_BlockData:
-	INCBIN "maps/KarensRoom.blk"
-
-AzaleaGym_BlockData:
-	INCBIN "maps/AzaleaGym.blk"
-
-VioletGym_BlockData:
-	INCBIN "maps/VioletGym.blk"
-
-GoldenrodGym_BlockData:
-	INCBIN "maps/GoldenrodGym.blk"
-
-EcruteakGym_BlockData:
-	INCBIN "maps/EcruteakGym.blk"
-
-MahoganyGym_BlockData:
-	INCBIN "maps/MahoganyGym.blk"
-
-OlivineGym_BlockData:
-	INCBIN "maps/OlivineGym.blk"
-
-BetaUnknown_BlockData:
-	INCBIN "maps/BetaUnknown.blk"
-
-CianwoodGym_BlockData:
-	INCBIN "maps/CianwoodGym.blk"
-
-BlackthornGym1F_BlockData:
-	INCBIN "maps/BlackthornGym1F.blk"
-
-BlackthornGym2F_BlockData:
-	INCBIN "maps/BlackthornGym2F.blk"
-
-OlivineLighthouse1F_BlockData:
-	INCBIN "maps/OlivineLighthouse1F.blk"
-
-OlivineLighthouse2F_BlockData:
-	INCBIN "maps/OlivineLighthouse2F.blk"
-
-OlivineLighthouse3F_BlockData:
-	INCBIN "maps/OlivineLighthouse3F.blk"
-
-OlivineLighthouse4F_BlockData:
-	INCBIN "maps/OlivineLighthouse4F.blk"
-
-OlivineLighthouse5F_BlockData:
-	INCBIN "maps/OlivineLighthouse5F.blk"
-
-OlivineLighthouse6F_BlockData:
-	INCBIN "maps/OlivineLighthouse6F.blk"
--- a/maps/blockdata_3.asm
+++ /dev/null
@@ -1,266 +1,0 @@
-BetaCave2_BlockData:
-	INCBIN "maps/BetaCave2.blk"
-
-SlowpokeWellB1F_BlockData:
-	INCBIN "maps/SlowpokeWellB1F.blk"
-
-SlowpokeWellB2F_BlockData:
-	INCBIN "maps/SlowpokeWellB2F.blk"
-
-IlexForest_BlockData:
-	INCBIN "maps/IlexForest.blk"
-
-DarkCaveVioletEntrance_BlockData:
-	INCBIN "maps/DarkCaveVioletEntrance.blk"
-
-DarkCaveBlackthornEntrance_BlockData:
-	INCBIN "maps/DarkCaveBlackthornEntrance.blk"
-
-RuinsofAlphResearchCenter_BlockData:
-	INCBIN "maps/RuinsofAlphResearchCenter.blk"
-
-GoldenrodBikeShop_BlockData:
-	INCBIN "maps/GoldenrodBikeShop.blk"
-
-DanceTheatre_BlockData:
-	INCBIN "maps/DanceTheatre.blk"
-
-EcruteakHouse_BlockData:
-	INCBIN "maps/EcruteakHouse.blk"
-
-GoldenrodGameCorner_BlockData:
-	INCBIN "maps/GoldenrodGameCorner.blk"
-
-Route35NationalParkgate_BlockData:
-	INCBIN "maps/Route35NationalParkgate.blk"
-
-Route36NationalParkgate_BlockData:
-	INCBIN "maps/Route36NationalParkgate.blk"
-
-FastShip1F_BlockData:
-	INCBIN "maps/FastShip1F.blk"
-
-FastShipB1F_BlockData:
-	INCBIN "maps/FastShipB1F.blk"
-
-BetaSsAquaInsideCutOut_BlockData:
-	INCBIN "maps/BetaSsAquaInsideCutOut.blk"
-
-FastShipCabins_NNW_NNE_NE_BlockData:
-	INCBIN "maps/FastShipCabins_NNW_NNE_NE.blk"
-
-FastShipCabins_SW_SSW_NW_BlockData:
-	INCBIN "maps/FastShipCabins_SW_SSW_NW.blk"
-
-FastShipCabins_SE_SSE_CaptainsCabin_BlockData:
-	INCBIN "maps/FastShipCabins_SE_SSE_CaptainsCabin.blk"
-
-OlivinePort_BlockData:
-	INCBIN "maps/OlivinePort.blk"
-
-VermilionPort_BlockData:
-	INCBIN "maps/VermilionPort.blk"
-
-OlivineCafe_BlockData:
-SafariZoneMainOffice_BlockData:
-	INCBIN "maps/OlivineCafe.blk"
-
-KrissHouse2F_BlockData:
-	INCBIN "maps/KrissHouse2F.blk"
-
-SaffronTrainStation_BlockData:
-	INCBIN "maps/SaffronTrainStation.blk"
-
-CeruleanGym_BlockData:
-	INCBIN "maps/CeruleanGym.blk"
-
-VermilionGym_BlockData:
-	INCBIN "maps/VermilionGym.blk"
-
-SaffronGym_BlockData:
-	INCBIN "maps/SaffronGym.blk"
-
-PowerPlant_BlockData:
-	INCBIN "maps/PowerPlant.blk"
-
-PokemonFanClub_BlockData:
-SafariZoneWardensHome_BlockData:
-	INCBIN "maps/PokemonFanClub.blk"
-
-FightingDojo_BlockData:
-	INCBIN "maps/FightingDojo.blk"
-
-SilphCo1F_BlockData:
-	INCBIN "maps/SilphCo1F.blk"
-
-ViridianGym_BlockData:
-	INCBIN "maps/ViridianGym.blk"
-
-TrainerHouse1F_BlockData:
-	INCBIN "maps/TrainerHouse1F.blk"
-
-TrainerHouseB1F_BlockData:
-	INCBIN "maps/TrainerHouseB1F.blk"
-
-RedsHouse1F_BlockData:
-	INCBIN "maps/RedsHouse1F.blk"
-
-RedsHouse2F_BlockData:
-	INCBIN "maps/RedsHouse2F.blk"
-
-OaksLab_BlockData:
-	INCBIN "maps/OaksLab.blk"
-
-MrFujisHouse_BlockData:
-	INCBIN "maps/MrFujisHouse.blk"
-
-LavRadioTower1F_BlockData:
-	INCBIN "maps/LavRadioTower1F.blk"
-
-SilverCaveItemRooms_BlockData:
-	INCBIN "maps/SilverCaveItemRooms.blk"
-
-DayCare_BlockData:
-	INCBIN "maps/DayCare.blk"
-
-SoulHouse_BlockData:
-	INCBIN "maps/SoulHouse.blk"
-
-PewterGym_BlockData:
-	INCBIN "maps/PewterGym.blk"
-
-CeladonGym_BlockData:
-	INCBIN "maps/CeladonGym.blk"
-
-BetaHouse2_BlockData:
-	INCBIN "maps/BetaHouse2.blk"
-
-CeladonCafe_BlockData:
-	INCBIN "maps/CeladonCafe.blk"
-
-BetaCeladonMansion_BlockData:
-	INCBIN "maps/BetaCeladonMansion.blk"
-
-RockTunnel1F_BlockData:
-	INCBIN "maps/RockTunnel1F.blk"
-
-RockTunnelB1F_BlockData:
-	INCBIN "maps/RockTunnelB1F.blk"
-
-DiglettsCave_BlockData:
-	INCBIN "maps/DiglettsCave.blk"
-
-MountMoon_BlockData:
-	INCBIN "maps/MountMoon.blk"
-
-SeafoamGym_BlockData:
-	INCBIN "maps/SeafoamGym.blk"
-
-MrPokemonsHouse_BlockData:
-	INCBIN "maps/MrPokemonsHouse.blk"
-
-VictoryRoadGate_BlockData:
-	INCBIN "maps/VictoryRoadGate.blk"
-
-OlivinePortPassage_BlockData:
-VermilionPortPassage_BlockData:
-	INCBIN "maps/PortPassage.blk"
-
-FuchsiaGym_BlockData:
-	INCBIN "maps/FuchsiaGym.blk"
-
-SafariZoneBeta_BlockData:
-	INCBIN "maps/SafariZoneBeta.blk"
-
-Underground_BlockData:
-	INCBIN "maps/Underground.blk"
-
-Route39Barn_BlockData:
-	INCBIN "maps/Route39Barn.blk"
-
-VictoryRoad_BlockData:
-	INCBIN "maps/VictoryRoad.blk"
-
-Route23_BlockData:
-	INCBIN "maps/Route23.blk"
-
-LancesRoom_BlockData:
-	INCBIN "maps/LancesRoom.blk"
-
-HallOfFame_BlockData:
-	INCBIN "maps/HallOfFame.blk"
-
-CopycatsHouse1F_BlockData:
-	INCBIN "maps/CopycatsHouse1F.blk"
-
-CopycatsHouse2F_BlockData:
-	INCBIN "maps/CopycatsHouse2F.blk"
-
-GoldenrodFlowerShop_BlockData:
-	INCBIN "maps/GoldenrodFlowerShop.blk"
-
-MountMoonSquare_BlockData:
-	INCBIN "maps/MountMoonSquare.blk"
-
-WiseTriosRoom_BlockData:
-	INCBIN "maps/WiseTriosRoom.blk"
-
-DragonsDen1F_BlockData:
-	INCBIN "maps/DragonsDen1F.blk"
-
-DragonsDenB1F_BlockData:
-	INCBIN "maps/DragonsDenB1F.blk"
-
-TohjoFalls_BlockData:
-	INCBIN "maps/TohjoFalls.blk"
-
-RuinsofAlphHoOhItemRoom_BlockData:
-RuinsofAlphKabutoItemRoom_BlockData:
-RuinsofAlphOmanyteItemRoom_BlockData:
-RuinsofAlphAerodactylItemRoom_BlockData:
-	INCBIN "maps/RuinsofAlphItemRoom.blk"
-
-RuinsofAlphHoOhWordRoom_BlockData:
-	INCBIN "maps/RuinsofAlphHoOhWordRoom.blk"
-
-RuinsofAlphKabutoWordRoom_BlockData:
-	INCBIN "maps/RuinsofAlphKabutoWordRoom.blk"
-
-RuinsofAlphOmanyteWordRoom_BlockData:
-	INCBIN "maps/RuinsofAlphOmanyteWordRoom.blk"
-
-RuinsofAlphAerodactylWordRoom_BlockData:
-	INCBIN "maps/RuinsofAlphAerodactylWordRoom.blk"
-
-DragonShrine_BlockData:
-	INCBIN "maps/DragonShrine.blk"
-
-BattleTower1F_BlockData:
-	INCBIN "maps/BattleTower1F.blk"
-
-BattleTowerBattleRoom_BlockData:
-	INCBIN "maps/BattleTowerBattleRoom.blk"
-
-GoldenrodPokeComCenter2FMobile_BlockData:
-	INCBIN "maps/GoldenrodPokeComCenter2FMobile.blk"
-
-MobileTradeRoomMobile_BlockData:
-	INCBIN "maps/MobileTradeRoomMobile.blk"
-
-MobileBattleRoom_BlockData:
-	INCBIN "maps/MobileBattleRoom.blk"
-
-BattleTowerHallway_BlockData:
-	INCBIN "maps/BattleTowerHallway.blk"
-
-BattleTowerElevator_BlockData:
-	INCBIN "maps/BattleTowerElevator.blk"
-
-BattleTowerOutside_BlockData:
-	INCBIN "maps/BattleTowerOutside.blk"
-
-BetaBlank_BlockData:
-	INCBIN "maps/BetaBlank.blk"
-
-GoldenrodDeptStoreRoof_BlockData:
-	INCBIN "maps/GoldenrodDeptStoreRoof.blk"
--- a/maps/map_headers.asm
+++ b/maps/map_headers.asm
@@ -1,35 +1,35 @@
 MapGroupPointers::
 ; pointers to the first map header of each map group
-	dw MapGroup1
-	dw MapGroup2
-	dw MapGroup3
-	dw MapGroup4
-	dw MapGroup5
-	dw MapGroup6
-	dw MapGroup7
-	dw MapGroup8
-	dw MapGroup9
-	dw MapGroup10
-	dw MapGroup11
-	dw MapGroup12
-	dw MapGroup13
-	dw MapGroup14
-	dw MapGroup15
-	dw MapGroup16
-	dw MapGroup17
-	dw MapGroup18
-	dw MapGroup19
-	dw MapGroup20
-	dw MapGroup21
-	dw MapGroup22
-	dw MapGroup23
-	dw MapGroup24
-	dw MapGroup25
-	dw MapGroup26
+	dw MapGroup_Olivine     ;  1
+	dw MapGroup_Mahogany    ;  2
+	dw MapGroup_Dungeons    ;  3
+	dw MapGroup_Ecruteak    ;  4
+	dw MapGroup_Blackthorn  ;  5
+	dw MapGroup_Cinnabar    ;  6
+	dw MapGroup_Cerulean    ;  7
+	dw MapGroup_Azalea      ;  8
+	dw MapGroup_LakeOfRage  ;  9
+	dw MapGroup_Violet      ; 10
+	dw MapGroup_Goldenrod   ; 11
+	dw MapGroup_Vermilion   ; 12
+	dw MapGroup_Pallet      ; 13
+	dw MapGroup_Pewter      ; 14
+	dw MapGroup_FastShip    ; 15
+	dw MapGroup_Indigo      ; 16
+	dw MapGroup_Fuchsia     ; 17
+	dw MapGroup_Lavender    ; 18
+	dw MapGroup_Silver      ; 19
+	dw MapGroup_CableClub   ; 20
+	dw MapGroup_Celadon     ; 21
+	dw MapGroup_Cianwood    ; 22
+	dw MapGroup_Viridian    ; 23
+	dw MapGroup_NewBark     ; 24
+	dw MapGroup_Saffron     ; 25
+	dw MapGroup_Cherrygrove ; 26
 
 
-MapGroup1:
-	map_header OlivinePokeCenter1F, TILESET_POKECENTER, INDOOR, OLIVINE_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+MapGroup_Olivine:
+	map_header OlivinePokecenter1F, TILESET_POKECENTER, INDOOR, OLIVINE_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header OlivineGym, TILESET_OLIVINE_GYM, INDOOR, OLIVINE_CITY, MUSIC_GYM, 1, PALETTE_DAY, FISHGROUP_SHORE
 	map_header OlivineTimsHouse, TILESET_HOUSE_1, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header OlivineHouseBeta, TILESET_HOUSE_1, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
@@ -38,7 +38,7 @@
 	map_header OlivineCafe, TILESET_GAME_CORNER, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header OlivineMart, TILESET_MART, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Route38EcruteakGate, TILESET_GATE, GATE, ROUTE_38, MUSIC_ROUTE_37, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header Route39Barn, TILESET_KURT_HOUSE, INDOOR, ROUTE_39, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header Route39Barn, TILESET_KURTS_HOUSE, INDOOR, ROUTE_39, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Route39Farmhouse, TILESET_HOUSE_1, INDOOR, ROUTE_39, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Route38, TILESET_JOHTO_1, ROUTE, ROUTE_38, MUSIC_ROUTE_37, 0, PALETTE_AUTO, FISHGROUP_SHORE
 	map_header Route39, TILESET_JOHTO_1, ROUTE, ROUTE_39, MUSIC_ROUTE_37, 0, PALETTE_AUTO, FISHGROUP_SHORE
@@ -45,10 +45,10 @@
 	map_header OlivineCity, TILESET_JOHTO_1, TOWN, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_AUTO, FISHGROUP_SHORE
 
 
-MapGroup2:
+MapGroup_Mahogany:
 	map_header MahoganyRedGyaradosSpeechHouse, TILESET_HOUSE_1, INDOOR, MAHOGANY_TOWN, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header MahoganyGym, TILESET_GYM_1, INDOOR, MAHOGANY_TOWN, MUSIC_GYM, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header MahoganyPokeCenter1F, TILESET_POKECENTER, INDOOR, MAHOGANY_TOWN, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header MahoganyPokecenter1F, TILESET_POKECENTER, INDOOR, MAHOGANY_TOWN, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Route42EcruteakGate, TILESET_GATE, GATE, ROUTE_42, MUSIC_LAKE_OF_RAGE, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Route42, TILESET_JOHTO_1, ROUTE, ROUTE_42, MUSIC_LAKE_OF_RAGE, 0, PALETTE_AUTO, FISHGROUP_LAKE
 	map_header Route44, TILESET_JOHTO_1, ROUTE, ROUTE_44, MUSIC_LAKE_OF_RAGE, 0, PALETTE_AUTO, FISHGROUP_POND
@@ -55,7 +55,7 @@
 	map_header MahoganyTown, TILESET_JOHTO_1, TOWN, MAHOGANY_TOWN, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_AUTO, FISHGROUP_SHORE
 
 
-MapGroup3:
+MapGroup_Dungeons:
 	map_header SproutTower1F, TILESET_SPROUT_TOWER, DUNGEON, SPROUT_TOWER, MUSIC_SPROUT_TOWER, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header SproutTower2F, TILESET_SPROUT_TOWER, DUNGEON, SPROUT_TOWER, MUSIC_SPROUT_TOWER, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header SproutTower3F, TILESET_SPROUT_TOWER, DUNGEON, SPROUT_TOWER, MUSIC_SPROUT_TOWER, 0, PALETTE_DAY, FISHGROUP_SHORE
@@ -72,26 +72,26 @@
 	map_header BurnedTowerB1F, TILESET_CAVE, CAVE, BURNED_TOWER, MUSIC_BURNED_TOWER, 1, PALETTE_NITE, FISHGROUP_SHORE
 	map_header NationalPark, TILESET_PARK, ROUTE, NATIONAL_PARK, MUSIC_NATIONAL_PARK, 0, PALETTE_AUTO, FISHGROUP_SHORE
 	map_header NationalParkBugContest, TILESET_PARK, ROUTE, NATIONAL_PARK, MUSIC_BUG_CATCHING_CONTEST, 0, PALETTE_AUTO, FISHGROUP_SHORE
-	map_header RadioTower1F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, (1 << RADIO_TOWER_MUSIC) | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header RadioTower2F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, (1 << RADIO_TOWER_MUSIC) | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header RadioTower3F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, (1 << RADIO_TOWER_MUSIC) | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header RadioTower4F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, (1 << RADIO_TOWER_MUSIC) | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header RadioTower5F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, (1 << RADIO_TOWER_MUSIC) | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header RuinsofAlphOutside, TILESET_JOHTO_1, ROUTE, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 0, PALETTE_AUTO, FISHGROUP_POND
-	map_header RuinsofAlphHoOhChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header RuinsofAlphKabutoChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header RuinsofAlphOmanyteChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header RuinsofAlphAerodactylChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header RuinsofAlphInnerChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_RUINS_OF_ALPH_INTERIOR, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header RuinsofAlphResearchCenter, TILESET_POWER_PLANT, INDOOR, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header RuinsofAlphHoOhItemRoom, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header RuinsofAlphKabutoItemRoom, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header RuinsofAlphOmanyteItemRoom, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header RuinsofAlphAerodactylItemRoom, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header RuinsofAlphHoOhWordRoom, TILESET_HO_OH_WORD_ROOM, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header RuinsofAlphKabutoWordRoom, TILESET_KABUTO_WORD_ROOM, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header RuinsofAlphOmanyteWordRoom, TILESET_OMANYTE_WORD_ROOM, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header RuinsofAlphAerodactylWordRoom, TILESET_AERODACTYL_WORD_ROOM, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RadioTower1F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, RADIO_TOWER_MUSIC | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RadioTower2F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, RADIO_TOWER_MUSIC | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RadioTower3F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, RADIO_TOWER_MUSIC | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RadioTower4F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, RADIO_TOWER_MUSIC | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RadioTower5F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, RADIO_TOWER_MUSIC | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RuinsOfAlphOutside, TILESET_JOHTO_1, ROUTE, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 0, PALETTE_AUTO, FISHGROUP_POND
+	map_header RuinsOfAlphHoOhChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RuinsOfAlphKabutoChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RuinsOfAlphOmanyteChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RuinsOfAlphAerodactylChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RuinsOfAlphInnerChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_RUINS_OF_ALPH_INTERIOR, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RuinsOfAlphResearchCenter, TILESET_POWER_PLANT, INDOOR, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RuinsOfAlphHoOhItemRoom, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RuinsOfAlphKabutoItemRoom, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RuinsOfAlphOmanyteItemRoom, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RuinsOfAlphAerodactylItemRoom, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RuinsOfAlphHoOhWordRoom, TILESET_HO_OH_WORD_ROOM, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RuinsOfAlphKabutoWordRoom, TILESET_KABUTO_WORD_ROOM, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RuinsOfAlphOmanyteWordRoom, TILESET_OMANYTE_WORD_ROOM, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RuinsOfAlphAerodactylWordRoom, TILESET_AERODACTYL_WORD_ROOM, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
 	map_header UnionCave1F, TILESET_CAVE, CAVE, UNION_CAVE, MUSIC_UNION_CAVE, 1, PALETTE_NITE, FISHGROUP_LAKE
 	map_header UnionCaveB1F, TILESET_CAVE, CAVE, UNION_CAVE, MUSIC_UNION_CAVE, 1, PALETTE_NITE, FISHGROUP_LAKE
 	map_header UnionCaveB2F, TILESET_CAVE, CAVE, UNION_CAVE, MUSIC_UNION_CAVE, 1, PALETTE_NITE, FISHGROUP_SHORE
@@ -103,7 +103,7 @@
 	map_header OlivineLighthouse4F, TILESET_LIGHTHOUSE, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header OlivineLighthouse5F, TILESET_LIGHTHOUSE, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header OlivineLighthouse6F, TILESET_LIGHTHOUSE, DUNGEON, LIGHTHOUSE, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header MahoganyMart1F, TILESET_KURT_HOUSE, INDOOR, MAHOGANY_TOWN, MUSIC_MAHOGANY_MART, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header MahoganyMart1F, TILESET_KURTS_HOUSE, INDOOR, MAHOGANY_TOWN, MUSIC_MAHOGANY_MART, 1, PALETTE_DAY, FISHGROUP_SHORE
 	map_header TeamRocketBaseB1F, TILESET_UNDERGROUND, DUNGEON, MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, 1, PALETTE_DAY, FISHGROUP_SHORE
 	map_header TeamRocketBaseB2F, TILESET_POWER_PLANT, DUNGEON, MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, 1, PALETTE_DAY, FISHGROUP_SHORE
 	map_header TeamRocketBaseB3F, TILESET_POWER_PLANT, DUNGEON, MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, 1, PALETTE_DAY, FISHGROUP_SHORE
@@ -149,25 +149,25 @@
 	map_header VictoryRoad, TILESET_CAVE, CAVE, VICTORY_ROAD, MUSIC_VICTORY_ROAD, 1, PALETTE_NITE, FISHGROUP_SHORE
 
 
-MapGroup4:
+MapGroup_Ecruteak:
 	map_header EcruteakHouse, TILESET_SPROUT_TOWER, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header WiseTriosRoom, TILESET_KURT_HOUSE, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header EcruteakPokeCenter1F, TILESET_POKECENTER, INDOOR, ECRUTEAK_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header EcruteakLugiaSpeechHouse, TILESET_KURT_HOUSE, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header DanceTheatre, TILESET_KURT_HOUSE, INDOOR, ECRUTEAK_CITY, MUSIC_DANCING_HALL, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header WiseTriosRoom, TILESET_KURTS_HOUSE, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header EcruteakPokecenter1F, TILESET_POKECENTER, INDOOR, ECRUTEAK_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header EcruteakLugiaSpeechHouse, TILESET_KURTS_HOUSE, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header DanceTheatre, TILESET_KURTS_HOUSE, INDOOR, ECRUTEAK_CITY, MUSIC_DANCING_HALL, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header EcruteakMart, TILESET_MART, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header EcruteakGym, TILESET_SPROUT_TOWER, INDOOR, ECRUTEAK_CITY, MUSIC_GYM, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header EcruteakItemfinderHouse, TILESET_KURT_HOUSE, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header EcruteakItemfinderHouse, TILESET_KURTS_HOUSE, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header EcruteakCity, TILESET_JOHTO_1, TOWN, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_AUTO, FISHGROUP_POND
 
 
-MapGroup5:
+MapGroup_Blackthorn:
 	map_header BlackthornGym1F, TILESET_GYM_1, INDOOR, BLACKTHORN_CITY, MUSIC_GYM, 1, PALETTE_DAY, FISHGROUP_SHORE
 	map_header BlackthornGym2F, TILESET_GYM_1, INDOOR, BLACKTHORN_CITY, MUSIC_GYM, 1, PALETTE_DAY, FISHGROUP_SHORE
 	map_header BlackthornDragonSpeechHouse, TILESET_HOUSE_1, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header BlackthornEmysHouse, TILESET_HOUSE_1, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header BlackthornMart, TILESET_MART, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header BlackthornPokeCenter1F, TILESET_POKECENTER, INDOOR, BLACKTHORN_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header BlackthornPokecenter1F, TILESET_POKECENTER, INDOOR, BLACKTHORN_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header MoveDeletersHouse, TILESET_HOUSE_1, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Route45, TILESET_JOHTO_1, ROUTE, ROUTE_45, MUSIC_ROUTE_36, 0, PALETTE_AUTO, FISHGROUP_DRATINI_2
 	map_header Route46, TILESET_JOHTO_1, ROUTE, ROUTE_46, MUSIC_ROUTE_36, 0, PALETTE_AUTO, FISHGROUP_SHORE
@@ -174,9 +174,9 @@
 	map_header BlackthornCity, TILESET_JOHTO_1, TOWN, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, PALETTE_AUTO, FISHGROUP_POND
 
 
-MapGroup6:
-	map_header CinnabarPokeCenter1F, TILESET_POKECENTER, INDOOR, CINNABAR_ISLAND, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header CinnabarPokeCenter2FBeta, TILESET_POKECENTER, INDOOR, CINNABAR_ISLAND, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+MapGroup_Cinnabar:
+	map_header CinnabarPokecenter1F, TILESET_POKECENTER, INDOOR, CINNABAR_ISLAND, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header CinnabarPokecenter2FBeta, TILESET_POKECENTER, INDOOR, CINNABAR_ISLAND, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Route19FuchsiaGate, TILESET_GATE, GATE, ROUTE_19, MUSIC_ROUTE_3, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header SeafoamGym, TILESET_CAVE, INDOOR, SEAFOAM_ISLANDS, MUSIC_GYM, 1, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Route19, TILESET_KANTO, ROUTE, ROUTE_19, MUSIC_ROUTE_3, 0, PALETTE_AUTO, FISHGROUP_SHORE
@@ -185,16 +185,16 @@
 	map_header CinnabarIsland, TILESET_KANTO, TOWN, CINNABAR_ISLAND, MUSIC_VIRIDIAN_CITY, 0, PALETTE_AUTO, FISHGROUP_OCEAN
 
 
-MapGroup7:
+MapGroup_Cerulean:
 	map_header CeruleanGymBadgeSpeechHouse, TILESET_HOUSE_1, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header CeruleanPoliceStation, TILESET_HOUSE_1, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header CeruleanTradeSpeechHouse, TILESET_HOUSE_1, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header CeruleanPokeCenter1F, TILESET_POKECENTER, INDOOR, CERULEAN_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header CeruleanPokeCenter2FBeta, TILESET_POKECENTER, INDOOR, CERULEAN_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header CeruleanPokecenter1F, TILESET_POKECENTER, INDOOR, CERULEAN_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header CeruleanPokecenter2FBeta, TILESET_POKECENTER, INDOOR, CERULEAN_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header CeruleanGym, TILESET_PORT, INDOOR, CERULEAN_CITY, MUSIC_GYM, 1, PALETTE_DAY, FISHGROUP_NONE
 	map_header CeruleanMart, TILESET_MART, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header Route10PokeCenter1F, TILESET_POKECENTER, INDOOR, ROUTE_10, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header Route10PokeCenter2FBeta, TILESET_POKECENTER, INDOOR, ROUTE_10, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header Route10Pokecenter1F, TILESET_POKECENTER, INDOOR, ROUTE_10, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header Route10Pokecenter2FBeta, TILESET_POKECENTER, INDOOR, ROUTE_10, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header PowerPlant, TILESET_POWER_PLANT, INDOOR, POWER_PLANT, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header BillsHouse, TILESET_HOUSE_1, INDOOR, ROUTE_25, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Route4, TILESET_KANTO, ROUTE, ROUTE_4, MUSIC_ROUTE_3, 0, PALETTE_AUTO, FISHGROUP_NONE
@@ -205,26 +205,26 @@
 	map_header CeruleanCity, TILESET_KANTO, TOWN, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_AUTO, FISHGROUP_NONE
 
 
-MapGroup8:
-	map_header AzaleaPokeCenter1F, TILESET_POKECENTER, INDOOR, AZALEA_TOWN, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+MapGroup_Azalea:
+	map_header AzaleaPokecenter1F, TILESET_POKECENTER, INDOOR, AZALEA_TOWN, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header CharcoalKiln, TILESET_HOUSE_1, INDOOR, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header AzaleaMart, TILESET_MART, INDOOR, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header KurtsHouse, TILESET_KURT_HOUSE, INDOOR, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header KurtsHouse, TILESET_KURTS_HOUSE, INDOOR, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header AzaleaGym, TILESET_GYM_1, INDOOR, AZALEA_TOWN, MUSIC_GYM, 1, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Route33, TILESET_JOHTO_2, ROUTE, ROUTE_33, MUSIC_ROUTE_30, 0, PALETTE_AUTO, FISHGROUP_SHORE
 	map_header AzaleaTown, TILESET_JOHTO_2, TOWN, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 0, PALETTE_AUTO, FISHGROUP_SHORE
 
 
-MapGroup9:
-	map_header LakeofRageHiddenPowerHouse, TILESET_HOUSE_1, INDOOR, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header LakeofRageMagikarpHouse, TILESET_HOUSE_1, INDOOR, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, 0, PALETTE_DAY, FISHGROUP_SHORE
+MapGroup_LakeOfRage:
+	map_header LakeOfRageHiddenPowerHouse, TILESET_HOUSE_1, INDOOR, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header LakeOfRageMagikarpHouse, TILESET_HOUSE_1, INDOOR, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Route43MahoganyGate, TILESET_GATE, GATE, ROUTE_43, MUSIC_LAKE_OF_RAGE, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Route43Gate, TILESET_GATE, GATE, ROUTE_43, MUSIC_LAKE_OF_RAGE, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Route43, TILESET_JOHTO_1, ROUTE, ROUTE_43, MUSIC_LAKE_OF_RAGE, 0, PALETTE_AUTO, FISHGROUP_POND
-	map_header LakeofRage, TILESET_JOHTO_1, TOWN, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, 0, PALETTE_AUTO, FISHGROUP_GYARADOS
+	map_header LakeOfRage, TILESET_JOHTO_1, TOWN, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, 0, PALETTE_AUTO, FISHGROUP_GYARADOS
 
 
-MapGroup10:
+MapGroup_Violet:
 	map_header Route32, TILESET_JOHTO_1, ROUTE, ROUTE_32, MUSIC_ROUTE_30, 0, PALETTE_AUTO, FISHGROUP_QWILFISH
 	map_header Route35, TILESET_JOHTO_1, ROUTE, ROUTE_35, MUSIC_ROUTE_36, 0, PALETTE_AUTO, FISHGROUP_POND
 	map_header Route36, TILESET_JOHTO_1, ROUTE, ROUTE_36, MUSIC_ROUTE_36, 0, PALETTE_AUTO, FISHGROUP_SHORE
@@ -233,18 +233,18 @@
 	map_header VioletMart, TILESET_MART, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header VioletGym, TILESET_GYM_1, INDOOR, VIOLET_CITY, MUSIC_GYM, 1, PALETTE_DAY, FISHGROUP_SHORE
 	map_header EarlsPokemonAcademy, TILESET_LAB, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header VioletNicknameSpeechHouse, TILESET_KURT_HOUSE, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header VioletPokeCenter1F, TILESET_POKECENTER, INDOOR, VIOLET_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header VioletOnixTradeHouse, TILESET_KURT_HOUSE, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header Route32RuinsofAlphGate, TILESET_GATE, GATE, ROUTE_32, MUSIC_ROUTE_30, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header Route32PokeCenter1F, TILESET_POKECENTER, INDOOR, ROUTE_32, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header Route35Goldenrodgate, TILESET_GATE, GATE, ROUTE_35, MUSIC_ROUTE_36, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header Route35NationalParkgate, TILESET_GATE, INDOOR, ROUTE_35, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header Route36RuinsofAlphgate, TILESET_GATE, GATE, ROUTE_36, MUSIC_ROUTE_36, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header Route36NationalParkgate, TILESET_GATE, INDOOR, ROUTE_36, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header VioletNicknameSpeechHouse, TILESET_KURTS_HOUSE, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header VioletPokecenter1F, TILESET_POKECENTER, INDOOR, VIOLET_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header VioletOnixTradeHouse, TILESET_KURTS_HOUSE, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header Route32RuinsOfAlphGate, TILESET_GATE, GATE, ROUTE_32, MUSIC_ROUTE_30, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header Route32Pokecenter1F, TILESET_POKECENTER, INDOOR, ROUTE_32, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header Route35GoldenrodGate, TILESET_GATE, GATE, ROUTE_35, MUSIC_ROUTE_36, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header Route35NationalParkGate, TILESET_GATE, INDOOR, ROUTE_35, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header Route36RuinsOfAlphGate, TILESET_GATE, GATE, ROUTE_36, MUSIC_ROUTE_36, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header Route36NationalParkGate, TILESET_GATE, INDOOR, ROUTE_36, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 
 
-MapGroup11:
+MapGroup_Goldenrod:
 	map_header Route34, TILESET_JOHTO_2, ROUTE, ROUTE_34, MUSIC_ROUTE_36, 0, PALETTE_AUTO, FISHGROUP_SHORE
 	map_header GoldenrodCity, TILESET_JOHTO_2, TOWN, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_AUTO, FISHGROUP_SHORE
 	map_header GoldenrodGym, TILESET_GYM_1, INDOOR, GOLDENROD_CITY, MUSIC_GYM, 1, PALETTE_DAY, FISHGROUP_SHORE
@@ -264,7 +264,7 @@
 	map_header GoldenrodDeptStoreElevator, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header GoldenrodDeptStoreRoof, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header GoldenrodGameCorner, TILESET_GAME_CORNER, INDOOR, GOLDENROD_CITY, MUSIC_GAME_CORNER, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header GoldenrodPokeCenter1F, TILESET_POKECENTER, INDOOR, GOLDENROD_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header GoldenrodPokecenter1F, TILESET_POKECENTER, INDOOR, GOLDENROD_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header GoldenrodPokeComCenter2FMobile, TILESET_POKECOM_CENTER, INDOOR, GOLDENROD_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header IlexForestAzaleaGate, TILESET_GATE, GATE, ROUTE_34, MUSIC_ROUTE_36, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Route34IlexForestGate, TILESET_GATE, GATE, ROUTE_34, MUSIC_ROUTE_36, 0, PALETTE_DAY, FISHGROUP_SHORE
@@ -271,13 +271,13 @@
 	map_header DayCare, TILESET_HOUSE_1, INDOOR, ROUTE_34, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
 
 
-MapGroup12:
+MapGroup_Vermilion:
 	map_header Route6, TILESET_KANTO, ROUTE, ROUTE_6, MUSIC_ROUTE_3, 0, PALETTE_AUTO, FISHGROUP_POND
 	map_header Route11, TILESET_KANTO, ROUTE, ROUTE_11, MUSIC_ROUTE_12, 0, PALETTE_AUTO, FISHGROUP_SHORE
 	map_header VermilionCity, TILESET_KANTO, TOWN, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_AUTO, FISHGROUP_OCEAN
 	map_header VermilionHouseFishingSpeechHouse, TILESET_HOUSE_1, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header VermilionPokeCenter1F, TILESET_POKECENTER, INDOOR, VERMILION_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header VermilionPokeCenter2FBeta, TILESET_POKECENTER, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header VermilionPokecenter1F, TILESET_POKECENTER, INDOOR, VERMILION_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header VermilionPokecenter2FBeta, TILESET_POKECENTER, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header PokemonFanClub, TILESET_HOUSE_1, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header VermilionMagnetTrainSpeechHouse, TILESET_HOUSE_1, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header VermilionMart, TILESET_MART, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
@@ -287,27 +287,27 @@
 	map_header Route6UndergroundEntrance, TILESET_GATE, GATE, ROUTE_6, MUSIC_ROUTE_3, 0, PALETTE_DAY, FISHGROUP_SHORE
 
 
-MapGroup13:
+MapGroup_Pallet:
 	map_header Route1, TILESET_KANTO, ROUTE, ROUTE_1, MUSIC_ROUTE_1, 0, PALETTE_AUTO, FISHGROUP_SHORE
 	map_header PalletTown, TILESET_KANTO, TOWN, PALLET_TOWN, MUSIC_PALLET_TOWN, 0, PALETTE_AUTO, FISHGROUP_OCEAN
-	map_header RedsHouse1F, TILESET_KRISS_HOUSE, INDOOR, PALLET_TOWN, MUSIC_PALLET_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header RedsHouse2F, TILESET_KRISS_HOUSE, INDOOR, PALLET_TOWN, MUSIC_PALLET_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RedsHouse1F, TILESET_PLAYERS_HOUSE, INDOOR, PALLET_TOWN, MUSIC_PALLET_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RedsHouse2F, TILESET_PLAYERS_HOUSE, INDOOR, PALLET_TOWN, MUSIC_PALLET_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header BluesHouse, TILESET_HOUSE_1, INDOOR, PALLET_TOWN, MUSIC_PALLET_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header OaksLab, TILESET_LAB, INDOOR, PALLET_TOWN, MUSIC_POKEMON_TALK, 0, PALETTE_DAY, FISHGROUP_SHORE
 
 
-MapGroup14:
+MapGroup_Pewter:
 	map_header Route3, TILESET_KANTO, ROUTE, ROUTE_3, MUSIC_ROUTE_3, 0, PALETTE_AUTO, FISHGROUP_SHORE
 	map_header PewterCity, TILESET_KANTO, TOWN, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_AUTO, FISHGROUP_SHORE
 	map_header PewterNidoranSpeechHouse, TILESET_HOUSE_1, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header PewterGym, TILESET_SPROUT_TOWER, INDOOR, PEWTER_CITY, MUSIC_GYM, 1, PALETTE_DAY, FISHGROUP_SHORE
 	map_header PewterMart, TILESET_MART, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header PewterPokeCenter1F, TILESET_POKECENTER, INDOOR, PEWTER_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header PewterPokeCenter2FBeta, TILESET_POKECENTER, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header PewterPokecenter1F, TILESET_POKECENTER, INDOOR, PEWTER_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header PewterPokecenter2FBeta, TILESET_POKECENTER, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header PewterSnoozeSpeechHouse, TILESET_HOUSE_1, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 
 
-MapGroup15:
+MapGroup_FastShip:
 	map_header OlivinePort, TILESET_PORT, ROUTE, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_AUTO, FISHGROUP_OCEAN
 	map_header VermilionPort, TILESET_PORT, ROUTE, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_AUTO, FISHGROUP_OCEAN
 	map_header FastShip1F, TILESET_LIGHTHOUSE, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, PALETTE_DAY, FISHGROUP_SHORE
@@ -318,13 +318,13 @@
 	map_header OlivinePortPassage, TILESET_UNDERGROUND, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header VermilionPortPassage, TILESET_UNDERGROUND, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header MountMoonSquare, TILESET_KANTO, ROUTE, MT_MOON, MUSIC_MT_MOON_SQUARE, 0, PALETTE_AUTO, FISHGROUP_SHORE
-	map_header MountMoonGiftShop, TILESET_KURT_HOUSE, INDOOR, MT_MOON, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header MountMoonGiftShop, TILESET_KURTS_HOUSE, INDOOR, MT_MOON, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header TinTowerRoof, TILESET_SPROUT_TOWER, ROUTE, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_AUTO, FISHGROUP_SHORE
 
 
-MapGroup16:
+MapGroup_Indigo:
 	map_header Route23, TILESET_KANTO, TOWN, ROUTE_23, MUSIC_INDIGO_PLATEAU, 0, PALETTE_AUTO, FISHGROUP_SHORE
-	map_header IndigoPlateauPokeCenter1F, TILESET_POKECENTER, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header IndigoPlateauPokecenter1F, TILESET_POKECENTER, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header WillsRoom, TILESET_GYM_1, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, PALETTE_DAY, FISHGROUP_SHORE
 	map_header KogasRoom, TILESET_GYM_1, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, PALETTE_DAY, FISHGROUP_SHORE
 	map_header BrunosRoom, TILESET_GYM_1, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, PALETTE_DAY, FISHGROUP_SHORE
@@ -333,7 +333,7 @@
 	map_header HallOfFame, TILESET_ICE_PATH, INDOOR, INDIGO_PLATEAU, MUSIC_NEW_BARK_TOWN, 1, PALETTE_DAY, FISHGROUP_SHORE
 
 
-MapGroup17:
+MapGroup_Fuchsia:
 	map_header Route13, TILESET_KANTO, ROUTE, ROUTE_13, MUSIC_ROUTE_12, 0, PALETTE_AUTO, FISHGROUP_QWILFISH_NO_SWARM
 	map_header Route14, TILESET_KANTO, ROUTE, ROUTE_14, MUSIC_ROUTE_12, 0, PALETTE_AUTO, FISHGROUP_SHORE
 	map_header Route15, TILESET_KANTO, ROUTE, ROUTE_15, MUSIC_ROUTE_12, 0, PALETTE_AUTO, FISHGROUP_SHORE
@@ -343,19 +343,19 @@
 	map_header SafariZoneMainOffice, TILESET_GAME_CORNER, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header FuchsiaGym, TILESET_LAB, INDOOR, FUCHSIA_CITY, MUSIC_GYM, 1, PALETTE_DAY, FISHGROUP_SHORE
 	map_header FuchsiaBillSpeechHouse, TILESET_HOUSE_1, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header FuchsiaPokeCenter1F, TILESET_POKECENTER, INDOOR, FUCHSIA_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header FuchsiaPokeCenter2FBeta, TILESET_POKECENTER, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header FuchsiaPokecenter1F, TILESET_POKECENTER, INDOOR, FUCHSIA_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header FuchsiaPokecenter2FBeta, TILESET_POKECENTER, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header SafariZoneWardensHome, TILESET_HOUSE_1, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Route15FuchsiaGate, TILESET_GATE, GATE, ROUTE_15, MUSIC_ROUTE_12, 0, PALETTE_DAY, FISHGROUP_SHORE
 
 
-MapGroup18:
+MapGroup_Lavender:
 	map_header Route8, TILESET_KANTO, ROUTE, ROUTE_8, MUSIC_ROUTE_3, 0, PALETTE_AUTO, FISHGROUP_SHORE
 	map_header Route12, TILESET_KANTO, ROUTE, ROUTE_12, MUSIC_ROUTE_12, 0, PALETTE_AUTO, FISHGROUP_QWILFISH_NO_SWARM
 	map_header Route10South, TILESET_KANTO, ROUTE, ROUTE_10, MUSIC_ROUTE_3, 0, PALETTE_AUTO, FISHGROUP_LAKE
 	map_header LavenderTown, TILESET_KANTO, TOWN, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, PALETTE_AUTO, FISHGROUP_SHORE
-	map_header LavenderPokeCenter1F, TILESET_POKECENTER, INDOOR, LAVENDER_TOWN, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header LavenderPokeCenter2FBeta, TILESET_POKECENTER, INDOOR, LAVENDER_TOWN, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header LavenderPokecenter1F, TILESET_POKECENTER, INDOOR, LAVENDER_TOWN, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header LavenderPokecenter2FBeta, TILESET_POKECENTER, INDOOR, LAVENDER_TOWN, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header MrFujisHouse, TILESET_HOUSE_1, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header LavenderTownSpeechHouse, TILESET_HOUSE_1, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header LavenderNameRater, TILESET_HOUSE_1, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
@@ -366,15 +366,15 @@
 	map_header Route12SuperRodHouse, TILESET_HOUSE_1, INDOOR, ROUTE_12, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 
 
-MapGroup19:
+MapGroup_Silver    :
 	map_header Route28, TILESET_KANTO, ROUTE, ROUTE_28, MUSIC_INDIGO_PLATEAU, 0, PALETTE_AUTO, FISHGROUP_POND
 	map_header SilverCaveOutside, TILESET_KANTO, TOWN, SILVER_CAVE, MUSIC_INDIGO_PLATEAU, 0, PALETTE_AUTO, FISHGROUP_POND
-	map_header SilverCavePokeCenter1F, TILESET_POKECENTER, INDOOR, SILVER_CAVE, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header SilverCavePokecenter1F, TILESET_POKECENTER, INDOOR, SILVER_CAVE, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Route28FamousSpeechHouse, TILESET_HOUSE_1, INDOOR, ROUTE_28, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
 
 
-MapGroup20:
-	map_header PokeCenter2F, TILESET_POKECENTER, INDOOR, SPECIAL_MAP, MUSIC_POKEMON_CENTER, 1, PALETTE_DAY, FISHGROUP_SHORE
+MapGroup_CableClub:
+	map_header Pokecenter2F, TILESET_POKECENTER, INDOOR, SPECIAL_MAP, MUSIC_POKEMON_CENTER, 1, PALETTE_DAY, FISHGROUP_SHORE
 	map_header TradeCenter, TILESET_GATE, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Colosseum, TILESET_GATE, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
 	map_header TimeCapsule, TILESET_GATE, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
@@ -382,7 +382,7 @@
 	map_header MobileBattleRoom, TILESET_CELADON_MANSION, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
 
 
-MapGroup21:
+MapGroup_Celadon:
 	map_header Route7, TILESET_KANTO, ROUTE, ROUTE_7, MUSIC_ROUTE_3, 0, PALETTE_AUTO, FISHGROUP_SHORE
 	map_header Route16, TILESET_KANTO, ROUTE, ROUTE_16, MUSIC_ROUTE_3, 0, PALETTE_AUTO, FISHGROUP_SHORE
 	map_header Route17, TILESET_KANTO, ROUTE, ROUTE_17, MUSIC_ROUTE_3, 0, PALETTE_AUTO, FISHGROUP_NONE
@@ -399,8 +399,8 @@
 	map_header CeladonMansion3F, TILESET_CELADON_MANSION, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header CeladonMansionRoof, TILESET_CELADON_MANSION, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header CeladonMansionRoofHouse, TILESET_HOUSE_1, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header CeladonPokeCenter1F, TILESET_POKECENTER, INDOOR, CELADON_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header CeladonPokeCenter2FBeta, TILESET_POKECENTER, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header CeladonPokecenter1F, TILESET_POKECENTER, INDOOR, CELADON_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header CeladonPokecenter2FBeta, TILESET_POKECENTER, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header CeladonGameCorner, TILESET_GAME_CORNER, INDOOR, CELADON_CITY, MUSIC_GAME_CORNER, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header CeladonGameCornerPrizeRoom, TILESET_GAME_CORNER, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header CeladonGym, TILESET_TRAIN_STATION, INDOOR, CELADON_CITY, MUSIC_GYM, 1, PALETTE_DAY, FISHGROUP_SHORE
@@ -411,13 +411,13 @@
 	map_header Route1718Gate, TILESET_GATE, GATE, ROUTE_17, MUSIC_ROUTE_3, 0, PALETTE_DAY, FISHGROUP_SHORE
 
 
-MapGroup22:
+MapGroup_Cianwood:
 	map_header Route40, TILESET_JOHTO_1, ROUTE, ROUTE_40, MUSIC_ROUTE_36, 0, PALETTE_AUTO, FISHGROUP_SHORE
 	map_header Route41, TILESET_JOHTO_1, ROUTE, ROUTE_41, MUSIC_ROUTE_36, 0, PALETTE_AUTO, FISHGROUP_OCEAN
 	map_header CianwoodCity, TILESET_JOHTO_1, TOWN, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_AUTO, FISHGROUP_SHORE
 	map_header ManiasHouse, TILESET_HOUSE_1, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header CianwoodGym, TILESET_SPROUT_TOWER, INDOOR, CIANWOOD_CITY, MUSIC_GYM, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header CianwoodPokeCenter1F, TILESET_POKECENTER, INDOOR, CIANWOOD_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header CianwoodPokecenter1F, TILESET_POKECENTER, INDOOR, CIANWOOD_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header CianwoodPharmacy, TILESET_HOUSE_1, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header CianwoodCityPhotoStudio, TILESET_HOUSE_1, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header CianwoodLugiaSpeechHouse, TILESET_HOUSE_1, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
@@ -430,7 +430,7 @@
 	map_header BattleTowerOutside, TILESET_BATTLE_TOWER_OUTSIDE, ROUTE, BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, 0, PALETTE_AUTO, FISHGROUP_SHORE
 
 
-MapGroup23:
+MapGroup_Viridian:
 	map_header Route2, TILESET_KANTO, ROUTE, ROUTE_2, MUSIC_ROUTE_2, 0, PALETTE_AUTO, FISHGROUP_SHORE
 	map_header Route22, TILESET_KANTO, ROUTE, ROUTE_22, MUSIC_ROUTE_3, 0, PALETTE_AUTO, FISHGROUP_POND
 	map_header ViridianCity, TILESET_KANTO, TOWN, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_AUTO, FISHGROUP_POND
@@ -439,23 +439,23 @@
 	map_header TrainerHouse1F, TILESET_HOUSE_1, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header TrainerHouseB1F, TILESET_POWER_PLANT, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header ViridianMart, TILESET_MART, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header ViridianPokeCenter1F, TILESET_POKECENTER, INDOOR, VIRIDIAN_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header ViridianPokeCenter2FBeta, TILESET_POKECENTER, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header ViridianPokecenter1F, TILESET_POKECENTER, INDOOR, VIRIDIAN_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header ViridianPokecenter2FBeta, TILESET_POKECENTER, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Route2NuggetSpeechHouse, TILESET_HOUSE_1, INDOOR, ROUTE_2, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Route2Gate, TILESET_GATE, GATE, ROUTE_2, MUSIC_ROUTE_2, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header VictoryRoadGate, TILESET_GATE, GATE, ROUTE_26, MUSIC_INDIGO_PLATEAU, 0, PALETTE_DAY, FISHGROUP_SHORE
 
 
-MapGroup24:
+MapGroup_NewBark:
 	map_header Route26, TILESET_JOHTO_1, ROUTE, ROUTE_26, MUSIC_ROUTE_26, 0, PALETTE_AUTO, FISHGROUP_OCEAN
 	map_header Route27, TILESET_JOHTO_1, ROUTE, ROUTE_27, MUSIC_ROUTE_26, 0, PALETTE_AUTO, FISHGROUP_OCEAN
 	map_header Route29, TILESET_JOHTO_1, ROUTE, ROUTE_29, MUSIC_ROUTE_29, 0, PALETTE_AUTO, FISHGROUP_SHORE
 	map_header NewBarkTown, TILESET_JOHTO_1, TOWN, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, PALETTE_AUTO, FISHGROUP_OCEAN
 	map_header ElmsLab, TILESET_LAB, INDOOR, NEW_BARK_TOWN, MUSIC_PROF_ELM, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header KrissHouse1F, TILESET_KRISS_HOUSE, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header KrissHouse2F, TILESET_KRISS_HOUSE_2F, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header KrissHouse1F, TILESET_PLAYERS_HOUSE, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header KrissHouse2F, TILESET_PLAYERS_HOUSE_2F, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header KrissNeighborsHouse, TILESET_HOUSE_1, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header ElmsHouse, TILESET_KRISS_HOUSE, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header ElmsHouse, TILESET_PLAYERS_HOUSE, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Route26HealSpeechHouse, TILESET_HOUSE_1, INDOOR, ROUTE_26, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Route26DayofWeekSiblingsHouse, TILESET_HOUSE_1, INDOOR, ROUTE_26, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Route27SandstormHouse, TILESET_HOUSE_1, INDOOR, ROUTE_27, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
@@ -462,30 +462,30 @@
 	map_header Route2946Gate, TILESET_GATE, GATE, ROUTE_29, MUSIC_ROUTE_29, 0, PALETTE_DAY, FISHGROUP_SHORE
 
 
-MapGroup25:
+MapGroup_Saffron:
 	map_header Route5, TILESET_KANTO, ROUTE, ROUTE_5, MUSIC_ROUTE_3, 0, PALETTE_AUTO, FISHGROUP_SHORE
 	map_header SaffronCity, TILESET_KANTO, TOWN, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_AUTO, FISHGROUP_SHORE
 	map_header FightingDojo, TILESET_TRAIN_STATION, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header SaffronGym, TILESET_UNDERGROUND, INDOOR, SAFFRON_CITY, MUSIC_GYM, 1, PALETTE_DAY, FISHGROUP_SHORE
 	map_header SaffronMart, TILESET_MART, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header SaffronPokeCenter1F, TILESET_POKECENTER, INDOOR, SAFFRON_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header SaffronPokeCenter2FBeta, TILESET_POKECENTER, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header SaffronPokecenter1F, TILESET_POKECENTER, INDOOR, SAFFRON_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header SaffronPokecenter2FBeta, TILESET_POKECENTER, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header MrPsychicsHouse, TILESET_HOUSE_1, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header SaffronTrainStation, TILESET_TRAIN_STATION, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header SilphCo1F, TILESET_POWER_PLANT, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header CopycatsHouse1F, TILESET_KRISS_HOUSE, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header CopycatsHouse2F, TILESET_KRISS_HOUSE, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header CopycatsHouse1F, TILESET_PLAYERS_HOUSE, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header CopycatsHouse2F, TILESET_PLAYERS_HOUSE, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Route5UndergroundEntrance, TILESET_GATE, GATE, ROUTE_5, MUSIC_ROUTE_3, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Route5SaffronCityGate, TILESET_GATE, GATE, ROUTE_5, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header Route5CleanseTagSpeechHouse, TILESET_HOUSE_1, INDOOR, ROUTE_5, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 
 
-MapGroup26:
+MapGroup_Cherrygrove:
 	map_header Route30, TILESET_JOHTO_1, ROUTE, ROUTE_30, MUSIC_ROUTE_30, 0, PALETTE_AUTO, FISHGROUP_POND
 	map_header Route31, TILESET_JOHTO_1, ROUTE, ROUTE_31, MUSIC_ROUTE_30, 0, PALETTE_AUTO, FISHGROUP_POND
 	map_header CherrygroveCity, TILESET_JOHTO_1, TOWN, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_AUTO, FISHGROUP_SHORE
 	map_header CherrygroveMart, TILESET_MART, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header CherrygrovePokeCenter1F, TILESET_POKECENTER, INDOOR, CHERRYGROVE_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
+	map_header CherrygrovePokecenter1F, TILESET_POKECENTER, INDOOR, CHERRYGROVE_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header CherrygroveGymSpeechHouse, TILESET_HOUSE_1, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header GuideGentsHouse, TILESET_HOUSE_1, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
 	map_header CherrygroveEvolutionSpeechHouse, TILESET_HOUSE_1, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
--- a/maps/second_map_headers.asm
+++ b/maps/second_map_headers.asm
@@ -36,7 +36,7 @@
 	connection west, ROUTE_42, Route42, 0, 0, 9, MAHOGANY_TOWN
 	connection east, ROUTE_44, Route44, 0, 0, 9, MAHOGANY_TOWN
 
-	map_header_2 LakeofRage, LAKE_OF_RAGE, $5, SOUTH
+	map_header_2 LakeOfRage, LAKE_OF_RAGE, $5, SOUTH
 	connection south, ROUTE_43, Route43, 5, 0, 10, LAKE_OF_RAGE
 
 	map_header_2 BlackthornCity, BLACKTHORN_CITY, $71, SOUTH | WEST
@@ -115,7 +115,7 @@
 	connection east, MAHOGANY_TOWN, MahoganyTown, 0, 0, 9, ROUTE_42
 
 	map_header_2 Route43, ROUTE_43, $5, NORTH | SOUTH
-	connection north, LAKE_OF_RAGE, LakeofRage, -3, 2, 16, ROUTE_43
+	connection north, LAKE_OF_RAGE, LakeOfRage, -3, 2, 16, ROUTE_43
 	connection south, MAHOGANY_TOWN, MahoganyTown, 0, 0, 10, ROUTE_43
 
 	map_header_2 Route44, ROUTE_44, $71, WEST | EAST
@@ -298,21 +298,21 @@
 	map_header_2 RadioTower3F, RADIO_TOWER_3F, $0, 0
 	map_header_2 RadioTower4F, RADIO_TOWER_4F, $0, 0
 	map_header_2 RadioTower5F, RADIO_TOWER_5F, $0, 0
-	map_header_2 RuinsofAlphOutside, RUINS_OF_ALPH_OUTSIDE, $5, 0
-	map_header_2 RuinsofAlphHoOhChamber, RUINS_OF_ALPH_HO_OH_CHAMBER, $0, 0
-	map_header_2 RuinsofAlphKabutoChamber, RUINS_OF_ALPH_KABUTO_CHAMBER, $0, 0
-	map_header_2 RuinsofAlphOmanyteChamber, RUINS_OF_ALPH_OMANYTE_CHAMBER, $0, 0
-	map_header_2 RuinsofAlphAerodactylChamber, RUINS_OF_ALPH_AERODACTYL_CHAMBER, $0, 0
-	map_header_2 RuinsofAlphInnerChamber, RUINS_OF_ALPH_INNER_CHAMBER, $0, 0
-	map_header_2 RuinsofAlphResearchCenter, RUINS_OF_ALPH_RESEARCH_CENTER, $0, 0
-	map_header_2 RuinsofAlphHoOhItemRoom, RUINS_OF_ALPH_HO_OH_ITEM_ROOM, $0, 0
-	map_header_2 RuinsofAlphKabutoItemRoom, RUINS_OF_ALPH_KABUTO_ITEM_ROOM, $0, 0
-	map_header_2 RuinsofAlphOmanyteItemRoom, RUINS_OF_ALPH_OMANYTE_ITEM_ROOM, $0, 0
-	map_header_2 RuinsofAlphAerodactylItemRoom, RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM, $0, 0
-	map_header_2 RuinsofAlphHoOhWordRoom, RUINS_OF_ALPH_HO_OH_WORD_ROOM, $0, 0
-	map_header_2 RuinsofAlphKabutoWordRoom, RUINS_OF_ALPH_KABUTO_WORD_ROOM, $0, 0
-	map_header_2 RuinsofAlphOmanyteWordRoom, RUINS_OF_ALPH_OMANYTE_WORD_ROOM, $0, 0
-	map_header_2 RuinsofAlphAerodactylWordRoom, RUINS_OF_ALPH_AERODACTYL_WORD_ROOM, $0, 0
+	map_header_2 RuinsOfAlphOutside, RUINS_OF_ALPH_OUTSIDE, $5, 0
+	map_header_2 RuinsOfAlphHoOhChamber, RUINS_OF_ALPH_HO_OH_CHAMBER, $0, 0
+	map_header_2 RuinsOfAlphKabutoChamber, RUINS_OF_ALPH_KABUTO_CHAMBER, $0, 0
+	map_header_2 RuinsOfAlphOmanyteChamber, RUINS_OF_ALPH_OMANYTE_CHAMBER, $0, 0
+	map_header_2 RuinsOfAlphAerodactylChamber, RUINS_OF_ALPH_AERODACTYL_CHAMBER, $0, 0
+	map_header_2 RuinsOfAlphInnerChamber, RUINS_OF_ALPH_INNER_CHAMBER, $0, 0
+	map_header_2 RuinsOfAlphResearchCenter, RUINS_OF_ALPH_RESEARCH_CENTER, $0, 0
+	map_header_2 RuinsOfAlphHoOhItemRoom, RUINS_OF_ALPH_HO_OH_ITEM_ROOM, $0, 0
+	map_header_2 RuinsOfAlphKabutoItemRoom, RUINS_OF_ALPH_KABUTO_ITEM_ROOM, $0, 0
+	map_header_2 RuinsOfAlphOmanyteItemRoom, RUINS_OF_ALPH_OMANYTE_ITEM_ROOM, $0, 0
+	map_header_2 RuinsOfAlphAerodactylItemRoom, RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM, $0, 0
+	map_header_2 RuinsOfAlphHoOhWordRoom, RUINS_OF_ALPH_HO_OH_WORD_ROOM, $0, 0
+	map_header_2 RuinsOfAlphKabutoWordRoom, RUINS_OF_ALPH_KABUTO_WORD_ROOM, $0, 0
+	map_header_2 RuinsOfAlphOmanyteWordRoom, RUINS_OF_ALPH_OMANYTE_WORD_ROOM, $0, 0
+	map_header_2 RuinsOfAlphAerodactylWordRoom, RUINS_OF_ALPH_AERODACTYL_WORD_ROOM, $0, 0
 	map_header_2 UnionCave1F, UNION_CAVE_1F, $9, 0
 	map_header_2 UnionCaveB1F, UNION_CAVE_B1F, $9, 0
 	map_header_2 UnionCaveB2F, UNION_CAVE_B2F, $9, 0
@@ -360,7 +360,7 @@
 	map_header_2 DragonsDenB1F, DRAGONS_DEN_B1F, $71, 0
 	map_header_2 DragonShrine, DRAGON_SHRINE, $0, 0
 	map_header_2 TohjoFalls, TOHJO_FALLS, $9, 0
-	map_header_2 OlivinePokeCenter1F, OLIVINE_POKECENTER_1F, $0, 0
+	map_header_2 OlivinePokecenter1F, OLIVINE_POKECENTER_1F, $0, 0
 	map_header_2 OlivineGym, OLIVINE_GYM, $0, 0
 	map_header_2 OlivineTimsHouse, OLIVINE_TIMS_HOUSE, $0, 0
 	map_header_2 OlivineHouseBeta, OLIVINE_HOUSE_BETA, $0, 0
@@ -373,7 +373,7 @@
 	map_header_2 Route39Farmhouse, ROUTE_39_FARMHOUSE, $0, 0
 	map_header_2 MahoganyRedGyaradosSpeechHouse, MAHOGANY_RED_GYARADOS_SPEECH_HOUSE, $0, 0
 	map_header_2 MahoganyGym, MAHOGANY_GYM, $0, 0
-	map_header_2 MahoganyPokeCenter1F, MAHOGANY_POKECENTER_1F, $0, 0
+	map_header_2 MahoganyPokecenter1F, MAHOGANY_POKECENTER_1F, $0, 0
 	map_header_2 Route42EcruteakGate, ROUTE_42_ECRUTEAK_GATE, $0, 0
 	map_header_2 DiglettsCave, DIGLETTS_CAVE, $9, 0
 	map_header_2 MountMoon, MOUNT_MOON, $9, 0
@@ -385,7 +385,7 @@
 	map_header_2 VictoryRoad, VICTORY_ROAD, $1d, 0
 	map_header_2 EcruteakHouse, ECRUTEAK_HOUSE, $0, 0
 	map_header_2 WiseTriosRoom, WISE_TRIOS_ROOM, $0, 0
-	map_header_2 EcruteakPokeCenter1F, ECRUTEAK_POKECENTER_1F, $0, 0
+	map_header_2 EcruteakPokecenter1F, ECRUTEAK_POKECENTER_1F, $0, 0
 	map_header_2 EcruteakLugiaSpeechHouse, ECRUTEAK_LUGIA_SPEECH_HOUSE, $0, 0
 	map_header_2 DanceTheatre, DANCE_THEATRE, $0, 0
 	map_header_2 EcruteakMart, ECRUTEAK_MART, $0, 0
@@ -396,30 +396,30 @@
 	map_header_2 BlackthornDragonSpeechHouse, BLACKTHORN_DRAGON_SPEECH_HOUSE, $0, 0
 	map_header_2 BlackthornEmysHouse, BLACKTHORN_EMYS_HOUSE, $0, 0
 	map_header_2 BlackthornMart, BLACKTHORN_MART, $0, 0
-	map_header_2 BlackthornPokeCenter1F, BLACKTHORN_POKECENTER_1F, $0, 0
+	map_header_2 BlackthornPokecenter1F, BLACKTHORN_POKECENTER_1F, $0, 0
 	map_header_2 MoveDeletersHouse, MOVE_DELETERS_HOUSE, $0, 0
-	map_header_2 CinnabarPokeCenter1F, CINNABAR_POKECENTER_1F, $0, 0
-	map_header_2 CinnabarPokeCenter2FBeta, CINNABAR_POKECENTER_2F_BETA, $0, 0
+	map_header_2 CinnabarPokecenter1F, CINNABAR_POKECENTER_1F, $0, 0
+	map_header_2 CinnabarPokecenter2FBeta, CINNABAR_POKECENTER_2F_BETA, $0, 0
 	map_header_2 Route19FuchsiaGate, ROUTE_19___FUCHSIA_GATE, $0, 0
 	map_header_2 SeafoamGym, SEAFOAM_GYM, $9, 0
 	map_header_2 CeruleanGymBadgeSpeechHouse, CERULEAN_GYM_BADGE_SPEECH_HOUSE, $0, 0
 	map_header_2 CeruleanPoliceStation, CERULEAN_POLICE_STATION, $0, 0
 	map_header_2 CeruleanTradeSpeechHouse, CERULEAN_TRADE_SPEECH_HOUSE, $0, 0
-	map_header_2 CeruleanPokeCenter1F, CERULEAN_POKECENTER_1F, $0, 0
-	map_header_2 CeruleanPokeCenter2FBeta, CERULEAN_POKECENTER_2F_BETA, $0, 0
+	map_header_2 CeruleanPokecenter1F, CERULEAN_POKECENTER_1F, $0, 0
+	map_header_2 CeruleanPokecenter2FBeta, CERULEAN_POKECENTER_2F_BETA, $0, 0
 	map_header_2 CeruleanGym, CERULEAN_GYM, $0, 0
 	map_header_2 CeruleanMart, CERULEAN_MART, $0, 0
-	map_header_2 Route10PokeCenter1F, ROUTE_10_POKECENTER_1F, $0, 0
-	map_header_2 Route10PokeCenter2FBeta, ROUTE_10_POKECENTER_2F_BETA, $0, 0
+	map_header_2 Route10Pokecenter1F, ROUTE_10_POKECENTER_1F, $0, 0
+	map_header_2 Route10Pokecenter2FBeta, ROUTE_10_POKECENTER_2F_BETA, $0, 0
 	map_header_2 PowerPlant, POWER_PLANT, $0, 0
 	map_header_2 BillsHouse, BILLS_HOUSE, $0, 0
-	map_header_2 AzaleaPokeCenter1F, AZALEA_POKECENTER_1F, $0, 0
+	map_header_2 AzaleaPokecenter1F, AZALEA_POKECENTER_1F, $0, 0
 	map_header_2 CharcoalKiln, CHARCOAL_KILN, $0, 0
 	map_header_2 AzaleaMart, AZALEA_MART, $0, 0
 	map_header_2 KurtsHouse, KURTS_HOUSE, $0, 0
 	map_header_2 AzaleaGym, AZALEA_GYM, $0, 0
-	map_header_2 LakeofRageHiddenPowerHouse, LAKE_OF_RAGE_HIDDEN_POWER_HOUSE, $0, 0
-	map_header_2 LakeofRageMagikarpHouse, LAKE_OF_RAGE_MAGIKARP_HOUSE, $0, 0
+	map_header_2 LakeOfRageHiddenPowerHouse, LAKE_OF_RAGE_HIDDEN_POWER_HOUSE, $0, 0
+	map_header_2 LakeOfRageMagikarpHouse, LAKE_OF_RAGE_MAGIKARP_HOUSE, $0, 0
 	map_header_2 Route43MahoganyGate, ROUTE_43_MAHOGANY_GATE, $0, 0
 	map_header_2 Route43Gate, ROUTE_43_GATE, $0, 0
 	map_header_2 VioletMart, VIOLET_MART, $0, 0
@@ -426,14 +426,14 @@
 	map_header_2 VioletGym, VIOLET_GYM, $0, 0
 	map_header_2 EarlsPokemonAcademy, EARLS_POKEMON_ACADEMY, $0, 0
 	map_header_2 VioletNicknameSpeechHouse, VIOLET_NICKNAME_SPEECH_HOUSE, $0, 0
-	map_header_2 VioletPokeCenter1F, VIOLET_POKECENTER_1F, $0, 0
+	map_header_2 VioletPokecenter1F, VIOLET_POKECENTER_1F, $0, 0
 	map_header_2 VioletOnixTradeHouse, VIOLET_ONIX_TRADE_HOUSE, $0, 0
-	map_header_2 Route32RuinsofAlphGate, ROUTE_32_RUINS_OF_ALPH_GATE, $0, 0
-	map_header_2 Route32PokeCenter1F, ROUTE_32_POKECENTER_1F, $0, 0
-	map_header_2 Route35Goldenrodgate, ROUTE_35_GOLDENROD_GATE, $0, 0
-	map_header_2 Route35NationalParkgate, ROUTE_35_NATIONAL_PARK_GATE, $0, 0
-	map_header_2 Route36RuinsofAlphgate, ROUTE_36_RUINS_OF_ALPH_GATE, $0, 0
-	map_header_2 Route36NationalParkgate, ROUTE_36_NATIONAL_PARK_GATE, $0, 0
+	map_header_2 Route32RuinsOfAlphGate, ROUTE_32_RUINS_OF_ALPH_GATE, $0, 0
+	map_header_2 Route32Pokecenter1F, ROUTE_32_POKECENTER_1F, $0, 0
+	map_header_2 Route35GoldenrodGate, ROUTE_35_GOLDENROD_GATE, $0, 0
+	map_header_2 Route35NationalParkGate, ROUTE_35_NATIONAL_PARK_GATE, $0, 0
+	map_header_2 Route36RuinsOfAlphGate, ROUTE_36_RUINS_OF_ALPH_GATE, $0, 0
+	map_header_2 Route36NationalParkGate, ROUTE_36_NATIONAL_PARK_GATE, $0, 0
 	map_header_2 GoldenrodGym, GOLDENROD_GYM, $0, 0
 	map_header_2 GoldenrodBikeShop, GOLDENROD_BIKE_SHOP, $0, 0
 	map_header_2 GoldenrodHappinessRater, GOLDENROD_HAPPINESS_RATER, $0, 0
@@ -451,14 +451,14 @@
 	map_header_2 GoldenrodDeptStoreElevator, GOLDENROD_DEPT_STORE_ELEVATOR, $0, 0
 	map_header_2 GoldenrodDeptStoreRoof, GOLDENROD_DEPT_STORE_ROOF, $24, 0
 	map_header_2 GoldenrodGameCorner, GOLDENROD_GAME_CORNER, $0, 0
-	map_header_2 GoldenrodPokeCenter1F, GOLDENROD_POKECENTER_1F, $0, 0
+	map_header_2 GoldenrodPokecenter1F, GOLDENROD_POKECENTER_1F, $0, 0
 	map_header_2 GoldenrodPokeComCenter2FMobile, GOLDENROD_POKECOM_CENTER_2F_MOBILE, $0, 0
 	map_header_2 IlexForestAzaleaGate, ILEX_FOREST_AZALEA_GATE, $0, 0
 	map_header_2 Route34IlexForestGate, ROUTE_34_ILEX_FOREST_GATE, $0, 0
-	map_header_2 DayCare, DAYCARE, $0, 0
+	map_header_2 DayCare, DAY_CARE, $0, 0
 	map_header_2 VermilionHouseFishingSpeechHouse, VERMILION_HOUSE_FISHING_SPEECH_HOUSE, $0, 0
-	map_header_2 VermilionPokeCenter1F, VERMILION_POKECENTER_1F, $0, 0
-	map_header_2 VermilionPokeCenter2FBeta, VERMILION_POKECENTER_2F_BETA, $0, 0
+	map_header_2 VermilionPokecenter1F, VERMILION_POKECENTER_1F, $0, 0
+	map_header_2 VermilionPokecenter2FBeta, VERMILION_POKECENTER_2F_BETA, $0, 0
 	map_header_2 PokemonFanClub, POKEMON_FAN_CLUB, $0, 0
 	map_header_2 VermilionMagnetTrainSpeechHouse, VERMILION_MAGNET_TRAIN_SPEECH_HOUSE, $0, 0
 	map_header_2 VermilionMart, VERMILION_MART, $0, 0
@@ -473,8 +473,8 @@
 	map_header_2 PewterNidoranSpeechHouse, PEWTER_NIDORAN_SPEECH_HOUSE, $0, 0
 	map_header_2 PewterGym, PEWTER_GYM, $0, 0
 	map_header_2 PewterMart, PEWTER_MART, $0, 0
-	map_header_2 PewterPokeCenter1F, PEWTER_POKECENTER_1F, $0, 0
-	map_header_2 PewterPokeCenter2FBeta, PEWTER_POKECENTER_2F_BETA, $0, 0
+	map_header_2 PewterPokecenter1F, PEWTER_POKECENTER_1F, $0, 0
+	map_header_2 PewterPokecenter2FBeta, PEWTER_POKECENTER_2F_BETA, $0, 0
 	map_header_2 PewterSnoozeSpeechHouse, PEWTER_SNOOZE_SPEECH_HOUSE, $0, 0
 	map_header_2 OlivinePort, OLIVINE_PORT, $a, 0
 	map_header_2 VermilionPort, VERMILION_PORT, $a, 0
@@ -488,7 +488,7 @@
 	map_header_2 MountMoonSquare, MOUNT_MOON_SQUARE, $2d, 0
 	map_header_2 MountMoonGiftShop, MOUNT_MOON_GIFT_SHOP, $0, 0
 	map_header_2 TinTowerRoof, TIN_TOWER_ROOF, $0, 0
-	map_header_2 IndigoPlateauPokeCenter1F, INDIGO_PLATEAU_POKECENTER_1F, $0, 0
+	map_header_2 IndigoPlateauPokecenter1F, INDIGO_PLATEAU_POKECENTER_1F, $0, 0
 	map_header_2 WillsRoom, WILLS_ROOM, $0, 0
 	map_header_2 KogasRoom, KOGAS_ROOM, $0, 0
 	map_header_2 BrunosRoom, BRUNOS_ROOM, $0, 0
@@ -499,12 +499,12 @@
 	map_header_2 SafariZoneMainOffice, SAFARI_ZONE_MAIN_OFFICE, $0, 0
 	map_header_2 FuchsiaGym, FUCHSIA_GYM, $0, 0
 	map_header_2 FuchsiaBillSpeechHouse, FUCHSIA_BILL_SPEECH_HOUSE, $0, 0
-	map_header_2 FuchsiaPokeCenter1F, FUCHSIA_POKECENTER_1F, $0, 0
-	map_header_2 FuchsiaPokeCenter2FBeta, FUCHSIA_POKECENTER_2F_BETA, $0, 0
+	map_header_2 FuchsiaPokecenter1F, FUCHSIA_POKECENTER_1F, $0, 0
+	map_header_2 FuchsiaPokecenter2FBeta, FUCHSIA_POKECENTER_2F_BETA, $0, 0
 	map_header_2 SafariZoneWardensHome, SAFARI_ZONE_WARDENS_HOME, $0, 0
 	map_header_2 Route15FuchsiaGate, ROUTE_15_FUCHSIA_GATE, $0, 0
-	map_header_2 LavenderPokeCenter1F, LAVENDER_POKECENTER_1F, $0, 0
-	map_header_2 LavenderPokeCenter2FBeta, LAVENDER_POKECENTER_2F_BETA, $0, 0
+	map_header_2 LavenderPokecenter1F, LAVENDER_POKECENTER_1F, $0, 0
+	map_header_2 LavenderPokecenter2FBeta, LAVENDER_POKECENTER_2F_BETA, $0, 0
 	map_header_2 MrFujisHouse, MR_FUJIS_HOUSE, $0, 0
 	map_header_2 LavenderTownSpeechHouse, LAVENDER_TOWN_SPEECH_HOUSE, $0, 0
 	map_header_2 LavenderNameRater, LAVENDER_NAME_RATER, $0, 0
@@ -513,9 +513,9 @@
 	map_header_2 LavRadioTower1F, LAV_RADIO_TOWER_1F, $0, 0
 	map_header_2 Route8SaffronGate, ROUTE_8_SAFFRON_GATE, $0, 0
 	map_header_2 Route12SuperRodHouse, ROUTE_12_SUPER_ROD_HOUSE, $0, 0
-	map_header_2 SilverCavePokeCenter1F, SILVER_CAVE_POKECENTER_1F, $0, 0
+	map_header_2 SilverCavePokecenter1F, SILVER_CAVE_POKECENTER_1F, $0, 0
 	map_header_2 Route28FamousSpeechHouse, ROUTE_28_FAMOUS_SPEECH_HOUSE, $0, 0
-	map_header_2 PokeCenter2F, POKECENTER_2F, $0, 0
+	map_header_2 Pokecenter2F, POKECENTER_2F, $0, 0
 	map_header_2 TradeCenter, TRADE_CENTER, $0, 0
 	map_header_2 Colosseum, COLOSSEUM, $0, 0
 	map_header_2 TimeCapsule, TIME_CAPSULE, $0, 0
@@ -533,8 +533,8 @@
 	map_header_2 CeladonMansion3F, CELADON_MANSION_3F, $0, 0
 	map_header_2 CeladonMansionRoof, CELADON_MANSION_ROOF, $1, 0
 	map_header_2 CeladonMansionRoofHouse, CELADON_MANSION_ROOF_HOUSE, $0, 0
-	map_header_2 CeladonPokeCenter1F, CELADON_POKECENTER_1F, $0, 0
-	map_header_2 CeladonPokeCenter2FBeta, CELADON_POKECENTER_2F_BETA, $0, 0
+	map_header_2 CeladonPokecenter1F, CELADON_POKECENTER_1F, $0, 0
+	map_header_2 CeladonPokecenter2FBeta, CELADON_POKECENTER_2F_BETA, $0, 0
 	map_header_2 CeladonGameCorner, CELADON_GAME_CORNER, $0, 0
 	map_header_2 CeladonGameCornerPrizeRoom, CELADON_GAME_CORNER_PRIZE_ROOM, $0, 0
 	map_header_2 CeladonGym, CELADON_GYM, $0, 0
@@ -545,7 +545,7 @@
 	map_header_2 Route1718Gate, ROUTE_17_18_GATE, $0, 0
 	map_header_2 ManiasHouse, MANIAS_HOUSE, $0, 0
 	map_header_2 CianwoodGym, CIANWOOD_GYM, $0, 0
-	map_header_2 CianwoodPokeCenter1F, CIANWOOD_POKECENTER_1F, $0, 0
+	map_header_2 CianwoodPokecenter1F, CIANWOOD_POKECENTER_1F, $0, 0
 	map_header_2 CianwoodPharmacy, CIANWOOD_PHARMACY, $0, 0
 	map_header_2 CianwoodCityPhotoStudio, CIANWOOD_CITY_PHOTO_STUDIO, $0, 0
 	map_header_2 CianwoodLugiaSpeechHouse, CIANWOOD_LUGIA_SPEECH_HOUSE, $0, 0
@@ -561,8 +561,8 @@
 	map_header_2 TrainerHouse1F, TRAINER_HOUSE_1F, $0, 0
 	map_header_2 TrainerHouseB1F, TRAINER_HOUSE_B1F, $0, 0
 	map_header_2 ViridianMart, VIRIDIAN_MART, $0, 0
-	map_header_2 ViridianPokeCenter1F, VIRIDIAN_POKECENTER_1F, $0, 0
-	map_header_2 ViridianPokeCenter2FBeta, VIRIDIAN_POKECENTER_2F_BETA, $0, 0
+	map_header_2 ViridianPokecenter1F, VIRIDIAN_POKECENTER_1F, $0, 0
+	map_header_2 ViridianPokecenter2FBeta, VIRIDIAN_POKECENTER_2F_BETA, $0, 0
 	map_header_2 Route2NuggetSpeechHouse, ROUTE_2_NUGGET_SPEECH_HOUSE, $0, 0
 	map_header_2 Route2Gate, ROUTE_2_GATE, $0, 0
 	map_header_2 VictoryRoadGate, VICTORY_ROAD_GATE, $0, 0
@@ -578,8 +578,8 @@
 	map_header_2 FightingDojo, FIGHTING_DOJO, $0, 0
 	map_header_2 SaffronGym, SAFFRON_GYM, $0, 0
 	map_header_2 SaffronMart, SAFFRON_MART, $0, 0
-	map_header_2 SaffronPokeCenter1F, SAFFRON_POKECENTER_1F, $0, 0
-	map_header_2 SaffronPokeCenter2FBeta, SAFFRON_POKECENTER_2F_BETA, $0, 0
+	map_header_2 SaffronPokecenter1F, SAFFRON_POKECENTER_1F, $0, 0
+	map_header_2 SaffronPokecenter2FBeta, SAFFRON_POKECENTER_2F_BETA, $0, 0
 	map_header_2 MrPsychicsHouse, MR_PSYCHICS_HOUSE, $0, 0
 	map_header_2 SaffronTrainStation, SAFFRON_TRAIN_STATION, $0, 0
 	map_header_2 SilphCo1F, SILPH_CO_1F, $0, 0
@@ -589,7 +589,7 @@
 	map_header_2 Route5SaffronCityGate, ROUTE_5_SAFFRON_CITY_GATE, $0, 0
 	map_header_2 Route5CleanseTagSpeechHouse, ROUTE_5_CLEANSE_TAG_SPEECH_HOUSE, $0, 0
 	map_header_2 CherrygroveMart, CHERRYGROVE_MART, $0, 0
-	map_header_2 CherrygrovePokeCenter1F, CHERRYGROVE_POKECENTER_1F, $0, 0
+	map_header_2 CherrygrovePokecenter1F, CHERRYGROVE_POKECENTER_1F, $0, 0
 	map_header_2 CherrygroveGymSpeechHouse, CHERRYGROVE_GYM_SPEECH_HOUSE, $0, 0
 	map_header_2 GuideGentsHouse, GUIDE_GENTS_HOUSE, $0, 0
 	map_header_2 CherrygroveEvolutionSpeechHouse, CHERRYGROVE_EVOLUTION_SPEECH_HOUSE, $0, 0
--- a/menu/mon_icons.asm
+++ /dev/null
@@ -1,349 +1,0 @@
-ReadMonMenuIcon: ; 8eab3
-	cp EGG
-	jr z, .egg
-	dec a
-	ld hl, MonMenuIcons
-	ld e, a
-	ld d, 0
-	add hl, de
-	ld a, [hl]
-	ret
-.egg
-	ld a, ICON_EGG
-	ret
-; 8eac4
-
-MonMenuIcons: ; 8eac4
-	db ICON_BULBASAUR    ; BULBASAUR
-	db ICON_BULBASAUR    ; IVYSAUR
-	db ICON_BULBASAUR    ; VENUSAUR
-	db ICON_CHARMANDER   ; CHARMANDER
-	db ICON_CHARMANDER   ; CHARMELEON
-	db ICON_BIGMON       ; CHARIZARD
-	db ICON_SQUIRTLE     ; SQUIRTLE
-	db ICON_SQUIRTLE     ; WARTORTLE
-	db ICON_SQUIRTLE     ; BLASTOISE
-	db ICON_CATERPILLAR  ; CATERPIE
-	db ICON_CATERPILLAR  ; METAPOD
-	db ICON_MOTH         ; BUTTERFREE
-	db ICON_CATERPILLAR  ; WEEDLE
-	db ICON_CATERPILLAR  ; KAKUNA
-	db ICON_BUG          ; BEEDRILL
-	db ICON_BIRD         ; PIDGEY
-	db ICON_BIRD         ; PIDGEOTTO
-	db ICON_BIRD         ; PIDGEOT
-	db ICON_FOX          ; RATTATA
-	db ICON_FOX          ; RATICATE
-	db ICON_BIRD         ; SPEAROW
-	db ICON_BIRD         ; FEAROW
-	db ICON_SERPENT      ; EKANS
-	db ICON_SERPENT      ; ARBOK
-	db ICON_PIKACHU      ; PIKACHU
-	db ICON_PIKACHU      ; RAICHU
-	db ICON_MONSTER      ; SANDSHREW
-	db ICON_MONSTER      ; SANDSLASH
-	db ICON_FOX          ; NIDORAN_F
-	db ICON_FOX          ; NIDORINA
-	db ICON_MONSTER      ; NIDOQUEEN
-	db ICON_FOX          ; NIDORAN_M
-	db ICON_FOX          ; NIDORINO
-	db ICON_MONSTER      ; NIDOKING
-	db ICON_CLEFAIRY     ; CLEFAIRY
-	db ICON_CLEFAIRY     ; CLEFABLE
-	db ICON_FOX          ; VULPIX
-	db ICON_FOX          ; NINETALES
-	db ICON_JIGGLYPUFF   ; JIGGLYPUFF
-	db ICON_JIGGLYPUFF   ; WIGGLYTUFF
-	db ICON_BAT          ; ZUBAT
-	db ICON_BAT          ; GOLBAT
-	db ICON_ODDISH       ; ODDISH
-	db ICON_ODDISH       ; GLOOM
-	db ICON_ODDISH       ; VILEPLUME
-	db ICON_BUG          ; PARAS
-	db ICON_BUG          ; PARASECT
-	db ICON_CATERPILLAR  ; VENONAT
-	db ICON_MOTH         ; VENOMOTH
-	db ICON_DIGLETT      ; DIGLETT
-	db ICON_DIGLETT      ; DUGTRIO
-	db ICON_FOX          ; MEOWTH
-	db ICON_FOX          ; PERSIAN
-	db ICON_MONSTER      ; PSYDUCK
-	db ICON_MONSTER      ; GOLDUCK
-	db ICON_FIGHTER      ; MANKEY
-	db ICON_FIGHTER      ; PRIMEAPE
-	db ICON_FOX          ; GROWLITHE
-	db ICON_FOX          ; ARCANINE
-	db ICON_POLIWAG      ; POLIWAG
-	db ICON_POLIWAG      ; POLIWHIRL
-	db ICON_POLIWAG      ; POLIWRATH
-	db ICON_HUMANSHAPE   ; ABRA
-	db ICON_HUMANSHAPE   ; KADABRA
-	db ICON_HUMANSHAPE   ; ALAKAZAM
-	db ICON_FIGHTER      ; MACHOP
-	db ICON_FIGHTER      ; MACHOKE
-	db ICON_FIGHTER      ; MACHAMP
-	db ICON_ODDISH       ; BELLSPROUT
-	db ICON_ODDISH       ; WEEPINBELL
-	db ICON_ODDISH       ; VICTREEBEL
-	db ICON_JELLYFISH    ; TENTACOOL
-	db ICON_JELLYFISH    ; TENTACRUEL
-	db ICON_GEODUDE      ; GEODUDE
-	db ICON_GEODUDE      ; GRAVELER
-	db ICON_GEODUDE      ; GOLEM
-	db ICON_EQUINE       ; PONYTA
-	db ICON_EQUINE       ; RAPIDASH
-	db ICON_SLOWPOKE     ; SLOWPOKE
-	db ICON_SLOWPOKE     ; SLOWBRO
-	db ICON_VOLTORB      ; MAGNEMITE
-	db ICON_VOLTORB      ; MAGNETON
-	db ICON_BIRD         ; FARFETCH_D
-	db ICON_BIRD         ; DODUO
-	db ICON_BIRD         ; DODRIO
-	db ICON_LAPRAS       ; SEEL
-	db ICON_LAPRAS       ; DEWGONG
-	db ICON_BLOB         ; GRIMER
-	db ICON_BLOB         ; MUK
-	db ICON_SHELL        ; SHELLDER
-	db ICON_SHELL        ; CLOYSTER
-	db ICON_GHOST        ; GASTLY
-	db ICON_GHOST        ; HAUNTER
-	db ICON_GHOST        ; GENGAR
-	db ICON_SERPENT      ; ONIX
-	db ICON_HUMANSHAPE   ; DROWZEE
-	db ICON_HUMANSHAPE   ; HYPNO
-	db ICON_SHELL        ; KRABBY
-	db ICON_SHELL        ; KINGLER
-	db ICON_VOLTORB      ; VOLTORB
-	db ICON_VOLTORB      ; ELECTRODE
-	db ICON_ODDISH       ; EXEGGCUTE
-	db ICON_ODDISH       ; EXEGGUTOR
-	db ICON_MONSTER      ; CUBONE
-	db ICON_MONSTER      ; MAROWAK
-	db ICON_FIGHTER      ; HITMONLEE
-	db ICON_FIGHTER      ; HITMONCHAN
-	db ICON_MONSTER      ; LICKITUNG
-	db ICON_BLOB         ; KOFFING
-	db ICON_BLOB         ; WEEZING
-	db ICON_EQUINE       ; RHYHORN
-	db ICON_MONSTER      ; RHYDON
-	db ICON_CLEFAIRY     ; CHANSEY
-	db ICON_ODDISH       ; TANGELA
-	db ICON_MONSTER      ; KANGASKHAN
-	db ICON_FISH         ; HORSEA
-	db ICON_FISH         ; SEADRA
-	db ICON_FISH         ; GOLDEEN
-	db ICON_FISH         ; SEAKING
-	db ICON_STARYU       ; STARYU
-	db ICON_STARYU       ; STARMIE
-	db ICON_HUMANSHAPE   ; MR__MIME
-	db ICON_BUG          ; SCYTHER
-	db ICON_HUMANSHAPE   ; JYNX
-	db ICON_HUMANSHAPE   ; ELECTABUZZ
-	db ICON_HUMANSHAPE   ; MAGMAR
-	db ICON_BUG          ; PINSIR
-	db ICON_EQUINE       ; TAUROS
-	db ICON_FISH         ; MAGIKARP
-	db ICON_GYARADOS     ; GYARADOS
-	db ICON_LAPRAS       ; LAPRAS
-	db ICON_BLOB         ; DITTO
-	db ICON_FOX          ; EEVEE
-	db ICON_FOX          ; VAPOREON
-	db ICON_FOX          ; JOLTEON
-	db ICON_FOX          ; FLAREON
-	db ICON_VOLTORB      ; PORYGON
-	db ICON_SHELL        ; OMANYTE
-	db ICON_SHELL        ; OMASTAR
-	db ICON_SHELL        ; KABUTO
-	db ICON_SHELL        ; KABUTOPS
-	db ICON_BIRD         ; AERODACTYL
-	db ICON_SNORLAX      ; SNORLAX
-	db ICON_BIRD         ; ARTICUNO
-	db ICON_BIRD         ; ZAPDOS
-	db ICON_BIRD         ; MOLTRES
-	db ICON_SERPENT      ; DRATINI
-	db ICON_SERPENT      ; DRAGONAIR
-	db ICON_BIGMON       ; DRAGONITE
-	db ICON_HUMANSHAPE   ; MEWTWO
-	db ICON_HUMANSHAPE   ; MEW
-	db ICON_ODDISH       ; CHIKORITA
-	db ICON_ODDISH       ; BAYLEEF
-	db ICON_ODDISH       ; MEGANIUM
-	db ICON_FOX          ; CYNDAQUIL
-	db ICON_FOX          ; QUILAVA
-	db ICON_FOX          ; TYPHLOSION
-	db ICON_MONSTER      ; TOTODILE
-	db ICON_MONSTER      ; CROCONAW
-	db ICON_MONSTER      ; FERALIGATR
-	db ICON_FOX          ; SENTRET
-	db ICON_FOX          ; FURRET
-	db ICON_BIRD         ; HOOTHOOT
-	db ICON_BIRD         ; NOCTOWL
-	db ICON_BUG          ; LEDYBA
-	db ICON_BUG          ; LEDIAN
-	db ICON_BUG          ; SPINARAK
-	db ICON_BUG          ; ARIADOS
-	db ICON_BAT          ; CROBAT
-	db ICON_FISH         ; CHINCHOU
-	db ICON_FISH         ; LANTURN
-	db ICON_PIKACHU      ; PICHU
-	db ICON_CLEFAIRY     ; CLEFFA
-	db ICON_JIGGLYPUFF   ; IGGLYBUFF
-	db ICON_CLEFAIRY     ; TOGEPI
-	db ICON_BIRD         ; TOGETIC
-	db ICON_BIRD         ; NATU
-	db ICON_BIRD         ; XATU
-	db ICON_FOX          ; MAREEP
-	db ICON_MONSTER      ; FLAAFFY
-	db ICON_MONSTER      ; AMPHAROS
-	db ICON_ODDISH       ; BELLOSSOM
-	db ICON_JIGGLYPUFF   ; MARILL
-	db ICON_JIGGLYPUFF   ; AZUMARILL
-	db ICON_SUDOWOODO    ; SUDOWOODO
-	db ICON_POLIWAG      ; POLITOED
-	db ICON_ODDISH       ; HOPPIP
-	db ICON_ODDISH       ; SKIPLOOM
-	db ICON_ODDISH       ; JUMPLUFF
-	db ICON_MONSTER      ; AIPOM
-	db ICON_ODDISH       ; SUNKERN
-	db ICON_ODDISH       ; SUNFLORA
-	db ICON_BUG          ; YANMA
-	db ICON_MONSTER      ; WOOPER
-	db ICON_MONSTER      ; QUAGSIRE
-	db ICON_FOX          ; ESPEON
-	db ICON_FOX          ; UMBREON
-	db ICON_BIRD         ; MURKROW
-	db ICON_SLOWPOKE     ; SLOWKING
-	db ICON_GHOST        ; MISDREAVUS
-	db ICON_UNOWN        ; UNOWN
-	db ICON_GHOST        ; WOBBUFFET
-	db ICON_EQUINE       ; GIRAFARIG
-	db ICON_BUG          ; PINECO
-	db ICON_BUG          ; FORRETRESS
-	db ICON_SERPENT      ; DUNSPARCE
-	db ICON_BUG          ; GLIGAR
-	db ICON_SERPENT      ; STEELIX
-	db ICON_MONSTER      ; SNUBBULL
-	db ICON_MONSTER      ; GRANBULL
-	db ICON_FISH         ; QWILFISH
-	db ICON_BUG          ; SCIZOR
-	db ICON_BUG          ; SHUCKLE
-	db ICON_BUG          ; HERACROSS
-	db ICON_FOX          ; SNEASEL
-	db ICON_MONSTER      ; TEDDIURSA
-	db ICON_MONSTER      ; URSARING
-	db ICON_BLOB         ; SLUGMA
-	db ICON_BLOB         ; MAGCARGO
-	db ICON_EQUINE       ; SWINUB
-	db ICON_EQUINE       ; PILOSWINE
-	db ICON_SHELL        ; CORSOLA
-	db ICON_FISH         ; REMORAID
-	db ICON_FISH         ; OCTILLERY
-	db ICON_MONSTER      ; DELIBIRD
-	db ICON_FISH         ; MANTINE
-	db ICON_BIRD         ; SKARMORY
-	db ICON_FOX          ; HOUNDOUR
-	db ICON_FOX          ; HOUNDOOM
-	db ICON_BIGMON       ; KINGDRA
-	db ICON_EQUINE       ; PHANPY
-	db ICON_EQUINE       ; DONPHAN
-	db ICON_VOLTORB      ; PORYGON2
-	db ICON_EQUINE       ; STANTLER
-	db ICON_MONSTER      ; SMEARGLE
-	db ICON_FIGHTER      ; TYROGUE
-	db ICON_FIGHTER      ; HITMONTOP
-	db ICON_HUMANSHAPE   ; SMOOCHUM
-	db ICON_HUMANSHAPE   ; ELEKID
-	db ICON_HUMANSHAPE   ; MAGBY
-	db ICON_EQUINE       ; MILTANK
-	db ICON_CLEFAIRY     ; BLISSEY
-	db ICON_FOX          ; RAIKOU
-	db ICON_FOX          ; ENTEI
-	db ICON_FOX          ; SUICUNE
-	db ICON_MONSTER      ; LARVITAR
-	db ICON_MONSTER      ; PUPITAR
-	db ICON_MONSTER      ; TYRANITAR
-	db ICON_LUGIA        ; LUGIA
-	db ICON_HO_OH        ; HO_OH
-	db ICON_HUMANSHAPE   ; CELEBI
-
-IconPointers:
-	dw NullIcon
-	dw PoliwagIcon
-	dw JigglypuffIcon
-	dw DiglettIcon
-	dw PikachuIcon
-	dw StaryuIcon
-	dw FishIcon
-	dw BirdIcon
-	dw MonsterIcon
-	dw ClefairyIcon
-	dw OddishIcon
-	dw BugIcon
-	dw GhostIcon
-	dw LaprasIcon
-	dw HumanshapeIcon
-	dw FoxIcon
-	dw EquineIcon
-	dw ShellIcon
-	dw BlobIcon
-	dw SerpentIcon
-	dw VoltorbIcon
-	dw SquirtleIcon
-	dw BulbasaurIcon
-	dw CharmanderIcon
-	dw CaterpillarIcon
-	dw UnownIcon
-	dw GeodudeIcon
-	dw FighterIcon
-	dw EggIcon
-	dw JellyfishIcon
-	dw MothIcon
-	dw BatIcon
-	dw SnorlaxIcon
-	dw HoOhIcon
-	dw LugiaIcon
-	dw GyaradosIcon
-	dw SlowpokeIcon
-	dw SudowoodoIcon
-	dw BigmonIcon
-
-Icons:
-NullIcon:
-PoliwagIcon:      INCBIN "gfx/icon/poliwag.2bpp" ; 0x8ec0d
-JigglypuffIcon:   INCBIN "gfx/icon/jigglypuff.2bpp" ; 0x8ec8d
-DiglettIcon:      INCBIN "gfx/icon/diglett.2bpp" ; 0x8ed0d
-PikachuIcon:      INCBIN "gfx/icon/pikachu.2bpp" ; 0x8ed8d
-StaryuIcon:       INCBIN "gfx/icon/staryu.2bpp" ; 0x8ee0d
-FishIcon:         INCBIN "gfx/icon/fish.2bpp" ; 0x8ee8d
-BirdIcon:         INCBIN "gfx/icon/bird.2bpp" ; 0x8ef0d
-MonsterIcon:      INCBIN "gfx/icon/monster.2bpp" ; 0x8ef8d
-ClefairyIcon:     INCBIN "gfx/icon/clefairy.2bpp" ; 0x8f00d
-OddishIcon:       INCBIN "gfx/icon/oddish.2bpp" ; 0x8f08d
-BugIcon:          INCBIN "gfx/icon/bug.2bpp" ; 0x8f10d
-GhostIcon:        INCBIN "gfx/icon/ghost.2bpp" ; 0x8f18d
-LaprasIcon:       INCBIN "gfx/icon/lapras.2bpp" ; 0x8f20d
-HumanshapeIcon:   INCBIN "gfx/icon/humanshape.2bpp" ; 0x8f28d
-FoxIcon:          INCBIN "gfx/icon/fox.2bpp" ; 0x8f30d
-EquineIcon:       INCBIN "gfx/icon/equine.2bpp" ; 0x8f38d
-ShellIcon:        INCBIN "gfx/icon/shell.2bpp" ; 0x8f40d
-BlobIcon:         INCBIN "gfx/icon/blob.2bpp" ; 0x8f48d
-SerpentIcon:      INCBIN "gfx/icon/serpent.2bpp" ; 0x8f50d
-VoltorbIcon:      INCBIN "gfx/icon/voltorb.2bpp" ; 0x8f58d
-SquirtleIcon:     INCBIN "gfx/icon/squirtle.2bpp" ; 0x8f60d
-BulbasaurIcon:    INCBIN "gfx/icon/bulbasaur.2bpp" ; 0x8f68d
-CharmanderIcon:   INCBIN "gfx/icon/charmander.2bpp" ; 0x8f70d
-CaterpillarIcon:  INCBIN "gfx/icon/caterpillar.2bpp" ; 0x8f78d
-UnownIcon:        INCBIN "gfx/icon/unown.2bpp" ; 0x8f80d
-GeodudeIcon:      INCBIN "gfx/icon/geodude.2bpp" ; 0x8f88d
-FighterIcon:      INCBIN "gfx/icon/fighter.2bpp" ; 0x8f90d
-EggIcon:          INCBIN "gfx/icon/egg.2bpp" ; 0x8f98d
-JellyfishIcon:    INCBIN "gfx/icon/jellyfish.2bpp" ; 0x8fa0d
-MothIcon:         INCBIN "gfx/icon/moth.2bpp" ; 0x8fa8d
-BatIcon:          INCBIN "gfx/icon/bat.2bpp" ; 0x8fb0d
-SnorlaxIcon:      INCBIN "gfx/icon/snorlax.2bpp" ; 0x8fb8d
-HoOhIcon:         INCBIN "gfx/icon/ho_oh.2bpp" ; 0x8fc0d
-LugiaIcon:        INCBIN "gfx/icon/lugia.2bpp" ; 0x8fc8d
-GyaradosIcon:     INCBIN "gfx/icon/gyarados.2bpp" ; 0x8fd0d
-SlowpokeIcon:     INCBIN "gfx/icon/slowpoke.2bpp" ; 0x8fd8d
-SudowoodoIcon:    INCBIN "gfx/icon/sudowoodo.2bpp" ; 0x8fe0d
-BigmonIcon:       INCBIN "gfx/icon/bigmon.2bpp" ; 0x8fe8d
--- a/misc/crystal_misc.asm
+++ b/misc/crystal_misc.asm
@@ -4,7 +4,7 @@
 SECTION "Misc Crystal", ROMX
 
 MobileAdapterGFX::
-INCBIN "gfx/misc/mobile_adapter.2bpp"
+INCBIN "gfx/mobile/mobile_adapter.2bpp"
 
 
 Function17a68f:: ; 17a68f (5e:668f)
--- a/misc/gbc_only.asm
+++ b/misc/gbc_only.asm
@@ -145,5 +145,5 @@
 
 
 GBCOnlyGFX: ; 4eb76
-INCBIN "gfx/misc/gbc_only.2bpp.lz"
+INCBIN "gfx/sgb/gbc_only.2bpp.lz"
 ; 4f0bc
--- a/misc/gfx_41.asm
+++ b/misc/gfx_41.asm
@@ -632,7 +632,7 @@
 BoltEmote:      INCBIN "gfx/emotes/bolt.2bpp"
 SleepEmote:     INCBIN "gfx/emotes/sleep.2bpp"
 FishEmote:      INCBIN "gfx/emotes/fish.2bpp"
-JumpShadowGFX:  INCBIN "gfx/ow_fx/shadow.2bpp"
-FishingRodGFX:  INCBIN "gfx/ow_fx/fishing_rod.2bpp"
-BoulderDustGFX: INCBIN "gfx/ow_fx/boulder_dust.2bpp"
-GrassRustleGFX: INCBIN "gfx/ow_fx/grass_rustle.2bpp"
+JumpShadowGFX:  INCBIN "gfx/overworld/shadow.2bpp"
+FishingRodGFX:  INCBIN "gfx/overworld/fishing_rod.2bpp"
+BoulderDustGFX: INCBIN "gfx/overworld/boulder_dust.2bpp"
+GrassRustleGFX: INCBIN "gfx/overworld/grass_rustle.2bpp"
--- a/misc/mobile_12.asm
+++ b/misc/mobile_12.asm
@@ -1021,10 +1021,10 @@
 ; 488c3 (12:48c3)
 
 GFX_488c3: ; 488c3
-INCBIN "gfx/unknown/0488c3.2bpp"
+INCBIN "gfx/unknown/up_arrow.2bpp"
 
 GFX_488cb: ; 488cb
-INCBIN "gfx/unknown/0488cb.2bpp"
+INCBIN "gfx/unknown/down_arrow.2bpp"
 
 Function488d3: ; 488d3 (12:48d3)
 	call Function48283
--- a/misc/mobile_5b.asm
+++ b/misc/mobile_5b.asm
@@ -221,13 +221,13 @@
 ; 16c173
 
 .Tiles:
-INCBIN "gfx/unknown/16c173.2bpp"
+INCBIN "gfx/unknown/mobile_splash.2bpp"
 
 .TileMap:
-INCBIN "gfx/unknown/16c633.tilemap"
+INCBIN "gfx/unknown/mobile_splash.tilemap"
 
 .AttrMap:
-INCBIN "gfx/unknown/16c79b.tilemap"
+INCBIN "gfx/unknown/mobile_splash.attrmap"
 
 UnknownMobilePalettes_16c903: ; 16c903
 INCLUDE "gfx/unknown/16c903.pal"
--- a/misc/mobile_5c.asm
+++ b/misc/mobile_5c.asm
@@ -305,10 +305,10 @@
 ; 170d16
 
 LZ_170d16:
-INCBIN "gfx/unknown/170d16.2bpp.lz"
+INCBIN "gfx/unknown/pichu_animated.2bpp.lz"
 
 LZ_1715a4:
-INCBIN "gfx/unknown/1715a4.2bpp.lz"
+INCBIN "gfx/unknown/egg_animated.2bpp.lz"
 
 GFX_171848:
 INCBIN "gfx/unknown/171848.2bpp"
@@ -817,8 +817,9 @@
 	RGB 21, 21, 20
 	RGB 11, 11, 10
 	RGB  0,  0,  0
+
 GFX_171db1:
-INCBIN "gfx/unknown/171db1.2bpp"
+INCBIN "gfx/unknown/ascii_font.2bpp"
 Tilemap_172491:
 INCBIN "gfx/unknown/172491.tilemap"
 Tilemap_17251d:
--- a/pokecrystal.link
+++ b/pokecrystal.link
@@ -45,7 +45,7 @@
 	"Tileset Data 2"
 	"Extra Songs 1"
 ROMX $08
-	"bank8"
+	"Clock Reset"
 	"Tileset Data 3"
 	"Egg Moves"
 ROMX $09
@@ -82,7 +82,7 @@
 ROMX $18
 	"Map Scripts 4"
 ROMX $19
-	"bank19"
+	"Crystal Phone Text"
 ROMX $1a
 	"Map Scripts 5"
 ROMX $1b
@@ -129,9 +129,9 @@
 ROMX $2f
 	"bank2F"
 ROMX $30
-	"bank30"
+	"Sprites 1"
 ROMX $31
-	"bank31"
+	"Sprites 2"
 ROMX $32
 	"bank32"
 ROMX $33
@@ -142,7 +142,7 @@
 ROMX $35
 	"Pic Animations 2"
 ROMX $36
-	"bank36"
+	"Font Inversed"
 	"Pic Animations 3"
 ROMX $37
 	"Tileset Data 6"
@@ -166,7 +166,7 @@
 ROMX $3f
 	"bank3F"
 ROMX $40
-	"bank40"
+	"mobile_40"
 	"tetsuji"
 	"bank40_2"
 	"ascii 10186f"
@@ -175,7 +175,7 @@
 	"bank41"
 	"bank41_2"
 ROMX $42
-	"bank42"
+	"mobile_42"
 	"Intro Logo"
 	"Credits"
 ROMX $43
@@ -189,11 +189,13 @@
 	"bank46"
 	"bank46_2"
 ROMX $47
-	"bank47"
+	"battle_tower_47"
 ROMX $48
+	org $4000
 	"Pic Pointers"
 	"Pics 1"
 ROMX $49
+	org $4000
 	"Unown Pic Pointers"
 	"Pics 2"
 ROMX $4a
@@ -234,9 +236,9 @@
 ROMX $5b
 	"bank5B"
 ROMX $5c
-	"bank5C"
+	"mobile_5c"
 ROMX $5d
-	"bank5D"
+	"Crystal Phone Text 2"
 ROMX $5e
 	"bank5E"
 	"Songs 5"
@@ -273,7 +275,7 @@
 	"Common Text 1"
 	"Map Scripts 25"
 ROMX $6d
-	"bank6D"
+	"Special Phone Text"
 ROMX $6e
 	"Pokedex Entries 065-128"
 ROMX $6f
@@ -295,9 +297,9 @@
 ROMX $78
 	"Tileset Data 8"
 ROMX $7b
-	"bank7B"
+	"Battle Tower Text"
 ROMX $7c
-	"bank7C"
+	"Battle Tower Trainer Data"
 ROMX $7d
 	"bank7D"
 ROMX $7e
@@ -330,11 +332,11 @@
 	org $d300
 	"Battle Animations"
 	org $d800
-	"WRAM 5 MOBILE"
+	"Mobile RAM"
 WRAMX 6
-	"WRAM 6"
+	"Scratch RAM"
 WRAMX 7
-	"WRAM 7"
+	"Stack RAM"
 VRAM $00
 	"VRAM0"
 VRAM $01
--- a/predef/cgb.asm
+++ b/predef/cgb.asm
@@ -69,15 +69,15 @@
 _CGB_BattleGrayscale: ; 8db8
 	ld hl, PalPacket_9c66 + 1
 	ld de, UnknBGPals
-	ld c, $4
+	ld c, 4
 	call CopyPalettes
 	ld hl, PalPacket_9c66 + 1
-	ld de, UnknBGPals + 4 palettes
-	ld c, $4
+	ld de, UnknBGPals palette PAL_BATTLE_BG_EXP
+	ld c, 4
 	call CopyPalettes
 	ld hl, PalPacket_9c66 + 1
 	ld de, UnknOBPals
-	ld c, $2
+	ld c, 2
 	call CopyPalettes
 	jr _CGB_FinishBattleScreenLayout
 
@@ -85,10 +85,10 @@
 	ld de, UnknBGPals
 	call GetBattlemonBackpicPalettePointer
 	push hl
-	call LoadPalette_White_Col1_Col2_Black
+	call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_BG_PLAYER
 	call GetEnemyFrontpicPalettePointer
 	push hl
-	call LoadPalette_White_Col1_Col2_Black
+	call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_BG_ENEMY
 	ld a, [EnemyHPPal]
 	ld l, a
 	ld h, $0
@@ -96,7 +96,7 @@
 	add hl, hl
 	ld bc, Palettes_a8be
 	add hl, bc
-	call LoadPalette_White_Col1_Col2_Black
+	call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_BG_ENEMY_HP
 	ld a, [PlayerHPPal]
 	ld l, a
 	ld h, $0
@@ -104,14 +104,14 @@
 	add hl, hl
 	ld bc, Palettes_a8be
 	add hl, bc
-	call LoadPalette_White_Col1_Col2_Black
+	call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_BG_PLAYER_HP
 	ld hl, Palettes_a8ca
-	call LoadPalette_White_Col1_Col2_Black
+	call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_BG_EXP
 	ld de, UnknOBPals
 	pop hl
-	call LoadPalette_White_Col1_Col2_Black
+	call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_OB_ENEMY
 	pop hl
-	call LoadPalette_White_Col1_Col2_Black
+	call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_OB_PLAYER
 	ld a, SCGB_BATTLE_COLORS
 	ld [SGBPredef], a
 	call ApplyPals
@@ -119,34 +119,34 @@
 	call InitPartyMenuBGPal7
 	hlcoord 0, 0, AttrMap
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	ld a, $2
+	ld a, PAL_BATTLE_BG_ENEMY_HP
 	call ByteFill
 	hlcoord 0, 4, AttrMap
 	lb bc, 8, 10
-	ld a, $0
+	ld a, PAL_BATTLE_BG_PLAYER
 	call FillBoxCGB
 	hlcoord 10, 0, AttrMap
 	lb bc, 7, 10
-	ld a, $1
+	ld a, PAL_BATTLE_BG_ENEMY
 	call FillBoxCGB
 	hlcoord 0, 0, AttrMap
 	lb bc, 4, 10
-	ld a, $2
+	ld a, PAL_BATTLE_BG_ENEMY_HP
 	call FillBoxCGB
 	hlcoord 10, 7, AttrMap
 	lb bc, 5, 10
-	ld a, $3
+	ld a, PAL_BATTLE_BG_PLAYER_HP
 	call FillBoxCGB
 	hlcoord 10, 11, AttrMap
 	lb bc, 1, 9
-	ld a, $4
+	ld a, PAL_BATTLE_BG_EXP
 	call FillBoxCGB
 	hlcoord 0, 12, AttrMap
 	ld bc, 6 * SCREEN_WIDTH
-	ld a, $7
+	ld a, PAL_BATTLE_BG_TEXT
 	call ByteFill
 	ld hl, Palettes_979c
-	ld de, UnknOBPals + 2 palettes
+	ld de, UnknOBPals palette PAL_BATTLE_OB_GRAY
 	ld bc, 6 palettes
 	ld a, $5
 	call FarCopyWRAM
@@ -162,7 +162,7 @@
 	jr nc, .not_mobile
 	ld hl, Palette_b309
 .not_mobile
-	ld de, UnknBGPals + 8 * 7
+	ld de, UnknBGPals palette 7
 	ld bc, 1 palettes
 	ld a, $5
 	call FarCopyWRAM
@@ -175,7 +175,7 @@
 	jr nc, .not_mobile
 	ld hl, Palette_b309
 .not_mobile
-	ld de, UnknBGPals
+	ld de, UnknBGPals palette 0
 	ld bc, 1 palettes
 	ld a, $5
 	call FarCopyWRAM
@@ -211,16 +211,16 @@
 	add hl, hl
 	ld bc, Palettes_a8be
 	add hl, bc
-	call LoadPalette_White_Col1_Col2_Black
+	call LoadPalette_White_Col1_Col2_Black ; hp palette
 	ld a, [CurPartySpecies]
 	ld bc, TempMonDVs
 	call GetPlayerOrMonPalettePointer
-	call LoadPalette_White_Col1_Col2_Black
+	call LoadPalette_White_Col1_Col2_Black ; mon palette
 	ld hl, Palettes_a8ca
-	call LoadPalette_White_Col1_Col2_Black
-	ld hl, Palette8f52
-	ld de, UnknBGPals + 8 * 3
-	ld bc, 3 palettes
+	call LoadPalette_White_Col1_Col2_Black ; exp palette
+	ld hl, StatsScreenPagePals
+	ld de, UnknBGPals palette 3
+	ld bc, 3 palettes ; pink, green, and blue page palettes
 	ld a, $5
 	call FarCopyWRAM
 	call WipeAttrMap
@@ -227,27 +227,27 @@
 
 	hlcoord 0, 0, AttrMap
 	lb bc, 8, SCREEN_WIDTH
-	ld a, $1
+	ld a, $1 ; mon palette
 	call FillBoxCGB
 
 	hlcoord 10, 16, AttrMap
 	ld bc, 10
-	ld a, $2
+	ld a, $2 ; exp palette
 	call ByteFill
 
 	hlcoord 13, 5, AttrMap
 	lb bc, 2, 2
-	ld a, $3
+	ld a, $3 ; pink page palette
 	call FillBoxCGB
 
 	hlcoord 15, 5, AttrMap
 	lb bc, 2, 2
-	ld a, $4
+	ld a, $4 ; green page palette
 	call FillBoxCGB
 
 	hlcoord 17, 5, AttrMap
 	lb bc, 2, 2
-	ld a, $5
+	ld a, $5 ; blue page palette
 	call FillBoxCGB
 
 	call ApplyAttrMap
@@ -257,17 +257,18 @@
 	ret
 ; 8f52
 
-Palette8f52: ; 8f52
+StatsScreenPagePals: ; 8f52
+; pink
 	RGB 31, 31, 31
 	RGB 31, 19, 31
 	RGB 31, 15, 31
 	RGB 00, 00, 00
-
+; green
 	RGB 31, 31, 31
 	RGB 21, 31, 14
 	RGB 17, 31, 00
 	RGB 00, 00, 00
-
+; blue
 	RGB 31, 31, 31
 	RGB 17, 31, 31
 	RGB 17, 31, 31
@@ -275,10 +276,11 @@
 ; 8f6a
 
 StatsScreenPals: ; 8f6a
+; pink
 	RGB 31, 19, 31
-
+; green
 	RGB 21, 31, 14
-
+; blue
 	RGB 17, 31, 31
 ; 8f70
 
@@ -286,26 +288,26 @@
 	ld de, UnknBGPals
 	ld a, $1d
 	call GetPredefPal
-	call LoadHLPaletteIntoDE
+	call LoadHLPaletteIntoDE ; dex interface palette
 	ld a, [CurPartySpecies]
 	cp $ff
 	jr nz, .is_pokemon
-	ld hl, Palette8fba
-	call LoadHLPaletteIntoDE
+	ld hl, .PokedexQuestionMarkPalette
+	call LoadHLPaletteIntoDE ; green question mark palette
 	jr .got_palette
 
 .is_pokemon
 	call GetMonPalettePointer_
-	call LoadPalette_White_Col1_Col2_Black
+	call LoadPalette_White_Col1_Col2_Black ; mon palette
 .got_palette
 	call WipeAttrMap
 	hlcoord 1, 1, AttrMap
 	lb bc, 7, 7
-	ld a, $1
+	ld a, $1 ; green question mark palette
 	call FillBoxCGB
 	call InitPartyMenuOBPals
-	ld hl, Palette8fc2
-	ld de, UnknOBPals + 7 palettes
+	ld hl, .PokedexCursorPalette
+	ld de, UnknOBPals palette 7 ; green cursor palette
 	ld bc, 1 palettes
 	ld a, $5
 	call FarCopyWRAM
@@ -316,13 +318,13 @@
 	ret
 ; 8fba
 
-Palette8fba: ; 8fba
+.PokedexQuestionMarkPalette: ; 8fba
 	RGB 11, 23, 00
 	RGB 07, 17, 00
 	RGB 06, 16, 03
 	RGB 05, 12, 01
 
-Palette8fc2: ; 8fc2
+.PokedexCursorPalette: ; 8fc2
 	RGB 00, 00, 00
 	RGB 11, 23, 00
 	RGB 07, 17, 00
@@ -337,7 +339,7 @@
 	ld a, [CurPartySpecies]
 	cp $ff
 	jr nz, .GetMonPalette
-	ld hl, Palette9036
+	ld hl, .BillsPCOrangePalette
 	call LoadHLPaletteIntoDE
 	jr .Resume
 
@@ -359,8 +361,8 @@
 	ret
 ; 9009
 
-Function9009: ; 9009
-	ld hl, Palette9036
+.Function9009: ; 9009
+	ld hl, .BillsPCOrangePalette
 	call LoadHLPaletteIntoDE
 	jr .asm_901a
 
@@ -382,7 +384,7 @@
 	ret
 ; 9036
 
-Palette9036: ; 9036
+.BillsPCOrangePalette: ; 9036
 	RGB 31, 15, 00
 	RGB 23, 12, 00
 	RGB 15, 07, 00
@@ -411,9 +413,9 @@
 ; 906e
 
 _CGB_SlotMachine: ; 906e
-	ld hl, Palettes_b7a9
+	ld hl, SlotMachinePals
 	ld de, UnknBGPals
-	ld bc, $80
+	ld bc, 16 palettes
 	ld a, $5
 	call FarCopyWRAM
 	call WipeAttrMap
@@ -485,7 +487,7 @@
 
 _CGB07: ; 9122
 	ld b, 0
-	ld hl, Jumptable_912d
+	ld hl, .Jumptable
 	add hl, bc
 	add hl, bc
 	ld a, [hli]
@@ -494,17 +496,17 @@
 	jp hl
 ; 912d
 
-Jumptable_912d: ; 912d
-	dw Function9133
-	dw Function9166
-	dw Function9180
+.Jumptable: ; 912d
+	dw .Function9133
+	dw .Function9166
+	dw .Function9180
 ; 9133
 
-Function9133: ; 9133
-	ld hl, Palette_914e
+.Function9133: ; 9133
+	ld hl, .Palette_914e
 	ld de, UnknBGPals
 	call LoadHLPaletteIntoDE
-	ld hl, Palette_9156
+	ld hl, .Palette_9156
 	ld de, UnknOBPals
 	ld bc, 2 palettes
 	ld a, $5
@@ -513,13 +515,13 @@
 	ret
 ; 914e
 
-Palette_914e: ; 914e
+.Palette_914e: ; 914e
 	RGB 19, 31, 19
 	RGB 18, 23, 31
 	RGB 11, 21, 28
 	RGB 04, 16, 24
 
-Palette_9156: ; 9156
+.Palette_9156: ; 9156
 	RGB 29, 29, 29
 	RGB 20, 19, 20
 	RGB 19, 06, 04
@@ -531,7 +533,7 @@
 	RGB 03, 04, 06
 ; 9166
 
-Function9166: ; 9166
+.Function9166: ; 9166
 	ld de, UnknBGPals
 	ld a, $38
 	call GetPredefPal
@@ -545,7 +547,7 @@
 	ret
 ; 9180
 
-Function9180: ; 9180
+.Function9180: ; 9180
 	ld hl, PalPacket_9c36 + 1
 	call CopyFourPalettes
 	ld de, UnknOBPals
@@ -620,7 +622,7 @@
 	call GetPlayerOrMonPalettePointer
 	call LoadPalette_White_Col1_Col2_Black
 	ld hl, Palettes_979c
-	ld de, UnknOBPals + 2 palettes
+	ld de, UnknOBPals palette 2
 	ld bc, 6 palettes
 	ld a, $5
 	call FarCopyWRAM
@@ -686,28 +688,28 @@
 
 _CGB_TrainerCard: ; 9289
 	ld de, UnknBGPals
-	xor a
+	xor a ; CHRIS
 	call GetTrainerPalettePointer
 	call LoadPalette_White_Col1_Col2_Black
-	ld a, $1
+	ld a, FALKNER ; KRIS
 	call GetTrainerPalettePointer
 	call LoadPalette_White_Col1_Col2_Black
-	ld a, $3
+	ld a, BUGSY
 	call GetTrainerPalettePointer
 	call LoadPalette_White_Col1_Col2_Black
-	ld a, $2
+	ld a, WHITNEY
 	call GetTrainerPalettePointer
 	call LoadPalette_White_Col1_Col2_Black
-	ld a, $4
+	ld a, MORTY
 	call GetTrainerPalettePointer
 	call LoadPalette_White_Col1_Col2_Black
-	ld a, $7
+	ld a, CHUCK
 	call GetTrainerPalettePointer
 	call LoadPalette_White_Col1_Col2_Black
-	ld a, $6
+	ld a, JASMINE
 	call GetTrainerPalettePointer
 	call LoadPalette_White_Col1_Col2_Black
-	ld a, $5
+	ld a, PRYCE
 	call GetTrainerPalettePointer
 	call LoadPalette_White_Col1_Col2_Black
 	ld a, $24
@@ -714,54 +716,58 @@
 	call GetPredefPal
 	call LoadHLPaletteIntoDE
 
+	; fill screen with opposite-gender palette for the card border
 	hlcoord 0, 0, AttrMap
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, [PlayerGender]
 	and a
-	ld a, $1
+	ld a, $1 ; kris
 	jr z, .got_gender
-	ld a, $0
+	ld a, $0 ; chris
 .got_gender
 	call ByteFill
+	; fill trainer sprite area with same-gender palette
 	hlcoord 14, 1, AttrMap
 	lb bc, 7, 5
 	ld a, [PlayerGender]
 	and a
-	ld a, $0
+	ld a, $0 ; chris
 	jr z, .got_gender2
-	ld a, $1
+	ld a, $1 ; kris
 .got_gender2
 	call FillBoxCGB
+	; top-right corner still uses the border's palette
 	hlcoord 18, 1, AttrMap
 	ld [hl], $1
 	hlcoord 2, 11, AttrMap
 	lb bc, 2, 4
-	ld a, $1
+	ld a, $1 ; falkner
 	call FillBoxCGB
 	hlcoord 6, 11, AttrMap
 	lb bc, 2, 4
-	ld a, $2
+	ld a, $2 ; bugsy
 	call FillBoxCGB
 	hlcoord 10, 11, AttrMap
 	lb bc, 2, 4
-	ld a, $3
+	ld a, $3 ; whitney
 	call FillBoxCGB
 	hlcoord 14, 11, AttrMap
 	lb bc, 2, 4
-	ld a, $4
+	ld a, $4 ; morty
 	call FillBoxCGB
 	hlcoord 2, 14, AttrMap
 	lb bc, 2, 4
-	ld a, $5
+	ld a, $5 ; chuck
 	call FillBoxCGB
 	hlcoord 6, 14, AttrMap
 	lb bc, 2, 4
-	ld a, $6
+	ld a, $6 ; jasmine
 	call FillBoxCGB
 	hlcoord 10, 14, AttrMap
 	lb bc, 2, 4
-	ld a, $7
+	ld a, $7 ; pryce
 	call FillBoxCGB
+	; clair uses kris's palette
 	ld a, [PlayerGender]
 	and a
 	push af
@@ -1011,7 +1017,7 @@
 	ld de, UnknOBPals
 	call LoadHLPaletteIntoDE
 	ld hl, .Palette
-	ld de, UnknOBPals + 1 palettes
+	ld de, UnknOBPals palette 1
 	call LoadHLPaletteIntoDE
 	call WipeAttrMap
 	call ApplyAttrMap
@@ -1056,7 +1062,7 @@
 	ld bc, 1 palettes
 	ld a, $5
 	call FarCopyWRAM
-	ld de, UnknOBPals + 7 palettes
+	ld de, UnknOBPals palette 7
 	ld a, $1c
 	call GetPredefPal
 	call LoadHLPaletteIntoDE
--- a/predef/sgb.asm
+++ b/predef/sgb.asm
@@ -556,7 +556,7 @@
 
 .GetMapPalsIndex: ; 8a0c
 	ld a, [TimeOfDayPal]
-	cp NITE
+	cp NITE_F
 	jr c, .morn_day
 	ld a, $19
 	ret
--- a/text/battle.asm
+++ b/text/battle.asm
@@ -1,3 +1,5 @@
+BattleText::
+
 BattleText_PlayerPickedUpPayDayMoney: ; 0x80730
 	text "<PLAYER> picked up"
 	line "¥@"
--- /dev/null
+++ b/text/phone/extra2.asm
@@ -1,0 +1,1927 @@
+UnknownText_0x174000: ; 0x174000
+	text "Hi, <PLAY_G>!"
+	line "Our BICYCLE sales"
+
+	para "have gone through"
+	line "the roof!"
+
+	para "We owe it all to"
+	line "your advertising"
+
+	para "by riding around"
+	line "on our BICYCLE."
+
+	para "As our way of say-"
+	line "ing thanks, please"
+
+	para "keep that BICYCLE."
+	line "Thanks again!"
+	done
+; 0x1740c0
+
+UnknownText_0x1740c0: ; 0x1740c0
+	text "My @"
+	text_from_ram StringBuffer4
+	text "'s"
+	line "intelligence keeps"
+
+	para "rising. It might"
+	line "be smarter than"
+	cont "yours!"
+	done
+; 0x174106
+
+UnknownText_0x174106: ; 0x174106
+	text "The other day, I"
+	line "easily defeated a"
+	cont "@"
+	text_from_ram StringBuffer4
+	text "."
+
+	para "I think swapping"
+	line "tips with you is"
+	cont "starting to help."
+	done
+; 0x174165
+
+UnknownText_0x174165: ; 0x174165
+	text "Oh, and listen."
+	line "I missed catching"
+
+	para "a @"
+	text_from_ram StringBuffer4
+	text " by"
+	line "just a tiny bit."
+
+	para "If I'd been a bit"
+	line "more informed, I'm"
+
+	para "sure I would've"
+	line "caught it…"
+	done
+; 0x1741e1
+
+UnknownText_0x1741e1: ; 0x1741e1
+	text "Do you want to"
+	line "battle? I'll show"
+
+	para "you how to battle"
+	line "logically."
+
+	para "I'll be in"
+	line "@"
+	text_from_ram StringBuffer5
+	text "."
+
+	para "Give me a shout if"
+	line "you're nearby."
+	done
+; 0x174251
+
+UnknownText_0x174251: ; 0x174251
+	text "See you later!"
+	done
+; 0x174261
+
+UnknownText_0x174261: ; 0x174261
+	text "Did you know?"
+
+	para "When it's raining,"
+	line "THUNDER is sure to"
+	cont "strike."
+	done
+; 0x17429d
+
+UnknownText_0x17429d: ; 0x17429d
+	text "Did you know…?"
+
+	para "If you use DEFENSE"
+	line "CURL, ROLLOUT's"
+
+	para "power goes way up"
+	line "past normal."
+	done
+; 0x1742ee
+
+UnknownText_0x1742ee: ; 0x1742ee
+	text "Did you know…?"
+
+	para "If the sunlight is"
+	line "harsh, SOLARBEAM"
+
+	para "doesn't need to be"
+	line "charged up."
+	done
+; 0x174340
+
+UnknownText_0x174340: ; 0x174340
+	text "Did you know…?"
+
+	para "If the opponent"
+	line "uses MINIMIZE,"
+
+	para "your STOMP becomes"
+	line "more powerful."
+	done
+; 0x174391
+
+UnknownText_0x174391: ; 0x174391
+	text "Did you know…?"
+
+	para "If your opponent"
+	line "is FLYing, your"
+
+	para "GUST becomes much"
+	line "more powerful."
+	done
+; 0x1743e3
+
+UnknownText_0x1743e3: ; 0x1743e3
+	text "Did you know…?"
+
+	para "If your opponent"
+	line "is FLYing, your"
+
+	para "TWISTER becomes"
+	line "more powerful."
+	done
+; 0x174433
+
+UnknownText_0x174433: ; 0x174433
+	text "Did you know…?"
+
+	para "If your opponent"
+	line "uses DIG, your"
+
+	para "EARTHQUAKE becomes"
+	line "more powerful."
+	done
+; 0x174485
+
+UnknownText_0x174485: ; 0x174485
+	text "Did you know…?"
+
+	para "If your opponent"
+	line "uses DIG, your"
+
+	para "MAGNITUDE becomes"
+	line "more powerful."
+	done
+; 0x1744d6
+
+UnknownText_0x1744d6: ; 0x1744d6
+	text "Did you know…?"
+
+	para "The rock, ground"
+	line "and steel types"
+
+	para "can't be hurt by"
+	line "SANDSTORM."
+	done
+; 0x174522
+
+UnknownText_0x174522: ; 0x174522
+	text "Did you know…?"
+
+	para "If the sunlight is"
+	line "harsh, water-type"
+
+	para "moves become much"
+	line "weaker."
+	done
+; 0x174571
+
+UnknownText_0x174571: ; 0x174571
+	text "Did you know…?"
+
+	para "When it's raining,"
+	line "fire-type moves"
+
+	para "become much weaker"
+	line "than usual."
+	done
+; 0x1745c2
+
+UnknownText_0x1745c2: ; 0x1745c2
+	text "My friend heard"
+	line "some great tips."
+
+	para "He's going to let"
+	line "me in on some."
+
+	para "When he tells me,"
+	line "I'll call right"
+	cont "away and tell you."
+	done
+; 0x174638
+
+UnknownText_0x174638: ; 0x174638
+	text "Hey, <PLAY_G>!"
+
+	para "Do you remember"
+	line "your promise?"
+
+	para "We have to battle"
+	line "soon!"
+
+	para "I'll be at"
+	line "@"
+	text_from_ram StringBuffer5
+	text "."
+	done
+; 0x174688
+
+UnknownText_0x174688: ; 0x174688
+	text "I fancied up my"
+	line "@"
+	text_from_ram StringBuffer4
+	text " and"
+
+	para "made it even cuter"
+	line "than before!"
+	done
+; 0x1746c3
+
+UnknownText_0x1746c3: ; 0x1746c3
+	text "I happened to come"
+	line "across a wild"
+	cont "SNUBBULL recently."
+
+	para "My SNUBBULL, I"
+	line "assure you, was"
+
+	para "far cuter than the"
+	line "wild one."
+	done
+; 0x174734
+
+UnknownText_0x174734: ; 0x174734
+	text "I happened to see"
+	line "a wild MARILL the"
+
+	para "other day."
+	line "Or so I thought."
+
+	para "A closer look"
+	line "showed it was"
+
+	para "@"
+	text_from_ram StringBuffer4
+	text ". I was"
+	line "quite miffed."
+	done
+; 0x1747ac
+
+UnknownText_0x1747ac: ; 0x1747ac
+	text "You can expect a"
+	line "call from me."
+	done
+; 0x1747cc
+
+UnknownText_0x1747cc: ; 0x1747cc
+	text "My husband got"
+	line "some NUGGETS."
+
+	para "If you'd like, you"
+	line "could have one as"
+
+	para "thanks for helping"
+	line "me out."
+
+	para "I'll be at"
+	line "@"
+	text_from_ram StringBuffer5
+	text "."
+
+	para "Please come see me"
+	line "when you can."
+	done
+; 0x17485b
+
+UnknownText_0x17485b: ; 0x17485b
+	text "Are your #MON"
+	line "in prime form?"
+
+	para "Let's chat about"
+	line "#MON again."
+	done
+; 0x174895
+
+UnknownText_0x174895: ; 0x174895
+	text "Pardon?"
+	line "Oh, the NUGGET?"
+
+	para "There's no need to"
+	line "hurry. Come see me"
+
+	para "in @"
+	text_from_ram StringBuffer5
+	text ""
+	line "when you can."
+	done
+; 0x1748ea
+
+UnknownText_0x1748ea: ; 0x1748ea
+	text "Hey, I challenge"
+	line "you to a battle!"
+
+	para "It won't be like"
+	line "last time!"
+
+	para "@"
+	text_from_ram StringBuffer5
+	text "'s"
+	line "where I'm waiting"
+
+	para "for you. Hustle"
+	line "over here pronto!"
+	done
+; 0x174962
+
+UnknownText_0x174962: ; 0x174962
+	text "See ya!"
+	done
+; 0x17496b
+
+UnknownText_0x17496b: ; 0x17496b
+	text "We have to battle"
+	line "again sometime."
+
+	para "You can bet I'm"
+	line "going to keep"
+
+	para "challenging you"
+	line "till I win."
+	done
+; 0x1749c7
+
+UnknownText_0x1749c7: ; 0x1749c7
+	text "Hey, you'd better"
+	line "not have forgotten"
+	cont "about our battle!"
+
+	para "@"
+	text_from_ram StringBuffer5
+	text "!"
+
+	para "Hustle over quick!"
+	line "I'm waiting!"
+	done
+; 0x174a24
+
+UnknownText_0x174a24: ; 0x174a24
+	text "My @"
+	text_from_ram StringBuffer4
+	text ""
+	line "might be greater"
+	cont "than I imagined."
+
+	para "I doubt I'll see a"
+	line "@"
+	text_from_ram StringBuffer4
+	text " that's"
+	cont "better than mine."
+	done
+; 0x174a80
+
+UnknownText_0x174a80: ; 0x174a80
+	text "Oh, and I managed"
+	line "to barely defeat"
+
+	para "@"
+	text_from_ram StringBuffer4
+	text " the"
+	line "other day."
+
+	para "I've never seen a"
+	line "@"
+	text_from_ram StringBuffer4
+	text " get"
+	cont "that strong…"
+
+	para "You shouldn't let"
+	line "your guard down,"
+
+	para "even against a"
+	line "#MON you're"
+	cont "used to seeing."
+	done
+; 0x174b2d
+
+UnknownText_0x174b2d: ; 0x174b2d
+	text "And a while back,"
+	line "I tried to catch a"
+	cont "wild @"
+	text_from_ram StringBuffer4
+	text "."
+
+	para "But it managed to"
+	line "elude me."
+
+	para "One wrong decision"
+	line "could mean total"
+
+	para "failure… You ought"
+	line "to be careful too."
+	done
+; 0x174bc5
+
+UnknownText_0x174bc5: ; 0x174bc5
+	text "Let's battle!"
+
+	para "I'll be waiting on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "."
+
+	para "Give me a shout"
+	line "when you're close."
+	done
+; 0x174c0e
+
+UnknownText_0x174c0e: ; 0x174c0e
+	text "OK, I'll talk to"
+	line "you soon!"
+	done
+; 0x174c29
+
+UnknownText_0x174c29: ; 0x174c29
+	text "I obsess over how"
+	line "to beat you."
+	done
+; 0x174c49
+
+UnknownText_0x174c49: ; 0x174c49
+	text "<PLAY_G>, why"
+	line "aren't you here?"
+
+	para "I'll take you down"
+	line "with @"
+	text_from_ram StringBuffer5
+	text "!"
+	done
+; 0x174c7f
+
+UnknownText_0x174c7f: ; 0x174c7f
+	text "Do you remember my"
+	line "sweet @"
+	text_from_ram StringBuffer4
+	text "?"
+
+	para "@"
+	text_from_ram StringBuffer4
+	text " runs"
+	line "very fast."
+
+	para "It's exhilarating"
+	line "to ride on its"
+
+	para "back when it"
+	line "really gets going."
+	done
+; 0x174cf6
+
+UnknownText_0x174cf6: ; 0x174cf6
+	text "Oh, have you ever"
+	line "seen a @"
+	text_from_ram StringBuffer4
+	text ""
+	cont "before?"
+
+	para "I just battled"
+	line "one…"
+
+	para "It was much faster"
+	line "than I expected."
+
+	para "I was a little"
+	line "shocked."
+
+	para "I still won, of"
+	line "course."
+	done
+; 0x174d86
+
+UnknownText_0x174d86: ; 0x174d86
+	text "Oh, I just saw a"
+	line "wild @"
+	text_from_ram StringBuffer4
+	text "."
+
+	para "I was trying to"
+	line "catch it when I"
+
+	para "noticed that I was"
+	line "all out of #"
+	cont "BALLS."
+
+	para "If you don't check"
+	line "your items, you"
+
+	para "may run out at the"
+	line "worst time."
+
+	para "I hope you learn"
+	line "from my mistake."
+	done
+; 0x174e4e
+
+UnknownText_0x174e4e: ; 0x174e4e
+	text "Do you want to"
+	line "battle? I'm going"
+	cont "to win this time!"
+
+	para "I'll be waiting"
+	line "for you around"
+
+	para "@"
+	text_from_ram StringBuffer5
+	text "."
+	line "Look for me, OK?"
+	done
+; 0x174eb7
+
+UnknownText_0x174eb7: ; 0x174eb7
+	text "OK, bye-bye!"
+	done
+; 0x174ec5
+
+UnknownText_0x174ec5: ; 0x174ec5
+	text "Let's battle again"
+	line "sometime!"
+	done
+; 0x174ee2
+
+UnknownText_0x174ee2: ; 0x174ee2
+	text "Um… <PLAY_G>?"
+	line "What's wrong?"
+
+	para "Did you forget our"
+	line "deal?"
+
+	para "@"
+	text_from_ram StringBuffer5
+	text "."
+
+	para "That's where I'm"
+	line "waiting."
+	done
+; 0x174f2f
+
+UnknownText_0x174f2f: ; 0x174f2f
+	text "Hey listen, my"
+	line "@"
+	text_from_ram StringBuffer4
+	text "'s stick"
+
+	para "has this really"
+	line "delicious aroma."
+
+	para "That aroma gets my"
+	line "appetite going!"
+	done
+; 0x174f90
+
+UnknownText_0x174f90: ; 0x174f90
+	text "A while ago, my"
+	line "FARFETCH'D KO'd"
+	cont "this @"
+	text_from_ram StringBuffer4
+	text "."
+
+	para "You should have"
+	line "seen FARFETCH'D"
+
+	para "wield that stick."
+	line "Amazing stuff!"
+	done
+; 0x174ffd
+
+UnknownText_0x174ffd: ; 0x174ffd
+	text "I ran into a wild"
+	line "@"
+	text_from_ram StringBuffer4
+	text "…"
+
+	para "I was trying to"
+	line "catch it, but it"
+
+	para "took off faster"
+	line "than I thought it"
+
+	para "would. It was a"
+	line "bit disappointing."
+	done
+; 0x17507d
+
+UnknownText_0x17507d: ; 0x17507d
+	text "Want to battle"
+	line "again?"
+
+	para "For some reason,"
+	line "my FARFETCH'D is"
+
+	para "all worked up and"
+	line "raring to go."
+
+	para "@"
+	text_from_ram StringBuffer5
+	text "'s"
+	line "where I'm at."
+
+	para "Keep an eye out"
+	line "for me, OK?"
+	done
+; 0x175106
+
+UnknownText_0x175106: ; 0x175106
+	text "Be seeing you!"
+	done
+; 0x175116
+
+UnknownText_0x175116: ; 0x175116
+	text "My FARFETCH'D had"
+	line "something pretty"
+	cont "in its beak."
+
+	para "Like I promised,"
+	line "you can have it."
+
+	para "Catch up to me on"
+	line "@"
+	text_from_ram StringBuffer5
+	text ","
+
+	para "and I'll let you"
+	line "have it."
+	done
+; 0x17519b
+
+UnknownText_0x17519b: ; 0x17519b
+	text "I haven't gotten"
+	line "what I promised"
+	cont "you yet."
+
+	para "I'll call you as"
+	line "soon as I get it,"
+
+	para "so could you wait"
+	line "a little longer?"
+	done
+; 0x17520a
+
+UnknownText_0x17520a: ; 0x17520a
+	text "<PLAY_G>, could you"
+	line "hurry over?"
+
+	para "FARFETCH'D is"
+	line "agitated."
+
+	para "If you don't come"
+	line "soon, it might"
+
+	para "smack me with its"
+	line "stick!"
+
+	para "@"
+	text_from_ram StringBuffer5
+	text "!"
+
+	para "Please come as"
+	line "soon as you can!"
+	done
+; 0x17529c
+
+UnknownText_0x17529c: ; 0x17529c
+	text "What's wrong?"
+
+	para "Don't you want"
+	line "this gift?"
+
+	para "Catch up to me on"
+	line "@"
+	text_from_ram StringBuffer5
+	text ","
+
+	para "and I'll let you"
+	line "have it."
+	done
+; 0x1752f5
+
+UnknownText_0x1752f5: ; 0x1752f5
+	text "Listen, dear…"
+
+	para "Do you recall my"
+	line "@"
+	text_from_ram StringBuffer4
+	text "?"
+
+	para "Yes, exactly. That"
+	line "lovely @"
+	text_from_ram StringBuffer4
+	text "."
+
+	para "Wouldn't you agree"
+	line "it's a perfect"
+	cont "match for me?"
+	done
+; 0x17536b
+
+UnknownText_0x17536b: ; 0x17536b
+	text "Have I ever faced"
+	line "a wild @"
+	text_from_ram StringBuffer4
+	text "?"
+
+	para "You need to ask?"
+
+	para "@"
+	text_from_ram StringBuffer4
+	text " I've"
+	line "beaten on numerous"
+	cont "occasions!"
+	done
+; 0x1753c5
+
+UnknownText_0x1753c5: ; 0x1753c5
+	text "Have I ever failed"
+	line "to catch a wild"
+	cont "#MON?"
+
+	para "You need to ask?"
+
+	para "I would never fail"
+	line "to catch a wild"
+
+	para "@"
+	text_from_ram StringBuffer4
+	text "…"
+	line "Oh! Never mind!"
+	done
+; 0x17543a
+
+UnknownText_0x17543a: ; 0x17543a
+	text "We are going to"
+	line "battle!"
+
+	para "The place shall be"
+	line "@"
+	text_from_ram StringBuffer5
+	text "!"
+
+	para "Don't make me"
+	line "wait! Got it?"
+	done
+; 0x175488
+
+UnknownText_0x175488: ; 0x175488
+	text "Fine, you may go."
+	done
+; 0x17549b
+
+UnknownText_0x17549b: ; 0x17549b
+	text "Don't be too proud"
+	line "just because you"
+
+	para "happened to beat"
+	line "me… "
+
+	para "It was a fluke!"
+	done
+; 0x1754e5
+
+UnknownText_0x1754e5: ; 0x1754e5
+	text "What are you"
+	line "doing?"
+
+	para "I told you that"
+	line "the place was"
+
+	para "@"
+	text_from_ram StringBuffer5
+	text "!"
+	line "Don't try to run!"
+	done
+; 0x175530
+
+UnknownText_0x175530: ; 0x175530
+	text "My @"
+	text_from_ram StringBuffer4
+	text "'s"
+	line "looking sharper"
+	cont "than before!"
+
+	para "I doubt there's a"
+	line "#MON as cool as"
+
+	para "this guy in your"
+	line "party!"
+	done
+; 0x175591
+
+UnknownText_0x175591: ; 0x175591
+	text "Oh yeah, I took"
+	line "down a @"
+	text_from_ram StringBuffer4
+	text ""
+	para "in the wild the"
+	line "other day."
+
+	para "It was a cakewalk."
+	line "Well, I guess it"
+
+	para "can't be helped,"
+	line "us being so tough."
+	done
+; 0x175611
+
+UnknownText_0x175611: ; 0x175611
+	text "Oh yeah, I saw a"
+	line "wild @"
+	text_from_ram StringBuffer4
+	text "!"
+
+	para "I thought about"
+	line "going for it, but"
+
+	para "I decided to work"
+	line "with my one-and-"
+
+	para "only right to the"
+	line "extreme end."
+	done
+; 0x175693
+
+UnknownText_0x175693: ; 0x175693
+	text "Let's get together"
+	line "and battle!"
+
+	para "I promise things"
+	line "will be different!"
+
+	para "@"
+	text_from_ram StringBuffer5
+	text "'s"
+	line "where I'll be."
+
+	para "Give me a shout"
+	line "when you come."
+	done
+; 0x17570a
+
+UnknownText_0x17570a: ; 0x17570a
+	text "All right. Later!"
+	done
+; 0x17571d
+
+UnknownText_0x17571d: ; 0x17571d
+	text "I'm checking out"
+	line "@"
+	text_from_ram StringBuffer4
+	text "'s moves"
+
+	para "and devising some"
+	line "strategies."
+
+	para "When I come up"
+	line "with a good one,"
+	cont "let's battle!"
+	done
+; 0x175786
+
+UnknownText_0x175786: ; 0x175786
+	text "What's keeping"
+	line "you, <PLAYER>!"
+
+	para "Let's get down and"
+	line "battle already!"
+
+	para "I'm waiting on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "!"
+	done
+; 0x1757d4
+
+UnknownText_0x1757d4: ; 0x1757d4
+	text "Are your #MON"
+	line "growing?"
+
+	para "My #MON are"
+	line "growing a bit too"
+
+	para "quickly for me."
+	line "It's overwhelming!"
+
+	para "@"
+	text_from_ram StringBuffer4
+	text "'s grow-"
+	line "ing especially"
+
+	para "quickly. I think"
+	line "it'll get tough."
+	done
+; 0x175869
+
+UnknownText_0x175869: ; 0x175869
+	text "Oh yeah, we KO'd a"
+	line "wild @"
+	text_from_ram StringBuffer4
+	text ""
+	para "with one hit a"
+	line "while back."
+
+	para "It went down so"
+	line "easily, I felt a"
+
+	para "little sorry for"
+	line "the poor thing."
+	done
+; 0x1758e4
+
+UnknownText_0x1758e4: ; 0x1758e4
+	text "Oh yeah, a wild"
+	line "@"
+	text_from_ram StringBuffer4
+	text " got"
+
+	para "away from me at"
+	line "the last second."
+
+	para "I know it's a"
+	line "common #MON…"
+
+	para "But it does annoy"
+	line "me that it got"
+
+	para "away when I almost"
+	line "had it."
+	done
+; 0x175976
+
+UnknownText_0x175976: ; 0x175976
+	text "Do you feel like a"
+	line "#MON battle?"
+
+	para "It won't be like"
+	line "last time!"
+
+	para "@"
+	text_from_ram StringBuffer5
+	text "'s"
+	line "where I'll be."
+
+	para "Let me know when"
+	line "you get there."
+	done
+; 0x1759e7
+
+UnknownText_0x1759e7: ; 0x1759e7
+	text "See you later!"
+	done
+; 0x1759f7
+
+UnknownText_0x1759f7: ; 0x1759f7
+	text "The Bug-Catching"
+	line "Contest is at the"
+
+	para "NATIONAL PARK"
+	line "today."
+
+	para "Are you going,"
+	line "<PLAY_G>?"
+
+	para "I'm trying to make"
+	line "up my mind."
+	done
+; 0x175a60
+
+UnknownText_0x175a60: ; 0x175a60
+	text "I found all kinds"
+	line "of BERRIES. If you"
+
+	para "want, I'll share"
+	line "some with you."
+
+	para "I'll be waiting on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "."
+	done
+; 0x175abe
+
+UnknownText_0x175abe: ; 0x175abe
+	text "Huh? BERRIES?"
+
+	para "Sorry, I haven't"
+	line "found any yet."
+
+	para "I'll call you if I"
+	line "find any. Will you"
+	cont "please wait?"
+	done
+; 0x175b1e
+
+UnknownText_0x175b1e: ; 0x175b1e
+	text "Let's battle"
+	line "already!"
+
+	para "@"
+	text_from_ram StringBuffer5
+	text " is"
+	line "where I am."
+
+	para "Please get here as"
+	line "soon as you can!"
+	done
+; 0x175b6d
+
+UnknownText_0x175b6d: ; 0x175b6d
+	text "How come you're"
+	line "not here yet?"
+
+	para "@"
+	text_from_ram StringBuffer5
+	text " is"
+	line "where I am."
+
+	para "Please get here as"
+	line "soon as you can!"
+	done
+; 0x175bc4
+
+UnknownText_0x175bc4: ; 0x175bc4
+	text "I've been spending"
+	line "more time with my"
+
+	para "@"
+	text_from_ram StringBuffer4
+	text " than I"
+	line "have with my kids."
+
+	para "That's a bit sad,"
+	line "actually."
+	done
+; 0x175c24
+
+UnknownText_0x175c24: ; 0x175c24
+	text "I just beat a wild"
+	line "@"
+	text_from_ram StringBuffer4
+	text "."
+
+	para "I told my kid, but"
+	line "he scoffed that he"
+
+	para "could do the same"
+	line "thing easily."
+
+	para "Boy, has he gotten"
+	line "cocky…"
+	done
+; 0x175c9f
+
+UnknownText_0x175c9f: ; 0x175c9f
+	text "Yesterday a wild"
+	line "@"
+	text_from_ram StringBuffer4
+	text " slipped"
+
+	para "away from me, in"
+	line "front of my kid."
+
+	para "I was feeling down"
+	line "about it until he"
+
+	para "shared his #"
+	line "BALLS with me."
+
+	para "Hahah, that sure"
+	line "made my day!"
+	done
+; 0x175d40
+
+UnknownText_0x175d40: ; 0x175d40
+	text "What do you say to"
+	line "a battle with me?"
+
+	para "Good, you're going"
+	line "to do it!"
+
+	para "For a kid, you're"
+	line "quite agreeable."
+
+	para "@"
+	text_from_ram StringBuffer5
+	text " is"
+	line "the spot!"
+	done
+; 0x175db7
+
+UnknownText_0x175db7: ; 0x175db7
+	text "You call your mom"
+	line "sometimes too!"
+	done
+; 0x175dd9
+
+UnknownText_0x175dd9: ; 0x175dd9
+	text "Listen, I… Yowch!"
+
+	para "Uh, sorry! See,"
+	line "@"
+	text_from_ram StringBuffer4
+	text " are"
+
+	para "biting like there"
+	line "is no tomorrow"
+
+	para "over here on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "!"
+
+	para "Aiyee! Ouch!"
+	line "One jabbed me!"
+
+	para "Heh, they're some"
+	line "kind of feisty!"
+
+	para "<PLAY_G>, you have"
+	line "to see this rare"
+
+	para "sight! Get ready"
+	line "to fish!"
+	done
+; 0x175eaf
+
+UnknownText_0x175eaf: ; 0x175eaf
+	text "Yeah, I know."
+
+	para "You're looking for"
+	line "rare #MON."
+
+	para "Recently, all I've"
+	line "been catching are"
+	cont "MAGIKARP, though…"
+	done
+; 0x175f11
+
+UnknownText_0x175f11: ; 0x175f11
+	text "So where are you?"
+	line "I'm waiting for"
+
+	para "you to show up on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "."
+
+	para "You shouldn't make"
+	line "your elders wait!"
+	done
+; 0x175f70
+
+UnknownText_0x175f70: ; 0x175f70
+	text "Hey, what's the"
+	line "matter with you?"
+
+	para "Aren't you coming"
+	line "over to fish for"
+	cont "QWILFISH?"
+
+	para "I'm on ROUTE 32,"
+	line "so hurry up!"
+	done
+; 0x175fda
+
+UnknownText_0x175fda: ; 0x175fda
+	text "Oh, you have to"
+	line "hear this."
+
+	para "My @"
+	text_from_ram StringBuffer4
+	text " is"
+	line "so adorable!"
+
+	para "It always wants to"
+	line "nuzzle me!"
+	done
+; 0x17602d
+
+UnknownText_0x17602d: ; 0x17602d
+	text "And, and! Um…"
+
+	para "We beat a wild"
+	line "@"
+	text_from_ram StringBuffer4
+	text " with"
+
+	para "just one hit a"
+	line "little while ago."
+
+	para "We felt sorry for"
+	line "it, though."
+	done
+; 0x176095
+
+UnknownText_0x176095: ; 0x176095
+	text "And, and! Uh…"
+
+	para "We just saw a"
+	line "really gorgeous"
+	cont "@"
+	text_from_ram StringBuffer4
+	text "."
+
+	para "But I was on the"
+	line "phone, so it got"
+
+	para "away. It made us"
+	line "really angry!"
+	done
+; 0x17610a
+
+UnknownText_0x17610a: ; 0x17610a
+	text "Hi! Do you have"
+	line "some free time?"
+
+	para "I've got all sorts"
+	line "of time. If you're"
+
+	para "free, would you"
+	line "like to battle?"
+
+	para "I'll be waiting on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "."
+
+	para "Let me know when"
+	line "you get here!"
+	done
+; 0x1761a7
+
+UnknownText_0x1761a7: ; 0x1761a7
+	text "Hi, TANIA. How are"
+	line "you? This is LIZ."
+
+	para "I'm fine, but I'm"
+	line "bored silly!"
+
+	para "Huh… Wrong number?"
+	line "Oops! Sorry!"
+	done
+; 0x17620a
+
+UnknownText_0x17620a: ; 0x17620a
+	text "OK, I'll call you"
+	line "later!"
+	done
+; 0x176223
+
+UnknownText_0x176223: ; 0x176223
+	text "Listen, listen!"
+
+	para "I was listening to"
+	line "the radio in the"
+
+	para "RUINS OF ALPH when"
+	line "an odd broadcast"
+
+	para "suddenly cut it on"
+	line "the regular show."
+
+	para "I wonder what it"
+	line "was. So strange!"
+	done
+; 0x1762c3
+
+UnknownText_0x1762c3: ; 0x1762c3
+	text "Listen, listen!"
+
+	para "Don't you think"
+	line "FALKNER of VIOLET"
+
+	para "GYM is cool and"
+	line "handsome?"
+
+	para "But they say his"
+	line "dad, who's out"
+
+	para "training on the"
+	line "road, is even more"
+
+	para "cool and handsome"
+	line "than FALKNER."
+
+	para "I wish I could"
+	line "meet him!"
+	done
+; 0x17638a
+
+UnknownText_0x17638a: ; 0x17638a
+	text "Listen, listen!"
+
+	para "Do you know EARL,"
+	line "the teacher who"
+
+	para "runs the #MON"
+	line "ACADEMY in VIOLET?"
+
+	para "I saw him doing"
+	line "pirouettes while"
+
+	para "he was running. It"
+	line "was wildly funny!"
+	done
+; 0x176424
+
+UnknownText_0x176424: ; 0x176424
+	text "Listen, listen!"
+
+	para "I collect #MON"
+	line "plush dolls."
+
+	para "But I can't seem"
+	line "to get a hold of a"
+
+	para "SURF PIKACHU DOLL."
+	line "None of my friends"
+
+	para "have it. It must"
+	line "be totally rare!"
+
+	para "You could really"
+	line "brag about it if"
+	cont "you had one."
+	done
+; 0x1764eb
+
+UnknownText_0x1764eb: ; 0x1764eb
+	text "Listen, listen!"
+
+	para "Do you know about"
+	line "MOOMOO MILK?"
+
+	para "You can buy it at"
+	line "MOOMOO FARM."
+
+	para "It's supposed to"
+	line "be good for health"
+
+	para "and beauty."
+	line "I really want to"
+
+	para "try some. I bet"
+	line "it's delicious!"
+	done
+; 0x176599
+
+UnknownText_0x176599: ; 0x176599
+	text "Listen, listen!"
+
+	para "There's a #MON"
+	line "SALON in GOLDENROD"
+
+	para "that's run by two"
+	line "brothers."
+
+	para "The older brother"
+	line "is good, but the"
+
+	para "younger one really"
+	line "isn't."
+
+	para "But sometimes the"
+	line "younger one does a"
+
+	para "better job than"
+	line "his brother."
+
+	para "Every time I go, I"
+	line "have a hard time"
+
+	para "trying to decide"
+	line "whom I should use…"
+	done
+; 0x1766ac
+
+UnknownText_0x1766ac: ; 0x1766ac
+	text "Listen, listen!"
+
+	para "GOLDENROD GYM's"
+	line "WHITNEY began"
+
+	para "battling only a"
+	line "little while ago!"
+
+	para "But the #MON"
+	line "LEAGUE chose her"
+	cont "as a GYM LEADER!"
+
+	para "I bet she must be"
+	line "totally talented."
+	done
+; 0x17674f
+
+UnknownText_0x17674f: ; 0x17674f
+	text "Listen, listen!"
+
+	para "Have you ever"
+	line "taken part in a"
+
+	para "Bug-Catching"
+	line "Contest at the"
+	cont "NATIONAL PARK?"
+
+	para "I did once, but"
+	line "all I could catch"
+	cont "was a CATERPIE."
+
+	para "But guess what!"
+
+	para "I won with that"
+	line "CATERPIE. Isn't"
+	cont "that great?"
+	done
+; 0x176816
+
+UnknownText_0x176816: ; 0x176816
+	text "Listen, listen!"
+
+	para "I saw a beautiful"
+	line "@"
+	text_from_ram StringBuffer4
+	text "!"
+
+	para "I wish I could"
+	line "become a beautiful"
+	cont "@"
+	text_from_ram StringBuffer4
+	text " too."
+	done
+; 0x17686d
+
+UnknownText_0x17686d: ; 0x17686d
+	text "Listen, listen!"
+
+	para "Uh… Um… Whoops!"
+
+	para "I forgot what I"
+	line "was going to say!"
+	done
+; 0x1768b0
+
+UnknownText_0x1768b0: ; 0x1768b0
+	text "Listen, listen!"
+
+	para "My @"
+	text_from_ram StringBuffer4
+	text "…"
+	line "it… so pretty…"
+
+	para "and… giggle… so"
+	line "awesome… yes… but…"
+
+	para "very much… eeek!"
+	line "And… lovely…"
+
+	para "Just ravishing…"
+	line "Oh, too much!"
+
+	para "…Hug it… sleeping…"
+	line "That's right…"
+
+	para "pretty… sigh… So"
+	line "nice… Cute…"
+
+	para "…Oops! Look at the"
+	line "time! I chatted"
+	cont "too long!"
+
+	para "I'm sorry I took"
+	line "so much of your"
+
+	para "time!"
+	line "I love chatting!"
+	done
+; 0x1769da
+
+UnknownText_0x1769da: ; 0x1769da
+	text "I've got too much"
+	line "time on my hands!"
+
+	para "Let's battle right"
+	line "away!"
+
+	para "I'll be waiting on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "!"
+	done
+; 0x176a2f
+
+UnknownText_0x176a2f: ; 0x176a2f
+	text "The other day, I"
+	line "was watching my"
+
+	para "@"
+	text_from_ram StringBuffer4
+	text " eat"
+	line "some BERRIES."
+
+	para "It looked like it"
+	line "was enjoying its"
+
+	para "meal, so I decided"
+	line "to try some."
+
+	para "I'm not sure if"
+	line "people should eat"
+
+	para "that stuff, but it"
+	line "was delicious!"
+	done
+; 0x176aef
+
+UnknownText_0x176aef: ; 0x176aef
+	text "Lately, I've been"
+	line "running across"
+
+	para "wild @"
+	text_from_ram StringBuffer4
+	text ""
+	line "quite often."
+
+	para "They're easily"
+	line "taken care of."
+	done
+; 0x176b45
+
+UnknownText_0x176b45: ; 0x176b45
+	text "Oh yeah, I was"
+	line "battling this"
+
+	para "@"
+	text_from_ram StringBuffer4
+	text " the"
+	line "other day…"
+
+	para "It took off when I"
+	line "got distracted by"
+	cont "a passing BEAUTY."
+
+	para "Learn from my"
+	line "mistake--always"
+
+	para "stay focused on"
+	line "the job at hand!"
+	done
+; 0x176bee
+
+UnknownText_0x176bee: ; 0x176bee
+	text "Come on--let's"
+	line "battle right now!"
+
+	para "@"
+	text_from_ram StringBuffer5
+	text " is"
+	line "where I am."
+
+	para "Come on down if"
+	line "you feel up to it!"
+	done
+; 0x176c47
+
+UnknownText_0x176c47: ; 0x176c47
+	text "All right then!"
+	line "Be good!"
+	done
+; 0x176c61
+
+UnknownText_0x176c61: ; 0x176c61
+	text "<PLAYER>! It's"
+	line "mind-blowing!"
+
+	para "I took a hike in"
+	line "@"
+	text_from_ram StringBuffer5
+	text ""
+	cont "yesterday, see?"
+
+	para "Well, there were"
+	line "tons of @"
+	text_from_ram StringBuffer4
+	text ""
+	para "around! You have"
+	line "to see it!"
+
+	para "I get this feeling"
+	line "that @"
+	text_from_ram StringBuffer4
+	text ""
+	para "may be timid."
+	line "I didn't see any"
+
+	para "where there are"
+	line "strong #MON."
+	done
+; 0x176d32
+
+UnknownText_0x176d32: ; 0x176d32
+	text "Rare #MON?"
+
+	para "Hey, sorry! I was"
+	line "too focused on my"
+
+	para "hike, so I wasn't"
+	line "paying attention."
+	done
+; 0x176d85
+
+UnknownText_0x176d85: ; 0x176d85
+	text "Hello! You haven't"
+	line "forgotten about"
+
+	para "our battle, have"
+	line "you?"
+
+	para "@"
+	text_from_ram StringBuffer5
+	text "!"
+	line "I'm waiting!"
+	done
+; 0x176dd1
+
+UnknownText_0x176dd1: ; 0x176dd1
+	text "Hello? What? Where"
+	line "is DUNSPARCE?"
+
+	para "DARK CAVE! Hurry!"
+
+	para "I know I've said"
+	line "it before, but"
+
+	para "DUNSPARCE don't"
+	line "appear when there"
+
+	para "are strong #MON"
+	line "around."
+	done
+; 0x176e5d
+
+UnknownText_0x176e5d: ; 0x176e5d
+	text "My @"
+	text_from_ram StringBuffer4
+	text " is"
+	line "looking more and"
+
+	para "more like me. It's"
+	line "getting cuter!"
+	done
+; 0x176e9c
+
+UnknownText_0x176e9c: ; 0x176e9c
+	text "And, you know?"
+
+	para "Now we can KO"
+	line "@"
+	text_from_ram StringBuffer4
+	text " easily."
+
+	para "I should challenge"
+	line "the GOLDENROD GYM."
+	done
+; 0x176eee
+
+UnknownText_0x176eee: ; 0x176eee
+	text "And, you know?"
+	line "We just failed to"
+
+	para "beat @"
+	text_from_ram StringBuffer4
+	text " by"
+	line "a tiny margin."
+
+	para "I'm guessing my"
+	line "#MON's levels"
+
+	para "aren't high enough"
+	line "yet…"
+	done
+; 0x176f60
+
+UnknownText_0x176f60: ; 0x176f60
+	text "You must be a lot"
+	line "better now, huh?"
+
+	para "How about showing"
+	line "me your technique"
+
+	para "in a real battle"
+	line "with me?"
+
+	para "I'll be waiting on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "."
+	done
+; 0x176fdb
+
+UnknownText_0x176fdb: ; 0x176fdb
+	text "See you later!"
+	done
+; 0x176feb
+
+UnknownText_0x176feb: ; 0x176feb
+	text "This is it--the"
+	line "one we've all been"
+	cont "waiting for!"
+
+	para "GOLDENROD DEPT."
+	line "STORE's bargain"
+	cont "sale is on now!"
+
+	para "Want it cheap?"
+	line "Want it lots?"
+
+	para "Don't miss this"
+	line "GOLDENROD chance!"
+
+	para "Huh? I sound like"
+	line "a huckster?"
+
+	para "Well, yeah. I was"
+	line "mimicking them…"
+
+	para "Anyway, you've got"
+	line "to get there as"
+	cont "soon as you can!"
+	done
+; 0x1770fb
+
+UnknownText_0x1770fb: ; 0x1770fb
+	text "I'm saving up for"
+	line "the next bargain"
+
+	para "sale. When's the"
+	line "next one?"
+	done
+; 0x177138
+
+UnknownText_0x177138: ; 0x177138
+	text "Where are you?"
+
+	para "Let's have our"
+	line "battle soon!"
+
+	para "I'll be waiting on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "."
+	done
+; 0x17717c
+
+UnknownText_0x17717c: ; 0x17717c
+	text "Haven't you gone"
+	line "to GOLDENROD DEPT."
+
+	para "STORE? I've scoped"
+	line "it out already!"
+
+	para "They had some real"
+	line "bargains."
+
+	para "You should get"
+	line "there quickly."
+	done
+; 0x1771fd
+
+UnknownText_0x1771fd: ; 0x1771fd
+	text "My @"
+	text_from_ram StringBuffer4
+	text " and"
+	line "I are getting more"
+
+	para "in sync with each"
+	line "other."
+	done
+; 0x177237
+
+UnknownText_0x177237: ; 0x177237
+	text "We battled a wild"
+	line "@"
+	text_from_ram StringBuffer4
+	text " and"
+
+	para "managed to drop it"
+	line "in a close match."
+
+	para "We're getting into"
+	line "the groove!"
+	done
+; 0x177297
+
+UnknownText_0x177297: ; 0x177297
+	text "But, you know?"
+
+	para "I still haven't"
+	line "caught @"
+	text_from_ram StringBuffer4
+	text "."
+
+	para "It's getting past"
+	line "frustrating…"
+	done
+; 0x1772e2
+
+UnknownText_0x1772e2: ; 0x1772e2
+	text "Would you be my"
+	line "practice partner"
+	cont "again sometime?"
+
+	para "I'll be waiting on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "."
+
+	para "…Could you take it"
+	line "a little easier on"
+	cont "me next time?"
+	done
+; 0x177361
+
+UnknownText_0x177361: ; 0x177361
+	text "Bye! Let's chat"
+	line "again!"
+	done
+; 0x177378
+
+UnknownText_0x177378: ; 0x177378
+	text "Have you heard"
+	line "about TEAM ROCKET?"
+
+	para "They've taken over"
+	line "the RADIO TOWER in"
+	cont "GOLDENROD."
+
+	para "Are the people"
+	line "inside safe?"
+	done
+; 0x1773e7
+
+UnknownText_0x1773e7: ; 0x1773e7
+	text "I picked up some-"
+	line "thing nice today."
+
+	para "I want you to have"
+	line "it, so I called!"
+
+	para "You will come for"
+	line "it, won't you?"
+
+	para "@"
+	text_from_ram StringBuffer5
+	text " is"
+	line "where I am."
+	done
+; 0x177465
+
+UnknownText_0x177465: ; 0x177465
+	text "Sorry, I haven't"
+	line "found anything"
+
+	para "useful yet…"
+	line "I promise, if I"
+
+	para "find anything, you"
+	line "can have it!"
+	done
+; 0x1774c1
+
+UnknownText_0x1774c1: ; 0x1774c1
+	text "Oh, <PLAY_G>!"
+	line "How soon can I"
+
+	para "expect to see you"
+	line "for our battle?"
+
+	para "Don't forget,"
+	line "@"
+	text_from_ram StringBuffer5
+	text "!"
+	done
+; 0x17750e
+
+UnknownText_0x17750e: ; 0x17750e
+	text "I'm getting really"
+	line "impatient, waiting"
+
+	para "to give you my"
+	line "present!"
+
+	para "Hurry over to"
+	line "@"
+	text_from_ram StringBuffer5
+	text "!"
+	done
+; 0x177561
--- a/text/phone/extra3.asm
+++ /dev/null
@@ -1,1927 +1,0 @@
-UnknownText_0x174000: ; 0x174000
-	text "Hi, <PLAY_G>!"
-	line "Our BICYCLE sales"
-
-	para "have gone through"
-	line "the roof!"
-
-	para "We owe it all to"
-	line "your advertising"
-
-	para "by riding around"
-	line "on our BICYCLE."
-
-	para "As our way of say-"
-	line "ing thanks, please"
-
-	para "keep that BICYCLE."
-	line "Thanks again!"
-	done
-; 0x1740c0
-
-UnknownText_0x1740c0: ; 0x1740c0
-	text "My @"
-	text_from_ram StringBuffer4
-	text "'s"
-	line "intelligence keeps"
-
-	para "rising. It might"
-	line "be smarter than"
-	cont "yours!"
-	done
-; 0x174106
-
-UnknownText_0x174106: ; 0x174106
-	text "The other day, I"
-	line "easily defeated a"
-	cont "@"
-	text_from_ram StringBuffer4
-	text "."
-
-	para "I think swapping"
-	line "tips with you is"
-	cont "starting to help."
-	done
-; 0x174165
-
-UnknownText_0x174165: ; 0x174165
-	text "Oh, and listen."
-	line "I missed catching"
-
-	para "a @"
-	text_from_ram StringBuffer4
-	text " by"
-	line "just a tiny bit."
-
-	para "If I'd been a bit"
-	line "more informed, I'm"
-
-	para "sure I would've"
-	line "caught it…"
-	done
-; 0x1741e1
-
-UnknownText_0x1741e1: ; 0x1741e1
-	text "Do you want to"
-	line "battle? I'll show"
-
-	para "you how to battle"
-	line "logically."
-
-	para "I'll be in"
-	line "@"
-	text_from_ram StringBuffer5
-	text "."
-
-	para "Give me a shout if"
-	line "you're nearby."
-	done
-; 0x174251
-
-UnknownText_0x174251: ; 0x174251
-	text "See you later!"
-	done
-; 0x174261
-
-UnknownText_0x174261: ; 0x174261
-	text "Did you know?"
-
-	para "When it's raining,"
-	line "THUNDER is sure to"
-	cont "strike."
-	done
-; 0x17429d
-
-UnknownText_0x17429d: ; 0x17429d
-	text "Did you know…?"
-
-	para "If you use DEFENSE"
-	line "CURL, ROLLOUT's"
-
-	para "power goes way up"
-	line "past normal."
-	done
-; 0x1742ee
-
-UnknownText_0x1742ee: ; 0x1742ee
-	text "Did you know…?"
-
-	para "If the sunlight is"
-	line "harsh, SOLARBEAM"
-
-	para "doesn't need to be"
-	line "charged up."
-	done
-; 0x174340
-
-UnknownText_0x174340: ; 0x174340
-	text "Did you know…?"
-
-	para "If the opponent"
-	line "uses MINIMIZE,"
-
-	para "your STOMP becomes"
-	line "more powerful."
-	done
-; 0x174391
-
-UnknownText_0x174391: ; 0x174391
-	text "Did you know…?"
-
-	para "If your opponent"
-	line "is FLYing, your"
-
-	para "GUST becomes much"
-	line "more powerful."
-	done
-; 0x1743e3
-
-UnknownText_0x1743e3: ; 0x1743e3
-	text "Did you know…?"
-
-	para "If your opponent"
-	line "is FLYing, your"
-
-	para "TWISTER becomes"
-	line "more powerful."
-	done
-; 0x174433
-
-UnknownText_0x174433: ; 0x174433
-	text "Did you know…?"
-
-	para "If your opponent"
-	line "uses DIG, your"
-
-	para "EARTHQUAKE becomes"
-	line "more powerful."
-	done
-; 0x174485
-
-UnknownText_0x174485: ; 0x174485
-	text "Did you know…?"
-
-	para "If your opponent"
-	line "uses DIG, your"
-
-	para "MAGNITUDE becomes"
-	line "more powerful."
-	done
-; 0x1744d6
-
-UnknownText_0x1744d6: ; 0x1744d6
-	text "Did you know…?"
-
-	para "The rock, ground"
-	line "and steel types"
-
-	para "can't be hurt by"
-	line "SANDSTORM."
-	done
-; 0x174522
-
-UnknownText_0x174522: ; 0x174522
-	text "Did you know…?"
-
-	para "If the sunlight is"
-	line "harsh, water-type"
-
-	para "moves become much"
-	line "weaker."
-	done
-; 0x174571
-
-UnknownText_0x174571: ; 0x174571
-	text "Did you know…?"
-
-	para "When it's raining,"
-	line "fire-type moves"
-
-	para "become much weaker"
-	line "than usual."
-	done
-; 0x1745c2
-
-UnknownText_0x1745c2: ; 0x1745c2
-	text "My friend heard"
-	line "some great tips."
-
-	para "He's going to let"
-	line "me in on some."
-
-	para "When he tells me,"
-	line "I'll call right"
-	cont "away and tell you."
-	done
-; 0x174638
-
-UnknownText_0x174638: ; 0x174638
-	text "Hey, <PLAY_G>!"
-
-	para "Do you remember"
-	line "your promise?"
-
-	para "We have to battle"
-	line "soon!"
-
-	para "I'll be at"
-	line "@"
-	text_from_ram StringBuffer5
-	text "."
-	done
-; 0x174688
-
-UnknownText_0x174688: ; 0x174688
-	text "I fancied up my"
-	line "@"
-	text_from_ram StringBuffer4
-	text " and"
-
-	para "made it even cuter"
-	line "than before!"
-	done
-; 0x1746c3
-
-UnknownText_0x1746c3: ; 0x1746c3
-	text "I happened to come"
-	line "across a wild"
-	cont "SNUBBULL recently."
-
-	para "My SNUBBULL, I"
-	line "assure you, was"
-
-	para "far cuter than the"
-	line "wild one."
-	done
-; 0x174734
-
-UnknownText_0x174734: ; 0x174734
-	text "I happened to see"
-	line "a wild MARILL the"
-
-	para "other day."
-	line "Or so I thought."
-
-	para "A closer look"
-	line "showed it was"
-
-	para "@"
-	text_from_ram StringBuffer4
-	text ". I was"
-	line "quite miffed."
-	done
-; 0x1747ac
-
-UnknownText_0x1747ac: ; 0x1747ac
-	text "You can expect a"
-	line "call from me."
-	done
-; 0x1747cc
-
-UnknownText_0x1747cc: ; 0x1747cc
-	text "My husband got"
-	line "some NUGGETS."
-
-	para "If you'd like, you"
-	line "could have one as"
-
-	para "thanks for helping"
-	line "me out."
-
-	para "I'll be at"
-	line "@"
-	text_from_ram StringBuffer5
-	text "."
-
-	para "Please come see me"
-	line "when you can."
-	done
-; 0x17485b
-
-UnknownText_0x17485b: ; 0x17485b
-	text "Are your #MON"
-	line "in prime form?"
-
-	para "Let's chat about"
-	line "#MON again."
-	done
-; 0x174895
-
-UnknownText_0x174895: ; 0x174895
-	text "Pardon?"
-	line "Oh, the NUGGET?"
-
-	para "There's no need to"
-	line "hurry. Come see me"
-
-	para "in @"
-	text_from_ram StringBuffer5
-	text ""
-	line "when you can."
-	done
-; 0x1748ea
-
-UnknownText_0x1748ea: ; 0x1748ea
-	text "Hey, I challenge"
-	line "you to a battle!"
-
-	para "It won't be like"
-	line "last time!"
-
-	para "@"
-	text_from_ram StringBuffer5
-	text "'s"
-	line "where I'm waiting"
-
-	para "for you. Hustle"
-	line "over here pronto!"
-	done
-; 0x174962
-
-UnknownText_0x174962: ; 0x174962
-	text "See ya!"
-	done
-; 0x17496b
-
-UnknownText_0x17496b: ; 0x17496b
-	text "We have to battle"
-	line "again sometime."
-
-	para "You can bet I'm"
-	line "going to keep"
-
-	para "challenging you"
-	line "till I win."
-	done
-; 0x1749c7
-
-UnknownText_0x1749c7: ; 0x1749c7
-	text "Hey, you'd better"
-	line "not have forgotten"
-	cont "about our battle!"
-
-	para "@"
-	text_from_ram StringBuffer5
-	text "!"
-
-	para "Hustle over quick!"
-	line "I'm waiting!"
-	done
-; 0x174a24
-
-UnknownText_0x174a24: ; 0x174a24
-	text "My @"
-	text_from_ram StringBuffer4
-	text ""
-	line "might be greater"
-	cont "than I imagined."
-
-	para "I doubt I'll see a"
-	line "@"
-	text_from_ram StringBuffer4
-	text " that's"
-	cont "better than mine."
-	done
-; 0x174a80
-
-UnknownText_0x174a80: ; 0x174a80
-	text "Oh, and I managed"
-	line "to barely defeat"
-
-	para "@"
-	text_from_ram StringBuffer4
-	text " the"
-	line "other day."
-
-	para "I've never seen a"
-	line "@"
-	text_from_ram StringBuffer4
-	text " get"
-	cont "that strong…"
-
-	para "You shouldn't let"
-	line "your guard down,"
-
-	para "even against a"
-	line "#MON you're"
-	cont "used to seeing."
-	done
-; 0x174b2d
-
-UnknownText_0x174b2d: ; 0x174b2d
-	text "And a while back,"
-	line "I tried to catch a"
-	cont "wild @"
-	text_from_ram StringBuffer4
-	text "."
-
-	para "But it managed to"
-	line "elude me."
-
-	para "One wrong decision"
-	line "could mean total"
-
-	para "failure… You ought"
-	line "to be careful too."
-	done
-; 0x174bc5
-
-UnknownText_0x174bc5: ; 0x174bc5
-	text "Let's battle!"
-
-	para "I'll be waiting on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "."
-
-	para "Give me a shout"
-	line "when you're close."
-	done
-; 0x174c0e
-
-UnknownText_0x174c0e: ; 0x174c0e
-	text "OK, I'll talk to"
-	line "you soon!"
-	done
-; 0x174c29
-
-UnknownText_0x174c29: ; 0x174c29
-	text "I obsess over how"
-	line "to beat you."
-	done
-; 0x174c49
-
-UnknownText_0x174c49: ; 0x174c49
-	text "<PLAY_G>, why"
-	line "aren't you here?"
-
-	para "I'll take you down"
-	line "with @"
-	text_from_ram StringBuffer5
-	text "!"
-	done
-; 0x174c7f
-
-UnknownText_0x174c7f: ; 0x174c7f
-	text "Do you remember my"
-	line "sweet @"
-	text_from_ram StringBuffer4
-	text "?"
-
-	para "@"
-	text_from_ram StringBuffer4
-	text " runs"
-	line "very fast."
-
-	para "It's exhilarating"
-	line "to ride on its"
-
-	para "back when it"
-	line "really gets going."
-	done
-; 0x174cf6
-
-UnknownText_0x174cf6: ; 0x174cf6
-	text "Oh, have you ever"
-	line "seen a @"
-	text_from_ram StringBuffer4
-	text ""
-	cont "before?"
-
-	para "I just battled"
-	line "one…"
-
-	para "It was much faster"
-	line "than I expected."
-
-	para "I was a little"
-	line "shocked."
-
-	para "I still won, of"
-	line "course."
-	done
-; 0x174d86
-
-UnknownText_0x174d86: ; 0x174d86
-	text "Oh, I just saw a"
-	line "wild @"
-	text_from_ram StringBuffer4
-	text "."
-
-	para "I was trying to"
-	line "catch it when I"
-
-	para "noticed that I was"
-	line "all out of #"
-	cont "BALLS."
-
-	para "If you don't check"
-	line "your items, you"
-
-	para "may run out at the"
-	line "worst time."
-
-	para "I hope you learn"
-	line "from my mistake."
-	done
-; 0x174e4e
-
-UnknownText_0x174e4e: ; 0x174e4e
-	text "Do you want to"
-	line "battle? I'm going"
-	cont "to win this time!"
-
-	para "I'll be waiting"
-	line "for you around"
-
-	para "@"
-	text_from_ram StringBuffer5
-	text "."
-	line "Look for me, OK?"
-	done
-; 0x174eb7
-
-UnknownText_0x174eb7: ; 0x174eb7
-	text "OK, bye-bye!"
-	done
-; 0x174ec5
-
-UnknownText_0x174ec5: ; 0x174ec5
-	text "Let's battle again"
-	line "sometime!"
-	done
-; 0x174ee2
-
-UnknownText_0x174ee2: ; 0x174ee2
-	text "Um… <PLAY_G>?"
-	line "What's wrong?"
-
-	para "Did you forget our"
-	line "deal?"
-
-	para "@"
-	text_from_ram StringBuffer5
-	text "."
-
-	para "That's where I'm"
-	line "waiting."
-	done
-; 0x174f2f
-
-UnknownText_0x174f2f: ; 0x174f2f
-	text "Hey listen, my"
-	line "@"
-	text_from_ram StringBuffer4
-	text "'s stick"
-
-	para "has this really"
-	line "delicious aroma."
-
-	para "That aroma gets my"
-	line "appetite going!"
-	done
-; 0x174f90
-
-UnknownText_0x174f90: ; 0x174f90
-	text "A while ago, my"
-	line "FARFETCH'D KO'd"
-	cont "this @"
-	text_from_ram StringBuffer4
-	text "."
-
-	para "You should have"
-	line "seen FARFETCH'D"
-
-	para "wield that stick."
-	line "Amazing stuff!"
-	done
-; 0x174ffd
-
-UnknownText_0x174ffd: ; 0x174ffd
-	text "I ran into a wild"
-	line "@"
-	text_from_ram StringBuffer4
-	text "…"
-
-	para "I was trying to"
-	line "catch it, but it"
-
-	para "took off faster"
-	line "than I thought it"
-
-	para "would. It was a"
-	line "bit disappointing."
-	done
-; 0x17507d
-
-UnknownText_0x17507d: ; 0x17507d
-	text "Want to battle"
-	line "again?"
-
-	para "For some reason,"
-	line "my FARFETCH'D is"
-
-	para "all worked up and"
-	line "raring to go."
-
-	para "@"
-	text_from_ram StringBuffer5
-	text "'s"
-	line "where I'm at."
-
-	para "Keep an eye out"
-	line "for me, OK?"
-	done
-; 0x175106
-
-UnknownText_0x175106: ; 0x175106
-	text "Be seeing you!"
-	done
-; 0x175116
-
-UnknownText_0x175116: ; 0x175116
-	text "My FARFETCH'D had"
-	line "something pretty"
-	cont "in its beak."
-
-	para "Like I promised,"
-	line "you can have it."
-
-	para "Catch up to me on"
-	line "@"
-	text_from_ram StringBuffer5
-	text ","
-
-	para "and I'll let you"
-	line "have it."
-	done
-; 0x17519b
-
-UnknownText_0x17519b: ; 0x17519b
-	text "I haven't gotten"
-	line "what I promised"
-	cont "you yet."
-
-	para "I'll call you as"
-	line "soon as I get it,"
-
-	para "so could you wait"
-	line "a little longer?"
-	done
-; 0x17520a
-
-UnknownText_0x17520a: ; 0x17520a
-	text "<PLAY_G>, could you"
-	line "hurry over?"
-
-	para "FARFETCH'D is"
-	line "agitated."
-
-	para "If you don't come"
-	line "soon, it might"
-
-	para "smack me with its"
-	line "stick!"
-
-	para "@"
-	text_from_ram StringBuffer5
-	text "!"
-
-	para "Please come as"
-	line "soon as you can!"
-	done
-; 0x17529c
-
-UnknownText_0x17529c: ; 0x17529c
-	text "What's wrong?"
-
-	para "Don't you want"
-	line "this gift?"
-
-	para "Catch up to me on"
-	line "@"
-	text_from_ram StringBuffer5
-	text ","
-
-	para "and I'll let you"
-	line "have it."
-	done
-; 0x1752f5
-
-UnknownText_0x1752f5: ; 0x1752f5
-	text "Listen, dear…"
-
-	para "Do you recall my"
-	line "@"
-	text_from_ram StringBuffer4
-	text "?"
-
-	para "Yes, exactly. That"
-	line "lovely @"
-	text_from_ram StringBuffer4
-	text "."
-
-	para "Wouldn't you agree"
-	line "it's a perfect"
-	cont "match for me?"
-	done
-; 0x17536b
-
-UnknownText_0x17536b: ; 0x17536b
-	text "Have I ever faced"
-	line "a wild @"
-	text_from_ram StringBuffer4
-	text "?"
-
-	para "You need to ask?"
-
-	para "@"
-	text_from_ram StringBuffer4
-	text " I've"
-	line "beaten on numerous"
-	cont "occasions!"
-	done
-; 0x1753c5
-
-UnknownText_0x1753c5: ; 0x1753c5
-	text "Have I ever failed"
-	line "to catch a wild"
-	cont "#MON?"
-
-	para "You need to ask?"
-
-	para "I would never fail"
-	line "to catch a wild"
-
-	para "@"
-	text_from_ram StringBuffer4
-	text "…"
-	line "Oh! Never mind!"
-	done
-; 0x17543a
-
-UnknownText_0x17543a: ; 0x17543a
-	text "We are going to"
-	line "battle!"
-
-	para "The place shall be"
-	line "@"
-	text_from_ram StringBuffer5
-	text "!"
-
-	para "Don't make me"
-	line "wait! Got it?"
-	done
-; 0x175488
-
-UnknownText_0x175488: ; 0x175488
-	text "Fine, you may go."
-	done
-; 0x17549b
-
-UnknownText_0x17549b: ; 0x17549b
-	text "Don't be too proud"
-	line "just because you"
-
-	para "happened to beat"
-	line "me… "
-
-	para "It was a fluke!"
-	done
-; 0x1754e5
-
-UnknownText_0x1754e5: ; 0x1754e5
-	text "What are you"
-	line "doing?"
-
-	para "I told you that"
-	line "the place was"
-
-	para "@"
-	text_from_ram StringBuffer5
-	text "!"
-	line "Don't try to run!"
-	done
-; 0x175530
-
-UnknownText_0x175530: ; 0x175530
-	text "My @"
-	text_from_ram StringBuffer4
-	text "'s"
-	line "looking sharper"
-	cont "than before!"
-
-	para "I doubt there's a"
-	line "#MON as cool as"
-
-	para "this guy in your"
-	line "party!"
-	done
-; 0x175591
-
-UnknownText_0x175591: ; 0x175591
-	text "Oh yeah, I took"
-	line "down a @"
-	text_from_ram StringBuffer4
-	text ""
-	para "in the wild the"
-	line "other day."
-
-	para "It was a cakewalk."
-	line "Well, I guess it"
-
-	para "can't be helped,"
-	line "us being so tough."
-	done
-; 0x175611
-
-UnknownText_0x175611: ; 0x175611
-	text "Oh yeah, I saw a"
-	line "wild @"
-	text_from_ram StringBuffer4
-	text "!"
-
-	para "I thought about"
-	line "going for it, but"
-
-	para "I decided to work"
-	line "with my one-and-"
-
-	para "only right to the"
-	line "extreme end."
-	done
-; 0x175693
-
-UnknownText_0x175693: ; 0x175693
-	text "Let's get together"
-	line "and battle!"
-
-	para "I promise things"
-	line "will be different!"
-
-	para "@"
-	text_from_ram StringBuffer5
-	text "'s"
-	line "where I'll be."
-
-	para "Give me a shout"
-	line "when you come."
-	done
-; 0x17570a
-
-UnknownText_0x17570a: ; 0x17570a
-	text "All right. Later!"
-	done
-; 0x17571d
-
-UnknownText_0x17571d: ; 0x17571d
-	text "I'm checking out"
-	line "@"
-	text_from_ram StringBuffer4
-	text "'s moves"
-
-	para "and devising some"
-	line "strategies."
-
-	para "When I come up"
-	line "with a good one,"
-	cont "let's battle!"
-	done
-; 0x175786
-
-UnknownText_0x175786: ; 0x175786
-	text "What's keeping"
-	line "you, <PLAYER>!"
-
-	para "Let's get down and"
-	line "battle already!"
-
-	para "I'm waiting on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "!"
-	done
-; 0x1757d4
-
-UnknownText_0x1757d4: ; 0x1757d4
-	text "Are your #MON"
-	line "growing?"
-
-	para "My #MON are"
-	line "growing a bit too"
-
-	para "quickly for me."
-	line "It's overwhelming!"
-
-	para "@"
-	text_from_ram StringBuffer4
-	text "'s grow-"
-	line "ing especially"
-
-	para "quickly. I think"
-	line "it'll get tough."
-	done
-; 0x175869
-
-UnknownText_0x175869: ; 0x175869
-	text "Oh yeah, we KO'd a"
-	line "wild @"
-	text_from_ram StringBuffer4
-	text ""
-	para "with one hit a"
-	line "while back."
-
-	para "It went down so"
-	line "easily, I felt a"
-
-	para "little sorry for"
-	line "the poor thing."
-	done
-; 0x1758e4
-
-UnknownText_0x1758e4: ; 0x1758e4
-	text "Oh yeah, a wild"
-	line "@"
-	text_from_ram StringBuffer4
-	text " got"
-
-	para "away from me at"
-	line "the last second."
-
-	para "I know it's a"
-	line "common #MON…"
-
-	para "But it does annoy"
-	line "me that it got"
-
-	para "away when I almost"
-	line "had it."
-	done
-; 0x175976
-
-UnknownText_0x175976: ; 0x175976
-	text "Do you feel like a"
-	line "#MON battle?"
-
-	para "It won't be like"
-	line "last time!"
-
-	para "@"
-	text_from_ram StringBuffer5
-	text "'s"
-	line "where I'll be."
-
-	para "Let me know when"
-	line "you get there."
-	done
-; 0x1759e7
-
-UnknownText_0x1759e7: ; 0x1759e7
-	text "See you later!"
-	done
-; 0x1759f7
-
-UnknownText_0x1759f7: ; 0x1759f7
-	text "The Bug-Catching"
-	line "Contest is at the"
-
-	para "NATIONAL PARK"
-	line "today."
-
-	para "Are you going,"
-	line "<PLAY_G>?"
-
-	para "I'm trying to make"
-	line "up my mind."
-	done
-; 0x175a60
-
-UnknownText_0x175a60: ; 0x175a60
-	text "I found all kinds"
-	line "of BERRIES. If you"
-
-	para "want, I'll share"
-	line "some with you."
-
-	para "I'll be waiting on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "."
-	done
-; 0x175abe
-
-UnknownText_0x175abe: ; 0x175abe
-	text "Huh? BERRIES?"
-
-	para "Sorry, I haven't"
-	line "found any yet."
-
-	para "I'll call you if I"
-	line "find any. Will you"
-	cont "please wait?"
-	done
-; 0x175b1e
-
-UnknownText_0x175b1e: ; 0x175b1e
-	text "Let's battle"
-	line "already!"
-
-	para "@"
-	text_from_ram StringBuffer5
-	text " is"
-	line "where I am."
-
-	para "Please get here as"
-	line "soon as you can!"
-	done
-; 0x175b6d
-
-UnknownText_0x175b6d: ; 0x175b6d
-	text "How come you're"
-	line "not here yet?"
-
-	para "@"
-	text_from_ram StringBuffer5
-	text " is"
-	line "where I am."
-
-	para "Please get here as"
-	line "soon as you can!"
-	done
-; 0x175bc4
-
-UnknownText_0x175bc4: ; 0x175bc4
-	text "I've been spending"
-	line "more time with my"
-
-	para "@"
-	text_from_ram StringBuffer4
-	text " than I"
-	line "have with my kids."
-
-	para "That's a bit sad,"
-	line "actually."
-	done
-; 0x175c24
-
-UnknownText_0x175c24: ; 0x175c24
-	text "I just beat a wild"
-	line "@"
-	text_from_ram StringBuffer4
-	text "."
-
-	para "I told my kid, but"
-	line "he scoffed that he"
-
-	para "could do the same"
-	line "thing easily."
-
-	para "Boy, has he gotten"
-	line "cocky…"
-	done
-; 0x175c9f
-
-UnknownText_0x175c9f: ; 0x175c9f
-	text "Yesterday a wild"
-	line "@"
-	text_from_ram StringBuffer4
-	text " slipped"
-
-	para "away from me, in"
-	line "front of my kid."
-
-	para "I was feeling down"
-	line "about it until he"
-
-	para "shared his #"
-	line "BALLS with me."
-
-	para "Hahah, that sure"
-	line "made my day!"
-	done
-; 0x175d40
-
-UnknownText_0x175d40: ; 0x175d40
-	text "What do you say to"
-	line "a battle with me?"
-
-	para "Good, you're going"
-	line "to do it!"
-
-	para "For a kid, you're"
-	line "quite agreeable."
-
-	para "@"
-	text_from_ram StringBuffer5
-	text " is"
-	line "the spot!"
-	done
-; 0x175db7
-
-UnknownText_0x175db7: ; 0x175db7
-	text "You call your mom"
-	line "sometimes too!"
-	done
-; 0x175dd9
-
-UnknownText_0x175dd9: ; 0x175dd9
-	text "Listen, I… Yowch!"
-
-	para "Uh, sorry! See,"
-	line "@"
-	text_from_ram StringBuffer4
-	text " are"
-
-	para "biting like there"
-	line "is no tomorrow"
-
-	para "over here on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "!"
-
-	para "Aiyee! Ouch!"
-	line "One jabbed me!"
-
-	para "Heh, they're some"
-	line "kind of feisty!"
-
-	para "<PLAY_G>, you have"
-	line "to see this rare"
-
-	para "sight! Get ready"
-	line "to fish!"
-	done
-; 0x175eaf
-
-UnknownText_0x175eaf: ; 0x175eaf
-	text "Yeah, I know."
-
-	para "You're looking for"
-	line "rare #MON."
-
-	para "Recently, all I've"
-	line "been catching are"
-	cont "MAGIKARP, though…"
-	done
-; 0x175f11
-
-UnknownText_0x175f11: ; 0x175f11
-	text "So where are you?"
-	line "I'm waiting for"
-
-	para "you to show up on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "."
-
-	para "You shouldn't make"
-	line "your elders wait!"
-	done
-; 0x175f70
-
-UnknownText_0x175f70: ; 0x175f70
-	text "Hey, what's the"
-	line "matter with you?"
-
-	para "Aren't you coming"
-	line "over to fish for"
-	cont "QWILFISH?"
-
-	para "I'm on ROUTE 32,"
-	line "so hurry up!"
-	done
-; 0x175fda
-
-UnknownText_0x175fda: ; 0x175fda
-	text "Oh, you have to"
-	line "hear this."
-
-	para "My @"
-	text_from_ram StringBuffer4
-	text " is"
-	line "so adorable!"
-
-	para "It always wants to"
-	line "nuzzle me!"
-	done
-; 0x17602d
-
-UnknownText_0x17602d: ; 0x17602d
-	text "And, and! Um…"
-
-	para "We beat a wild"
-	line "@"
-	text_from_ram StringBuffer4
-	text " with"
-
-	para "just one hit a"
-	line "little while ago."
-
-	para "We felt sorry for"
-	line "it, though."
-	done
-; 0x176095
-
-UnknownText_0x176095: ; 0x176095
-	text "And, and! Uh…"
-
-	para "We just saw a"
-	line "really gorgeous"
-	cont "@"
-	text_from_ram StringBuffer4
-	text "."
-
-	para "But I was on the"
-	line "phone, so it got"
-
-	para "away. It made us"
-	line "really angry!"
-	done
-; 0x17610a
-
-UnknownText_0x17610a: ; 0x17610a
-	text "Hi! Do you have"
-	line "some free time?"
-
-	para "I've got all sorts"
-	line "of time. If you're"
-
-	para "free, would you"
-	line "like to battle?"
-
-	para "I'll be waiting on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "."
-
-	para "Let me know when"
-	line "you get here!"
-	done
-; 0x1761a7
-
-UnknownText_0x1761a7: ; 0x1761a7
-	text "Hi, TANIA. How are"
-	line "you? This is LIZ."
-
-	para "I'm fine, but I'm"
-	line "bored silly!"
-
-	para "Huh… Wrong number?"
-	line "Oops! Sorry!"
-	done
-; 0x17620a
-
-UnknownText_0x17620a: ; 0x17620a
-	text "OK, I'll call you"
-	line "later!"
-	done
-; 0x176223
-
-UnknownText_0x176223: ; 0x176223
-	text "Listen, listen!"
-
-	para "I was listening to"
-	line "the radio in the"
-
-	para "RUINS OF ALPH when"
-	line "an odd broadcast"
-
-	para "suddenly cut it on"
-	line "the regular show."
-
-	para "I wonder what it"
-	line "was. So strange!"
-	done
-; 0x1762c3
-
-UnknownText_0x1762c3: ; 0x1762c3
-	text "Listen, listen!"
-
-	para "Don't you think"
-	line "FALKNER of VIOLET"
-
-	para "GYM is cool and"
-	line "handsome?"
-
-	para "But they say his"
-	line "dad, who's out"
-
-	para "training on the"
-	line "road, is even more"
-
-	para "cool and handsome"
-	line "than FALKNER."
-
-	para "I wish I could"
-	line "meet him!"
-	done
-; 0x17638a
-
-UnknownText_0x17638a: ; 0x17638a
-	text "Listen, listen!"
-
-	para "Do you know EARL,"
-	line "the teacher who"
-
-	para "runs the #MON"
-	line "ACADEMY in VIOLET?"
-
-	para "I saw him doing"
-	line "pirouettes while"
-
-	para "he was running. It"
-	line "was wildly funny!"
-	done
-; 0x176424
-
-UnknownText_0x176424: ; 0x176424
-	text "Listen, listen!"
-
-	para "I collect #MON"
-	line "plush dolls."
-
-	para "But I can't seem"
-	line "to get a hold of a"
-
-	para "SURF PIKACHU DOLL."
-	line "None of my friends"
-
-	para "have it. It must"
-	line "be totally rare!"
-
-	para "You could really"
-	line "brag about it if"
-	cont "you had one."
-	done
-; 0x1764eb
-
-UnknownText_0x1764eb: ; 0x1764eb
-	text "Listen, listen!"
-
-	para "Do you know about"
-	line "MOOMOO MILK?"
-
-	para "You can buy it at"
-	line "MOOMOO FARM."
-
-	para "It's supposed to"
-	line "be good for health"
-
-	para "and beauty."
-	line "I really want to"
-
-	para "try some. I bet"
-	line "it's delicious!"
-	done
-; 0x176599
-
-UnknownText_0x176599: ; 0x176599
-	text "Listen, listen!"
-
-	para "There's a #MON"
-	line "SALON in GOLDENROD"
-
-	para "that's run by two"
-	line "brothers."
-
-	para "The older brother"
-	line "is good, but the"
-
-	para "younger one really"
-	line "isn't."
-
-	para "But sometimes the"
-	line "younger one does a"
-
-	para "better job than"
-	line "his brother."
-
-	para "Every time I go, I"
-	line "have a hard time"
-
-	para "trying to decide"
-	line "whom I should use…"
-	done
-; 0x1766ac
-
-UnknownText_0x1766ac: ; 0x1766ac
-	text "Listen, listen!"
-
-	para "GOLDENROD GYM's"
-	line "WHITNEY began"
-
-	para "battling only a"
-	line "little while ago!"
-
-	para "But the #MON"
-	line "LEAGUE chose her"
-	cont "as a GYM LEADER!"
-
-	para "I bet she must be"
-	line "totally talented."
-	done
-; 0x17674f
-
-UnknownText_0x17674f: ; 0x17674f
-	text "Listen, listen!"
-
-	para "Have you ever"
-	line "taken part in a"
-
-	para "Bug-Catching"
-	line "Contest at the"
-	cont "NATIONAL PARK?"
-
-	para "I did once, but"
-	line "all I could catch"
-	cont "was a CATERPIE."
-
-	para "But guess what!"
-
-	para "I won with that"
-	line "CATERPIE. Isn't"
-	cont "that great?"
-	done
-; 0x176816
-
-UnknownText_0x176816: ; 0x176816
-	text "Listen, listen!"
-
-	para "I saw a beautiful"
-	line "@"
-	text_from_ram StringBuffer4
-	text "!"
-
-	para "I wish I could"
-	line "become a beautiful"
-	cont "@"
-	text_from_ram StringBuffer4
-	text " too."
-	done
-; 0x17686d
-
-UnknownText_0x17686d: ; 0x17686d
-	text "Listen, listen!"
-
-	para "Uh… Um… Whoops!"
-
-	para "I forgot what I"
-	line "was going to say!"
-	done
-; 0x1768b0
-
-UnknownText_0x1768b0: ; 0x1768b0
-	text "Listen, listen!"
-
-	para "My @"
-	text_from_ram StringBuffer4
-	text "…"
-	line "it… so pretty…"
-
-	para "and… giggle… so"
-	line "awesome… yes… but…"
-
-	para "very much… eeek!"
-	line "And… lovely…"
-
-	para "Just ravishing…"
-	line "Oh, too much!"
-
-	para "…Hug it… sleeping…"
-	line "That's right…"
-
-	para "pretty… sigh… So"
-	line "nice… Cute…"
-
-	para "…Oops! Look at the"
-	line "time! I chatted"
-	cont "too long!"
-
-	para "I'm sorry I took"
-	line "so much of your"
-
-	para "time!"
-	line "I love chatting!"
-	done
-; 0x1769da
-
-UnknownText_0x1769da: ; 0x1769da
-	text "I've got too much"
-	line "time on my hands!"
-
-	para "Let's battle right"
-	line "away!"
-
-	para "I'll be waiting on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "!"
-	done
-; 0x176a2f
-
-UnknownText_0x176a2f: ; 0x176a2f
-	text "The other day, I"
-	line "was watching my"
-
-	para "@"
-	text_from_ram StringBuffer4
-	text " eat"
-	line "some BERRIES."
-
-	para "It looked like it"
-	line "was enjoying its"
-
-	para "meal, so I decided"
-	line "to try some."
-
-	para "I'm not sure if"
-	line "people should eat"
-
-	para "that stuff, but it"
-	line "was delicious!"
-	done
-; 0x176aef
-
-UnknownText_0x176aef: ; 0x176aef
-	text "Lately, I've been"
-	line "running across"
-
-	para "wild @"
-	text_from_ram StringBuffer4
-	text ""
-	line "quite often."
-
-	para "They're easily"
-	line "taken care of."
-	done
-; 0x176b45
-
-UnknownText_0x176b45: ; 0x176b45
-	text "Oh yeah, I was"
-	line "battling this"
-
-	para "@"
-	text_from_ram StringBuffer4
-	text " the"
-	line "other day…"
-
-	para "It took off when I"
-	line "got distracted by"
-	cont "a passing BEAUTY."
-
-	para "Learn from my"
-	line "mistake--always"
-
-	para "stay focused on"
-	line "the job at hand!"
-	done
-; 0x176bee
-
-UnknownText_0x176bee: ; 0x176bee
-	text "Come on--let's"
-	line "battle right now!"
-
-	para "@"
-	text_from_ram StringBuffer5
-	text " is"
-	line "where I am."
-
-	para "Come on down if"
-	line "you feel up to it!"
-	done
-; 0x176c47
-
-UnknownText_0x176c47: ; 0x176c47
-	text "All right then!"
-	line "Be good!"
-	done
-; 0x176c61
-
-UnknownText_0x176c61: ; 0x176c61
-	text "<PLAYER>! It's"
-	line "mind-blowing!"
-
-	para "I took a hike in"
-	line "@"
-	text_from_ram StringBuffer5
-	text ""
-	cont "yesterday, see?"
-
-	para "Well, there were"
-	line "tons of @"
-	text_from_ram StringBuffer4
-	text ""
-	para "around! You have"
-	line "to see it!"
-
-	para "I get this feeling"
-	line "that @"
-	text_from_ram StringBuffer4
-	text ""
-	para "may be timid."
-	line "I didn't see any"
-
-	para "where there are"
-	line "strong #MON."
-	done
-; 0x176d32
-
-UnknownText_0x176d32: ; 0x176d32
-	text "Rare #MON?"
-
-	para "Hey, sorry! I was"
-	line "too focused on my"
-
-	para "hike, so I wasn't"
-	line "paying attention."
-	done
-; 0x176d85
-
-UnknownText_0x176d85: ; 0x176d85
-	text "Hello! You haven't"
-	line "forgotten about"
-
-	para "our battle, have"
-	line "you?"
-
-	para "@"
-	text_from_ram StringBuffer5
-	text "!"
-	line "I'm waiting!"
-	done
-; 0x176dd1
-
-UnknownText_0x176dd1: ; 0x176dd1
-	text "Hello? What? Where"
-	line "is DUNSPARCE?"
-
-	para "DARK CAVE! Hurry!"
-
-	para "I know I've said"
-	line "it before, but"
-
-	para "DUNSPARCE don't"
-	line "appear when there"
-
-	para "are strong #MON"
-	line "around."
-	done
-; 0x176e5d
-
-UnknownText_0x176e5d: ; 0x176e5d
-	text "My @"
-	text_from_ram StringBuffer4
-	text " is"
-	line "looking more and"
-
-	para "more like me. It's"
-	line "getting cuter!"
-	done
-; 0x176e9c
-
-UnknownText_0x176e9c: ; 0x176e9c
-	text "And, you know?"
-
-	para "Now we can KO"
-	line "@"
-	text_from_ram StringBuffer4
-	text " easily."
-
-	para "I should challenge"
-	line "the GOLDENROD GYM."
-	done
-; 0x176eee
-
-UnknownText_0x176eee: ; 0x176eee
-	text "And, you know?"
-	line "We just failed to"
-
-	para "beat @"
-	text_from_ram StringBuffer4
-	text " by"
-	line "a tiny margin."
-
-	para "I'm guessing my"
-	line "#MON's levels"
-
-	para "aren't high enough"
-	line "yet…"
-	done
-; 0x176f60
-
-UnknownText_0x176f60: ; 0x176f60
-	text "You must be a lot"
-	line "better now, huh?"
-
-	para "How about showing"
-	line "me your technique"
-
-	para "in a real battle"
-	line "with me?"
-
-	para "I'll be waiting on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "."
-	done
-; 0x176fdb
-
-UnknownText_0x176fdb: ; 0x176fdb
-	text "See you later!"
-	done
-; 0x176feb
-
-UnknownText_0x176feb: ; 0x176feb
-	text "This is it--the"
-	line "one we've all been"
-	cont "waiting for!"
-
-	para "GOLDENROD DEPT."
-	line "STORE's bargain"
-	cont "sale is on now!"
-
-	para "Want it cheap?"
-	line "Want it lots?"
-
-	para "Don't miss this"
-	line "GOLDENROD chance!"
-
-	para "Huh? I sound like"
-	line "a huckster?"
-
-	para "Well, yeah. I was"
-	line "mimicking them…"
-
-	para "Anyway, you've got"
-	line "to get there as"
-	cont "soon as you can!"
-	done
-; 0x1770fb
-
-UnknownText_0x1770fb: ; 0x1770fb
-	text "I'm saving up for"
-	line "the next bargain"
-
-	para "sale. When's the"
-	line "next one?"
-	done
-; 0x177138
-
-UnknownText_0x177138: ; 0x177138
-	text "Where are you?"
-
-	para "Let's have our"
-	line "battle soon!"
-
-	para "I'll be waiting on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "."
-	done
-; 0x17717c
-
-UnknownText_0x17717c: ; 0x17717c
-	text "Haven't you gone"
-	line "to GOLDENROD DEPT."
-
-	para "STORE? I've scoped"
-	line "it out already!"
-
-	para "They had some real"
-	line "bargains."
-
-	para "You should get"
-	line "there quickly."
-	done
-; 0x1771fd
-
-UnknownText_0x1771fd: ; 0x1771fd
-	text "My @"
-	text_from_ram StringBuffer4
-	text " and"
-	line "I are getting more"
-
-	para "in sync with each"
-	line "other."
-	done
-; 0x177237
-
-UnknownText_0x177237: ; 0x177237
-	text "We battled a wild"
-	line "@"
-	text_from_ram StringBuffer4
-	text " and"
-
-	para "managed to drop it"
-	line "in a close match."
-
-	para "We're getting into"
-	line "the groove!"
-	done
-; 0x177297
-
-UnknownText_0x177297: ; 0x177297
-	text "But, you know?"
-
-	para "I still haven't"
-	line "caught @"
-	text_from_ram StringBuffer4
-	text "."
-
-	para "It's getting past"
-	line "frustrating…"
-	done
-; 0x1772e2
-
-UnknownText_0x1772e2: ; 0x1772e2
-	text "Would you be my"
-	line "practice partner"
-	cont "again sometime?"
-
-	para "I'll be waiting on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "."
-
-	para "…Could you take it"
-	line "a little easier on"
-	cont "me next time?"
-	done
-; 0x177361
-
-UnknownText_0x177361: ; 0x177361
-	text "Bye! Let's chat"
-	line "again!"
-	done
-; 0x177378
-
-UnknownText_0x177378: ; 0x177378
-	text "Have you heard"
-	line "about TEAM ROCKET?"
-
-	para "They've taken over"
-	line "the RADIO TOWER in"
-	cont "GOLDENROD."
-
-	para "Are the people"
-	line "inside safe?"
-	done
-; 0x1773e7
-
-UnknownText_0x1773e7: ; 0x1773e7
-	text "I picked up some-"
-	line "thing nice today."
-
-	para "I want you to have"
-	line "it, so I called!"
-
-	para "You will come for"
-	line "it, won't you?"
-
-	para "@"
-	text_from_ram StringBuffer5
-	text " is"
-	line "where I am."
-	done
-; 0x177465
-
-UnknownText_0x177465: ; 0x177465
-	text "Sorry, I haven't"
-	line "found anything"
-
-	para "useful yet…"
-	line "I promise, if I"
-
-	para "find anything, you"
-	line "can have it!"
-	done
-; 0x1774c1
-
-UnknownText_0x1774c1: ; 0x1774c1
-	text "Oh, <PLAY_G>!"
-	line "How soon can I"
-
-	para "expect to see you"
-	line "for our battle?"
-
-	para "Don't forget,"
-	line "@"
-	text_from_ram StringBuffer5
-	text "!"
-	done
-; 0x17750e
-
-UnknownText_0x17750e: ; 0x17750e
-	text "I'm getting really"
-	line "impatient, waiting"
-
-	para "to give you my"
-	line "present!"
-
-	para "Hurry over to"
-	line "@"
-	text_from_ram StringBuffer5
-	text "!"
-	done
-; 0x177561
--- a/text/stdtext.asm
+++ b/text/stdtext.asm
@@ -202,7 +202,7 @@
 	line "can break this."
 	done
 
-PokeCenterSignText:
+PokecenterSignText:
 	text "Heal Your #MON!"
 	line "#MON CENTER"
 	done
binary files a/tilesets/00_collision.bin /dev/null differ
binary files a/tilesets/00_metatiles.bin /dev/null differ
--- a/tilesets/00_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, BROWN, BROWN, RED, GREEN, GREEN, GRAY, RED
-	tilepal 0, RED, RED, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 0, ROOF, ROOF, ROOF, GREEN, WATER, GREEN, BROWN, BROWN
-	tilepal 0, RED, RED, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN
-	tilepal 0, BROWN, BROWN, BROWN, RED, RED, BROWN, YELLOW, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
-	tilepal 0, BROWN, BROWN, WATER, WATER, BROWN, BROWN, BROWN, YELLOW
-	tilepal 0, YELLOW, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
-	tilepal 0, RED, BROWN, WATER, WATER, BROWN, GREEN, BROWN, BROWN
-	tilepal 0, BROWN, WATER, GRAY, BROWN, BROWN, BROWN, GRAY, GRAY
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, WATER, GRAY, GRAY, GRAY, BROWN, BROWN, GRAY, GRAY
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, BROWN, BROWN, BROWN, RED, RED, RED, RED, RED
-	tilepal 1, RED, RED, RED, RED, RED, RED, RED, RED
-	tilepal 1, RED, RED, RED, RED, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN
-	tilepal 1, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN
-	tilepal 1, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN
-	tilepal 1, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
binary files a/tilesets/01_collision.bin /dev/null differ
binary files a/tilesets/01_metatiles.bin /dev/null differ
--- a/tilesets/01_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, BROWN, BROWN, RED, GREEN, GREEN, GRAY, RED
-	tilepal 0, RED, RED, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 0, ROOF, ROOF, ROOF, GREEN, WATER, GREEN, BROWN, BROWN
-	tilepal 0, RED, RED, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN
-	tilepal 0, BROWN, BROWN, BROWN, RED, RED, BROWN, YELLOW, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
-	tilepal 0, BROWN, BROWN, WATER, WATER, BROWN, BROWN, BROWN, YELLOW
-	tilepal 0, YELLOW, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
-	tilepal 0, RED, BROWN, WATER, WATER, BROWN, GREEN, BROWN, BROWN
-	tilepal 0, BROWN, WATER, GRAY, BROWN, BROWN, BROWN, GRAY, GRAY
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, WATER, GRAY, GRAY, GRAY, BROWN, BROWN, GRAY, GRAY
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, BROWN, BROWN, BROWN, RED, RED, RED, RED, RED
-	tilepal 1, RED, RED, RED, RED, RED, RED, RED, RED
-	tilepal 1, RED, RED, RED, RED, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN
-	tilepal 1, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN
-	tilepal 1, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN
-	tilepal 1, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
binary files a/tilesets/02_collision.bin /dev/null differ
binary files a/tilesets/02_metatiles.bin /dev/null differ
--- a/tilesets/02_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, BROWN, BROWN, RED, GREEN, GREEN, GRAY, ROOF
-	tilepal 0, RED, RED, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 0, ROOF, ROOF, ROOF, GREEN, WATER, GREEN, BROWN, BROWN
-	tilepal 0, RED, RED, BROWN, BROWN, BROWN, GRAY, GREEN, GREEN
-	tilepal 0, GRAY, GRAY, BROWN, RED, RED, GRAY, YELLOW, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, RED
-	tilepal 0, GRAY, BROWN, BROWN, GRAY, BROWN, GRAY, GRAY, YELLOW
-	tilepal 0, YELLOW, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
-	tilepal 0, RED, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, WATER, GRAY, BROWN, BROWN, BROWN, GRAY, GRAY
-	tilepal 0, GRAY, BROWN, BROWN, GRAY, BROWN, GRAY, GRAY, GRAY
-	tilepal 0, WATER, GRAY, GRAY, GRAY, BROWN, BROWN, GRAY, GRAY
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, GRAY, BROWN, BROWN, RED, GREEN, GREEN, GRAY, ROOF
-	tilepal 1, RED, RED, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 1, ROOF, ROOF, ROOF, GREEN, WATER, GREEN, BROWN, ROOF
-	tilepal 1, ROOF, ROOF, ROOF, BROWN, BROWN, GRAY, GREEN, GREEN
-	tilepal 1, GRAY, GRAY, BROWN, RED, RED, GRAY, YELLOW, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, RED
-	tilepal 1, GRAY, BROWN, BROWN, GRAY, BROWN, GRAY, GRAY, YELLOW
-	tilepal 1, YELLOW, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
-	tilepal 1, RED, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, WATER, GRAY, BROWN, BROWN, BROWN, GRAY, GRAY
-	tilepal 1, GRAY, BROWN, BROWN, GRAY, RED, RED, GREEN, GREEN
-	tilepal 1, YELLOW, ROOF, ROOF, ROOF, ROOF, ROOF, RED, ROOF
binary files a/tilesets/03_collision.bin /dev/null differ
binary files a/tilesets/03_metatiles.bin /dev/null differ
--- a/tilesets/03_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, BROWN, BROWN, RED, BROWN, ROOF, ROOF, ROOF
-	tilepal 0, ROOF, ROOF, YELLOW, YELLOW, YELLOW, GRAY, BROWN, GRAY
-	tilepal 0, GRAY, BROWN, ROOF, BROWN, WATER, ROOF, ROOF, ROOF
-	tilepal 0, ROOF, ROOF, GRAY, BROWN, BROWN, GRAY, BROWN, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, ROOF, ROOF, BROWN
-	tilepal 0, ROOF, ROOF, GRAY, GRAY, GREEN, GREEN, GREEN, GRAY
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, ROOF, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN, GRAY
-	tilepal 0, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, GRAY, BROWN, GRAY, GRAY, GRAY, RED
-	tilepal 0, GREEN, GREEN, GREEN, ROOF, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, GRAY, BROWN, GRAY, GRAY, GRAY, GRAY
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, GRAY, BROWN, BROWN, RED, BROWN, ROOF, ROOF, ROOF
-	tilepal 1, ROOF, ROOF, YELLOW, YELLOW, YELLOW, GRAY, BROWN, GRAY
-	tilepal 1, GRAY, BROWN, ROOF, BROWN, WATER, ROOF, ROOF, ROOF
-	tilepal 1, ROOF, ROOF, GRAY, BROWN, BROWN, GRAY, BROWN, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, BROWN, ROOF, ROOF, BROWN
-	tilepal 1, ROOF, ROOF, GRAY, GRAY, GREEN, GREEN, GREEN, GRAY
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, ROOF, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN, GRAY
-	tilepal 1, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, GRAY, BROWN, GRAY, GRAY, GRAY, RED
-	tilepal 1, GREEN, GREEN, GREEN, ROOF, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, GRAY, BROWN, GRAY, GRAY, GRAY, GRAY
binary files a/tilesets/04_collision.bin /dev/null differ
binary files a/tilesets/04_metatiles.bin /dev/null differ
--- a/tilesets/04_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, BROWN, BROWN, RED, GREEN, GREEN, GRAY, RED
-	tilepal 0, RED, RED, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 0, ROOF, ROOF, ROOF, GREEN, WATER, GREEN, BROWN, BROWN
-	tilepal 0, RED, RED, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN
-	tilepal 0, BROWN, BROWN, BROWN, RED, RED, BROWN, YELLOW, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, BROWN
-	tilepal 0, BROWN, BROWN, WATER, WATER, BROWN, BROWN, BROWN, YELLOW
-	tilepal 0, YELLOW, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
-	tilepal 0, RED, BROWN, WATER, WATER, BROWN, GREEN, BROWN, BROWN
-	tilepal 0, BROWN, WATER, GRAY, BROWN, BROWN, BROWN, GRAY, GRAY
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, WATER, GRAY, GRAY, GRAY, BROWN, BROWN, GRAY, GRAY
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, RED, WATER, WATER, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 1, RED, RED, RED, ROOF, RED, WATER, WATER, WATER
-	tilepal 1, WATER, WATER, WATER, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, RED, RED, RED
-	tilepal 1, RED, ROOF, ROOF, ROOF, ROOF, ROOF, RED, RED
-	tilepal 1, RED, RED, RED, RED, RED, RED, RED, RED
-	tilepal 1, RED, RED, RED, RED, RED, YELLOW, YELLOW, YELLOW
-	tilepal 1, YELLOW, RED, RED, RED, WATER, WATER, WATER, RED
-	tilepal 1, RED, RED, ROOF, RED, RED, ROOF, RED, RED
-	tilepal 1, RED, ROOF, ROOF, RED, RED, RED, ROOF, ROOF
-	tilepal 1, RED, RED, RED, RED, YELLOW, RED, GREEN, RED
-	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, RED, ROOF
binary files a/tilesets/05_collision.bin /dev/null differ
binary files a/tilesets/05_metatiles.bin /dev/null differ
--- a/tilesets/05_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, WATER, RED, RED, RED, RED, BROWN, WATER, WATER
-	tilepal 0, GREEN, GREEN, GREEN, GREEN, WATER, WATER, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, RED, RED, RED, BROWN, WATER, WATER
-	tilepal 0, ROOF, ROOF, ROOF, ROOF, GRAY, GRAY, BROWN, BROWN
-	tilepal 0, GRAY, GRAY, BROWN, BROWN, WATER, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, YELLOW, GREEN, WATER, WATER, WATER, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, WATER, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, WATER, WATER, BROWN
-	tilepal 0, WATER, WATER, BROWN, BROWN, WATER, WATER, BROWN, BROWN
-	tilepal 0, GRAY, GRAY, WATER, GRAY, BROWN, BROWN, BROWN, WATER
-	tilepal 0, RED, RED, BROWN, BROWN, GREEN, YELLOW, BROWN, BROWN
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, WATER, RED, RED, RED, RED, BROWN, WATER, WATER
-	tilepal 1, GREEN, GREEN, GREEN, GREEN, WATER, WATER, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, RED, RED, RED, BROWN, WATER, WATER
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN
-	tilepal 1, GRAY, GRAY, BROWN, BROWN, WATER, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, YELLOW, GREEN, WATER, WATER, WATER, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, WATER, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, WATER, WATER, BROWN
-	tilepal 1, GRAY, GRAY, BROWN, BROWN, WATER, WATER, BROWN, BROWN
-	tilepal 1, GRAY, GRAY, WATER, GRAY, BROWN, BROWN, BROWN, WATER
-	tilepal 1, RED, RED, BROWN, BROWN, GREEN, YELLOW, BROWN, BROWN
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
binary files a/tilesets/06_collision.bin /dev/null differ
binary files a/tilesets/06_metatiles.bin /dev/null differ
--- a/tilesets/06_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, BROWN, BROWN, BROWN, RED, GREEN, WATER, WATER
-	tilepal 0, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, RED, BROWN, WATER, WATER
-	tilepal 0, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, WATER, WATER, BROWN, BROWN
-	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, BROWN, BROWN, WATER, WATER, BROWN, BROWN
-	tilepal 0, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, GRAY, BROWN, BROWN, BROWN, RED, GREEN, WATER, WATER
-	tilepal 1, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, RED, BROWN, WATER, WATER
-	tilepal 1, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, WATER, WATER, BROWN, BROWN
-	tilepal 1, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, BROWN, BROWN, WATER, WATER, BROWN, BROWN
-	tilepal 1, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
binary files a/tilesets/07_collision.bin /dev/null differ
binary files a/tilesets/07_metatiles.bin /dev/null differ
--- a/tilesets/07_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, RED, GRAY, WATER, WATER, WATER, ROOF, ROOF
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, WATER, WATER, WATER
-	tilepal 0, GRAY, RED, RED, WATER, WATER, WATER, WATER, WATER
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN, GRAY
-	tilepal 0, GRAY, GRAY, RED, RED, WATER, WATER, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, RED, RED, GRAY, WATER, WATER, WATER
-	tilepal 0, WATER, WATER, WATER, WATER, GRAY, GRAY, WATER, GRAY
-	tilepal 0, GRAY, GRAY, RED, RED, RED, RED, WATER, WATER
-	tilepal 0, YELLOW, YELLOW, GRAY, GRAY, GRAY, RED, RED, GRAY
-	tilepal 0, RED, RED, RED, RED, RED, RED, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, GRAY, RED, GRAY, WATER, WATER, WATER, ROOF, ROOF
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, WATER, WATER, WATER
-	tilepal 1, GRAY, RED, RED, WATER, WATER, WATER, WATER, WATER
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN, GRAY
-	tilepal 1, GRAY, GRAY, RED, RED, WATER, WATER, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, RED, RED, GRAY, WATER, WATER, WATER
-	tilepal 1, WATER, WATER, WATER, WATER, GRAY, GRAY, WATER, GRAY
-	tilepal 1, GRAY, GRAY, RED, RED, RED, RED, WATER, WATER
-	tilepal 1, YELLOW, YELLOW, GRAY, GRAY, GRAY, RED, RED, GRAY
-	tilepal 1, RED, RED, RED, RED, RED, RED, GRAY, GRAY
-	tilepal 1, YELLOW, YELLOW, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
binary files a/tilesets/08_collision.bin /dev/null differ
binary files a/tilesets/08_metatiles.bin /dev/null differ
--- a/tilesets/08_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, GRAY, WATER, WATER, RED, GREEN, GREEN, GREEN
-	tilepal 0, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN
-	tilepal 0, WATER, GRAY, WATER, WATER, RED, BROWN, BROWN, WATER
-	tilepal 0, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY, BROWN, WATER
-	tilepal 0, GREEN, GREEN, GRAY, GRAY, GREEN, GREEN, WATER, WATER
-	tilepal 0, RED, RED, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN
-	tilepal 0, GREEN, GREEN, GREEN, GREEN, GRAY, WATER, WATER, WATER
-	tilepal 0, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, WATER, WATER
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, WATER, WATER, GRAY, GRAY
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, ROOF, RED, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN, WATER
-	tilepal 1, GRAY, ROOF, RED, GRAY, GRAY, WATER, GRAY, GRAY
-	tilepal 1, RED, RED, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, RED, WATER, WATER, WATER
-	tilepal 1, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, WATER, WATER
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, WATER, WATER, GRAY, GRAY
binary files a/tilesets/09_collision.bin /dev/null differ
--- a/tilesets/09_metatiles.bin
+++ /dev/null
@@ -1,65 +1,0 @@
-""""!!!!1111111111111111    ""       !!!!+,--9::3#$%./02;<=>&'()345?@AB*678CDE+,-39:PQXYZFGHIRRSSZ[\\IJKLT,-U]^^^MNOVW_����������������""""""""
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-	

""1111
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-���������������������������������������������������������������������������������������������
\ No newline at end of file
--- a/tilesets/09_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, WATER, WATER, GRAY, GRAY, RED, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, GRAY, GRAY, RED, RED, RED, BROWN
-	tilepal 0, ROOF, WATER, WATER, WATER, WATER, RED, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, ROOF, WATER, RED, RED, GRAY, GRAY
-	tilepal 0, BROWN, BROWN, BROWN, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 0, ROOF, ROOF, ROOF, ROOF, RED, ROOF, ROOF, ROOF
-	tilepal 0, ROOF, GRAY, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 0, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 0, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 0, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 0, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 0, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, GRAY, WATER, WATER, GRAY, GRAY, RED, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, GRAY, GRAY, RED, RED, RED, BROWN
-	tilepal 1, ROOF, WATER, WATER, WATER, WATER, RED, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, ROOF, WATER, RED, RED, GRAY, GRAY
-	tilepal 1, BROWN, BROWN, BROWN, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 1, ROOF, ROOF, ROOF, ROOF, RED, ROOF, ROOF, ROOF
-	tilepal 1, ROOF, GRAY, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
binary files a/tilesets/10_collision.bin /dev/null differ
binary files a/tilesets/10_metatiles.bin /dev/null differ
--- a/tilesets/10_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, WATER, RED, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, WATER, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, WATER, RED, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, WATER, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, WATER, WATER, WATER, WATER, ROOF, BROWN, BROWN, BROWN
-	tilepal 0, WATER, WATER, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN
-	tilepal 0, WATER, WATER, WATER, WATER, RED, BROWN, BROWN, GRAY
-	tilepal 0, WATER, WATER, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN
-	tilepal 0, ROOF, ROOF, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, ROOF, ROOF, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, WATER
-	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, WATER, WATER, WATER
-	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
-	tilepal 1, WATER, GRAY, GRAY, GRAY, GRAY, WATER, WATER, WATER
-	tilepal 1, WATER, WATER, WATER, WATER, BROWN, GREEN, GREEN, GREEN
-	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
-	tilepal 1, RED, RED, WATER, WATER, WATER, WATER, WATER, WATER
-	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
-	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
-	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
-	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
binary files a/tilesets/11_collision.bin /dev/null differ
--- a/tilesets/11_metatiles.bin
+++ /dev/null
@@ -1,8 +1,0 @@
-6666666666666666""""""""&&&&@B@B
-
-
-
-&&&&88889999&& !&&&&&01&&&&&@B@B()()()()*+()&&&&&&&&	&&,-""<=""./&>?&"",-""<=&./&>?







&&&&''''7777,-&<=&./&>?&&,-&<=&./&>?@AABPQQRPHIRS::T&&&@A&PQ&&AAABQQQREEFEUUVU
-K
-[EFEEUVUUK
-[&PQ&S:&&QQQR:::T&&EFE;UVU;JKJ;Z[Z;6666666666666666AAABMMMN88889999""""""""#$$%WXXY""""@B""PRPRPRPRPR""23""CD&&&&""""""@B&PR&PR;;;;;;;;&&&&&&&&;;;;;;;;""""@B""PR&PR&PR&PR&PR&PR&PR&PR&PR@APRLM&&&&&@A&LM&&&&AB&MN&&&&&@B@APRLM&&&&	&&@AABPHIR	&&&&&&@B&PR&PR&PR&PR&&@BPR#$$%WXXY&&&&PRPRPRPR@B&PR&PR&PR&@AAALMMM&&&&AAABMMMN&&&&&@B&PR&PR&PR&&&&AAAAMMMM""""""""&&AAAAMMMM&&&&&PR&PR&PR&PR&@A&PQ&PQ&S:@AAALMMM88889999&PR&PRABPRMNPR""""""\]&^_&@B@APRLMPR&PR&AB@BMNPR&PR&PRPR&PR&PR@ALM&PR&PRABPRMN
\ No newline at end of file
--- a/tilesets/11_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, WATER, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, GRAY, GRAY, RED, RED, BROWN, BROWN
-	tilepal 0, ROOF, ROOF, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
-	tilepal 0, ROOF, ROOF, GRAY, GRAY, ROOF, ROOF, BROWN, BROWN
-	tilepal 0, ROOF, ROOF, GREEN, WATER, WATER, WATER, RED, RED
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN, BROWN, BROWN
-	tilepal 0, ROOF, ROOF, GREEN, GREEN, RED, RED, GRAY, RED
-	tilepal 0, RED, RED, BROWN, BROWN, GREEN, GREEN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, GREEN, GREEN, GRAY, BROWN, WATER
-	tilepal 0, BROWN, BROWN, GRAY, BROWN, BROWN, BROWN, BROWN, GRAY
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, BROWN, ROOF
-	tilepal 0, ROOF, ROOF, GRAY, BROWN, GRAY, GRAY, GRAY, GRAY
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, GRAY, WATER, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, GRAY, GRAY, RED, RED, BROWN, BROWN
-	tilepal 1, ROOF, ROOF, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
-	tilepal 1, ROOF, ROOF, GRAY, GRAY, ROOF, ROOF, BROWN, BROWN
-	tilepal 1, ROOF, ROOF, GREEN, WATER, WATER, WATER, RED, RED
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN, BROWN, BROWN
-	tilepal 1, ROOF, ROOF, GREEN, GREEN, RED, RED, GRAY, RED
-	tilepal 1, RED, RED, BROWN, BROWN, GREEN, GREEN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, GREEN, GREEN, GRAY, BROWN, WATER
-	tilepal 1, BROWN, BROWN, GRAY, BROWN, BROWN, BROWN, BROWN, GRAY
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, BROWN, ROOF
-	tilepal 1, ROOF, ROOF, GRAY, BROWN, GRAY, GRAY, GRAY, GRAY
binary files a/tilesets/12_collision.bin /dev/null differ
--- a/tilesets/12_metatiles.bin
+++ /dev/null
@@ -1,3 +1,0 @@
-,-<=
-II"#23$%45*+>?>?*+ !01JK	����./����������������*;;;>?>?>?;;;;&'67()89@AB+PQRECD\]STU

VWVWXYXYZ[Z[

PQPQPQPQ^_^_������������ؑ��*+>?>?,-<=*;;;>?>?::>?::;;;+>?::>?::>?>?::

::>?

F:F:F::G:G:G"#23$%45

LMLMLMLMNONO !HH01HH>?HH>?HHHH&'HH67HH()HH89����������������
-II
*+PQ>?PQ>?^_HH&'HH67HH()HH89/HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH;;;;&'67()89>?>?.�������Ӑ��ڐ��܁�����������������"#��23��$%��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
\ No newline at end of file
--- a/tilesets/12_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, YELLOW, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GREEN, GREEN, WATER, RED, GRAY, GRAY, ROOF, ROOF
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, BROWN, BROWN, BROWN, RED, ROOF, ROOF, GRAY, YELLOW
-	tilepal 0, GRAY, GRAY, RED, RED, RED, RED, WATER, WATER
-	tilepal 0, WATER, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, RED, RED, RED, RED, WATER, WATER
-	tilepal 0, WATER, WATER, RED, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, RED, RED, RED
-	tilepal 0, GREEN, GRAY, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, RED, YELLOW, YELLOW, YELLOW, ROOF, ROOF
-	tilepal 0, ROOF, ROOF, ROOF, ROOF, RED, RED, BROWN, BROWN
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, GRAY, GRAY, GRAY, GREEN, GREEN, GREEN, GREEN, GRAY
-	tilepal 1, GRAY, GREEN, GREEN, RED, RED, WATER, WATER, ROOF
-	tilepal 1, GRAY, GRAY, GRAY, YELLOW, YELLOW, YELLOW, ROOF, GRAY
-	tilepal 1, GRAY, GRAY, WATER, GRAY, GRAY, GRAY, YELLOW, YELLOW
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, RED, WATER, RED
-	tilepal 1, RED, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, RED, RED, RED, RED, RED, RED, RED, RED
-	tilepal 1, RED, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN, GREEN, GREEN
-	tilepal 1, GRAY, GRAY, WATER, GRAY, WATER, RED, BROWN, BROWN
binary files a/tilesets/13_collision.bin /dev/null differ
binary files a/tilesets/13_metatiles.bin /dev/null differ
--- a/tilesets/13_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, BROWN, WATER, WATER, RED, WATER, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, WATER, WATER, WATER, WATER
-	tilepal 0, GRAY, RED, WATER, WATER, WATER, WATER, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, WATER, WATER, WATER, WATER
-	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
-	tilepal 0, RED, GREEN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
-	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, GREEN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, WATER, BROWN, BROWN
-	tilepal 0, BROWN, GREEN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GREEN, WATER, BROWN, BROWN
-	tilepal 0, BROWN, GREEN, BROWN, BROWN, WATER, WATER, BROWN, BROWN
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, YELLOW, GRAY, GRAY, GRAY, GRAY, GRAY, YELLOW, YELLOW
-	tilepal 1, YELLOW, YELLOW, YELLOW, YELLOW, RED, RED, WATER, WATER
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, YELLOW
-	tilepal 1, WATER, YELLOW, YELLOW, YELLOW, GREEN, GREEN, WATER, WATER
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, RED, RED, GRAY, YELLOW, RED, RED, YELLOW, WATER
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, YELLOW, YELLOW, GRAY, YELLOW, RED, RED, YELLOW, WATER
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, WATER, GRAY, GREEN
-	tilepal 1, YELLOW, YELLOW, WATER, YELLOW, WATER, WATER, YELLOW, YELLOW
-	tilepal 1, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN
-	tilepal 1, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW
binary files a/tilesets/14_collision.bin /dev/null differ
binary files a/tilesets/14_metatiles.bin /dev/null differ
--- a/tilesets/14_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, GRAY, BROWN, RED, BROWN, GREEN, GREEN, GREEN
-	tilepal 0, GREEN, GREEN, GRAY, GRAY, RED, RED, GREEN, BROWN
-	tilepal 0, GRAY, GRAY, GRAY, RED, BROWN, GREEN, GRAY, GRAY
-	tilepal 0, GRAY, GREEN, GRAY, GRAY, RED, RED, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, RED, RED, BROWN, BROWN, GRAY, GRAY
-	tilepal 0, GRAY, GREEN, RED, RED, GREEN, GRAY, RED, RED
-	tilepal 0, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, RED, RED, GREEN, BROWN, RED, RED
-	tilepal 0, ROOF, ROOF, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, ROOF, RED, RED
-	tilepal 0, RED, ROOF, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, WATER, ROOF, ROOF, WATER, WATER
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, YELLOW, RED, YELLOW, RED, GREEN, GREEN, BROWN, ROOF
-	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, BROWN
-	tilepal 1, YELLOW, RED, YELLOW, RED, GREEN, GREEN, BROWN, ROOF
-	tilepal 1, ROOF, GRAY, GRAY, GRAY, GRAY, RED, ROOF, ROOF
-	tilepal 1, YELLOW, RED, YELLOW, RED, WATER, WATER, RED, RED
-	tilepal 1, RED, RED, RED, RED, GREEN, GRAY, RED, RED
-	tilepal 1, RED, RED, YELLOW, YELLOW, WATER, WATER, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, RED, RED, GREEN, ROOF, RED, RED
-	tilepal 1, RED, RED, YELLOW, YELLOW, ROOF, ROOF, RED, RED
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, ROOF, RED, RED
-	tilepal 1, RED, GRAY, GRAY, GRAY, GRAY, GRAY, RED, RED
-	tilepal 1, GRAY, GRAY, GRAY, WATER, ROOF, ROOF, WATER, WATER
binary files a/tilesets/15_collision.bin /dev/null differ
binary files a/tilesets/15_metatiles.bin /dev/null differ
--- a/tilesets/15_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, ROOF, RED, RED, RED, ROOF, ROOF, GREEN
-	tilepal 0, GREEN, GRAY, GREEN, GREEN, GREEN, GREEN, WATER, GREEN
-	tilepal 0, GRAY, WATER, WATER, WATER, RED, ROOF, ROOF, BROWN
-	tilepal 0, BROWN, RED, GRAY, GREEN, GREEN, GREEN, GREEN, GREEN
-	tilepal 0, RED, RED, GRAY, GRAY, WATER, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, RED, GRAY, GRAY, GRAY, ROOF, GREEN, BROWN
-	tilepal 0, RED, RED, GRAY, GRAY, WATER, GRAY, GRAY, GRAY
-	tilepal 0, RED, WATER, GRAY, GRAY, GRAY, GRAY, RED, RED
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN
-	tilepal 0, WATER, WATER, WATER, WATER, WATER, WATER, ROOF, ROOF
-	tilepal 0, WATER, GREEN, GREEN, BROWN, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, WATER, RED, WATER, WATER, ROOF, ROOF
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, GRAY, ROOF, RED, RED, RED, ROOF, ROOF, GREEN
-	tilepal 1, GREEN, GRAY, GREEN, GREEN, GREEN, GREEN, WATER, GREEN
-	tilepal 1, GRAY, WATER, WATER, WATER, RED, ROOF, ROOF, BROWN
-	tilepal 1, BROWN, RED, GRAY, GREEN, GREEN, GREEN, GREEN, GREEN
-	tilepal 1, RED, RED, GRAY, GRAY, WATER, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, RED, GRAY, GRAY, GRAY, ROOF, GREEN, BROWN
-	tilepal 1, RED, RED, GRAY, GRAY, WATER, GRAY, GRAY, GRAY
-	tilepal 1, RED, WATER, GRAY, GRAY, GRAY, GRAY, RED, RED
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN
-	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, ROOF, ROOF
-	tilepal 1, WATER, GREEN, GREEN, BROWN, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, WATER, RED, WATER, WATER, ROOF, ROOF
binary files a/tilesets/16_collision.bin /dev/null differ
binary files a/tilesets/16_metatiles.bin /dev/null differ
--- a/tilesets/16_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, BROWN, WATER, WATER, RED, GRAY, GRAY, GRAY
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, WATER, WATER, RED, BROWN, GRAY, GRAY
-	tilepal 0, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY
-	tilepal 0, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, RED, GRAY
-	tilepal 0, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, WATER, WATER
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, WATER, BROWN
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, GRAY, BROWN, WATER, WATER, RED, GRAY, GRAY, GRAY
-	tilepal 1, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, WATER, WATER, RED, BROWN, GRAY, GRAY
-	tilepal 1, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY
-	tilepal 1, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, RED, GRAY
-	tilepal 1, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, WATER, WATER
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, WATER, BROWN
binary files a/tilesets/17_collision.bin /dev/null differ
binary files a/tilesets/17_metatiles.bin /dev/null differ
--- a/tilesets/17_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, GRAY, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, RED, GRAY
-	tilepal 0, GRAY, GRAY, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, RED, GRAY
-	tilepal 0, GRAY, GREEN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, YELLOW, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, ROOF, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, WATER, WATER, WATER, WATER
-	tilepal 0, BROWN, BROWN, GRAY, GRAY, GREEN, GREEN, WATER, WATER
-	tilepal 0, WATER, GREEN, GREEN, WATER, BROWN, BROWN, BROWN, GREEN
-	tilepal 0, BROWN, BROWN, GRAY, GRAY, GREEN, GREEN, WATER, WATER
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, WATER, WATER, WATER, WATER, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, RED, GRAY
-	tilepal 1, GRAY, GRAY, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, RED, GRAY
-	tilepal 1, GRAY, GREEN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, YELLOW, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, ROOF, GRAY, GRAY
-	tilepal 1, YELLOW, YELLOW, YELLOW, YELLOW, WATER, WATER, WATER, WATER
-	tilepal 1, BROWN, BROWN, GRAY, GRAY, GREEN, GREEN, WATER, WATER
-	tilepal 1, WATER, GREEN, GREEN, WATER, BROWN, BROWN, BROWN, GREEN
-	tilepal 1, BROWN, BROWN, GRAY, GRAY, GREEN, GREEN, WATER, WATER
binary files a/tilesets/18_collision.bin /dev/null differ
--- a/tilesets/18_metatiles.bin
+++ /dev/null
@@ -1,15 +1,0 @@
-
 *()  89+,!!          


%'!!	 5 5 5 5 5&&01                    %&&'677:"##$2334������ַ��������
        +,+, *()  89        SSSSSSSSSSSSSSSSFGFGVWVWFGSSVWSS                FGFGVWVWSSFGSSVW�]���]]]%&&'XYXYѣ�ѥ�����������SSSSSSSSFGFGVWVW����������������FGSSVWSSFGSSVWSSSSFGSSVWSSFGSSVW./SS>?SSNOSS^_SSSS./SS>?SSNOSS^_S@HH@PQQPPQQPPQQHHHHQQQQQQQQQQQQHHBSQQRBQQRRQQRR----------------PPQQPPQQPCDDCDDDQQQQQQQQTUTUTUTUQQRRQQRRDDERDDDESSSSSSSS
-SS
-SS
-SSSS
-FG
-VW
-FG
-VWFG
-VW
-FG
-VW
-SS
-SS
-SS
-SSʰ��˱ݱ̲޲�������αݱϲ޲�����FGFGVWVWFGFGVWVW����]]]]%&&'XYXY����ݱ��޲�������°��ı��Ʋ����������������������]���]���]���]����]���]���]���]�;<<=;<<=;<<=;<<=����������������````````````````;<<=;<<=%&&'XYXY����������������������������������]�]]]�%&&'XYXY�]���]]��]]��]����]��]]��]]���]��]���]���]���]����]���]���]���]���������������������;<<=�����������Ӣ��ґ���������ӡ��Ӣ�������
\ No newline at end of file
--- a/tilesets/18_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, GREEN, GREEN, GREEN, RED, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, RED, RED, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GREEN, GREEN, RED, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, RED, RED, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GREEN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GREEN, GREEN, YELLOW, RED, RED
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, RED, RED, RED, RED, RED
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, GRAY, RED, WATER, WATER, ROOF, GRAY, GRAY
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN
-	tilepal 0, GRAY, GRAY, RED, WATER, WATER, ROOF, GRAY, GRAY
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, RED, RED, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, RED, ROOF, RED, RED, RED, RED, RED
-	tilepal 1, RED, RED, RED, RED, RED, RED, RED, RED
-	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
-	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
-	tilepal 1, WATER, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, WATER, WATER, WATER, WATER, WATER, WATER, WATER
-	tilepal 1, WATER, RED, GRAY, GRAY, RED, WATER, WATER, WATER
-	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, GRAY
binary files a/tilesets/19_collision.bin /dev/null differ
binary files a/tilesets/19_metatiles.bin /dev/null differ
--- a/tilesets/19_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, WATER, WATER, WATER, BROWN, WATER, WATER, RED
-	tilepal 0, RED, ROOF, ROOF, BROWN, ROOF, RED, RED, RED
-	tilepal 0, ROOF, WATER, ROOF, BROWN, ROOF, WATER, WATER, RED
-	tilepal 0, RED, ROOF, ROOF, WATER, ROOF, RED, RED, RED
-	tilepal 0, ROOF, ROOF, WATER, BROWN, RED, WATER, WATER, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, BROWN, ROOF, ROOF, GRAY, GRAY
-	tilepal 0, ROOF, ROOF, WATER, WATER, RED, ROOF, BROWN, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, BROWN, BROWN, ROOF, BROWN, WATER
-	tilepal 0, YELLOW, YELLOW, ROOF, ROOF, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, RED, RED, GRAY, GRAY, GREEN, GREEN, ROOF, ROOF
-	tilepal 0, YELLOW, YELLOW, ROOF, ROOF, ROOF, ROOF, GRAY, GRAY
-	tilepal 0, RED, RED, GREEN, GREEN, ROOF, ROOF, GRAY, GRAY
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, BROWN, BROWN, ROOF, GRAY, GRAY, BROWN, BROWN, RED
-	tilepal 1, RED, RED, RED, BROWN, RED, RED, RED, RED
-	tilepal 1, ROOF, WATER, ROOF, BROWN, RED, WATER, WATER, RED
-	tilepal 1, RED, RED, RED, WATER, RED, RED, RED, RED
-	tilepal 1, ROOF, ROOF, WATER, BROWN, RED, WATER, WATER, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, BROWN, RED, ROOF, GRAY, GRAY
-	tilepal 1, ROOF, ROOF, WATER, WATER, RED, RED, BROWN, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, BROWN, BROWN, ROOF, BROWN, WATER
-	tilepal 1, RED, RED, ROOF, ROOF, BROWN, BROWN, GRAY, GRAY
-	tilepal 1, RED, RED, GRAY, GRAY, GREEN, GREEN, ROOF, ROOF
-	tilepal 1, RED, RED, ROOF, ROOF, ROOF, ROOF, GRAY, GRAY
-	tilepal 1, RED, RED, GREEN, GREEN, ROOF, ROOF, GRAY, GRAY
binary files a/tilesets/20_collision.bin /dev/null differ
binary files a/tilesets/20_metatiles.bin /dev/null differ
--- a/tilesets/20_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GREEN
-	tilepal 0, GREEN, RED, RED, GRAY, GRAY, RED, RED, RED
-	tilepal 0, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GREEN
-	tilepal 0, GREEN, RED, RED, GRAY, GRAY, WATER, RED, RED
-	tilepal 0, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GREEN
-	tilepal 0, GREEN, ROOF, ROOF, GRAY, GRAY, YELLOW, RED, RED
-	tilepal 0, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GREEN
-	tilepal 0, GREEN, ROOF, ROOF, WATER, WATER, GREEN, RED, RED
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, GREEN
-	tilepal 0, GREEN, YELLOW, YELLOW, WATER, WATER, BROWN, YELLOW, YELLOW
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, GREEN
-	tilepal 0, GREEN, YELLOW, YELLOW, GRAY, GRAY, BROWN, YELLOW, YELLOW
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GREEN
-	tilepal 1, GREEN, RED, RED, GRAY, GRAY, RED, RED, RED
-	tilepal 1, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GREEN
-	tilepal 1, GREEN, RED, RED, GRAY, GRAY, WATER, RED, RED
-	tilepal 1, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GREEN
-	tilepal 1, GREEN, ROOF, ROOF, GRAY, GRAY, YELLOW, RED, RED
-	tilepal 1, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GREEN
-	tilepal 1, GREEN, ROOF, ROOF, WATER, WATER, GREEN, RED, RED
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, GREEN
-	tilepal 1, GREEN, YELLOW, YELLOW, WATER, WATER, BROWN, YELLOW, YELLOW
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, GREEN
-	tilepal 1, GREEN, YELLOW, YELLOW, GRAY, GRAY, BROWN, YELLOW, YELLOW
binary files a/tilesets/21_collision.bin /dev/null differ
--- a/tilesets/21_metatiles.bin
+++ /dev/null
@@ -1,2 +1,0 @@
-================"#23"#23��%,-./<==?LMNO��
- !01@A544$$$$����44$$$$4444$$$$�R,/�RLO�R\]������%4�$����,/��LO:;\]��5$$$$�R&'�R�R�������������������������JK��Z[%444$$$�����	���4444$$$$4444$$$$����������������������������������������������4444$$$$����================���������������۪��������������݈������������������������������������4���$���������������������۶�����������������������������������������������ѷ����������������������������DETUQQQQPPPPHIHIXYXY4���$�������>�������������������44��������4444����������������^_^_��()��89��:;����$$$$�ǂ��ׁ�����()$$89��:;�ׂ���������	�BC���S����������Ͼ����߁���������������4$$$�444���$����������������4444$$$$�������������������������������
\ No newline at end of file
--- a/tilesets/21_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, WATER, WATER, WATER, WATER, WATER, WATER, WATER
-	tilepal 0, WATER, WATER, GRAY, GRAY, RED, GRAY, WATER, WATER
-	tilepal 0, RED, WATER, GRAY, WATER, WATER, WATER, RED, RED
-	tilepal 0, WATER, WATER, GRAY, GRAY, GRAY, GREEN, GREEN, GRAY
-	tilepal 0, GRAY, GRAY, RED, RED, RED, WATER, WATER, WATER
-	tilepal 0, RED, RED, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, RED, RED, RED, WATER, WATER, WATER
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, WATER, GRAY
-	tilepal 0, GRAY, GRAY, WATER, WATER, WATER, WATER, RED, WATER
-	tilepal 0, YELLOW, YELLOW, WATER, WATER, GRAY, RED, RED, GRAY
-	tilepal 0, RED, RED, WATER, WATER, WATER, WATER, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, WATER, WATER, GRAY, GRAY, YELLOW, YELLOW
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, GRAY, GRAY, GRAY, WATER, RED, RED, WATER, WATER
-	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, GRAY, WATER
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, RED, RED, WATER, WATER
-	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
-	tilepal 1, RED, RED, GRAY, GRAY, RED, RED, WATER, WATER
-	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, GREEN, GREEN
-	tilepal 1, WATER, RED, WATER, BROWN, WATER, WATER, WATER, WATER
-	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, GREEN, GREEN
-	tilepal 1, GRAY, GRAY, WATER, WATER, WATER, WATER, GRAY, GRAY
-	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, BROWN, BROWN
-	tilepal 1, GRAY, GRAY, WATER, WATER, WATER, WATER, GRAY, GRAY
-	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, BROWN, BROWN
binary files a/tilesets/22_collision.bin /dev/null differ
binary files a/tilesets/22_metatiles.bin /dev/null differ
--- a/tilesets/22_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, RED, WATER, WATER, GRAY, GRAY, WATER, WATER
-	tilepal 0, WATER, WATER, WATER, WATER, WATER, WATER, BROWN, BROWN
-	tilepal 0, WATER, RED, WATER, WATER, GRAY, GRAY, WATER, WATER
-	tilepal 0, WATER, WATER, WATER, WATER, WATER, WATER, BROWN, BROWN
-	tilepal 0, WATER, RED, RED, RED, RED, WATER, GRAY, GRAY
-	tilepal 0, WATER, WATER, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, WATER, RED, RED, RED, RED, WATER, GRAY, WATER
-	tilepal 0, GRAY, GRAY, BROWN, RED, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, RED, BROWN, RED, BROWN, BROWN, BROWN, RED, RED
-	tilepal 0, WATER, WATER, WATER, RED, RED, RED, RED, WATER
-	tilepal 0, BROWN, YELLOW, RED, BROWN, BROWN, BROWN, RED, RED
-	tilepal 0, WATER, RED, RED, RED, RED, GRAY, RED, WATER
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, GRAY, WATER, GRAY, WATER, WATER, WATER, ROOF, ROOF
-	tilepal 1, YELLOW, YELLOW, GRAY, GRAY, WATER, WATER, RED, RED
-	tilepal 1, GRAY, RED, RED, WATER, WATER, WATER, WATER, WATER
-	tilepal 1, RED, GRAY, GRAY, GRAY, GREEN, YELLOW, RED, RED
-	tilepal 1, GRAY, GRAY, RED, RED, WATER, WATER, GRAY, GRAY
-	tilepal 1, YELLOW, YELLOW, BROWN, YELLOW, WATER, WATER, YELLOW, RED
-	tilepal 1, GRAY, GRAY, RED, RED, GRAY, WATER, WATER, WATER
-	tilepal 1, GRAY, GRAY, BROWN, YELLOW, RED, RED, YELLOW, RED
-	tilepal 1, GRAY, GRAY, RED, RED, RED, RED, WATER, WATER
-	tilepal 1, GRAY, GRAY, YELLOW, BROWN, WATER, WATER, GRAY, BROWN
-	tilepal 1, RED, RED, RED, RED, RED, RED, GRAY, GRAY
-	tilepal 1, YELLOW, YELLOW, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
binary files a/tilesets/23_collision.bin /dev/null differ
--- a/tilesets/23_metatiles.bin
+++ /dev/null
@@ -1,2 +1,0 @@
-
@ !!A1A1!!!!!!@ A1A1
-A1A1A1A1A1A1A1A1A1A1!!!!!!!!A1A1!!!!-.=><>MN./>?,NO()89*+:;()89*+:;MN]^NO^_A1A1@ !!A1A1!!@ !!!!^^^^"#23&'67"#23&'67PQPQPQPQPQPQPQPQ$$$$	
"#23!!67"#!!2367%545%545%545%545	^^		��������������������������������FVGWPQPQRSRSBCHZ[!XL\67IBCY!Z[L\67JKZ[L\67JKZ[L\67DETU!!!!PPPPPPPPFVGW
\ No newline at end of file
--- a/tilesets/23_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, RED
-	tilepal 0, RED, RED, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, RED
-	tilepal 0, RED, RED, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
-	tilepal 0, RED, RED, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
-	tilepal 0, RED, RED, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, RED
-	tilepal 1, RED, RED, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, RED
-	tilepal 1, RED, RED, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
-	tilepal 1, RED, RED, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
-	tilepal 1, RED, RED, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN
binary files a/tilesets/24_collision.bin /dev/null differ
--- a/tilesets/24_metatiles.bin
+++ /dev/null
@@ -1,6 +1,0 @@
-$$$$$$$$*+:;"#23%&&%&&&&&&&&&&&&&'&&&'
-&
-&&&67&&67&&&&$$$$*+:;$$$$"#23







()89







 !01







$$&&&&



@@@@@@@@@@@@@@@@%&&&%&&&%&&&%&&&&&&&&&&&&&&&&&&&&&&'&&&'&&&'&&&'67&&67&&$$%&&'%'

&&&&&&&&

-&
-67'67&'&&&&&&&&&&&&%&&&&&&&&&&'&&&
-&&&
\ No newline at end of file
--- a/tilesets/24_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, BROWN, BROWN, GRAY, GRAY, GREEN, BROWN, BROWN, BROWN
-	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, GRAY, GRAY, WATER, BROWN, BROWN, BROWN
-	tilepal 0, GRAY, GRAY, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, BROWN, BROWN, GRAY, GRAY, GREEN, BROWN, BROWN, BROWN
-	tilepal 1, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, GRAY, GRAY, WATER, BROWN, BROWN, BROWN
-	tilepal 1, GRAY, GRAY, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
binary files a/tilesets/25_collision.bin /dev/null differ
binary files a/tilesets/25_metatiles.bin /dev/null differ
--- a/tilesets/25_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, GREEN, BROWN, RED, GREEN, BROWN, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN, GREEN, GREEN
-	tilepal 0, RED, RED, RED, GRAY, WATER, ROOF, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, BROWN, GREEN, GREEN, GREEN, GREEN
-	tilepal 0, RED, RED, RED, BROWN, BROWN, BROWN, BROWN, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, BROWN, GREEN, BROWN, BROWN, GREEN
-	tilepal 0, RED, RED, RED, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, GREEN, GREEN, GREEN, BROWN, BROWN, GREEN
-	tilepal 0, BROWN, RED, BROWN, BROWN, GRAY, GRAY, GRAY, BROWN
-	tilepal 0, BROWN, BROWN, GREEN, GREEN, GRAY, GRAY, GRAY, RED
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, BROWN
-	tilepal 0, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, WATER
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, WATER, WATER, GRAY, RED, GREEN, BROWN, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN, GREEN, GREEN
-	tilepal 1, WATER, WATER, RED, GRAY, WATER, ROOF, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, BROWN, GREEN, GREEN, GREEN, GREEN
-	tilepal 1, RED, RED, RED, BROWN, BROWN, BROWN, BROWN, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, BROWN, GREEN, BROWN, BROWN, GREEN
-	tilepal 1, RED, RED, RED, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, GREEN, GREEN, GREEN, BROWN, BROWN, GREEN
-	tilepal 1, BROWN, RED, BROWN, BROWN, GRAY, GRAY, GRAY, BROWN
-	tilepal 1, BROWN, BROWN, GREEN, GREEN, WATER, WATER, WATER, RED
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, BROWN
-	tilepal 1, BROWN, BROWN, GRAY, GRAY, WATER, WATER, WATER, GRAY
binary files a/tilesets/26_collision.bin /dev/null differ
binary files a/tilesets/26_metatiles.bin /dev/null differ
--- a/tilesets/26_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, WATER, WATER, WATER, WATER, YELLOW, YELLOW, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW, YELLOW, YELLOW
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, RED, RED, RED, GRAY, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW
-	tilepal 0, YELLOW, YELLOW, RED, RED, RED, GRAY, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
binary files a/tilesets/27_collision.bin /dev/null differ
binary files a/tilesets/27_metatiles.bin /dev/null differ
--- a/tilesets/27_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, RED, RED, WATER, WATER, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, WATER, WATER, RED, WATER, WATER, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, ROOF, ROOF, GRAY, GRAY, BROWN, GRAY, GRAY, BROWN
-	tilepal 0, BROWN, ROOF, ROOF, GRAY, RED, RED, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, WATER, GRAY, GRAY, BROWN
-	tilepal 0, BROWN, GRAY, GRAY, GRAY, RED, RED, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, BROWN, BROWN, YELLOW, YELLOW, GREEN, GREEN
-	tilepal 0, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, RED, RED, WATER, WATER, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW
-	tilepal 1, YELLOW, YELLOW, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, RED, YELLOW, YELLOW, RED
-	tilepal 1, ROOF, RED, RED, ROOF, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, ROOF, ROOF, GRAY, GRAY, WATER, GRAY, GRAY, BROWN
-	tilepal 1, BROWN, ROOF, ROOF, GRAY, RED, RED, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, WATER, GRAY, GRAY, BROWN
-	tilepal 1, BROWN, GRAY, GRAY, GRAY, RED, RED, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, BROWN, BROWN, GRAY, GRAY, GREEN, GREEN
-	tilepal 1, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, RED, RED, WATER, WATER, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, RED, GRAY, GRAY, GRAY, GRAY
binary files a/tilesets/28_collision.bin /dev/null differ
--- a/tilesets/28_metatiles.bin
+++ /dev/null
@@ -1,2 +1,0 @@
-*+:;,-<=EFUV	0144444444


44
444444





CDCDSTSTCDCDSTST







"#23






















-QQQQQQQQ./>?./>?@ANOP]^_&'67











	01	01@AAAPQQQPQQQAAABQQQRQQQR@AABPQQRPQQRPQQRPQQRPQQRPQQRPQQRPQQRPQQRPQQR@B@B()89()89
\ No newline at end of file
--- a/tilesets/28_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, GRAY, RED, WATER, WATER, WATER, WATER, RED
-	tilepal 0, RED, GRAY, WATER, WATER, WATER, WATER, GRAY, GRAY
-	tilepal 0, GRAY, RED, RED, WATER, WATER, WATER, WATER, RED
-	tilepal 0, RED, GRAY, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
-	tilepal 0, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN
-	tilepal 0, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, GRAY, GRAY, RED, WATER, WATER, WATER, WATER, RED
-	tilepal 1, RED, GRAY, WATER, WATER, WATER, WATER, GRAY, GRAY
-	tilepal 1, GRAY, RED, RED, WATER, WATER, WATER, WATER, RED
-	tilepal 1, RED, GRAY, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
-	tilepal 1, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN
-	tilepal 1, GRAY, GRAY, GRAY, BROWN, BROWN, YELLOW, YELLOW, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, BROWN, BROWN, YELLOW, YELLOW, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
binary files a/tilesets/29_collision.bin /dev/null differ
--- a/tilesets/29_metatiles.bin
+++ /dev/null
@@ -1,3 +1,0 @@
-�����������
-������������������������������������������������������*+�:;����������������������������������������������������������Ө��������������ʚ��������������ʛ���������������																���������������������������������������������������������������ś�ժ�������������������������������������������ժ������������������������ū�՚������������Ū��՚���������������������Ū������������������������Ś��������������������������ՙ���������Ⱥ��������������������������͘��������������������������BC�������������



���ǒ������������������ׂ��ǒ����ǂ��ג������������������ǂ��ג�RRRRSS(S
>8(TRRRR,--.IJHKRRRRS)SS9?
V)RRRRSSSS


>TLM
\]XYZ[8//9WGGGU?
NO^_
��������
-��������*+�:;�������������ɾ����������������͈���������������&'
67EF




����������������4444444444444444
\ No newline at end of file
--- a/tilesets/29_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, BROWN, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 0, ROOF, BROWN, ROOF, ROOF, BROWN, BROWN, WATER, WATER
-	tilepal 0, BROWN, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 0, ROOF, ROOF, ROOF, ROOF, BROWN, BROWN, WATER, WATER
-	tilepal 0, WATER, ROOF, ROOF, ROOF, ROOF, ROOF, GRAY, GRAY
-	tilepal 0, WATER, WATER, ROOF, ROOF, WATER, WATER, WATER, WATER
-	tilepal 0, BROWN, WATER, WATER, WATER, WATER, WATER, GRAY, GRAY
-	tilepal 0, WATER, WATER, ROOF, ROOF, GRAY, GRAY, WATER, WATER
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, GREEN, GRAY, GRAY, WATER
-	tilepal 0, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
-	tilepal 0, BROWN, BROWN, GRAY, GRAY, WATER, WATER, WATER, WATER
-	tilepal 0, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, GREEN, GREEN
-	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
-	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, GREEN, GREEN
-	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
binary files a/tilesets/30_collision.bin /dev/null differ
--- a/tilesets/30_metatiles.bin
+++ /dev/null
@@ -1,6 +1,0 @@
-$$$$$$$$*+:;"#23%&&%&&&&&&&&&&&&&'&&&'
-&
-&&&67&&67&&&&$$$$*+:;$$$$"#23







()89







 !01







$$&&&&



@@@@@@@@@@@@@@@@%&&&%&&&%&&&%&&&&&&&&&&&&&&&&&&&&&&'&&&'&&&'&&&'67&&67&&$$%&&'%'

&&&&&&&&

-&
-67'67&'&&&&&&&&&&&&%&&&&&&&&&&'&&&
-&&&
\ No newline at end of file
--- a/tilesets/30_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, BROWN, BROWN, GRAY, GRAY, GREEN, BROWN, BROWN, BROWN
-	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, GRAY, GRAY, WATER, BROWN, BROWN, BROWN
-	tilepal 0, GRAY, GRAY, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, BROWN, BROWN, GRAY, GRAY, GREEN, BROWN, BROWN, BROWN
-	tilepal 1, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, GRAY, GRAY, WATER, BROWN, BROWN, BROWN
-	tilepal 1, GRAY, GRAY, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
binary files a/tilesets/31_collision.bin /dev/null differ
--- a/tilesets/31_metatiles.bin
+++ /dev/null
@@ -1,1 +1,0 @@
-
,-./<=>?****
,-./<=>?	***&'&'6767&'67&'&'6767&'67&'67***&'67&'67(9&'8:67&'67&'&'6767&'&'6767&'67&'&'6767&'67&'67&'67&'67)**********+** !!! !!! !!!!!!!!!!!!!!!!!!"!!!"!!!"02 !!!0111#$$$#$!!!!1111$$$$$$!!!"1112$$$%$%#$$$#$$$#$34#$$$#$$$#$$$3444$$$$$$$$$$$$4444$$$%$$$%$$$%4445
\ No newline at end of file
--- a/tilesets/31_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, BROWN, BROWN, RED, YELLOW, GREEN, BROWN, YELLOW
-	tilepal 0, YELLOW, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, GREEN
-	tilepal 0, BROWN, BROWN, BROWN, RED, WATER, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, GREEN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
-	tilepal 0, GREEN, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, GREEN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
-	tilepal 0, GREEN, GREEN, GREEN, BROWN, GREEN, BROWN, BROWN, GREEN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, GRAY, BROWN, BROWN, RED, YELLOW, GREEN, BROWN, YELLOW
-	tilepal 1, YELLOW, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, GREEN
-	tilepal 1, BROWN, BROWN, BROWN, RED, WATER, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, GREEN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
-	tilepal 1, GREEN, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, GREEN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
-	tilepal 1, GREEN, GREEN, GREEN, BROWN, GREEN, BROWN, BROWN, GREEN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
binary files a/tilesets/32_collision.bin /dev/null differ
--- a/tilesets/32_metatiles.bin
+++ /dev/null
@@ -1,17 +1,0 @@
-�À��Ӑ��������������������������������������������������Ǧ��׶������������������������������������������������������ǀ��א�����������������	
-
-
- !"#����@ABC	89
-
-
-
-
-
-
-
-
-
-
-TVXY	
-C 6!@	#8
-6"7�����������������������������������������������������������������������������������������������������������������������𠡀��������������������������������Ő������������������������������������������������������������Ѳ�����������������������������������������
\ No newline at end of file
--- a/tilesets/32_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, WATER, WATER, WATER, WATER, YELLOW, YELLOW, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW, YELLOW, YELLOW
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, RED, RED, RED, GRAY, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW
-	tilepal 0, YELLOW, YELLOW, RED, RED, RED, GRAY, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
binary files a/tilesets/33_collision.bin /dev/null differ
--- a/tilesets/33_metatiles.bin
+++ /dev/null
@@ -1,17 +1,0 @@
-�͈��ݘ������ɨ��ٸ����������������ɸ����������������������Ð��������Ǭ��׼����������������������������������è��Ӹ�	
-
-
- !"#��������@ABC	89
-
-
-
-
-
-
-
-
-
-
-TVXY	
-C 6!@	#8
-6"7[\M]�͠��ݰ��ǎ��מ��ǎ��מ����������͈��ݘ����������������Ð��������������������ǎ��מ��������������ŀ��Ր�������������
\ No newline at end of file
--- a/tilesets/33_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, WATER, WATER, WATER, WATER, YELLOW, YELLOW, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW, YELLOW, YELLOW
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, RED, RED, RED, GRAY, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW
-	tilepal 0, YELLOW, YELLOW, RED, RED, RED, GRAY, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
binary files a/tilesets/34_collision.bin /dev/null differ
--- a/tilesets/34_metatiles.bin
+++ /dev/null
@@ -1,17 +1,0 @@
-���ɼ��������ͬ��ݼ��Æ��Ӗ������Ŏ��՞��������������È��Ә������������������������Ø��������������������ǎ��מ�����	
-
-
- !"#��������@ABC	89
-
-
-
-
-
-
-
-
-
-
-TVXY	
-C 6!@	#8
-6"7������
\ No newline at end of file
--- a/tilesets/34_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, WATER, WATER, WATER, WATER, YELLOW, YELLOW, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW, YELLOW, YELLOW
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, RED, RED, RED, GRAY, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW
-	tilepal 0, YELLOW, YELLOW, RED, RED, RED, GRAY, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
binary files a/tilesets/35_collision.bin /dev/null differ
--- a/tilesets/35_metatiles.bin
+++ /dev/null
@@ -1,17 +1,0 @@
-�ǎ��מ���[\��M]�������ż����ň��՘������������Ü������������������������Š��հ�������������������������	
-
-
- !"#�È��Ә�@ABC	89
-
-
-
-
-
-
-
-
-
-
-TVXY	
-C 6!@	#8
-6"7���ɚ����ň��՘����������������ɼ������������������������ͬ��ݼ��æ��Ӷ�����
\ No newline at end of file
--- a/tilesets/35_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, WATER, WATER, WATER, WATER, YELLOW, YELLOW, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW, YELLOW, YELLOW
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, RED, RED, RED, GRAY, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW
-	tilepal 0, YELLOW, YELLOW, RED, RED, RED, GRAY, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
binary files a/tilesets/36_collision.bin /dev/null differ
--- a/tilesets/36_metatiles.bin
+++ /dev/null
@@ -1,17 +1,0 @@
-�ǎ��מ������������������Ŏ��՞����������������Ø����������������������������������������������������������ǐ���	
-
-
- !"#�Ɉ��٘�@ABC	89
-
-
-
-
-
-
-
-
-
-
-TVXY	
-C 6!@	#8
-6"7�������������Š��հ���������
\ No newline at end of file
--- a/tilesets/36_palette_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, WATER, WATER, WATER, WATER, YELLOW, YELLOW, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW, YELLOW, YELLOW
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, RED, RED, RED, GRAY, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW
-	tilepal 0, YELLOW, YELLOW, RED, RED, RED, GRAY, GRAY, GRAY
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW
-	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
-	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-
-rept 16
-	db $ff
-endr
-
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
-	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
binary files /dev/null b/tilesets/aerodactyl_word_room_collision.bin differ
--- /dev/null
+++ b/tilesets/aerodactyl_word_room_metatiles.bin
@@ -1,0 +1,17 @@
+�ǎ��מ������������������Ŏ��՞����������������Ø����������������������������������������������������������ǐ���	
+
+
+ !"#�Ɉ��٘�@ABC	89
+
+
+
+
+
+
+
+
+
+
+TVXY	
+C 6!@	#8
+6"7�������������Š��հ���������
\ No newline at end of file
--- /dev/null
+++ b/tilesets/aerodactyl_word_room_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, WATER, WATER, WATER, WATER, YELLOW, YELLOW, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, RED, RED, RED, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, RED, RED, RED, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
--- a/tilesets/animations.asm
+++ b/tilesets/animations.asm
@@ -35,9 +35,9 @@
 	jp hl
 ; fc01b
 
-Tileset00Anim: ; 0xfc01b
-Tileset02Anim: ; 0xfc01b
-Tileset03Anim: ; 0xfc01b
+Tileset0Anim: ; 0xfc01b
+TilesetJohto2Anim: ; 0xfc01b
+TilesetKantoAnim: ; 0xfc01b
 	dw VTiles2 tile $14, AnimateWaterTile
 	dw NULL,  WaitTileAnimation
 	dw NULL,  WaitTileAnimation
@@ -51,7 +51,7 @@
 	dw NULL,  DoneTileAnimation
 ; 0xfc047
 
-Tileset25Anim: ; 0xfc047
+TilesetParkAnim: ; 0xfc047
 	dw VTiles2 tile $14, AnimateWaterTile
 	dw NULL,  WaitTileAnimation
 	dw VTiles2 tile $5f, AnimateFountain
@@ -65,7 +65,7 @@
 	dw NULL,  DoneTileAnimation
 ; 0xfc073
 
-Tileset31Anim: ; 0xfc073
+TilesetIlexForestAnim: ; 0xfc073
 	dw NULL,  ForestTreeLeftAnimation
 	dw NULL,  ForestTreeRightAnimation
 	dw NULL,  WaitTileAnimation
@@ -80,7 +80,7 @@
 	dw NULL,  DoneTileAnimation
 ; 0xfc0a3
 
-Tileset01Anim: ; 0xfc0a3
+TilesetJohto1Anim: ; 0xfc0a3
 	dw VTiles2 tile $14, AnimateWaterTile
 	dw NULL,  WaitTileAnimation
 	dw NULL,  WaitTileAnimation
@@ -124,7 +124,7 @@
 	dw NULL,  DoneTileAnimation
 ; 0xfc12f
 
-Tileset09Anim: ; 0xfc12f
+TilesetPortAnim: ; 0xfc12f
 	dw VTiles2 tile $14, AnimateWaterTile
 	dw NULL,  WaitTileAnimation
 	dw NULL,  WaitTileAnimation
@@ -139,7 +139,7 @@
 	dw NULL,  DoneTileAnimation
 ; 0xfc15f
 
-Tileset15Anim: ; 0xfc15f
+TilesetGym1Anim: ; 0xfc15f
 	dw NULL,  SafariFountainAnim2
 	dw NULL,  WaitTileAnimation
 	dw NULL,  WaitTileAnimation
@@ -182,8 +182,8 @@
 	dw NULL,  DoneTileAnimation
 ; 0xfc1e7
 
-Tileset24Anim: ; 0xfc1e7
-Tileset30Anim: ; 0xfc1e7
+TilesetCaveAnim: ; 0xfc1e7
+TilesetWhirlIslandsAnim: ; 0xfc1e7
 	dw VTiles2 tile $14, WriteTileToBuffer
 	dw NULL,  FlickeringCaveEntrancePalette
 	dw wTileAnimBuffer, ScrollTileRightLeft
@@ -205,7 +205,7 @@
 	dw NULL,  DoneTileAnimation
 ; 0xfc233
 
-Tileset29Anim: ; 0xfc233
+TilesetIcePathAnim: ; 0xfc233
 	dw VTiles2 tile $35, WriteTileToBuffer
 	dw NULL,  FlickeringCaveEntrancePalette
 	dw wTileAnimBuffer, ScrollTileRightLeft
@@ -227,7 +227,7 @@
 	dw NULL,  DoneTileAnimation
 ; 0xfc27f
 
-Tileset23Anim: ; 0xfc27f
+TilesetSproutTowerAnim: ; 0xfc27f
 	dw SproutPillarTilePointer9,  AnimateSproutPillarTile
 	dw SproutPillarTilePointer10, AnimateSproutPillarTile
 	dw SproutPillarTilePointer7,  AnimateSproutPillarTile
@@ -259,31 +259,31 @@
 	dw NULL,  DoneTileAnimation
 ; 0xfc2e7
 
-Tileset04Anim: ; 0xfc2e7
-Tileset05Anim: ; 0xfc2e7
-Tileset06Anim: ; 0xfc2e7
-Tileset07Anim: ; 0xfc2e7
-Tileset08Anim: ; 0xfc2e7
-Tileset10Anim: ; 0xfc2e7
-Tileset11Anim: ; 0xfc2e7
-Tileset12Anim: ; 0xfc2e7
-Tileset13Anim: ; 0xfc2e7
-Tileset14Anim: ; 0xfc2e7
-Tileset16Anim: ; 0xfc2e7
-Tileset17Anim: ; 0xfc2e7
-Tileset18Anim: ; 0xfc2e7
-Tileset19Anim: ; 0xfc2e7
-Tileset20Anim: ; 0xfc2e7
-Tileset21Anim: ; 0xfc2e7
-Tileset22Anim: ; 0xfc2e7
-Tileset26Anim: ; 0xfc2e7
-Tileset27Anim: ; 0xfc2e7
-Tileset28Anim: ; 0xfc2e7
-Tileset32Anim: ; 0xfc2e7
-Tileset33Anim: ; 0xfc2e7
-Tileset34Anim: ; 0xfc2e7
-Tileset35Anim: ; 0xfc2e7
-Tileset36Anim: ; 0xfc2e7
+TilesetBattleTowerOutsideAnim: ; 0xfc2e7
+TilesetHouse1Anim: ; 0xfc2e7
+TilesetPlayersHouseAnim: ; 0xfc2e7
+TilesetPokecenterAnim: ; 0xfc2e7
+TilesetGateAnim: ; 0xfc2e7
+TilesetLabAnim: ; 0xfc2e7
+TilesetPowerPlantAnim: ; 0xfc2e7
+TilesetMartAnim: ; 0xfc2e7
+TilesetCeladonMansionAnim: ; 0xfc2e7
+TilesetGameCornerAnim: ; 0xfc2e7
+TilesetKurtsHouseAnim: ; 0xfc2e7
+TilesetTrainStationAnim: ; 0xfc2e7
+TilesetOlivineGymAnim: ; 0xfc2e7
+TilesetLighthouseAnim: ; 0xfc2e7
+TilesetPlayersHouse2FAnim: ; 0xfc2e7
+TilesetPokeComCenterAnim: ; 0xfc2e7
+TilesetBattleTowerAnim: ; 0xfc2e7
+TilesetRuinsOfAlphAnim: ; 0xfc2e7
+TilesetRadioTowerAnim: ; 0xfc2e7
+TilesetUndergroundAnim: ; 0xfc2e7
+TilesetBetaWordRoomAnim: ; 0xfc2e7
+TilesetHoOhWordRoomAnim: ; 0xfc2e7
+TilesetKabutoWordRoomAnim: ; 0xfc2e7
+TilesetOmanyteWordRoomAnim: ; 0xfc2e7
+TilesetAerodactylWordRoomAnim: ; 0xfc2e7
 	dw NULL,  WaitTileAnimation
 	dw NULL,  WaitTileAnimation
 	dw NULL,  WaitTileAnimation
--- a/tilesets/battle_tower.pal
+++ b/tilesets/battle_tower.pal
@@ -1,38 +1,39 @@
+; gray
 	RGB 30, 28, 26
 	RGB 19, 19, 19
 	RGB 13, 13, 13
 	RGB 07, 07, 07
-
+; red
 	RGB 30, 28, 26
 	RGB 31, 19, 24
 	RGB 30, 10, 06
 	RGB 07, 07, 07
-
+; green
 	RGB 18, 24, 09
 	RGB 15, 20, 01
 	RGB 09, 13, 00
 	RGB 07, 07, 07
-
+; water (blue)
 	RGB 30, 28, 26
 	RGB 15, 16, 31
 	RGB 09, 09, 31
 	RGB 07, 07, 07
-
+; yellow
 	RGB 30, 28, 26
 	RGB 31, 31, 07
 	RGB 31, 16, 01
 	RGB 07, 07, 07
-
+; brown
 	RGB 26, 24, 17
 	RGB 21, 17, 07
 	RGB 16, 13, 03
 	RGB 07, 07, 07
-
+; roof
 	RGB 05, 05, 16
 	RGB 08, 19, 28
 	RGB 00, 00, 00
 	RGB 31, 31, 31
-
+; text
 	RGB 31, 31, 16
 	RGB 31, 31, 16
 	RGB 14, 09, 00
binary files /dev/null b/tilesets/battle_tower_collision.bin differ
binary files /dev/null b/tilesets/battle_tower_metatiles.bin differ
binary files /dev/null b/tilesets/battle_tower_outside_collision.bin differ
binary files /dev/null b/tilesets/battle_tower_outside_metatiles.bin differ
--- /dev/null
+++ b/tilesets/battle_tower_outside_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, BROWN, BROWN, RED, GREEN, GREEN, GRAY, RED
+	tilepal 0, RED, RED, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, ROOF, GREEN, WATER, GREEN, BROWN, BROWN
+	tilepal 0, RED, RED, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN
+	tilepal 0, BROWN, BROWN, BROWN, RED, RED, BROWN, YELLOW, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, BROWN
+	tilepal 0, BROWN, BROWN, WATER, WATER, BROWN, BROWN, BROWN, YELLOW
+	tilepal 0, YELLOW, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 0, RED, BROWN, WATER, WATER, BROWN, GREEN, BROWN, BROWN
+	tilepal 0, BROWN, WATER, GRAY, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, WATER, GRAY, GRAY, GRAY, BROWN, BROWN, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, RED, WATER, WATER, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, RED, RED, RED, ROOF, RED, WATER, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, RED, RED, RED
+	tilepal 1, RED, ROOF, ROOF, ROOF, ROOF, ROOF, RED, RED
+	tilepal 1, RED, RED, RED, RED, RED, RED, RED, RED
+	tilepal 1, RED, RED, RED, RED, RED, YELLOW, YELLOW, YELLOW
+	tilepal 1, YELLOW, RED, RED, RED, WATER, WATER, WATER, RED
+	tilepal 1, RED, RED, ROOF, RED, RED, ROOF, RED, RED
+	tilepal 1, RED, ROOF, ROOF, RED, RED, RED, ROOF, ROOF
+	tilepal 1, RED, RED, RED, RED, YELLOW, RED, GREEN, RED
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, RED, ROOF
--- /dev/null
+++ b/tilesets/battle_tower_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, RED, WATER, WATER, GRAY, GRAY, WATER, WATER
+	tilepal 0, WATER, WATER, WATER, WATER, WATER, WATER, BROWN, BROWN
+	tilepal 0, WATER, RED, WATER, WATER, GRAY, GRAY, WATER, WATER
+	tilepal 0, WATER, WATER, WATER, WATER, WATER, WATER, BROWN, BROWN
+	tilepal 0, WATER, RED, RED, RED, RED, WATER, GRAY, GRAY
+	tilepal 0, WATER, WATER, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, WATER, RED, RED, RED, RED, WATER, GRAY, WATER
+	tilepal 0, GRAY, GRAY, BROWN, RED, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, RED, BROWN, RED, BROWN, BROWN, BROWN, RED, RED
+	tilepal 0, WATER, WATER, WATER, RED, RED, RED, RED, WATER
+	tilepal 0, BROWN, YELLOW, RED, BROWN, BROWN, BROWN, RED, RED
+	tilepal 0, WATER, RED, RED, RED, RED, GRAY, RED, WATER
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, WATER, GRAY, WATER, WATER, WATER, ROOF, ROOF
+	tilepal 1, YELLOW, YELLOW, GRAY, GRAY, WATER, WATER, RED, RED
+	tilepal 1, GRAY, RED, RED, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, RED, GRAY, GRAY, GRAY, GREEN, YELLOW, RED, RED
+	tilepal 1, GRAY, GRAY, RED, RED, WATER, WATER, GRAY, GRAY
+	tilepal 1, YELLOW, YELLOW, BROWN, YELLOW, WATER, WATER, YELLOW, RED
+	tilepal 1, GRAY, GRAY, RED, RED, GRAY, WATER, WATER, WATER
+	tilepal 1, GRAY, GRAY, BROWN, YELLOW, RED, RED, YELLOW, RED
+	tilepal 1, GRAY, GRAY, RED, RED, RED, RED, WATER, WATER
+	tilepal 1, GRAY, GRAY, YELLOW, BROWN, WATER, WATER, GRAY, BROWN
+	tilepal 1, RED, RED, RED, RED, RED, RED, GRAY, GRAY
+	tilepal 1, YELLOW, YELLOW, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
binary files /dev/null b/tilesets/beta_word_room_collision.bin differ
--- /dev/null
+++ b/tilesets/beta_word_room_metatiles.bin
@@ -1,0 +1,17 @@
+�À��Ӑ��������������������������������������������������Ǧ��׶������������������������������������������������������ǀ��א�����������������	
+
+
+ !"#����@ABC	89
+
+
+
+
+
+
+
+
+
+
+TVXY	
+C 6!@	#8
+6"7�����������������������������������������������������������������������������������������������������������������������𠡀��������������������������������Ő������������������������������������������������������������Ѳ�����������������������������������������
\ No newline at end of file
--- /dev/null
+++ b/tilesets/beta_word_room_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, WATER, WATER, WATER, WATER, YELLOW, YELLOW, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, RED, RED, RED, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, RED, RED, RED, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
--- a/tilesets/bg.pal
+++ b/tilesets/bg.pal
@@ -1,208 +1,226 @@
+; morn
+
+; gray
 	RGB 28, 31, 16
 	RGB 21, 21, 21
 	RGB 13, 13, 13
 	RGB 07, 07, 07
-
+; red
 	RGB 28, 31, 16
 	RGB 31, 19, 24
 	RGB 30, 10, 06
 	RGB 07, 07, 07
-
+; green
 	RGB 22, 31, 10
 	RGB 12, 25, 01
 	RGB 05, 14, 00
 	RGB 07, 07, 07
-
+; water
 	RGB 31, 31, 31
 	RGB 08, 12, 31
 	RGB 01, 04, 31
 	RGB 07, 07, 07
-
+; yellow
 	RGB 28, 31, 16
 	RGB 31, 31, 07
 	RGB 31, 16, 01
 	RGB 07, 07, 07
-
+; brown
 	RGB 28, 31, 16
 	RGB 24, 18, 07
 	RGB 20, 15, 03
 	RGB 07, 07, 07
-
+; roof
 	RGB 28, 31, 16
 	RGB 15, 31, 31
 	RGB 05, 17, 31
 	RGB 07, 07, 07
-
+; text
 	RGB 31, 31, 16
 	RGB 31, 31, 16
 	RGB 14, 09, 00
 	RGB 00, 00, 00
 
+; day
+
+; gray
 	RGB 27, 31, 27
 	RGB 21, 21, 21
 	RGB 13, 13, 13
 	RGB 07, 07, 07
-
+; red
 	RGB 27, 31, 27
 	RGB 31, 19, 24
 	RGB 30, 10, 06
 	RGB 07, 07, 07
-
+; green
 	RGB 22, 31, 10
 	RGB 12, 25, 01
 	RGB 05, 14, 00
 	RGB 07, 07, 07
-
+; water
 	RGB 31, 31, 31
 	RGB 08, 12, 31
 	RGB 01, 04, 31
 	RGB 07, 07, 07
-
+; yellow
 	RGB 27, 31, 27
 	RGB 31, 31, 07
 	RGB 31, 16, 01
 	RGB 07, 07, 07
-
+; brown
 	RGB 27, 31, 27
 	RGB 24, 18, 07
 	RGB 20, 15, 03
 	RGB 07, 07, 07
-
+; roof
 	RGB 27, 31, 27
 	RGB 15, 31, 31
 	RGB 05, 17, 31
 	RGB 07, 07, 07
-
+; text
 	RGB 31, 31, 16
 	RGB 31, 31, 16
 	RGB 14, 09, 00
 	RGB 00, 00, 00
 
+; nite
+
+; gray
 	RGB 15, 14, 24
 	RGB 11, 11, 19
 	RGB 07, 07, 12
 	RGB 00, 00, 00
-
+; red
 	RGB 15, 14, 24
 	RGB 14, 07, 17
 	RGB 13, 00, 08
 	RGB 00, 00, 00
-
+; green
 	RGB 15, 14, 24
 	RGB 08, 13, 19
 	RGB 00, 11, 13
 	RGB 00, 00, 00
-
+; water
 	RGB 15, 14, 24
 	RGB 05, 05, 17
 	RGB 03, 03, 10
 	RGB 00, 00, 00
-
+; yellow
 	RGB 30, 30, 11
 	RGB 16, 14, 18
 	RGB 16, 14, 10
 	RGB 00, 00, 00
-
+; brown
 	RGB 15, 14, 24
 	RGB 12, 09, 15
 	RGB 08, 04, 05
 	RGB 00, 00, 00
-
+; roof
 	RGB 15, 14, 24
 	RGB 13, 12, 23
 	RGB 11, 09, 20
 	RGB 00, 00, 00
-
+; text
 	RGB 31, 31, 16
 	RGB 31, 31, 16
 	RGB 14, 09, 00
 	RGB 00, 00, 00
 
+; dark
+
+; gray
 	RGB 01, 01, 02
 	RGB 00, 00, 00
 	RGB 00, 00, 00
 	RGB 00, 00, 00
-
+; red
 	RGB 01, 01, 02
 	RGB 00, 00, 00
 	RGB 00, 00, 00
 	RGB 00, 00, 00
-
+; green
 	RGB 01, 01, 02
 	RGB 00, 00, 00
 	RGB 00, 00, 00
 	RGB 00, 00, 00
-
+; water
 	RGB 01, 01, 02
 	RGB 00, 00, 00
 	RGB 00, 00, 00
 	RGB 00, 00, 00
-
+; yellow
 	RGB 30, 30, 11
 	RGB 00, 00, 00
 	RGB 00, 00, 00
 	RGB 00, 00, 00
-
+; brown
 	RGB 01, 01, 02
 	RGB 00, 00, 00
 	RGB 00, 00, 00
 	RGB 00, 00, 00
-
+; roof
 	RGB 01, 01, 02
 	RGB 00, 00, 00
 	RGB 00, 00, 00
 	RGB 00, 00, 00
-
+; text
 	RGB 31, 31, 16
 	RGB 31, 31, 16
 	RGB 14, 09, 00
 	RGB 00, 00, 00
 
+; indoor
+
+; gray
 	RGB 30, 28, 26
 	RGB 19, 19, 19
 	RGB 13, 13, 13
 	RGB 07, 07, 07
-
+; red
 	RGB 30, 28, 26
 	RGB 31, 19, 24
 	RGB 30, 10, 06
 	RGB 07, 07, 07
-
+; green
 	RGB 18, 24, 09
 	RGB 15, 20, 01
 	RGB 09, 13, 00
 	RGB 07, 07, 07
-
+; water
 	RGB 30, 28, 26
 	RGB 15, 16, 31
 	RGB 09, 09, 31
 	RGB 07, 07, 07
-
+; yellow
 	RGB 30, 28, 26
 	RGB 31, 31, 07
 	RGB 31, 16, 01
 	RGB 07, 07, 07
-
+; brown
 	RGB 26, 24, 17
 	RGB 21, 17, 07
 	RGB 16, 13, 03
 	RGB 07, 07, 07
-
+; roof
 	RGB 30, 28, 26
 	RGB 17, 19, 31
 	RGB 14, 16, 31
 	RGB 07, 07, 07
-
+; text
 	RGB 31, 31, 16
 	RGB 31, 31, 16
 	RGB 14, 09, 00
 	RGB 00, 00, 00
 
+; overworld water
+
+; morn/day
 	RGB 23, 23, 31
 	RGB 18, 19, 31
 	RGB 13, 12, 31
 	RGB 07, 07, 07
-
+; nite
 	RGB 15, 13, 27
 	RGB 10, 09, 20
 	RGB 04, 03, 18
binary files /dev/null b/tilesets/cave_collision.bin differ
--- /dev/null
+++ b/tilesets/cave_metatiles.bin
@@ -1,0 +1,6 @@
+$$$$$$$$*+:;"#23%&&%&&&&&&&&&&&&&'&&&'
+&
+&&&67&&67&&&&$$$$*+:;$$$$"#23







()89







 !01







$$&&&&



@@@@@@@@@@@@@@@@%&&&%&&&%&&&%&&&&&&&&&&&&&&&&&&&&&&'&&&'&&&'&&&'67&&67&&$$%&&'%'

&&&&&&&&

+&
+67'67&'&&&&&&&&&&&&%&&&&&&&&&&'&&&
+&&&
\ No newline at end of file
--- /dev/null
+++ b/tilesets/cave_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, GREEN, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, WATER, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, GREEN, BROWN, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, WATER, BROWN, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
binary files /dev/null b/tilesets/celadon_mansion_collision.bin differ
binary files /dev/null b/tilesets/celadon_mansion_metatiles.bin differ
--- /dev/null
+++ b/tilesets/celadon_mansion_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, BROWN, WATER, WATER, RED, WATER, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, WATER, WATER, WATER, WATER
+	tilepal 0, GRAY, RED, WATER, WATER, WATER, WATER, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, WATER, WATER, WATER, WATER
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 0, RED, GREEN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, GREEN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, WATER, BROWN, BROWN
+	tilepal 0, BROWN, GREEN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GREEN, WATER, BROWN, BROWN
+	tilepal 0, BROWN, GREEN, BROWN, BROWN, WATER, WATER, BROWN, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, YELLOW, GRAY, GRAY, GRAY, GRAY, GRAY, YELLOW, YELLOW
+	tilepal 1, YELLOW, YELLOW, YELLOW, YELLOW, RED, RED, WATER, WATER
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, YELLOW
+	tilepal 1, WATER, YELLOW, YELLOW, YELLOW, GREEN, GREEN, WATER, WATER
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, RED, RED, GRAY, YELLOW, RED, RED, YELLOW, WATER
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, YELLOW, YELLOW, GRAY, YELLOW, RED, RED, YELLOW, WATER
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, WATER, GRAY, GREEN
+	tilepal 1, YELLOW, YELLOW, WATER, YELLOW, WATER, WATER, YELLOW, YELLOW
+	tilepal 1, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN
+	tilepal 1, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW
--- a/tilesets/collision.asm
+++ b/tilesets/collision.asm
@@ -1,5 +1,8 @@
 NONTALKABLE EQUS "db"
-TALKABLE EQUS "db TALK +"
+TALKABLE    EQUS "db TALK +"
+
+TileCollisionTable:: ; 4ce1f
+; entries correspond to collision ids
 	NONTALKABLE  LANDTILE ; 00
 	NONTALKABLE  LANDTILE ; 01
 	NONTALKABLE  LANDTILE ; 02
@@ -256,3 +259,4 @@
 	NONTALKABLE  LANDTILE ; fd
 	NONTALKABLE  LANDTILE ; fe
 	NONTALKABLE  WALLTILE ; ff
+; 4cf1f
--- /dev/null
+++ b/tilesets/data.asm
@@ -1,0 +1,434 @@
+SECTION "Roofs", ROMX
+
+INCLUDE "tilesets/roofs.asm"
+
+
+SECTION "Tileset Data 1", ROMX
+
+TilesetKantoGFX: ; 0x18000
+INCBIN "gfx/tilesets/kanto.2bpp.lz"
+; 0x18606
+
+TilesetKantoMeta: ; 0x18606
+INCBIN "tilesets/kanto_metatiles.bin"
+; 0x18e06
+
+TilesetKantoColl: ; 0x18e06
+INCBIN "tilesets/kanto_collision.bin"
+; 0x19006
+
+Tileset0GFX: ; 0x19006
+TilesetJohto1GFX: ; 0x19006
+INCBIN "gfx/tilesets/johto_1.2bpp.lz"
+; 0x19c0e
+
+Tileset0Meta: ; 0x19c0e
+TilesetJohto1Meta: ; 0x19c0e
+INCBIN "tilesets/johto_1_metatiles.bin"
+; 0x1a40e
+
+Tileset0Coll: ; 0x1a40e
+TilesetJohto1Coll: ; 0x1a40e
+INCBIN "tilesets/johto_1_collision.bin"
+; 0x1a60e
+
+TilesetIcePathGFX: ; 0x1a60e
+INCBIN "gfx/tilesets/ice_path.2bpp.lz"
+; 0x1af3e
+
+TilesetIcePathMeta: ; 0x1af3e
+INCBIN "tilesets/ice_path_metatiles.bin"
+; 0x1b33e
+
+TilesetIcePathColl: ; 0x1b33e
+INCBIN "tilesets/ice_path_collision.bin"
+; 0x1b43e
+
+TilesetPlayersHouse2FGFX: ; 0x1b43e
+INCBIN "gfx/tilesets/players_house_2f.2bpp.lz"
+; 0x1b8fe
+
+TilesetPlayersHouse2FMeta: ; 0x1b8fe
+INCBIN "tilesets/players_house_2f_metatiles.bin"
+; 0x1bcfe
+
+TilesetPlayersHouse2FColl: ; 0x1bcfe
+INCBIN "tilesets/players_house_2f_collision.bin"
+; 0x1bdfe
+
+
+SECTION "Tileset Data 2", ROMX
+
+TilesetPokecenterGFX: ; 0x1c30c
+INCBIN "gfx/tilesets/pokecenter.2bpp.lz"
+; 0x1c73c
+
+TilesetPokecenterMeta: ; 0x1c73c
+INCBIN "tilesets/pokecenter_metatiles.bin"
+; 0x1cb3c
+
+TilesetPokecenterColl: ; 0x1cb3c
+INCBIN "tilesets/pokecenter_collision.bin"
+; 0x1cc3c
+
+TilesetPortGFX: ; 0x1cc3c
+INCBIN "gfx/tilesets/port.2bpp.lz"
+; 0x1d04c
+
+TilesetPortMeta: ; 0x1d04c
+INCBIN "tilesets/port_metatiles.bin"
+; 0x1d44c
+
+TilesetPortColl: ; 0x1d44c
+INCBIN "tilesets/port_collision.bin"
+; 0x1d54c
+
+TilesetPlayersHouseGFX: ; 0x1d54c
+INCBIN "gfx/tilesets/players_house.2bpp.lz"
+; 0x1d92c
+
+TilesetPlayersHouseMeta: ; 0x1d92c
+INCBIN "tilesets/players_house_metatiles.bin"
+; 0x1dd2c
+
+TilesetPlayersHouseColl: ; 0x1dd2c
+INCBIN "tilesets/players_house_collision.bin"
+; 0x1de2c
+
+TilesetCeladonMansionGFX: ; 0x1de2c
+INCBIN "gfx/tilesets/celadon_mansion.2bpp.lz"
+; 0x1e58c
+
+TilesetCeladonMansionMeta: ; 0x1e58c
+INCBIN "tilesets/celadon_mansion_metatiles.bin"
+; 0x1e98c
+
+TilesetCeladonMansionColl: ; 0x1e98c
+INCBIN "tilesets/celadon_mansion_collision.bin"
+; 0x1ea8c
+
+TilesetCaveGFX: ; 0x1ea8c
+INCBIN "gfx/tilesets/cave.2bpp.lz"
+; 0x1ee1c
+
+TilesetCaveMeta: ; 0x1ee1c
+TilesetWhirlIslandsMeta: ; 0x1ee1c
+INCBIN "tilesets/cave_metatiles.bin"
+; 0x1f21c
+
+TilesetCaveColl: ; 0x1f21c
+TilesetWhirlIslandsColl: ; 0x1f21c
+INCBIN "tilesets/cave_collision.bin"
+; 0x1f31c
+
+
+SECTION "Tileset Data 3", ROMX
+
+TilesetSproutTowerGFX: ; 0x20181
+INCBIN "gfx/tilesets/sprout_tower.2bpp.lz"
+; 0x206e1
+
+TilesetSproutTowerMeta: ; 0x206e1
+INCBIN "tilesets/sprout_tower_metatiles.bin"
+; 0x20ae1
+
+TilesetSproutTowerColl: ; 0x20ae1
+INCBIN "tilesets/sprout_tower_collision.bin"
+; 0x20be1
+
+TilesetLabGFX: ; 0x20be1
+INCBIN "gfx/tilesets/lab.2bpp.lz"
+; 0x213e1
+
+TilesetLabMeta: ; 0x213e1
+INCBIN "tilesets/lab_metatiles.bin"
+; 0x217e1
+
+TilesetLabColl: ; 0x217e1
+INCBIN "tilesets/lab_collision.bin"
+; 0x218e1
+
+TilesetMartGFX: ; 0x218e1
+INCBIN "gfx/tilesets/mart.2bpp.lz"
+; 0x22031
+
+TilesetMartMeta: ; 0x22031
+INCBIN "tilesets/mart_metatiles.bin"
+; 0x22431
+
+TilesetMartColl: ; 0x22431
+INCBIN "tilesets/mart_collision.bin"
+; 0x22531
+
+TilesetGameCornerGFX: ; 0x22531
+INCBIN "gfx/tilesets/game_corner.2bpp.lz"
+; 0x22af1
+
+TilesetGameCornerMeta: ; 0x22af1
+INCBIN "tilesets/game_corner_metatiles.bin"
+; 0x22ef1
+
+TilesetGameCornerColl: ; 0x22ef1
+INCBIN "tilesets/game_corner_collision.bin"
+; 0x22ff1
+
+TilesetTrainStationGFX: ; 0x22ff1
+INCBIN "gfx/tilesets/train_station.2bpp.lz"
+; 0x23391
+
+TilesetTrainStationMeta: ; 0x23391
+INCBIN "tilesets/train_station_metatiles.bin"
+; 0x23791
+
+TilesetTrainStationColl: ; 0x23791
+INCBIN "tilesets/train_station_collision.bin"
+; 0x23891
+
+TilesetIlexForestMeta: ; 0x23891
+INCBIN "tilesets/ilex_forest_metatiles.bin"
+; 0x23b11
+
+
+SECTION "Tileset Data 4", ROMX
+
+TilesetGym1GFX: ; 0x30000
+INCBIN "gfx/tilesets/gym_1.2bpp.lz"
+; 0x304e0
+
+TilesetGym1Meta: ; 0x304e0
+INCBIN "tilesets/gym_1_metatiles.bin"
+; 0x308e0
+
+TilesetGym1Coll: ; 0x308e0
+INCBIN "tilesets/gym_1_collision.bin"
+; 0x309e0
+
+TilesetParkGFX: ; 0x309e0
+INCBIN "gfx/tilesets/park.2bpp.lz"
+; 0x30e80
+
+TilesetParkMeta: ; 0x30e80
+INCBIN "tilesets/park_metatiles.bin"
+; 0x31280
+
+TilesetParkColl: ; 0x31280
+INCBIN "tilesets/park_collision.bin"
+; 0x31380
+
+TilesetRadioTowerGFX: ; 0x31380
+INCBIN "gfx/tilesets/radio_tower.2bpp.lz"
+; 0x318e0
+
+TilesetRadioTowerMeta: ; 0x318e0
+INCBIN "tilesets/radio_tower_metatiles.bin"
+; 0x31ce0
+
+TilesetRadioTowerColl: ; 0x31ce0
+INCBIN "tilesets/radio_tower_collision.bin"
+; 0x31de0
+
+TilesetUndergroundGFX: ; 0x31de0
+INCBIN "gfx/tilesets/underground.2bpp.lz"
+; 0x321b0
+
+TilesetUndergroundMeta: ; 0x321b0
+INCBIN "tilesets/underground_metatiles.bin"
+; 0x325b0
+
+TilesetUndergroundColl: ; 0x325b0
+INCBIN "tilesets/underground_collision.bin"
+; 0x326b0
+
+TilesetWhirlIslandsGFX: ; 0x326b0
+INCBIN "gfx/tilesets/whirl_islands.2bpp.lz"
+; 0x329f0
+
+UnusedTilesetWhirlIslandsMeta: ; 0x329f0
+INCBIN "tilesets/unused_whirl_islands_metatiles.bin"
+; 0x331f0
+
+UnusedTilesetWhirlIslandsColl: ; 0x331f0
+INCBIN "tilesets/unused_whirl_islands_collision.bin"
+; 0x333f0
+
+
+SECTION "Tileset Data 5", ROMX
+
+TilesetPokeComCenterGFX: ; 0xb4000
+INCBIN "gfx/tilesets/pokecom_center.2bpp.lz"
+; 0xb48a0
+
+TilesetPokeComCenterMeta: ; 0xb48a0
+INCBIN "tilesets/pokecom_center_metatiles.bin"
+; 0xb4ca0
+
+TilesetPokeComCenterColl: ; 0xb4ca0
+INCBIN "tilesets/pokecom_center_collision.bin"
+; 0xb4da0
+
+TilesetBattleTowerGFX: ; 0xb4da0
+INCBIN "gfx/tilesets/battle_tower.2bpp.lz"
+; 0xb50e0
+
+TilesetBattleTowerMeta: ; 0xb50e0
+INCBIN "tilesets/battle_tower_metatiles.bin"
+; 0xb54e0
+
+TilesetBattleTowerColl: ; 0xb54e0
+INCBIN "tilesets/battle_tower_collision.bin"
+; 0xb55e0
+
+TilesetGateGFX: ; 0xb55e0
+INCBIN "gfx/tilesets/gate.2bpp.lz"
+; 0xb59e0
+
+TilesetGateMeta: ; 0xb59e0
+INCBIN "tilesets/gate_metatiles.bin"
+; 0xb5de0
+
+TilesetGateColl: ; 0xb5de0
+INCBIN "tilesets/gate_collision.bin"
+; 0xb5ee0
+
+TilesetJohto2GFX: ; 0xb5ee0
+TilesetBattleTowerOutsideGFX: ; 0xb5ee0
+INCBIN "gfx/tilesets/johto_2.2bpp.lz"
+; 0xb6ae8
+
+TilesetJohto2Meta: ; 0xb6ae8
+INCBIN "tilesets/johto_2_metatiles.bin"
+; 0xb72e8
+
+TilesetJohto2Coll: ; 0xb72e8
+INCBIN "tilesets/johto_2_collision.bin"
+; 0xb74e8
+
+TilesetKurtsHouseGFX: ; 0xb74e8
+INCBIN "gfx/tilesets/kurts_house.2bpp.lz"
+; 0xb79a8
+
+TilesetKurtsHouseMeta: ; 0xb79a8
+INCBIN "tilesets/kurts_house_metatiles.bin"
+; 0xb7da8
+
+TilesetKurtsHouseColl: ; 0xb7da8
+INCBIN "tilesets/kurts_house_collision.bin"
+; 0xb7ea8
+
+
+SECTION "Tileset Data 6", ROMX
+
+TilesetIlexForestGFX: ; 0xdc000
+INCBIN "gfx/tilesets/ilex_forest.2bpp.lz"
+; 0xdc3d0
+
+TilesetOlivineGymGFX: ; 0xdc3d0
+INCBIN "gfx/tilesets/olivine_gym.2bpp.lz"
+; 0xdcc50
+
+TilesetOlivineGymMeta: ; 0xdcc50
+INCBIN "tilesets/olivine_gym_metatiles.bin"
+; 0xdd050
+
+TilesetOlivineGymColl: ; 0xdd050
+INCBIN "tilesets/olivine_gym_collision.bin"
+; 0xdd150
+
+TilesetHouse1GFX: ; 0xdd150
+INCBIN "gfx/tilesets/house_1.2bpp.lz"
+; 0xdd600
+
+TilesetHouse1Meta: ; 0xdd600
+INCBIN "tilesets/house_1_metatiles.bin"
+; 0xdda00
+
+TilesetHouse1Coll: ; 0xdda00
+INCBIN "tilesets/house_1_collision.bin"
+; 0xddb00
+
+TilesetLighthouseGFX: ; 0xddb00
+INCBIN "gfx/tilesets/lighthouse.2bpp.lz"
+; 0xddf70
+
+TilesetLighthouseMeta: ; 0xddf70
+INCBIN "tilesets/lighthouse_metatiles.bin"
+; 0xde370
+
+TilesetLighthouseColl: ; 0xde370
+INCBIN "tilesets/lighthouse_collision.bin"
+; 0xde470
+
+TilesetIlexForestColl: ; 0xde470
+INCBIN "tilesets/ilex_forest_collision.bin"
+; 0xde570
+
+TilesetPowerPlantGFX: ; 0xde570
+INCBIN "gfx/tilesets/power_plant.2bpp.lz"
+; 0xde990
+
+TilesetPowerPlantMeta: ; 0xde990
+INCBIN "tilesets/power_plant_metatiles.bin"
+; 0xded90
+
+TilesetPowerPlantColl: ; 0xded90
+INCBIN "tilesets/power_plant_collision.bin"
+; 0xdee90
+
+TilesetBattleTowerOutsideMeta: ; 0xdee90
+INCBIN "tilesets/battle_tower_outside_metatiles.bin"
+; 0xdf690
+
+TilesetBattleTowerOutsideColl: ; 0xdf690
+INCBIN "tilesets/battle_tower_outside_collision.bin"
+; 0xdf890
+
+TilesetBetaWordRoomMeta: ; 0xdf890
+INCBIN "tilesets/beta_word_room_metatiles.bin"
+; 0xdfc90
+
+TilesetBetaWordRoomColl: ; 0xdfc90
+TilesetHoOhWordRoomColl: ; 0xdfc90
+TilesetKabutoWordRoomColl: ; 0xdfc90
+TilesetOmanyteWordRoomColl: ; 0xdfc90
+TilesetAerodactylWordRoomColl: ; 0xdfc90
+INCBIN "tilesets/beta_word_room_collision.bin"
+; 0xdfd90
+
+
+SECTION "Tileset Data 7", ROMX
+
+TilesetRuinsOfAlphGFX: ; 0x1dc5a1
+TilesetBetaWordRoomGFX: ; 0x1dc5a1
+TilesetHoOhWordRoomGFX: ; 0x1dc5a1
+TilesetKabutoWordRoomGFX: ; 0x1dc5a1
+TilesetOmanyteWordRoomGFX: ; 0x1dc5a1
+TilesetAerodactylWordRoomGFX: ; 0x1dc5a1
+INCBIN "gfx/tilesets/ruins_of_alph.2bpp.lz"
+; 0x1dd1a9
+
+TilesetRuinsOfAlphMeta: ; 0x1dd1a9
+INCBIN "tilesets/ruins_of_alph_metatiles.bin"
+; 0x1dd5a9
+
+TilesetRuinsOfAlphColl: ; 0x1dd5a9
+INCBIN "tilesets/ruins_of_alph_collision.bin"
+; 0x1dd6a9
+
+
+SECTION "Tileset Data 8", ROMX
+
+TilesetHoOhWordRoomMeta: ; 0x1e0000
+INCBIN "tilesets/ho_oh_word_room_metatiles.bin"
+; 0x1e0400
+
+TilesetKabutoWordRoomMeta: ; 0x1e0400
+INCBIN "tilesets/kabuto_word_room_metatiles.bin"
+; 0x1e0800
+
+TilesetOmanyteWordRoomMeta: ; 0x1e0800
+INCBIN "tilesets/omanyte_word_room_metatiles.bin"
+; 0x1e0c00
+
+TilesetAerodactylWordRoomMeta: ; 0x1e0c00
+INCBIN "tilesets/aerodactyl_word_room_metatiles.bin"
+; 0x1e1000
--- a/tilesets/data_1.asm
+++ /dev/null
@@ -1,50 +1,0 @@
-Tileset03GFX: ; 0x18000
-INCBIN "gfx/tilesets/03.2bpp.lz"
-; 0x18606
-
-Tileset03Meta: ; 0x18606
-INCBIN "tilesets/03_metatiles.bin"
-; 0x18e06
-
-Tileset03Coll: ; 0x18e06
-INCBIN "tilesets/03_collision.bin"
-; 0x19006
-
-Tileset00GFX: ; 0x19006
-Tileset01GFX: ; 0x19006
-INCBIN "gfx/tilesets/01.2bpp.lz"
-; 0x19c0e
-
-Tileset00Meta: ; 0x19c0e
-Tileset01Meta: ; 0x19c0e
-INCBIN "tilesets/01_metatiles.bin"
-; 0x1a40e
-
-Tileset00Coll: ; 0x1a40e
-Tileset01Coll: ; 0x1a40e
-INCBIN "tilesets/01_collision.bin"
-; 0x1a60e
-
-Tileset29GFX: ; 0x1a60e
-INCBIN "gfx/tilesets/29.2bpp.lz"
-; 0x1af3e
-
-Tileset29Meta: ; 0x1af3e
-INCBIN "tilesets/29_metatiles.bin"
-; 0x1b33e
-
-Tileset29Coll: ; 0x1b33e
-INCBIN "tilesets/29_collision.bin"
-; 0x1b43e
-
-Tileset20GFX: ; 0x1b43e
-INCBIN "gfx/tilesets/20.2bpp.lz"
-; 0x1b8fe
-
-Tileset20Meta: ; 0x1b8fe
-INCBIN "tilesets/20_metatiles.bin"
-; 0x1bcfe
-
-Tileset20Coll: ; 0x1bcfe
-INCBIN "tilesets/20_collision.bin"
-; 0x1bdfe
--- a/tilesets/data_2.asm
+++ /dev/null
@@ -1,61 +1,0 @@
-Tileset07GFX: ; 0x1c30c
-INCBIN "gfx/tilesets/07.2bpp.lz"
-; 0x1c73c
-
-Tileset07Meta: ; 0x1c73c
-INCBIN "tilesets/07_metatiles.bin"
-; 0x1cb3c
-
-Tileset07Coll: ; 0x1cb3c
-INCBIN "tilesets/07_collision.bin"
-; 0x1cc3c
-
-Tileset09GFX: ; 0x1cc3c
-INCBIN "gfx/tilesets/09.2bpp.lz"
-; 0x1d04c
-
-Tileset09Meta: ; 0x1d04c
-INCBIN "tilesets/09_metatiles.bin"
-; 0x1d44c
-
-Tileset09Coll: ; 0x1d44c
-INCBIN "tilesets/09_collision.bin"
-; 0x1d54c
-
-Tileset06GFX: ; 0x1d54c
-INCBIN "gfx/tilesets/06.2bpp.lz"
-; 0x1d92c
-
-Tileset06Meta: ; 0x1d92c
-INCBIN "tilesets/06_metatiles.bin"
-; 0x1dd2c
-
-Tileset06Coll: ; 0x1dd2c
-INCBIN "tilesets/06_collision.bin"
-; 0x1de2c
-
-Tileset13GFX: ; 0x1de2c
-INCBIN "gfx/tilesets/13.2bpp.lz"
-; 0x1e58c
-
-Tileset13Meta: ; 0x1e58c
-INCBIN "tilesets/13_metatiles.bin"
-; 0x1e98c
-
-Tileset13Coll: ; 0x1e98c
-INCBIN "tilesets/13_collision.bin"
-; 0x1ea8c
-
-Tileset24GFX: ; 0x1ea8c
-INCBIN "gfx/tilesets/24.2bpp.lz"
-; 0x1ee1c
-
-Tileset24Meta: ; 0x1ee1c
-Tileset30Meta: ; 0x1ee1c
-INCBIN "tilesets/24_metatiles.bin"
-; 0x1f21c
-
-Tileset24Coll: ; 0x1f21c
-Tileset30Coll: ; 0x1f21c
-INCBIN "tilesets/24_collision.bin"
-; 0x1f31c
--- a/tilesets/data_3.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-Tileset23GFX: ; 0x20181
-INCBIN "gfx/tilesets/23.2bpp.lz"
-; 0x206e1
-
-Tileset23Meta: ; 0x206e1
-INCBIN "tilesets/23_metatiles.bin"
-; 0x20ae1
-
-Tileset23Coll: ; 0x20ae1
-INCBIN "tilesets/23_collision.bin"
-; 0x20be1
-
-Tileset10GFX: ; 0x20be1
-INCBIN "gfx/tilesets/10.2bpp.lz"
-; 0x213e1
-
-Tileset10Meta: ; 0x213e1
-INCBIN "tilesets/10_metatiles.bin"
-; 0x217e1
-
-Tileset10Coll: ; 0x217e1
-INCBIN "tilesets/10_collision.bin"
-; 0x218e1
-
-Tileset12GFX: ; 0x218e1
-INCBIN "gfx/tilesets/12.2bpp.lz"
-; 0x22031
-
-Tileset12Meta: ; 0x22031
-INCBIN "tilesets/12_metatiles.bin"
-; 0x22431
-
-Tileset12Coll: ; 0x22431
-INCBIN "tilesets/12_collision.bin"
-; 0x22531
-
-Tileset14GFX: ; 0x22531
-INCBIN "gfx/tilesets/14.2bpp.lz"
-; 0x22af1
-
-Tileset14Meta: ; 0x22af1
-INCBIN "tilesets/14_metatiles.bin"
-; 0x22ef1
-
-Tileset14Coll: ; 0x22ef1
-INCBIN "tilesets/14_collision.bin"
-; 0x22ff1
-
-Tileset17GFX: ; 0x22ff1
-INCBIN "gfx/tilesets/17.2bpp.lz"
-; 0x23391
-
-Tileset17Meta: ; 0x23391
-INCBIN "tilesets/17_metatiles.bin"
-; 0x23791
-
-Tileset17Coll: ; 0x23791
-INCBIN "tilesets/17_collision.bin"
-; 0x23891
-
-; todo
-Tileset31Meta: ; 0x23891
-INCBIN "tilesets/31_metatiles.bin"
-; 0x23b11
--- a/tilesets/data_4.asm
+++ /dev/null
@@ -1,59 +1,0 @@
-Tileset15GFX: ; 0x30000
-INCBIN "gfx/tilesets/15.2bpp.lz"
-; 0x304e0
-
-Tileset15Meta: ; 0x304e0
-INCBIN "tilesets/15_metatiles.bin"
-; 0x308e0
-
-Tileset15Coll: ; 0x308e0
-INCBIN "tilesets/15_collision.bin"
-; 0x309e0
-
-Tileset25GFX: ; 0x309e0
-INCBIN "gfx/tilesets/25.2bpp.lz"
-; 0x30e80
-
-Tileset25Meta: ; 0x30e80
-INCBIN "tilesets/25_metatiles.bin"
-; 0x31280
-
-Tileset25Coll: ; 0x31280
-INCBIN "tilesets/25_collision.bin"
-; 0x31380
-
-Tileset27GFX: ; 0x31380
-INCBIN "gfx/tilesets/27.2bpp.lz"
-; 0x318e0
-
-Tileset27Meta: ; 0x318e0
-INCBIN "tilesets/27_metatiles.bin"
-; 0x31ce0
-
-Tileset27Coll: ; 0x31ce0
-INCBIN "tilesets/27_collision.bin"
-; 0x31de0
-
-Tileset28GFX: ; 0x31de0
-INCBIN "gfx/tilesets/28.2bpp.lz"
-; 0x321b0
-
-Tileset28Meta: ; 0x321b0
-INCBIN "tilesets/28_metatiles.bin"
-; 0x325b0
-
-Tileset28Coll: ; 0x325b0
-INCBIN "tilesets/28_collision.bin"
-; 0x326b0
-
-Tileset30GFX: ; 0x326b0
-INCBIN "gfx/tilesets/30.2bpp.lz"
-; 0x329f0
-
-UnusedTileset30Meta: ; 0x329f0
-INCBIN "tilesets/unused_30_metatiles.bin"
-; 0x331f0
-
-UnusedTileset30Coll: ; 0x331f0
-INCBIN "tilesets/unused_30_collision.bin"
-; 0x333f0
--- a/tilesets/data_5.asm
+++ /dev/null
@@ -1,60 +1,0 @@
-Tileset21GFX: ; 0xb4000
-INCBIN "gfx/tilesets/21.2bpp.lz"
-; 0xb48a0
-
-Tileset21Meta: ; 0xb48a0
-INCBIN "tilesets/21_metatiles.bin"
-; 0xb4ca0
-
-Tileset21Coll: ; 0xb4ca0
-INCBIN "tilesets/21_collision.bin"
-; 0xb4da0
-
-Tileset22GFX: ; 0xb4da0
-INCBIN "gfx/tilesets/22.2bpp.lz"
-; 0xb50e0
-
-Tileset22Meta: ; 0xb50e0
-INCBIN "tilesets/22_metatiles.bin"
-; 0xb54e0
-
-Tileset22Coll: ; 0xb54e0
-INCBIN "tilesets/22_collision.bin"
-; 0xb55e0
-
-Tileset08GFX: ; 0xb55e0
-INCBIN "gfx/tilesets/08.2bpp.lz"
-; 0xb59e0
-
-Tileset08Meta: ; 0xb59e0
-INCBIN "tilesets/08_metatiles.bin"
-; 0xb5de0
-
-Tileset08Coll: ; 0xb5de0
-INCBIN "tilesets/08_collision.bin"
-; 0xb5ee0
-
-Tileset02GFX: ; 0xb5ee0
-Tileset04GFX: ; 0xb5ee0
-INCBIN "gfx/tilesets/04.2bpp.lz"
-; 0xb6ae8
-
-Tileset02Meta: ; 0xb6ae8
-INCBIN "tilesets/02_metatiles.bin"
-; 0xb72e8
-
-Tileset02Coll: ; 0xb72e8
-INCBIN "tilesets/02_collision.bin"
-; 0xb74e8
-
-Tileset16GFX: ; 0xb74e8
-INCBIN "gfx/tilesets/16.2bpp.lz"
-; 0xb79a8
-
-Tileset16Meta: ; 0xb79a8
-INCBIN "tilesets/16_metatiles.bin"
-; 0xb7da8
-
-Tileset16Coll: ; 0xb7da8
-INCBIN "tilesets/16_collision.bin"
-; 0xb7ea8
--- a/tilesets/data_6.asm
+++ /dev/null
@@ -1,75 +1,0 @@
-Tileset31GFX: ; 0xdc000
-INCBIN "gfx/tilesets/31.2bpp.lz"
-; 0xdc3d0
-
-Tileset18GFX: ; 0xdc3d0
-INCBIN "gfx/tilesets/18.2bpp.lz"
-; 0xdcc50
-
-Tileset18Meta: ; 0xdcc50
-INCBIN "tilesets/18_metatiles.bin"
-; 0xdd050
-
-Tileset18Coll: ; 0xdd050
-INCBIN "tilesets/18_collision.bin"
-; 0xdd150
-
-Tileset05GFX: ; 0xdd150
-INCBIN "gfx/tilesets/05.2bpp.lz"
-; 0xdd600
-
-Tileset05Meta: ; 0xdd600
-INCBIN "tilesets/05_metatiles.bin"
-; 0xdda00
-
-Tileset05Coll: ; 0xdda00
-INCBIN "tilesets/05_collision.bin"
-; 0xddb00
-
-Tileset19GFX: ; 0xddb00
-INCBIN "gfx/tilesets/19.2bpp.lz"
-; 0xddf70
-
-Tileset19Meta: ; 0xddf70
-INCBIN "tilesets/19_metatiles.bin"
-; 0xde370
-
-Tileset19Coll: ; 0xde370
-INCBIN "tilesets/19_collision.bin"
-; 0xde470
-
-Tileset31Coll: ; 0xde470
-INCBIN "tilesets/31_collision.bin"
-; 0xde570
-
-Tileset11GFX: ; 0xde570
-INCBIN "gfx/tilesets/11.2bpp.lz"
-; 0xde990
-
-Tileset11Meta: ; 0xde990
-INCBIN "tilesets/11_metatiles.bin"
-; 0xded90
-
-Tileset11Coll: ; 0xded90
-INCBIN "tilesets/11_collision.bin"
-; 0xdee90
-
-Tileset04Meta: ; 0xdee90
-INCBIN "tilesets/04_metatiles.bin"
-; 0xdf690
-
-Tileset04Coll: ; 0xdf690
-INCBIN "tilesets/04_collision.bin"
-; 0xdf890
-
-Tileset32Meta: ; 0xdf890
-INCBIN "tilesets/32_metatiles.bin"
-; 0xdfc90
-
-Tileset32Coll: ; 0xdfc90
-Tileset33Coll: ; 0xdfc90
-Tileset34Coll: ; 0xdfc90
-Tileset35Coll: ; 0xdfc90
-Tileset36Coll: ; 0xdfc90
-INCBIN "tilesets/36_collision.bin"
-; 0xdfd90
--- a/tilesets/data_7.asm
+++ /dev/null
@@ -1,16 +1,0 @@
-Tileset26GFX: ; 0x1dc5a1
-Tileset32GFX: ; 0x1dc5a1
-Tileset33GFX: ; 0x1dc5a1
-Tileset34GFX: ; 0x1dc5a1
-Tileset35GFX: ; 0x1dc5a1
-Tileset36GFX: ; 0x1dc5a1
-INCBIN "gfx/tilesets/26.2bpp.lz"
-; 0x1dd1a9
-
-Tileset26Meta: ; 0x1dd1a9
-INCBIN "tilesets/26_metatiles.bin"
-; 0x1dd5a9
-
-Tileset26Coll: ; 0x1dd5a9
-INCBIN "tilesets/26_collision.bin"
-; 0x1dd6a9
--- a/tilesets/data_8.asm
+++ /dev/null
@@ -1,15 +1,0 @@
-Tileset33Meta: ; 0x1e0000
-INCBIN "tilesets/33_metatiles.bin"
-; 0x1e0400
-
-Tileset34Meta: ; 0x1e0400
-INCBIN "tilesets/34_metatiles.bin"
-; 0x1e0800
-
-Tileset35Meta: ; 0x1e0800
-INCBIN "tilesets/35_metatiles.bin"
-; 0x1e0c00
-
-Tileset36Meta: ; 0x1e0c00
-INCBIN "tilesets/36_metatiles.bin"
-; 0x1e1000
binary files /dev/null b/tilesets/game_corner_collision.bin differ
binary files /dev/null b/tilesets/game_corner_metatiles.bin differ
--- /dev/null
+++ b/tilesets/game_corner_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, GRAY, BROWN, RED, BROWN, GREEN, GREEN, GREEN
+	tilepal 0, GREEN, GREEN, GRAY, GRAY, RED, RED, GREEN, BROWN
+	tilepal 0, GRAY, GRAY, GRAY, RED, BROWN, GREEN, GRAY, GRAY
+	tilepal 0, GRAY, GREEN, GRAY, GRAY, RED, RED, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, RED, RED, BROWN, BROWN, GRAY, GRAY
+	tilepal 0, GRAY, GREEN, RED, RED, GREEN, GRAY, RED, RED
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, RED, RED, GREEN, BROWN, RED, RED
+	tilepal 0, ROOF, ROOF, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, ROOF, RED, RED
+	tilepal 0, RED, ROOF, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, WATER, ROOF, ROOF, WATER, WATER
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, YELLOW, RED, YELLOW, RED, GREEN, GREEN, BROWN, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, BROWN
+	tilepal 1, YELLOW, RED, YELLOW, RED, GREEN, GREEN, BROWN, ROOF
+	tilepal 1, ROOF, GRAY, GRAY, GRAY, GRAY, RED, ROOF, ROOF
+	tilepal 1, YELLOW, RED, YELLOW, RED, WATER, WATER, RED, RED
+	tilepal 1, RED, RED, RED, RED, GREEN, GRAY, RED, RED
+	tilepal 1, RED, RED, YELLOW, YELLOW, WATER, WATER, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, RED, RED, GREEN, ROOF, RED, RED
+	tilepal 1, RED, RED, YELLOW, YELLOW, ROOF, ROOF, RED, RED
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, ROOF, RED, RED
+	tilepal 1, RED, GRAY, GRAY, GRAY, GRAY, GRAY, RED, RED
+	tilepal 1, GRAY, GRAY, GRAY, WATER, ROOF, ROOF, WATER, WATER
binary files /dev/null b/tilesets/gate_collision.bin differ
binary files /dev/null b/tilesets/gate_metatiles.bin differ
--- /dev/null
+++ b/tilesets/gate_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, GRAY, WATER, WATER, RED, GREEN, GREEN, GREEN
+	tilepal 0, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN
+	tilepal 0, WATER, GRAY, WATER, WATER, RED, BROWN, BROWN, WATER
+	tilepal 0, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY, BROWN, WATER
+	tilepal 0, GREEN, GREEN, GRAY, GRAY, GREEN, GREEN, WATER, WATER
+	tilepal 0, RED, RED, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN
+	tilepal 0, GREEN, GREEN, GREEN, GREEN, GRAY, WATER, WATER, WATER
+	tilepal 0, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, WATER, WATER
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, WATER, WATER, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, ROOF, RED, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN, WATER
+	tilepal 1, GRAY, ROOF, RED, GRAY, GRAY, WATER, GRAY, GRAY
+	tilepal 1, RED, RED, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, RED, WATER, WATER, WATER
+	tilepal 1, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, WATER, WATER
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, WATER, WATER, GRAY, GRAY
binary files /dev/null b/tilesets/gym_1_collision.bin differ
binary files /dev/null b/tilesets/gym_1_metatiles.bin differ
--- /dev/null
+++ b/tilesets/gym_1_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, ROOF, RED, RED, RED, ROOF, ROOF, GREEN
+	tilepal 0, GREEN, GRAY, GREEN, GREEN, GREEN, GREEN, WATER, GREEN
+	tilepal 0, GRAY, WATER, WATER, WATER, RED, ROOF, ROOF, BROWN
+	tilepal 0, BROWN, RED, GRAY, GREEN, GREEN, GREEN, GREEN, GREEN
+	tilepal 0, RED, RED, GRAY, GRAY, WATER, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, RED, GRAY, GRAY, GRAY, ROOF, GREEN, BROWN
+	tilepal 0, RED, RED, GRAY, GRAY, WATER, GRAY, GRAY, GRAY
+	tilepal 0, RED, WATER, GRAY, GRAY, GRAY, GRAY, RED, RED
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN
+	tilepal 0, WATER, WATER, WATER, WATER, WATER, WATER, ROOF, ROOF
+	tilepal 0, WATER, GREEN, GREEN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, WATER, RED, WATER, WATER, ROOF, ROOF
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, ROOF, RED, RED, RED, ROOF, ROOF, GREEN
+	tilepal 1, GREEN, GRAY, GREEN, GREEN, GREEN, GREEN, WATER, GREEN
+	tilepal 1, GRAY, WATER, WATER, WATER, RED, ROOF, ROOF, BROWN
+	tilepal 1, BROWN, RED, GRAY, GREEN, GREEN, GREEN, GREEN, GREEN
+	tilepal 1, RED, RED, GRAY, GRAY, WATER, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, RED, GRAY, GRAY, GRAY, ROOF, GREEN, BROWN
+	tilepal 1, RED, RED, GRAY, GRAY, WATER, GRAY, GRAY, GRAY
+	tilepal 1, RED, WATER, GRAY, GRAY, GRAY, GRAY, RED, RED
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, ROOF, ROOF
+	tilepal 1, WATER, GREEN, GREEN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, WATER, RED, WATER, WATER, ROOF, ROOF
binary files /dev/null b/tilesets/ho_oh_word_room_collision.bin differ
--- /dev/null
+++ b/tilesets/ho_oh_word_room_metatiles.bin
@@ -1,0 +1,17 @@
+�͈��ݘ������ɨ��ٸ����������������ɸ����������������������Ð��������Ǭ��׼����������������������������������è��Ӹ�	
+
+
+ !"#��������@ABC	89
+
+
+
+
+
+
+
+
+
+
+TVXY	
+C 6!@	#8
+6"7[\M]�͠��ݰ��ǎ��מ��ǎ��מ����������͈��ݘ����������������Ð��������������������ǎ��מ��������������ŀ��Ր�������������
\ No newline at end of file
--- /dev/null
+++ b/tilesets/ho_oh_word_room_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, WATER, WATER, WATER, WATER, YELLOW, YELLOW, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, RED, RED, RED, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, RED, RED, RED, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
--- a/tilesets/house.pal
+++ b/tilesets/house.pal
@@ -1,38 +1,39 @@
+; gray
 	RGB 30, 28, 26
 	RGB 19, 19, 19
 	RGB 13, 13, 13
 	RGB 07, 07, 07
-
+; red
 	RGB 30, 28, 26
 	RGB 31, 19, 24
 	RGB 30, 10, 06
 	RGB 07, 07, 07
-
+; green
 	RGB 30, 28, 26
 	RGB 15, 20, 01
 	RGB 09, 13, 00
 	RGB 07, 07, 07
-
+; water (blue)
 	RGB 30, 28, 26
 	RGB 15, 16, 31
 	RGB 09, 09, 31
 	RGB 07, 07, 07
-
+; yellow
 	RGB 30, 28, 26
 	RGB 31, 31, 07
 	RGB 31, 16, 01
 	RGB 07, 07, 07
-
+; brown
 	RGB 26, 24, 17
 	RGB 21, 17, 07
 	RGB 16, 13, 03
 	RGB 07, 07, 07
-
+; roof (glass)
 	RGB 30, 28, 26
 	RGB 31, 19, 24
 	RGB 16, 13, 03
 	RGB 07, 07, 07
-
+; text
 	RGB 31, 31, 16
 	RGB 31, 31, 16
 	RGB 14, 09, 00
binary files /dev/null b/tilesets/house_1_collision.bin differ
binary files /dev/null b/tilesets/house_1_metatiles.bin differ
--- /dev/null
+++ b/tilesets/house_1_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, WATER, RED, RED, RED, RED, BROWN, WATER, WATER
+	tilepal 0, GREEN, GREEN, GREEN, GREEN, WATER, WATER, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, RED, RED, RED, BROWN, WATER, WATER
+	tilepal 0, ROOF, ROOF, ROOF, ROOF, GRAY, GRAY, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, WATER, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, YELLOW, GREEN, WATER, WATER, WATER, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, WATER, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, WATER, WATER, BROWN
+	tilepal 0, WATER, WATER, BROWN, BROWN, WATER, WATER, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, WATER, GRAY, BROWN, BROWN, BROWN, WATER
+	tilepal 0, RED, RED, BROWN, BROWN, GREEN, YELLOW, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, WATER, RED, RED, RED, RED, BROWN, WATER, WATER
+	tilepal 1, GREEN, GREEN, GREEN, GREEN, WATER, WATER, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, RED, RED, RED, BROWN, WATER, WATER
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, WATER, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, YELLOW, GREEN, WATER, WATER, WATER, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, WATER, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, WATER, WATER, BROWN
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, WATER, WATER, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, WATER, GRAY, BROWN, BROWN, BROWN, WATER
+	tilepal 1, RED, RED, BROWN, BROWN, GREEN, YELLOW, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
--- a/tilesets/ice_path.pal
+++ b/tilesets/ice_path.pal
@@ -1,38 +1,39 @@
+; gray
 	RGB 15, 14, 24
 	RGB 11, 11, 19
 	RGB 07, 07, 12
 	RGB 00, 00, 00
-
+; red
 	RGB 15, 14, 24
 	RGB 14, 07, 17
 	RGB 13, 00, 08
 	RGB 00, 00, 00
-
+; green (ice)
 	RGB 22, 29, 31
 	RGB 10, 27, 31
 	RGB 31, 31, 31
 	RGB 05, 00, 09
-
+; water
 	RGB 15, 14, 24
 	RGB 05, 05, 17
 	RGB 03, 03, 10
 	RGB 00, 00, 00
-
+; yellow
 	RGB 30, 30, 11
 	RGB 16, 14, 18
 	RGB 16, 14, 10
 	RGB 00, 00, 00
-
+; brown
 	RGB 15, 14, 24
 	RGB 12, 09, 15
 	RGB 08, 04, 05
 	RGB 00, 00, 00
-
+; roof (snow)
 	RGB 25, 31, 31
 	RGB 09, 28, 31
 	RGB 16, 11, 31
 	RGB 05, 00, 09
-
+; text
 	RGB 31, 31, 16
 	RGB 31, 31, 16
 	RGB 14, 09, 00
binary files /dev/null b/tilesets/ice_path_collision.bin differ
--- /dev/null
+++ b/tilesets/ice_path_metatiles.bin
@@ -1,0 +1,3 @@
+�����������
+������������������������������������������������������*+�:;����������������������������������������������������������Ө��������������ʚ��������������ʛ���������������																���������������������������������������������������������������ś�ժ�������������������������������������������ժ������������������������ū�՚������������Ū��՚���������������������Ū������������������������Ś��������������������������ՙ���������Ⱥ��������������������������͘��������������������������BC�������������



���ǒ������������������ׂ��ǒ����ǂ��ג������������������ǂ��ג�RRRRSS(S
>8(TRRRR,--.IJHKRRRRS)SS9?
V)RRRRSSSS


>TLM
\]XYZ[8//9WGGGU?
NO^_
��������
+��������*+�:;�������������ɾ����������������͈���������������&'
67EF




����������������4444444444444444
\ No newline at end of file
--- /dev/null
+++ b/tilesets/ice_path_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, BROWN, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, BROWN, ROOF, ROOF, BROWN, BROWN, WATER, WATER
+	tilepal 0, BROWN, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, ROOF, ROOF, BROWN, BROWN, WATER, WATER
+	tilepal 0, WATER, ROOF, ROOF, ROOF, ROOF, ROOF, GRAY, GRAY
+	tilepal 0, WATER, WATER, ROOF, ROOF, WATER, WATER, WATER, WATER
+	tilepal 0, BROWN, WATER, WATER, WATER, WATER, WATER, GRAY, GRAY
+	tilepal 0, WATER, WATER, ROOF, ROOF, GRAY, GRAY, WATER, WATER
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, GREEN, GRAY, GRAY, WATER
+	tilepal 0, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, WATER, WATER, WATER, WATER
+	tilepal 0, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, GREEN, GREEN
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, GREEN, GREEN
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
binary files /dev/null b/tilesets/ilex_forest_collision.bin differ
--- /dev/null
+++ b/tilesets/ilex_forest_metatiles.bin
@@ -1,0 +1,1 @@
+
,-./<=>?****
,-./<=>?	***&'&'6767&'67&'&'6767&'67&'67***&'67&'67(9&'8:67&'67&'&'6767&'&'6767&'67&'&'6767&'67&'67&'67&'67)**********+** !!! !!! !!!!!!!!!!!!!!!!!!"!!!"!!!"02 !!!0111#$$$#$!!!!1111$$$$$$!!!"1112$$$%$%#$$$#$$$#$34#$$$#$$$#$$$3444$$$$$$$$$$$$4444$$$%$$$%$$$%4445
\ No newline at end of file
--- /dev/null
+++ b/tilesets/ilex_forest_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, BROWN, BROWN, RED, YELLOW, GREEN, BROWN, YELLOW
+	tilepal 0, YELLOW, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, GREEN
+	tilepal 0, BROWN, BROWN, BROWN, RED, WATER, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, GREEN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 0, GREEN, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, GREEN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 0, GREEN, GREEN, GREEN, BROWN, GREEN, BROWN, BROWN, GREEN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, BROWN, BROWN, RED, YELLOW, GREEN, BROWN, YELLOW
+	tilepal 1, YELLOW, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, GREEN
+	tilepal 1, BROWN, BROWN, BROWN, RED, WATER, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, GREEN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 1, GREEN, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, GREEN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 1, GREEN, GREEN, GREEN, BROWN, GREEN, BROWN, BROWN, GREEN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
binary files /dev/null b/tilesets/johto_1_collision.bin differ
binary files /dev/null b/tilesets/johto_1_metatiles.bin differ
--- /dev/null
+++ b/tilesets/johto_1_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, BROWN, BROWN, RED, GREEN, GREEN, GRAY, RED
+	tilepal 0, RED, RED, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, ROOF, GREEN, WATER, GREEN, BROWN, BROWN
+	tilepal 0, RED, RED, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN
+	tilepal 0, BROWN, BROWN, BROWN, RED, RED, BROWN, YELLOW, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 0, BROWN, BROWN, WATER, WATER, BROWN, BROWN, BROWN, YELLOW
+	tilepal 0, YELLOW, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 0, RED, BROWN, WATER, WATER, BROWN, GREEN, BROWN, BROWN
+	tilepal 0, BROWN, WATER, GRAY, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, WATER, GRAY, GRAY, GRAY, BROWN, BROWN, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, BROWN, RED, RED, RED, RED, RED
+	tilepal 1, RED, RED, RED, RED, RED, RED, RED, RED
+	tilepal 1, RED, RED, RED, RED, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN
+	tilepal 1, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN
+	tilepal 1, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN
+	tilepal 1, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
binary files /dev/null b/tilesets/johto_2_collision.bin differ
binary files /dev/null b/tilesets/johto_2_metatiles.bin differ
--- /dev/null
+++ b/tilesets/johto_2_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, BROWN, BROWN, RED, GREEN, GREEN, GRAY, ROOF
+	tilepal 0, RED, RED, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, ROOF, GREEN, WATER, GREEN, BROWN, BROWN
+	tilepal 0, RED, RED, BROWN, BROWN, BROWN, GRAY, GREEN, GREEN
+	tilepal 0, GRAY, GRAY, BROWN, RED, RED, GRAY, YELLOW, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, RED
+	tilepal 0, GRAY, BROWN, BROWN, GRAY, BROWN, GRAY, GRAY, YELLOW
+	tilepal 0, YELLOW, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 0, RED, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, WATER, GRAY, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 0, GRAY, BROWN, BROWN, GRAY, BROWN, GRAY, GRAY, GRAY
+	tilepal 0, WATER, GRAY, GRAY, GRAY, BROWN, BROWN, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, BROWN, BROWN, RED, GREEN, GREEN, GRAY, ROOF
+	tilepal 1, RED, RED, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, GREEN, WATER, GREEN, BROWN, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, BROWN, BROWN, GRAY, GREEN, GREEN
+	tilepal 1, GRAY, GRAY, BROWN, RED, RED, GRAY, YELLOW, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, RED
+	tilepal 1, GRAY, BROWN, BROWN, GRAY, BROWN, GRAY, GRAY, YELLOW
+	tilepal 1, YELLOW, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 1, RED, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, WATER, GRAY, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 1, GRAY, BROWN, BROWN, GRAY, RED, RED, GREEN, GREEN
+	tilepal 1, YELLOW, ROOF, ROOF, ROOF, ROOF, ROOF, RED, ROOF
binary files /dev/null b/tilesets/kabuto_word_room_collision.bin differ
--- /dev/null
+++ b/tilesets/kabuto_word_room_metatiles.bin
@@ -1,0 +1,17 @@
+���ɼ��������ͬ��ݼ��Æ��Ӗ������Ŏ��՞��������������È��Ә������������������������Ø��������������������ǎ��מ�����	
+
+
+ !"#��������@ABC	89
+
+
+
+
+
+
+
+
+
+
+TVXY	
+C 6!@	#8
+6"7������
\ No newline at end of file
--- /dev/null
+++ b/tilesets/kabuto_word_room_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, WATER, WATER, WATER, WATER, YELLOW, YELLOW, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, RED, RED, RED, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, RED, RED, RED, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
binary files /dev/null b/tilesets/kanto_collision.bin differ
binary files /dev/null b/tilesets/kanto_metatiles.bin differ
--- /dev/null
+++ b/tilesets/kanto_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, BROWN, BROWN, RED, BROWN, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, YELLOW, YELLOW, YELLOW, GRAY, BROWN, GRAY
+	tilepal 0, GRAY, BROWN, ROOF, BROWN, WATER, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, GRAY, BROWN, BROWN, GRAY, BROWN, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, ROOF, ROOF, BROWN
+	tilepal 0, ROOF, ROOF, GRAY, GRAY, GREEN, GREEN, GREEN, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, ROOF, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN, GRAY
+	tilepal 0, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, GRAY, BROWN, GRAY, GRAY, GRAY, RED
+	tilepal 0, GREEN, GREEN, GREEN, ROOF, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, GRAY, BROWN, GRAY, GRAY, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, BROWN, BROWN, RED, BROWN, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, YELLOW, YELLOW, YELLOW, GRAY, BROWN, GRAY
+	tilepal 1, GRAY, BROWN, ROOF, BROWN, WATER, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, GRAY, BROWN, BROWN, GRAY, BROWN, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, BROWN, ROOF, ROOF, BROWN
+	tilepal 1, ROOF, ROOF, GRAY, GRAY, GREEN, GREEN, GREEN, GRAY
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, ROOF, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN, GRAY
+	tilepal 1, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, GRAY, BROWN, GRAY, GRAY, GRAY, RED
+	tilepal 1, GREEN, GREEN, GREEN, ROOF, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, GRAY, BROWN, GRAY, GRAY, GRAY, GRAY
binary files /dev/null b/tilesets/kurts_house_collision.bin differ
binary files /dev/null b/tilesets/kurts_house_metatiles.bin differ
--- /dev/null
+++ b/tilesets/kurts_house_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, BROWN, WATER, WATER, RED, GRAY, GRAY, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, WATER, WATER, RED, BROWN, GRAY, GRAY
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY
+	tilepal 0, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, RED, GRAY
+	tilepal 0, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, WATER, WATER
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, WATER, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, BROWN, WATER, WATER, RED, GRAY, GRAY, GRAY
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, WATER, WATER, RED, BROWN, GRAY, GRAY
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY
+	tilepal 1, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, RED, GRAY
+	tilepal 1, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, WATER, WATER
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, WATER, BROWN
binary files /dev/null b/tilesets/lab_collision.bin differ
binary files /dev/null b/tilesets/lab_metatiles.bin differ
--- /dev/null
+++ b/tilesets/lab_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, WATER, RED, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, WATER, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, WATER, RED, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, WATER, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, WATER, WATER, WATER, WATER, ROOF, BROWN, BROWN, BROWN
+	tilepal 0, WATER, WATER, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN
+	tilepal 0, WATER, WATER, WATER, WATER, RED, BROWN, BROWN, GRAY
+	tilepal 0, WATER, WATER, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN
+	tilepal 0, ROOF, ROOF, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, ROOF, ROOF, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, WATER, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, WATER, GRAY, GRAY, GRAY, GRAY, WATER, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, BROWN, GREEN, GREEN, GREEN
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, RED, RED, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
binary files /dev/null b/tilesets/lighthouse_collision.bin differ
binary files /dev/null b/tilesets/lighthouse_metatiles.bin differ
--- /dev/null
+++ b/tilesets/lighthouse_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, WATER, WATER, WATER, BROWN, WATER, WATER, RED
+	tilepal 0, RED, ROOF, ROOF, BROWN, ROOF, RED, RED, RED
+	tilepal 0, ROOF, WATER, ROOF, BROWN, ROOF, WATER, WATER, RED
+	tilepal 0, RED, ROOF, ROOF, WATER, ROOF, RED, RED, RED
+	tilepal 0, ROOF, ROOF, WATER, BROWN, RED, WATER, WATER, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, BROWN, ROOF, ROOF, GRAY, GRAY
+	tilepal 0, ROOF, ROOF, WATER, WATER, RED, ROOF, BROWN, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, BROWN, BROWN, ROOF, BROWN, WATER
+	tilepal 0, YELLOW, YELLOW, ROOF, ROOF, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, RED, RED, GRAY, GRAY, GREEN, GREEN, ROOF, ROOF
+	tilepal 0, YELLOW, YELLOW, ROOF, ROOF, ROOF, ROOF, GRAY, GRAY
+	tilepal 0, RED, RED, GREEN, GREEN, ROOF, ROOF, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, ROOF, GRAY, GRAY, BROWN, BROWN, RED
+	tilepal 1, RED, RED, RED, BROWN, RED, RED, RED, RED
+	tilepal 1, ROOF, WATER, ROOF, BROWN, RED, WATER, WATER, RED
+	tilepal 1, RED, RED, RED, WATER, RED, RED, RED, RED
+	tilepal 1, ROOF, ROOF, WATER, BROWN, RED, WATER, WATER, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, BROWN, RED, ROOF, GRAY, GRAY
+	tilepal 1, ROOF, ROOF, WATER, WATER, RED, RED, BROWN, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, BROWN, BROWN, ROOF, BROWN, WATER
+	tilepal 1, RED, RED, ROOF, ROOF, BROWN, BROWN, GRAY, GRAY
+	tilepal 1, RED, RED, GRAY, GRAY, GREEN, GREEN, ROOF, ROOF
+	tilepal 1, RED, RED, ROOF, ROOF, ROOF, ROOF, GRAY, GRAY
+	tilepal 1, RED, RED, GREEN, GREEN, ROOF, ROOF, GRAY, GRAY
binary files /dev/null b/tilesets/mart_collision.bin differ
--- /dev/null
+++ b/tilesets/mart_metatiles.bin
@@ -1,0 +1,3 @@
+,-<=
+II"#23$%45*+>?>?*+ !01JK	����./����������������*;;;>?>?>?;;;;&'67()89@AB+PQRECD\]STU

VWVWXYXYZ[Z[

PQPQPQPQ^_^_������������ؑ��*+>?>?,-<=*;;;>?>?::>?::;;;+>?::>?::>?>?::

::>?

F:F:F::G:G:G"#23$%45

LMLMLMLMNONO !HH01HH>?HH>?HHHH&'HH67HH()HH89����������������
+II
*+PQ>?PQ>?^_HH&'HH67HH()HH89/HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH;;;;&'67()89>?>?.�������Ӑ��ڐ��܁�����������������"#��23��$%��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
\ No newline at end of file
--- /dev/null
+++ b/tilesets/mart_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, YELLOW, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GREEN, GREEN, WATER, RED, GRAY, GRAY, ROOF, ROOF
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, RED, ROOF, ROOF, GRAY, YELLOW
+	tilepal 0, GRAY, GRAY, RED, RED, RED, RED, WATER, WATER
+	tilepal 0, WATER, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, RED, RED, RED, RED, WATER, WATER
+	tilepal 0, WATER, WATER, RED, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, RED, RED, RED
+	tilepal 0, GREEN, GRAY, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, RED, YELLOW, YELLOW, YELLOW, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, ROOF, ROOF, RED, RED, BROWN, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, GRAY, GRAY, GREEN, GREEN, GREEN, GREEN, GRAY
+	tilepal 1, GRAY, GREEN, GREEN, RED, RED, WATER, WATER, ROOF
+	tilepal 1, GRAY, GRAY, GRAY, YELLOW, YELLOW, YELLOW, ROOF, GRAY
+	tilepal 1, GRAY, GRAY, WATER, GRAY, GRAY, GRAY, YELLOW, YELLOW
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, RED, WATER, RED
+	tilepal 1, RED, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, RED, RED, RED, RED, RED, RED, RED, RED
+	tilepal 1, RED, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN, GREEN, GREEN
+	tilepal 1, GRAY, GRAY, WATER, GRAY, WATER, RED, BROWN, BROWN
--- a/tilesets/ob.pal
+++ b/tilesets/ob.pal
@@ -1,158 +1,170 @@
+; morn
+
+; red
 	RGB 28, 31, 16
 	RGB 31, 19, 10
 	RGB 31, 07, 01
 	RGB 00, 00, 00
-
+; blue
 	RGB 28, 31, 16
 	RGB 31, 19, 10
 	RGB 10, 09, 31
 	RGB 00, 00, 00
-
+; green
 	RGB 28, 31, 16
 	RGB 31, 19, 10
 	RGB 07, 23, 03
 	RGB 00, 00, 00
-
+; brown
 	RGB 28, 31, 16
 	RGB 31, 19, 10
 	RGB 15, 10, 03
 	RGB 00, 00, 00
-
+; pink
 	RGB 28, 31, 16
 	RGB 31, 19, 10
 	RGB 30, 10, 06
 	RGB 00, 00, 00
-
+; silver
 	RGB 31, 31, 31
 	RGB 31, 31, 31
 	RGB 13, 13, 13
 	RGB 00, 00, 00
-
+; tree
 	RGB 22, 31, 10
 	RGB 12, 25, 01
 	RGB 05, 14, 00
 	RGB 07, 07, 07
-
+; rock
 	RGB 28, 31, 16
 	RGB 24, 18, 07
 	RGB 20, 15, 03
 	RGB 07, 07, 07
 
+; day
+
+; red
 	RGB 27, 31, 27
 	RGB 31, 19, 10
 	RGB 31, 07, 01
 	RGB 00, 00, 00
-
+; blue
 	RGB 27, 31, 27
 	RGB 31, 19, 10
 	RGB 10, 09, 31
 	RGB 00, 00, 00
-
+; green
 	RGB 27, 31, 27
 	RGB 31, 19, 10
 	RGB 07, 23, 03
 	RGB 00, 00, 00
-
+; brown
 	RGB 27, 31, 27
 	RGB 31, 19, 10
 	RGB 15, 10, 03
 	RGB 00, 00, 00
-
+; pink
 	RGB 27, 31, 27
 	RGB 31, 19, 10
 	RGB 30, 10, 06
 	RGB 00, 00, 00
-
+; silver
 	RGB 31, 31, 31
 	RGB 31, 31, 31
 	RGB 13, 13, 13
 	RGB 00, 00, 00
-
+; tree
 	RGB 22, 31, 10
 	RGB 12, 25, 01
 	RGB 05, 14, 00
 	RGB 07, 07, 07
-
+; rock
 	RGB 27, 31, 27
 	RGB 24, 18, 07
 	RGB 20, 15, 03
 	RGB 07, 07, 07
 
+; nite
+
+; red
 	RGB 15, 14, 24
 	RGB 31, 19, 10
 	RGB 31, 07, 01
 	RGB 00, 00, 00
-
+; blue
 	RGB 15, 14, 24
 	RGB 31, 19, 10
 	RGB 10, 09, 31
 	RGB 00, 00, 00
-
+; green
 	RGB 15, 14, 24
 	RGB 31, 19, 10
 	RGB 07, 23, 03
 	RGB 00, 00, 00
-
+; brown
 	RGB 15, 14, 24
 	RGB 31, 19, 10
 	RGB 15, 10, 03
 	RGB 00, 00, 00
-
+; pink
 	RGB 15, 14, 24
 	RGB 31, 19, 10
 	RGB 30, 10, 06
 	RGB 00, 00, 00
-
+; silver
 	RGB 31, 31, 31
 	RGB 31, 31, 31
 	RGB 13, 13, 13
 	RGB 00, 00, 00
-
+; tree
 	RGB 15, 14, 24
 	RGB 08, 13, 19
 	RGB 00, 11, 13
 	RGB 00, 00, 00
-
+; rock
 	RGB 15, 14, 24
 	RGB 12, 09, 15
 	RGB 08, 04, 05
 	RGB 00, 00, 00
 
+; dark
+
+; red
 	RGB 01, 01, 02
 	RGB 31, 19, 10
 	RGB 31, 07, 01
 	RGB 00, 00, 00
-
+; blue
 	RGB 01, 01, 02
 	RGB 31, 19, 10
 	RGB 10, 09, 31
 	RGB 00, 00, 00
-
+; green
 	RGB 01, 01, 02
 	RGB 31, 19, 10
 	RGB 07, 23, 03
 	RGB 00, 00, 00
-
+; brown
 	RGB 01, 01, 02
 	RGB 31, 19, 10
 	RGB 15, 10, 03
 	RGB 00, 00, 00
-
+; pink
 	RGB 01, 01, 02
 	RGB 31, 19, 10
 	RGB 30, 10, 06
 	RGB 00, 00, 00
-
+; silver
 	RGB 31, 31, 31
 	RGB 31, 31, 31
 	RGB 13, 13, 13
 	RGB 00, 00, 00
-
+; tree
 	RGB 01, 01, 02
 	RGB 00, 00, 00
 	RGB 00, 00, 00
 	RGB 00, 00, 00
-
+; rock
 	RGB 01, 01, 02
 	RGB 00, 00, 00
 	RGB 00, 00, 00
binary files /dev/null b/tilesets/olivine_gym_collision.bin differ
--- /dev/null
+++ b/tilesets/olivine_gym_metatiles.bin
@@ -1,0 +1,15 @@
+
 *()  89+,!!          


%'!!	 5 5 5 5 5&&01                    %&&'677:"##$2334������ַ��������
        +,+, *()  89        SSSSSSSSSSSSSSSSFGFGVWVWFGSSVWSS                FGFGVWVWSSFGSSVW�]���]]]%&&'XYXYѣ�ѥ�����������SSSSSSSSFGFGVWVW����������������FGSSVWSSFGSSVWSSSSFGSSVWSSFGSSVW./SS>?SSNOSS^_SSSS./SS>?SSNOSS^_S@HH@PQQPPQQPPQQHHHHQQQQQQQQQQQQHHBSQQRBQQRRQQRR----------------PPQQPPQQPCDDCDDDQQQQQQQQTUTUTUTUQQRRQQRRDDERDDDESSSSSSSS
+SS
+SS
+SSSS
+FG
+VW
+FG
+VWFG
+VW
+FG
+VW
+SS
+SS
+SS
+SSʰ��˱ݱ̲޲�������αݱϲ޲�����FGFGVWVWFGFGVWVW����]]]]%&&'XYXY����ݱ��޲�������°��ı��Ʋ����������������������]���]���]���]����]���]���]���]�;<<=;<<=;<<=;<<=����������������````````````````;<<=;<<=%&&'XYXY����������������������������������]�]]]�%&&'XYXY�]���]]��]]��]����]��]]��]]���]��]���]���]���]����]���]���]���]���������������������;<<=�����������Ӣ��ґ���������ӡ��Ӣ�������
\ No newline at end of file
--- /dev/null
+++ b/tilesets/olivine_gym_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, GREEN, GREEN, GREEN, RED, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, RED, RED, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GREEN, GREEN, RED, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, RED, RED, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GREEN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GREEN, GREEN, YELLOW, RED, RED
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, RED, RED, RED, RED, RED
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, GRAY, RED, WATER, WATER, ROOF, GRAY, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, RED, WATER, WATER, ROOF, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, RED, RED, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, RED, ROOF, RED, RED, RED, RED, RED
+	tilepal 1, RED, RED, RED, RED, RED, RED, RED, RED
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, WATER, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, WATER, RED, GRAY, GRAY, RED, WATER, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, GRAY
binary files /dev/null b/tilesets/omanyte_word_room_collision.bin differ
--- /dev/null
+++ b/tilesets/omanyte_word_room_metatiles.bin
@@ -1,0 +1,17 @@
+�ǎ��מ���[\��M]�������ż����ň��՘������������Ü������������������������Š��հ�������������������������	
+
+
+ !"#�È��Ә�@ABC	89
+
+
+
+
+
+
+
+
+
+
+TVXY	
+C 6!@	#8
+6"7���ɚ����ň��՘����������������ɼ������������������������ͬ��ݼ��æ��Ӷ�����
\ No newline at end of file
--- /dev/null
+++ b/tilesets/omanyte_word_room_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, WATER, WATER, WATER, WATER, YELLOW, YELLOW, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, RED, RED, RED, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, RED, RED, RED, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
--- a/tilesets/palette_maps.asm
+++ b/tilesets/palette_maps.asm
@@ -1,108 +1,108 @@
-Tileset03PalMap: ; 0x4c075
-INCLUDE "tilesets/03_palette_map.asm"
+TilesetKantoPalMap: ; 0x4c075
+INCLUDE "tilesets/kanto_palette_map.asm"
 ; 0x4c0e5
 
-Tileset00PalMap: ; 0x4c0e5
-Tileset01PalMap: ; 0x4c0e5
-INCLUDE "tilesets/01_palette_map.asm"
+Tileset0PalMap: ; 0x4c0e5
+TilesetJohto1PalMap: ; 0x4c0e5
+INCLUDE "tilesets/johto_1_palette_map.asm"
 ; 0x4c155
 
-Tileset02PalMap: ; 0x4c155
-INCLUDE "tilesets/02_palette_map.asm"
+TilesetJohto2PalMap: ; 0x4c155
+INCLUDE "tilesets/johto_2_palette_map.asm"
 ; 0x4c1c5
 
-Tileset05PalMap: ; 0x4c1c5
-INCLUDE "tilesets/05_palette_map.asm"
+TilesetHouse1PalMap: ; 0x4c1c5
+INCLUDE "tilesets/house_1_palette_map.asm"
 ; 0x4c235
 
-Tileset06PalMap: ; 0x4c235
-INCLUDE "tilesets/06_palette_map.asm"
+TilesetPlayersHousePalMap: ; 0x4c235
+INCLUDE "tilesets/players_house_palette_map.asm"
 ; 0x4c2a5
 
-Tileset07PalMap: ; 0x4c2a5
-INCLUDE "tilesets/07_palette_map.asm"
+TilesetPokecenterPalMap: ; 0x4c2a5
+INCLUDE "tilesets/pokecenter_palette_map.asm"
 ; 0x4c315
 
-Tileset08PalMap: ; 0x4c315
-INCLUDE "tilesets/08_palette_map.asm"
+TilesetGatePalMap: ; 0x4c315
+INCLUDE "tilesets/gate_palette_map.asm"
 ; 0x4c385
 
-Tileset09PalMap: ; 0x4c385
-INCLUDE "tilesets/09_palette_map.asm"
+TilesetPortPalMap: ; 0x4c385
+INCLUDE "tilesets/port_palette_map.asm"
 ; 0x4c3f5
 
-Tileset10PalMap: ; 0x4c3f5
-INCLUDE "tilesets/10_palette_map.asm"
+TilesetLabPalMap: ; 0x4c3f5
+INCLUDE "tilesets/lab_palette_map.asm"
 ; 0x4c465
 
-Tileset11PalMap: ; 0x4c465
-INCLUDE "tilesets/11_palette_map.asm"
+TilesetPowerPlantPalMap: ; 0x4c465
+INCLUDE "tilesets/power_plant_palette_map.asm"
 ; 0x4c4d5
 
-Tileset12PalMap: ; 0x4c4d5
-INCLUDE "tilesets/12_palette_map.asm"
+TilesetMartPalMap: ; 0x4c4d5
+INCLUDE "tilesets/mart_palette_map.asm"
 ; 0x4c545
 
-Tileset13PalMap: ; 0x4c545
-INCLUDE "tilesets/13_palette_map.asm"
+TilesetCeladonMansionPalMap: ; 0x4c545
+INCLUDE "tilesets/celadon_mansion_palette_map.asm"
 ; 0x4c5b5
 
-Tileset14PalMap: ; 0x4c5b5
-INCLUDE "tilesets/14_palette_map.asm"
+TilesetGameCornerPalMap: ; 0x4c5b5
+INCLUDE "tilesets/game_corner_palette_map.asm"
 ; 0x4c625
 
-Tileset15PalMap: ; 0x4c625
-INCLUDE "tilesets/15_palette_map.asm"
+TilesetGym1PalMap: ; 0x4c625
+INCLUDE "tilesets/gym_1_palette_map.asm"
 ; 0x4c695
 
-Tileset16PalMap: ; 0x4c695
-INCLUDE "tilesets/16_palette_map.asm"
+TilesetKurtsHousePalMap: ; 0x4c695
+INCLUDE "tilesets/kurts_house_palette_map.asm"
 ; 0x4c705
 
-Tileset23PalMap: ; 0x4c705
-INCLUDE "tilesets/23_palette_map.asm"
+TilesetSproutTowerPalMap: ; 0x4c705
+INCLUDE "tilesets/sprout_tower_palette_map.asm"
 ; 0x4c775
 
-Tileset24PalMap: ; 0x4c775
-Tileset30PalMap: ; 0x4c775
-INCLUDE "tilesets/30_palette_map.asm"
+TilesetCavePalMap: ; 0x4c775
+TilesetWhirlIslandsPalMap: ; 0x4c775
+INCLUDE "tilesets/cave_palette_map.asm"
 ; 0x4c7e5
 
-Tileset25PalMap: ; 0x4c7e5
-INCLUDE "tilesets/25_palette_map.asm"
+TilesetParkPalMap: ; 0x4c7e5
+INCLUDE "tilesets/park_palette_map.asm"
 ; 0x4c855
 
-Tileset26PalMap: ; 0x4c855
-Tileset32PalMap: ; 0x4c855
-Tileset33PalMap: ; 0x4c855
-Tileset34PalMap: ; 0x4c855
-Tileset35PalMap: ; 0x4c855
-Tileset36PalMap: ; 0x4c855
-INCLUDE "tilesets/36_palette_map.asm"
+TilesetRuinsOfAlphPalMap: ; 0x4c855
+TilesetBetaWordRoomPalMap: ; 0x4c855
+TilesetHoOhWordRoomPalMap: ; 0x4c855
+TilesetKabutoWordRoomPalMap: ; 0x4c855
+TilesetOmanyteWordRoomPalMap: ; 0x4c855
+TilesetAerodactylWordRoomPalMap: ; 0x4c855
+INCLUDE "tilesets/ruins_of_alph_palette_map.asm"
 ; 0x4c8c5
 
-Tileset27PalMap: ; 0x4c8c5
-INCLUDE "tilesets/27_palette_map.asm"
+TilesetRadioTowerPalMap: ; 0x4c8c5
+INCLUDE "tilesets/radio_tower_palette_map.asm"
 ; 0x4c935
 
-Tileset17PalMap: ; 0x4c935
-INCLUDE "tilesets/17_palette_map.asm"
+TilesetTrainStationPalMap: ; 0x4c935
+INCLUDE "tilesets/train_station_palette_map.asm"
 ; 0x4c9a5
 
-Tileset28PalMap: ; 0x4c9a5
-INCLUDE "tilesets/28_palette_map.asm"
+TilesetUndergroundPalMap: ; 0x4c9a5
+INCLUDE "tilesets/underground_palette_map.asm"
 ; 0x4ca15
 
-Tileset18PalMap: ; 0x4ca15
-INCLUDE "tilesets/18_palette_map.asm"
+TilesetOlivineGymPalMap: ; 0x4ca15
+INCLUDE "tilesets/olivine_gym_palette_map.asm"
 ; 0x4ca85
 
-Tileset19PalMap: ; 0x4ca85
-INCLUDE "tilesets/19_palette_map.asm"
+TilesetLighthousePalMap: ; 0x4ca85
+INCLUDE "tilesets/lighthouse_palette_map.asm"
 ; 0x4caf5
 
-Tileset20PalMap: ; 0x4caf5
-INCLUDE "tilesets/20_palette_map.asm"
+TilesetPlayersHouse2FPalMap: ; 0x4caf5
+INCLUDE "tilesets/players_house_2f_palette_map.asm"
 ; 0x4cb65
 
 UnusedPalMap1:
@@ -109,24 +109,24 @@
 INCBIN "tilesets/unused_palette_map_1.bin"
 ; 4cbd5
 
-Tileset29PalMap: ; 0x4cbd5
-INCLUDE "tilesets/29_palette_map.asm"
+TilesetIcePathPalMap: ; 0x4cbd5
+INCLUDE "tilesets/ice_path_palette_map.asm"
 ; 0x4cc45
 
-Tileset31PalMap: ; 0x4cc45
-INCLUDE "tilesets/31_palette_map.asm"
+TilesetIlexForestPalMap: ; 0x4cc45
+INCLUDE "tilesets/ilex_forest_palette_map.asm"
 ; 0x4ccb5
 
-Tileset21PalMap: ; 0x4ccb5
-INCLUDE "tilesets/21_palette_map.asm"
+TilesetPokeComCenterPalMap: ; 0x4ccb5
+INCLUDE "tilesets/pokecom_center_palette_map.asm"
 ; 0x4cd25
 
-Tileset22PalMap: ; 0x4cd25
-INCLUDE "tilesets/22_palette_map.asm"
+TilesetBattleTowerPalMap: ; 0x4cd25
+INCLUDE "tilesets/battle_tower_palette_map.asm"
 ; 0x4cd95
 
-Tileset04PalMap: ; 0x4cd95
-INCLUDE "tilesets/04_palette_map.asm"
+TilesetBattleTowerOutsidePalMap: ; 0x4cd95
+INCLUDE "tilesets/battle_tower_outside_palette_map.asm"
 ; 0x4ce05
 
 UnusedPalMap2:
binary files /dev/null b/tilesets/park_collision.bin differ
binary files /dev/null b/tilesets/park_metatiles.bin differ
--- /dev/null
+++ b/tilesets/park_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, GREEN, BROWN, RED, GREEN, BROWN, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN, GREEN, GREEN
+	tilepal 0, RED, RED, RED, GRAY, WATER, ROOF, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, BROWN, GREEN, GREEN, GREEN, GREEN
+	tilepal 0, RED, RED, RED, BROWN, BROWN, BROWN, BROWN, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, BROWN, GREEN, BROWN, BROWN, GREEN
+	tilepal 0, RED, RED, RED, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, GREEN, GREEN, GREEN, BROWN, BROWN, GREEN
+	tilepal 0, BROWN, RED, BROWN, BROWN, GRAY, GRAY, GRAY, BROWN
+	tilepal 0, BROWN, BROWN, GREEN, GREEN, GRAY, GRAY, GRAY, RED
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, BROWN
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, WATER
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, WATER, WATER, GRAY, RED, GREEN, BROWN, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN, GREEN, GREEN
+	tilepal 1, WATER, WATER, RED, GRAY, WATER, ROOF, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, BROWN, GREEN, GREEN, GREEN, GREEN
+	tilepal 1, RED, RED, RED, BROWN, BROWN, BROWN, BROWN, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, BROWN, GREEN, BROWN, BROWN, GREEN
+	tilepal 1, RED, RED, RED, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, GREEN, GREEN, GREEN, BROWN, BROWN, GREEN
+	tilepal 1, BROWN, RED, BROWN, BROWN, GRAY, GRAY, GRAY, BROWN
+	tilepal 1, BROWN, BROWN, GREEN, GREEN, WATER, WATER, WATER, RED
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, BROWN
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, WATER, WATER, WATER, GRAY
binary files /dev/null b/tilesets/players_house_2f_collision.bin differ
binary files /dev/null b/tilesets/players_house_2f_metatiles.bin differ
--- /dev/null
+++ b/tilesets/players_house_2f_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GREEN
+	tilepal 0, GREEN, RED, RED, GRAY, GRAY, RED, RED, RED
+	tilepal 0, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GREEN
+	tilepal 0, GREEN, RED, RED, GRAY, GRAY, WATER, RED, RED
+	tilepal 0, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GREEN
+	tilepal 0, GREEN, ROOF, ROOF, GRAY, GRAY, YELLOW, RED, RED
+	tilepal 0, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GREEN
+	tilepal 0, GREEN, ROOF, ROOF, WATER, WATER, GREEN, RED, RED
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, GREEN
+	tilepal 0, GREEN, YELLOW, YELLOW, WATER, WATER, BROWN, YELLOW, YELLOW
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, GREEN
+	tilepal 0, GREEN, YELLOW, YELLOW, GRAY, GRAY, BROWN, YELLOW, YELLOW
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GREEN
+	tilepal 1, GREEN, RED, RED, GRAY, GRAY, RED, RED, RED
+	tilepal 1, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GREEN
+	tilepal 1, GREEN, RED, RED, GRAY, GRAY, WATER, RED, RED
+	tilepal 1, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GREEN
+	tilepal 1, GREEN, ROOF, ROOF, GRAY, GRAY, YELLOW, RED, RED
+	tilepal 1, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GREEN
+	tilepal 1, GREEN, ROOF, ROOF, WATER, WATER, GREEN, RED, RED
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, GREEN
+	tilepal 1, GREEN, YELLOW, YELLOW, WATER, WATER, BROWN, YELLOW, YELLOW
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, GREEN
+	tilepal 1, GREEN, YELLOW, YELLOW, GRAY, GRAY, BROWN, YELLOW, YELLOW
binary files /dev/null b/tilesets/players_house_collision.bin differ
binary files /dev/null b/tilesets/players_house_metatiles.bin differ
--- /dev/null
+++ b/tilesets/players_house_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, BROWN, BROWN, BROWN, RED, GREEN, WATER, WATER
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, RED, BROWN, WATER, WATER
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, WATER, WATER, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, WATER, WATER, BROWN, BROWN
+	tilepal 0, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, BROWN, BROWN, BROWN, RED, GREEN, WATER, WATER
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, RED, BROWN, WATER, WATER
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, WATER, WATER, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, WATER, WATER, BROWN, BROWN
+	tilepal 1, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
binary files /dev/null b/tilesets/pokecenter_collision.bin differ
binary files /dev/null b/tilesets/pokecenter_metatiles.bin differ
--- /dev/null
+++ b/tilesets/pokecenter_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, RED, GRAY, WATER, WATER, WATER, ROOF, ROOF
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, WATER, WATER, WATER
+	tilepal 0, GRAY, RED, RED, WATER, WATER, WATER, WATER, WATER
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN, GRAY
+	tilepal 0, GRAY, GRAY, RED, RED, WATER, WATER, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, RED, RED, GRAY, WATER, WATER, WATER
+	tilepal 0, WATER, WATER, WATER, WATER, GRAY, GRAY, WATER, GRAY
+	tilepal 0, GRAY, GRAY, RED, RED, RED, RED, WATER, WATER
+	tilepal 0, YELLOW, YELLOW, GRAY, GRAY, GRAY, RED, RED, GRAY
+	tilepal 0, RED, RED, RED, RED, RED, RED, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, RED, GRAY, WATER, WATER, WATER, ROOF, ROOF
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, WATER, WATER, WATER
+	tilepal 1, GRAY, RED, RED, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN, GRAY
+	tilepal 1, GRAY, GRAY, RED, RED, WATER, WATER, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, RED, RED, GRAY, WATER, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, GRAY, GRAY, WATER, GRAY
+	tilepal 1, GRAY, GRAY, RED, RED, RED, RED, WATER, WATER
+	tilepal 1, YELLOW, YELLOW, GRAY, GRAY, GRAY, RED, RED, GRAY
+	tilepal 1, RED, RED, RED, RED, RED, RED, GRAY, GRAY
+	tilepal 1, YELLOW, YELLOW, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
--- a/tilesets/pokecom.pal
+++ b/tilesets/pokecom.pal
@@ -1,38 +1,39 @@
+; gray
 	RGB 30, 28, 26
 	RGB 19, 19, 19
 	RGB 13, 13, 13
 	RGB 07, 07, 07
-
+; red
 	RGB 30, 28, 26
 	RGB 31, 19, 24
 	RGB 30, 10, 06
 	RGB 07, 07, 07
-
+; green
 	RGB 18, 24, 09
 	RGB 15, 20, 01
 	RGB 09, 13, 00
 	RGB 07, 07, 07
-
+; water (blue)
 	RGB 30, 28, 26
 	RGB 17, 19, 31
 	RGB 14, 16, 31
 	RGB 07, 07, 07
-
+; yellow
 	RGB 31, 26, 21
 	RGB 31, 20, 01
 	RGB 14, 16, 31
 	RGB 07, 07, 07
-
+; brown
 	RGB 21, 17, 07
 	RGB 17, 19, 31
 	RGB 16, 13, 03
 	RGB 07, 07, 07
-
+; roof
 	RGB 05, 05, 16
 	RGB 08, 19, 28
 	RGB 00, 00, 00
 	RGB 31, 31, 31
-
+; text
 	RGB 31, 31, 16
 	RGB 31, 31, 16
 	RGB 14, 09, 00
binary files /dev/null b/tilesets/pokecom_center_collision.bin differ
--- /dev/null
+++ b/tilesets/pokecom_center_metatiles.bin
@@ -1,0 +1,2 @@
+================"#23"#23��%,-./<==?LMNO��
+ !01@A544$$$$����44$$$$4444$$$$�R,/�RLO�R\]������%4�$����,/��LO:;\]��5$$$$�R&'�R�R�������������������������JK��Z[%444$$$�����	���4444$$$$4444$$$$����������������������������������������������4444$$$$����================���������������۪��������������݈������������������������������������4���$���������������������۶�����������������������������������������������ѷ����������������������������DETUQQQQPPPPHIHIXYXY4���$�������>�������������������44��������4444����������������^_^_��()��89��:;����$$$$�ǂ��ׁ�����()$$89��:;�ׂ���������	�BC���S����������Ͼ����߁���������������4$$$�444���$����������������4444$$$$�������������������������������
\ No newline at end of file
--- /dev/null
+++ b/tilesets/pokecom_center_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 0, WATER, WATER, GRAY, GRAY, RED, GRAY, WATER, WATER
+	tilepal 0, RED, WATER, GRAY, WATER, WATER, WATER, RED, RED
+	tilepal 0, WATER, WATER, GRAY, GRAY, GRAY, GREEN, GREEN, GRAY
+	tilepal 0, GRAY, GRAY, RED, RED, RED, WATER, WATER, WATER
+	tilepal 0, RED, RED, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, RED, RED, RED, WATER, WATER, WATER
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, WATER, GRAY
+	tilepal 0, GRAY, GRAY, WATER, WATER, WATER, WATER, RED, WATER
+	tilepal 0, YELLOW, YELLOW, WATER, WATER, GRAY, RED, RED, GRAY
+	tilepal 0, RED, RED, WATER, WATER, WATER, WATER, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, WATER, WATER, GRAY, GRAY, YELLOW, YELLOW
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, GRAY, GRAY, WATER, RED, RED, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, GRAY, WATER
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, RED, RED, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, RED, RED, GRAY, GRAY, RED, RED, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, GREEN, GREEN
+	tilepal 1, WATER, RED, WATER, BROWN, WATER, WATER, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, GREEN, GREEN
+	tilepal 1, GRAY, GRAY, WATER, WATER, WATER, WATER, GRAY, GRAY
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, WATER, WATER, WATER, WATER, GRAY, GRAY
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, BROWN, BROWN
binary files /dev/null b/tilesets/port_collision.bin differ
--- /dev/null
+++ b/tilesets/port_metatiles.bin
@@ -1,0 +1,65 @@
+""""!!!!1111111111111111    ""       !!!!+,--9::3#$%./02;<=>&'()345?@AB*678CDE+,-39:PQXYZFGHIRRSSZ[\\IJKLT,-U]^^^MNOVW_����������������""""""""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+	

""1111
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+���������������������������������������������������������������������������������������������
\ No newline at end of file
--- /dev/null
+++ b/tilesets/port_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, WATER, WATER, GRAY, GRAY, RED, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, RED, RED, RED, BROWN
+	tilepal 0, ROOF, WATER, WATER, WATER, WATER, RED, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, ROOF, WATER, RED, RED, GRAY, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, ROOF, ROOF, RED, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, GRAY, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, WATER, WATER, GRAY, GRAY, RED, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, RED, RED, RED, BROWN
+	tilepal 1, ROOF, WATER, WATER, WATER, WATER, RED, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, ROOF, WATER, RED, RED, GRAY, GRAY
+	tilepal 1, BROWN, BROWN, BROWN, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, RED, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, GRAY, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
binary files /dev/null b/tilesets/power_plant_collision.bin differ
--- /dev/null
+++ b/tilesets/power_plant_metatiles.bin
@@ -1,0 +1,8 @@
+6666666666666666""""""""&&&&@B@B
+
+
+
+&&&&88889999&& !&&&&&01&&&&&@B@B()()()()*+()&&&&&&&&	&&,-""<=""./&>?&"",-""<=&./&>?







&&&&''''7777,-&<=&./&>?&&,-&<=&./&>?@AABPQQRPHIRS::T&&&@A&PQ&&AAABQQQREEFEUUVU
+K
+[EFEEUVUUK
+[&PQ&S:&&QQQR:::T&&EFE;UVU;JKJ;Z[Z;6666666666666666AAABMMMN88889999""""""""#$$%WXXY""""@B""PRPRPRPRPR""23""CD&&&&""""""@B&PR&PR;;;;;;;;&&&&&&&&;;;;;;;;""""@B""PR&PR&PR&PR&PR&PR&PR&PR&PR@APRLM&&&&&@A&LM&&&&AB&MN&&&&&@B@APRLM&&&&	&&@AABPHIR	&&&&&&@B&PR&PR&PR&PR&&@BPR#$$%WXXY&&&&PRPRPRPR@B&PR&PR&PR&@AAALMMM&&&&AAABMMMN&&&&&@B&PR&PR&PR&&&&AAAAMMMM""""""""&&AAAAMMMM&&&&&PR&PR&PR&PR&@A&PQ&PQ&S:@AAALMMM88889999&PR&PRABPRMNPR""""""\]&^_&@B@APRLMPR&PR&AB@BMNPR&PR&PRPR&PR&PR@ALM&PR&PRABPRMN
\ No newline at end of file
--- /dev/null
+++ b/tilesets/power_plant_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, WATER, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, RED, RED, BROWN, BROWN
+	tilepal 0, ROOF, ROOF, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 0, ROOF, ROOF, GRAY, GRAY, ROOF, ROOF, BROWN, BROWN
+	tilepal 0, ROOF, ROOF, GREEN, WATER, WATER, WATER, RED, RED
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN, BROWN, BROWN
+	tilepal 0, ROOF, ROOF, GREEN, GREEN, RED, RED, GRAY, RED
+	tilepal 0, RED, RED, BROWN, BROWN, GREEN, GREEN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, GREEN, GREEN, GRAY, BROWN, WATER
+	tilepal 0, BROWN, BROWN, GRAY, BROWN, BROWN, BROWN, BROWN, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, BROWN, ROOF
+	tilepal 0, ROOF, ROOF, GRAY, BROWN, GRAY, GRAY, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, WATER, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, RED, RED, BROWN, BROWN
+	tilepal 1, ROOF, ROOF, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 1, ROOF, ROOF, GRAY, GRAY, ROOF, ROOF, BROWN, BROWN
+	tilepal 1, ROOF, ROOF, GREEN, WATER, WATER, WATER, RED, RED
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN, BROWN, BROWN
+	tilepal 1, ROOF, ROOF, GREEN, GREEN, RED, RED, GRAY, RED
+	tilepal 1, RED, RED, BROWN, BROWN, GREEN, GREEN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, GREEN, GREEN, GRAY, BROWN, WATER
+	tilepal 1, BROWN, BROWN, GRAY, BROWN, BROWN, BROWN, BROWN, GRAY
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, BROWN, ROOF
+	tilepal 1, ROOF, ROOF, GRAY, BROWN, GRAY, GRAY, GRAY, GRAY
binary files /dev/null b/tilesets/radio_tower_collision.bin differ
binary files /dev/null b/tilesets/radio_tower_metatiles.bin differ
--- /dev/null
+++ b/tilesets/radio_tower_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, RED, RED, WATER, WATER, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, WATER, WATER, RED, WATER, WATER, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, ROOF, ROOF, GRAY, GRAY, BROWN, GRAY, GRAY, BROWN
+	tilepal 0, BROWN, ROOF, ROOF, GRAY, RED, RED, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, WATER, GRAY, GRAY, BROWN
+	tilepal 0, BROWN, GRAY, GRAY, GRAY, RED, RED, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, YELLOW, YELLOW, GREEN, GREEN
+	tilepal 0, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, RED, RED, WATER, WATER, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 1, YELLOW, YELLOW, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, RED, YELLOW, YELLOW, RED
+	tilepal 1, ROOF, RED, RED, ROOF, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, ROOF, ROOF, GRAY, GRAY, WATER, GRAY, GRAY, BROWN
+	tilepal 1, BROWN, ROOF, ROOF, GRAY, RED, RED, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, WATER, GRAY, GRAY, BROWN
+	tilepal 1, BROWN, GRAY, GRAY, GRAY, RED, RED, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, GRAY, GRAY, GREEN, GREEN
+	tilepal 1, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, RED, RED, WATER, WATER, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, RED, GRAY, GRAY, GRAY, GRAY
--- a/tilesets/roof.pal
+++ b/tilesets/roof.pal
@@ -4,13 +4,13 @@
 	RGB 21, 21, 21
 	RGB 11, 11, 11
 
-; group 1
+; group 1 (Olivine)
 	RGB 14, 17, 31
 	RGB 07, 11, 15
 	RGB 09, 09, 17
 	RGB 05, 07, 13
 
-; group 2
+; group 2 (Mahogany)
 	RGB 12, 19, 00
 	RGB 06, 10, 00
 	RGB 06, 09, 07
@@ -22,97 +22,97 @@
 	RGB 21, 21, 21
 	RGB 17, 08, 07
 
-; group 4
+; group 4 (Ecruteak)
 	RGB 31, 19, 00
 	RGB 27, 10, 05
 	RGB 15, 07, 02
 	RGB 11, 04, 02
 
-; group 5
+; group 5 (Blackthorn)
 	RGB 11, 10, 16
 	RGB 05, 06, 07
 	RGB 03, 04, 08
 	RGB 00, 00, 00
 
-; group 6
+; group 6 (Cinnabar)
 	RGB 31, 10, 00
 	RGB 18, 06, 00
 	RGB 18, 05, 09
 	RGB 17, 08, 07
 
-; group 7
+; group 7 (Cerulean)
 	RGB 17, 27, 31
 	RGB 05, 15, 31
 	RGB 07, 08, 22
 	RGB 07, 07, 16
 
-; group 8
+; group 8 (Azalea)
 	RGB 22, 20, 10
 	RGB 17, 14, 03
 	RGB 11, 11, 05
 	RGB 10, 09, 07
 
-; group 9
+; group 9 (Lake of Rage)
 	RGB 31, 08, 04
 	RGB 09, 09, 08
 	RGB 18, 05, 09
 	RGB 09, 09, 08
 
-; group 10
+; group 10 (Violet)
 	RGB 24, 14, 31
 	RGB 13, 07, 21
 	RGB 12, 03, 18
 	RGB 09, 03, 15
 
-; group 11
+; group 11 (Goldenrod)
 	RGB 25, 25, 00
 	RGB 20, 17, 08
 	RGB 12, 12, 00
 	RGB 10, 09, 05
 
-; group 12
+; group 12 (Vermilion)
 	RGB 27, 23, 01
 	RGB 23, 11, 00
 	RGB 15, 11, 01
 	RGB 11, 10, 01
 
-; group 13
+; group 13 (Pallet)
 	RGB 27, 28, 31
 	RGB 17, 19, 22
 	RGB 14, 14, 18
 	RGB 10, 09, 13
 
-; group 14
+; group 14 (Pewter)
 	RGB 19, 19, 16
 	RGB 10, 12, 15
 	RGB 09, 09, 11
 	RGB 04, 05, 07
 
-; group 15
+; group 15 (Mount Moon Square)
 	RGB 14, 17, 31
 	RGB 07, 11, 15
 	RGB 09, 13, 19
 	RGB 07, 07, 16
 
-; group 16
+; group 16 (Route 23)
 	RGB 21, 21, 21
 	RGB 13, 13, 13
 	RGB 11, 11, 19
 	RGB 07, 07, 12
 
-; group 17
+; group 17 (Fuchsia)
 	RGB 31, 18, 29
 	RGB 17, 13, 20
 	RGB 14, 06, 12
 	RGB 11, 03, 10
 
-; group 18
+; group 18 (Lavender)
 	RGB 23, 15, 31
 	RGB 16, 05, 31
 	RGB 12, 07, 17
 	RGB 08, 06, 10
 
-; group 19
+; group 19 (Route 28)
 	RGB 21, 21, 25
 	RGB 16, 16, 16
 	RGB 13, 13, 13
@@ -124,37 +124,37 @@
 	RGB 21, 21, 21
 	RGB 11, 11, 11
 
-; group 21
+; group 21 (Celadon)
 	RGB 19, 31, 15
 	RGB 31, 22, 02
 	RGB 12, 13, 09
 	RGB 09, 12, 03
 
-; group 22
+; group 22 (Cianwood)
 	RGB 15, 10, 31
 	RGB 07, 05, 15
 	RGB 06, 05, 17
 	RGB 02, 02, 08
 
-; group 23
+; group 23 (Viridian)
 	RGB 21, 31, 07
 	RGB 13, 25, 04
 	RGB 09, 14, 08
 	RGB 06, 10, 04
 
-; group 24
+; group 24 (New Bark)
 	RGB 20, 31, 14
 	RGB 11, 23, 05
 	RGB 09, 13, 08
 	RGB 06, 09, 04
 
-; group 25
+; group 25 (Saffron)
 	RGB 31, 26, 00
 	RGB 31, 15, 00
 	RGB 13, 13, 01
 	RGB 08, 08, 01
 
-; group 26
+; group 26 (Cherrygrove)
 	RGB 31, 14, 28
 	RGB 31, 05, 21
 	RGB 14, 07, 17
--- a/tilesets/roofs.asm
+++ b/tilesets/roofs.asm
@@ -1,4 +1,3 @@
-
 LoadMapGroupRoof:: ; 1c000
 	ld a, [MapGroup]
 	ld e, a
@@ -17,35 +16,9 @@
 	ret
 ; 1c021
 
-MapGroupRoofs: ; 1c021i
-	db -1 ; group 0 (unused)
-	db  3 ; group 1
-	db  2 ; group 2
-	db -1 ; group 3
-	db  1 ; group 4
-	db  2 ; group 5
-	db -1 ; group 6
-	db -1 ; group 7
-	db  2 ; group 8
-	db  2 ; group 9
-	db  1 ; group 10
-	db  4 ; group 11
-	db -1 ; group 12
-	db -1 ; group 13
-	db -1 ; group 14
-	db -1 ; group 15
-	db -1 ; group 16
-	db -1 ; group 17
-	db -1 ; group 18
-	db  0 ; group 19
-	db -1 ; group 20
-	db -1 ; group 21
-	db  3 ; group 22
-	db -1 ; group 23
-	db  0 ; group 24
-	db -1 ; group 25
-	db  0 ; group 26
-; 1c03c
+
+INCLUDE "data/mapgroup_roofs.asm"
+
 
 Roofs: ; 1c03c
 INCBIN "gfx/tilesets/roofs/0.2bpp"
binary files /dev/null b/tilesets/ruins_of_alph_collision.bin differ
binary files /dev/null b/tilesets/ruins_of_alph_metatiles.bin differ
--- /dev/null
+++ b/tilesets/ruins_of_alph_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, WATER, WATER, WATER, WATER, YELLOW, YELLOW, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, RED, RED, RED, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, RED, RED, RED, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
binary files /dev/null b/tilesets/sprout_tower_collision.bin differ
--- /dev/null
+++ b/tilesets/sprout_tower_metatiles.bin
@@ -1,0 +1,2 @@
+
@ !!A1A1!!!!!!@ A1A1
+A1A1A1A1A1A1A1A1A1A1!!!!!!!!A1A1!!!!-.=><>MN./>?,NO()89*+:;()89*+:;MN]^NO^_A1A1@ !!A1A1!!@ !!!!^^^^"#23&'67"#23&'67PQPQPQPQPQPQPQPQ$$$$	
"#23!!67"#!!2367%545%545%545%545	^^		��������������������������������FVGWPQPQRSRSBCHZ[!XL\67IBCY!Z[L\67JKZ[L\67JKZ[L\67DETU!!!!PPPPPPPPFVGW
\ No newline at end of file
--- /dev/null
+++ b/tilesets/sprout_tower_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, RED
+	tilepal 0, RED, RED, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, RED
+	tilepal 0, RED, RED, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 0, RED, RED, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 0, RED, RED, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, RED
+	tilepal 1, RED, RED, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, RED
+	tilepal 1, RED, RED, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 1, RED, RED, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 1, RED, RED, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN
--- a/tilesets/tileset_headers.asm
+++ b/tilesets/tileset_headers.asm
@@ -1,5 +1,3 @@
-; entries correspond to TILESET_* constants
-
 tileset: macro
 	dba \1GFX, \1Meta, \1Coll
 	dw \1Anim
@@ -7,42 +5,43 @@
 	dw \1PalMap
 endm
 
-Tileset00::
-	tileset Tileset00
-Tileset01::
-	tileset Tileset01
-	tileset Tileset02
-	tileset Tileset03
-	tileset Tileset04
-	tileset Tileset05
-	tileset Tileset06
-	tileset Tileset07
-	tileset Tileset08
-	tileset Tileset09
-	tileset Tileset10
-	tileset Tileset11
-	tileset Tileset12
-	tileset Tileset13
-	tileset Tileset14
-	tileset Tileset15
-	tileset Tileset16
-	tileset Tileset17
-	tileset Tileset18
-	tileset Tileset19
-	tileset Tileset20
-	tileset Tileset21
-	tileset Tileset22
-	tileset Tileset23
-	tileset Tileset24
-	tileset Tileset25
-	tileset Tileset26
-	tileset Tileset27
-	tileset Tileset28
-	tileset Tileset29
-	tileset Tileset30
-	tileset Tileset31
-	tileset Tileset32
-	tileset Tileset33
-	tileset Tileset34
-	tileset Tileset35
-	tileset Tileset36
+Tilesets:: ; 4d596
+; entries correspond to TILESET_* constants
+	tileset Tileset0
+	tileset TilesetJohto1
+	tileset TilesetJohto2
+	tileset TilesetKanto
+	tileset TilesetBattleTowerOutside
+	tileset TilesetHouse1
+	tileset TilesetPlayersHouse
+	tileset TilesetPokecenter
+	tileset TilesetGate
+	tileset TilesetPort
+	tileset TilesetLab
+	tileset TilesetPowerPlant
+	tileset TilesetMart
+	tileset TilesetCeladonMansion
+	tileset TilesetGameCorner
+	tileset TilesetGym1
+	tileset TilesetKurtsHouse
+	tileset TilesetTrainStation
+	tileset TilesetOlivineGym
+	tileset TilesetLighthouse
+	tileset TilesetPlayersHouse2F
+	tileset TilesetPokeComCenter
+	tileset TilesetBattleTower
+	tileset TilesetSproutTower
+	tileset TilesetCave
+	tileset TilesetPark
+	tileset TilesetRuinsOfAlph
+	tileset TilesetRadioTower
+	tileset TilesetUnderground
+	tileset TilesetIcePath
+	tileset TilesetWhirlIslands
+	tileset TilesetIlexForest
+	tileset TilesetBetaWordRoom
+	tileset TilesetHoOhWordRoom
+	tileset TilesetKabutoWordRoom
+	tileset TilesetOmanyteWordRoom
+	tileset TilesetAerodactylWordRoom
+; 4d7c1
binary files /dev/null b/tilesets/train_station_collision.bin differ
binary files /dev/null b/tilesets/train_station_metatiles.bin differ
--- /dev/null
+++ b/tilesets/train_station_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, GRAY, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, RED, GRAY
+	tilepal 0, GRAY, GRAY, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, RED, GRAY
+	tilepal 0, GRAY, GREEN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, ROOF, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, WATER, WATER, WATER, WATER
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, GREEN, GREEN, WATER, WATER
+	tilepal 0, WATER, GREEN, GREEN, WATER, BROWN, BROWN, BROWN, GREEN
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, GREEN, GREEN, WATER, WATER
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, WATER, WATER, WATER, WATER, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, RED, GRAY
+	tilepal 1, GRAY, GRAY, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, RED, GRAY
+	tilepal 1, GRAY, GREEN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, YELLOW, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, ROOF, GRAY, GRAY
+	tilepal 1, YELLOW, YELLOW, YELLOW, YELLOW, WATER, WATER, WATER, WATER
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, GREEN, GREEN, WATER, WATER
+	tilepal 1, WATER, GREEN, GREEN, WATER, BROWN, BROWN, BROWN, GREEN
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, GREEN, GREEN, WATER, WATER
binary files /dev/null b/tilesets/underground_collision.bin differ
--- /dev/null
+++ b/tilesets/underground_metatiles.bin
@@ -1,0 +1,2 @@
+*+:;,-<=EFUV	0144444444


44
444444





CDCDSTSTCDCDSTST







"#23






















+QQQQQQQQ./>?./>?@ANOP]^_&'67











	01	01@AAAPQQQPQQQAAABQQQRQQQR@AABPQQRPQQRPQQRPQQRPQQRPQQRPQQRPQQRPQQRPQQR@B@B()89()89
\ No newline at end of file
--- /dev/null
+++ b/tilesets/underground_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, GRAY, GRAY, RED, WATER, WATER, WATER, WATER, RED
+	tilepal 0, RED, GRAY, WATER, WATER, WATER, WATER, GRAY, GRAY
+	tilepal 0, GRAY, RED, RED, WATER, WATER, WATER, WATER, RED
+	tilepal 0, RED, GRAY, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, GRAY, RED, WATER, WATER, WATER, WATER, RED
+	tilepal 1, RED, GRAY, WATER, WATER, WATER, WATER, GRAY, GRAY
+	tilepal 1, GRAY, RED, RED, WATER, WATER, WATER, WATER, RED
+	tilepal 1, RED, GRAY, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, GRAY, BROWN, BROWN, YELLOW, YELLOW, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, BROWN, BROWN, YELLOW, YELLOW, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
binary files a/tilesets/unused_30_collision.bin /dev/null differ
binary files a/tilesets/unused_30_metatiles.bin /dev/null differ
binary files /dev/null b/tilesets/unused_whirl_islands_collision.bin differ
binary files /dev/null b/tilesets/unused_whirl_islands_metatiles.bin differ
binary files /dev/null b/tilesets/whirl_islands_collision.bin differ
--- /dev/null
+++ b/tilesets/whirl_islands_metatiles.bin
@@ -1,0 +1,6 @@
+$$$$$$$$*+:;"#23%&&%&&&&&&&&&&&&&'&&&'
+&
+&&&67&&67&&&&$$$$*+:;$$$$"#23







()89







 !01







$$&&&&



@@@@@@@@@@@@@@@@%&&&%&&&%&&&%&&&&&&&&&&&&&&&&&&&&&&'&&&'&&&'&&&'67&&67&&$$%&&'%'

&&&&&&&&

+&
+67'67&'&&&&&&&&&&&&%&&&&&&&&&&'&&&
+&&&
\ No newline at end of file
--- /dev/null
+++ b/tilesets/whirl_islands_palette_map.asm
@@ -1,0 +1,29 @@
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, GREEN, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, WATER, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, GREEN, BROWN, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, WATER, BROWN, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
--- a/trainers/attributes.asm
+++ b/trainers/attributes.asm
@@ -1,4 +1,5 @@
 TrainerClassAttributes: ; 3959c
+; entries correspond to trainer classes (see constants/trainer_constants.asm)
 
 ; Falkner
 	db 0, 0 ; items
--- a/trainers/dvs.asm
+++ b/trainers/dvs.asm
@@ -20,6 +20,7 @@
 ; 270d6
 
 TrainerClassDVs: ; 270d6
+; entries correspond to trainer classes (see constants/trainer_constants.asm)
 	;  Atk  Spd
 	;  Def  Spc
 	db $9A, $77 ; falkner
--- /dev/null
+++ b/trainers/encounter_music.asm
@@ -1,0 +1,75 @@
+; What music plays when a trainer notices you
+
+TrainerEncounterMusic::
+; entries correspond to trainer classes (see constants/trainer_constants.asm)
+    db MUSIC_HIKER_ENCOUNTER       ; none
+    db MUSIC_YOUNGSTER_ENCOUNTER   ; falkner
+    db MUSIC_LASS_ENCOUNTER        ; whitney
+    db MUSIC_YOUNGSTER_ENCOUNTER   ; bugsy
+    db MUSIC_OFFICER_ENCOUNTER     ; morty
+    db MUSIC_OFFICER_ENCOUNTER     ; pryce
+    db MUSIC_LASS_ENCOUNTER        ; jasmine
+    db MUSIC_OFFICER_ENCOUNTER     ; chuck
+    db MUSIC_BEAUTY_ENCOUNTER      ; clair
+    db MUSIC_RIVAL_ENCOUNTER       ; rival1
+    db MUSIC_HIKER_ENCOUNTER       ; pokemon_prof
+    db MUSIC_HIKER_ENCOUNTER       ; will
+    db MUSIC_HIKER_ENCOUNTER       ; cal
+    db MUSIC_OFFICER_ENCOUNTER     ; bruno
+    db MUSIC_HIKER_ENCOUNTER       ; karen
+    db MUSIC_HIKER_ENCOUNTER       ; koga
+    db MUSIC_OFFICER_ENCOUNTER     ; champion
+    db MUSIC_YOUNGSTER_ENCOUNTER   ; brock
+    db MUSIC_LASS_ENCOUNTER        ; misty
+    db MUSIC_OFFICER_ENCOUNTER     ; lt_surge
+    db MUSIC_ROCKET_ENCOUNTER      ; scientist
+    db MUSIC_OFFICER_ENCOUNTER     ; erika
+    db MUSIC_YOUNGSTER_ENCOUNTER   ; youngster
+    db MUSIC_YOUNGSTER_ENCOUNTER   ; schoolboy
+    db MUSIC_YOUNGSTER_ENCOUNTER   ; bird_keeper
+    db MUSIC_LASS_ENCOUNTER        ; lass
+    db MUSIC_LASS_ENCOUNTER        ; janine
+    db MUSIC_HIKER_ENCOUNTER       ; cooltrainerm
+    db MUSIC_BEAUTY_ENCOUNTER      ; cooltrainerf
+    db MUSIC_BEAUTY_ENCOUNTER      ; beauty
+    db MUSIC_POKEMANIAC_ENCOUNTER  ; pokemaniac
+    db MUSIC_ROCKET_ENCOUNTER      ; gruntm
+    db MUSIC_HIKER_ENCOUNTER       ; gentleman
+    db MUSIC_BEAUTY_ENCOUNTER      ; skier
+    db MUSIC_BEAUTY_ENCOUNTER      ; teacher
+    db MUSIC_BEAUTY_ENCOUNTER      ; sabrina
+    db MUSIC_YOUNGSTER_ENCOUNTER   ; bug_catcher
+    db MUSIC_HIKER_ENCOUNTER       ; fisher
+    db MUSIC_HIKER_ENCOUNTER       ; swimmerm
+    db MUSIC_BEAUTY_ENCOUNTER      ; swimmerf
+    db MUSIC_HIKER_ENCOUNTER       ; sailor
+    db MUSIC_POKEMANIAC_ENCOUNTER  ; super_nerd
+    db MUSIC_RIVAL_ENCOUNTER       ; rival2
+    db MUSIC_HIKER_ENCOUNTER       ; guitarist
+    db MUSIC_HIKER_ENCOUNTER       ; hiker
+    db MUSIC_HIKER_ENCOUNTER       ; biker
+    db MUSIC_OFFICER_ENCOUNTER     ; blaine
+    db MUSIC_POKEMANIAC_ENCOUNTER  ; burglar
+    db MUSIC_HIKER_ENCOUNTER       ; firebreather
+    db MUSIC_POKEMANIAC_ENCOUNTER  ; juggler
+    db MUSIC_HIKER_ENCOUNTER       ; blackbelt_t
+    db MUSIC_ROCKET_ENCOUNTER      ; executivem
+    db MUSIC_YOUNGSTER_ENCOUNTER   ; psychic_t
+    db MUSIC_LASS_ENCOUNTER        ; picnicker
+    db MUSIC_YOUNGSTER_ENCOUNTER   ; camper
+    db MUSIC_ROCKET_ENCOUNTER      ; executivef
+    db MUSIC_SAGE_ENCOUNTER        ; sage
+    db MUSIC_SAGE_ENCOUNTER        ; medium
+    db MUSIC_HIKER_ENCOUNTER       ; boarder
+    db MUSIC_HIKER_ENCOUNTER       ; pokefanm
+    db MUSIC_KIMONO_ENCOUNTER      ; kimono_girl
+    db MUSIC_LASS_ENCOUNTER        ; twins
+    db MUSIC_BEAUTY_ENCOUNTER      ; pokefanf
+    db MUSIC_HIKER_ENCOUNTER       ; red
+    db MUSIC_RIVAL_ENCOUNTER       ; blue
+    db MUSIC_HIKER_ENCOUNTER       ; officer
+    db MUSIC_ROCKET_ENCOUNTER      ; gruntf
+    db MUSIC_HIKER_ENCOUNTER       ; mysticalman
+    db MUSIC_HIKER_ENCOUNTER
+    db MUSIC_HIKER_ENCOUNTER
+    db MUSIC_HIKER_ENCOUNTER
--- /dev/null
+++ b/trainers/gendered_trainers.asm
@@ -1,0 +1,40 @@
+MaleTrainers: ; 4e95d
+	db BURGLAR
+	db YOUNGSTER
+	db SCHOOLBOY
+	db BIRD_KEEPER
+	db POKEMANIAC
+	db GENTLEMAN
+	db BUG_CATCHER
+	db FISHER
+	db SWIMMERM
+	db SAILOR
+	db SUPER_NERD
+	db GUITARIST
+	db HIKER
+	db FIREBREATHER
+	db BLACKBELT_T
+	db PSYCHIC_T
+	db CAMPER
+	db COOLTRAINERM
+	db BOARDER
+	db JUGGLER
+	db POKEFANM
+	db OFFICER
+	db SAGE
+	db BIKER
+	db SCIENTIST
+MaleTrainersEnd
+
+FemaleTrainers: ; 4e976
+	db MEDIUM
+	db LASS
+	db BEAUTY
+	db SKIER
+	db TEACHER
+	db SWIMMERF
+	db PICNICKER
+	db KIMONO_GIRL
+	db POKEFANF
+	db COOLTRAINERF
+FemaleTrainersEnd
--- /dev/null
+++ b/trainers/read_attributes.asm
@@ -1,0 +1,64 @@
+GetTrainerClassName: ; 3952d
+	ld hl, RivalName
+	ld a, c
+	cp RIVAL1
+	jr z, .rival
+
+	ld [CurSpecies], a
+	ld a, TRAINER_NAME
+	ld [wNamedObjectTypeBuffer], a
+	call GetName
+	ld de, StringBuffer1
+	ret
+
+.rival
+	ld de, StringBuffer1
+	push de
+	ld bc, NAME_LENGTH
+	call CopyBytes
+	pop de
+	ret
+
+GetOTName: ; 39550
+	ld hl, OTPlayerName
+	ld a, [wLinkMode]
+	and a
+	jr nz, .ok
+
+	ld hl, RivalName
+	ld a, c
+	cp RIVAL1
+	jr z, .ok
+
+	ld [CurSpecies], a
+	ld a, TRAINER_NAME
+	ld [wNamedObjectTypeBuffer], a
+	call GetName
+	ld hl, StringBuffer1
+
+.ok
+	ld bc, TRAINER_CLASS_NAME_LENGTH
+	ld de, OTClassName
+	push de
+	call CopyBytes
+	pop de
+	ret
+
+GetTrainerAttributes: ; 3957b
+	ld a, [TrainerClass]
+	ld c, a
+	call GetOTName
+	ld a, [TrainerClass]
+	dec a
+	ld hl, TrainerClassAttributes + TRNATTR_ITEM1
+	ld bc, NUM_TRAINER_ATTRIBUTES
+	call AddNTimes
+	ld de, wEnemyTrainerItem1
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	ld a, [hl]
+	ld [wEnemyTrainerBaseReward], a
+	ret
--- a/wram.asm
+++ b/wram.asm
@@ -355,6 +355,8 @@
 ; timeset temp storage
 	ds 20
 wInitHourBuffer:: db ; c61c
+	ds 9
+wInitMinuteBuffer:: db ; c626
 
 NEXTU ; c608
 ; link engine data
@@ -1611,9 +1613,9 @@
 NEXTU ; d002
 ; mobile participant nicknames
 	ds 4
-wMobileParticipant1Nickname:: ds 6
-wMobileParticipant2Nickname:: ds 6
-wMobileParticipant3Nickname:: ds 6
+wMobileParticipant1Nickname:: ds NAME_LENGTH_JAPANESE
+wMobileParticipant2Nickname:: ds NAME_LENGTH_JAPANESE
+wMobileParticipant3Nickname:: ds NAME_LENGTH_JAPANESE
 
 NEXTU ; d002
 ; earthquake data buffer
@@ -1862,8 +1864,8 @@
 wPokemonWithdrawDepositParameter::
 ; 0: Take from PC
 ; 1: Put into PC
-; 2: Take from Daycare
-; 3: Put into Daycare
+; 2: Take from Day-Care
+; 3: Put into Day-Care
 	db
 
 wItemQuantityChangeBuffer:: db
@@ -1995,6 +1997,7 @@
 TilesetAnim:: dw ; bank 3f ; d1e2
 	ds 2  ; unused ; d1e4
 TilesetPalettes:: dw ; bank 3f ; d1e6
+TilesetHeaderEnd::
 
 EvolvableFlags:: flag_array PARTY_LENGTH ; d1e8
 
@@ -2107,7 +2110,9 @@
 BaseType2:: db ; d23e
 BaseCatchRate:: db ; d23f
 BaseExp:: db ; d240
-BaseItems:: dw ; d241
+BaseItems:: ; d241
+BaseItem1:: db ; d241
+BaseItem2:: db ; d242
 BaseGender:: db ; d243
 BaseUnknown1:: db ; d244
 BaseEggSteps:: db ; d245
@@ -2117,6 +2122,7 @@
 BaseGrowthRate:: db ; d24c
 BaseEggGroups:: db ; d24d
 BaseTMHM:: flag_array NUM_TM_HM_TUTOR ; d24e
+CurBaseDataEnd::
 
 CurDamage:: dw ; d256
 
@@ -2749,11 +2755,11 @@
 UnlockedUnowns:: db ; def3
 wFirstUnownSeen:: db
 
-wDaycareMan:: ; def5
+wDayCareMan:: ; def5
 ; bit 7: active
 ; bit 6: monsters are compatible
 ; bit 5: egg ready
-; bit 0: monster 1 in daycare
+; bit 0: monster 1 in day-care
 	db
 
 wBreedMon1::
@@ -2761,9 +2767,9 @@
 wBreedMon1OT::    ds NAME_LENGTH ; df01
 wBreedMon1Stats:: box_struct wBreedMon1 ; df0c
 
-wDaycareLady:: ; df2c
+wDayCareLady:: ; df2c
 ; bit 7: active
-; bit 0: monster 2 in daycare
+; bit 0: monster 2 in day-care
 	db
 
 wStepsToEgg:: ; df2d
@@ -2989,7 +2995,7 @@
 ENDU ; d462
 
 
-SECTION "WRAM 5 MOBILE", WRAMX
+SECTION "Mobile RAM", WRAMX
 
 w5_d800:: ds $200
 w5_da00:: ds $200
@@ -3002,7 +3008,7 @@
 w5_MobileOpponentBattleLossMessage:: ds $c ; dc3e
 
 
-SECTION "WRAM 6", WRAMX
+SECTION "Scratch RAM", WRAMX
 
 UNION ; d000
 wScratchTileMap:: ds BG_MAP_WIDTH * BG_MAP_HEIGHT
@@ -3014,7 +3020,7 @@
 ENDU ; e000
 
 
-SECTION "WRAM 7", WRAMX
+SECTION "Stack RAM", WRAMX
 
 wWindowStack:: ds $1000 - 1
 wWindowStackBottom:: ds 1